nx_ship_behavior_review_gate_t371.nx source
↩ module page · 63 lines · 5148 B
1import "nx_organ_ship_review_lib_candidate_t371.nx"
2import "nx_gate_verdict.nx"
3func brg_zero(b:*NxBufOwned)->i64{b.buf=0 as *u8;b.len=0;b.cap=0;return 0}
4func main()->i64{
5 let ctr:*i64=gv_ctr();let digest:*u8=sys_mmap_try(65);if (digest as i64)<=0{return 2}
6 let aa:*u8="8576f54f52adf1fe96375373ec3d7a5878c7d16f15a5edada4496b5811e34ead"
7 let bb:*u8="7d0cbc4938c041a1bd64fd91314dcb1e3435254d2704a9e25d398e6a11c87a8e"
8 var arg:i64="large" as *u8 as i64;var q:NxBehaviorRequest
9 q.live="/volume1/homes/elderwesto/nishihost/buildroot/_build/nx_behavior_fixture_a_t297.sov.elf"
10 q.other="/volume1/homes/elderwesto/nishihost/buildroot/_build/nx_behavior_fixture_b_t297.sov.elf"
11 q.cwd=BP_HOST;q.args=&arg;q.arg_count=1;q.timeout_ms=1000;q.max_capture_bytes=0
12 var a:NxBufOwned;var b:NxBufOwned;var context:NxBufOwned;var changed:NxBufOwned;var record:NxBufOwned
13 brg_zero(&a);brg_zero(&b);brg_zero(&context);brg_zero(&changed);brg_zero(&record)
14 var r:NxBehaviorResult
15 let run:i64=bp_run_owned_result(&q,&r,&a,&b)
16 gv_check("actual changed complete zero-exit workload is review eligible",run==1&&obr_eligible(&r)==1,ctr)
17 gv_check("exact context constructed",obr_context("fixture",aa,bb,&q,&context)==0,ctr)
18 gv_check("full paired capture record constructed",obr_build(&context,"fixture",&r,&a,&b,&record)==0&&record.len>a.len+b.len,ctr)
19 gv_check("record digest constructed",obr_digest(&record,digest)==0,ctr)
20 gv_check("unapproved changed output refuses",obr_approve(&record,&context,0 as *u8)==0,ctr)
21 gv_check("exact approved full record accepted",obr_approve(&record,&context,digest)==1,ctr)
22
23 let previousPath:*u8=q.live;q.live="/another/location/same-hash.elf"
24 gv_check("same hashes different invoked paths context built",obr_context("fixture",aa,bb,&q,&changed)==0,ctr)
25 gv_check("same hashes different argv0 executable path refuses review",obr_approve(&record,&changed,digest)==0,ctr);nx_bo_release(&changed);q.live=previousPath
26 arg="different-arg-same-output" as *u8 as i64
27 gv_check("different arguments build distinct context",obr_context("fixture",aa,bb,&q,&changed)==0,ctr)
28 gv_check("same record cannot approve different arguments",obr_approve(&record,&changed,digest)==0,ctr);nx_bo_release(&changed)
29 arg="large" as *u8 as i64
30 gv_check("swapped artifacts context constructed",obr_context("fixture",bb,aa,&q,&changed)==0,ctr)
31 gv_check("swapped artifact record refuses",obr_approve(&record,&changed,digest)==0,ctr);nx_bo_release(&changed)
32 let original:i64=record.len;record.len=original-1
33 gv_check("truncated record refuses even recomputed approval",obr_digest(&record,digest)==0&&obr_approve(&record,&context,digest)==0,ctr);record.len=original
34 let last:u8=record.buf[record.len-2];record.buf[record.len-2]=88 as u8
35 gv_check("malformed terminal refuses recomputed approval",obr_digest(&record,digest)==0&&obr_approve(&record,&context,digest)==0,ctr);record.buf[record.len-2]=last
36 nx_bo_release(&record);nx_bo_release(&context);nx_bo_release(&a);nx_bo_release(&b)
37 q.other=q.live;arg="exit1" as *u8 as i64
38 let nonzero:i64=bp_run_owned_result(&q,&r,&a,&b)
39 gv_check("identical text and identical nonzero exits remain ineligible",nonzero==0&&r.same_output==1&&r.live_exit==1&&obr_eligible(&r)==0,ctr)
40 obr_context("fixture",aa,aa,&q,&context);obr_build(&context,"fixture",&r,&a,&b,&record);obr_digest(&record,digest)
41 gv_check("review digest cannot override nonzero child exit",obr_approve(&record,&context,digest)==0,ctr)
42 nx_bo_release(&record);nx_bo_release(&context);nx_bo_release(&a);nx_bo_release(&b)
43 arg="large" as *u8 as i64;q.max_capture_bytes=262144
44 let limited:i64=bp_run_owned_result(&q,&r,&a,&b)
45 gv_check("capture policy truncation remains unqualified",limited==2&&obr_eligible(&r)==0,ctr)
46 obr_context("fixture",aa,aa,&q,&context);obr_build(&context,"fixture",&r,&a,&b,&record);obr_digest(&record,digest)
47 gv_check("review digest cannot override partial capture",obr_approve(&record,&context,digest)==0,ctr)
48 nx_bo_release(&record);nx_bo_release(&context);nx_bo_release(&a);nx_bo_release(&b)
49
50 // Existing fixture defaults return the same exact output for distinct non-special args.
51 q.other=q.live;q.max_capture_bytes=0;arg="arg-one" as *u8 as i64
52 let sameArgsRun:i64=bp_run_owned_result(&q,&r,&a,&b)
53 obr_context("fixture",aa,aa,&q,&context);obr_build(&context,"fixture",&r,&a,&b,&record);obr_digest(&record,digest)
54 gv_check("actual first argument workload produces matching zero output",sameArgsRun==0&&obr_eligible(&r)==1,ctr)
55 nx_bo_release(&a);nx_bo_release(&b);arg="arg-two" as *u8 as i64
56 let secondArgsRun:i64=bp_run_owned_result(&q,&r,&a,&b)
57 gv_check("actual distinct argument also produces same fixture output",secondArgsRun==0&&r.live_bytes==17&&r.other_bytes==17,ctr)
58 obr_context("fixture",aa,aa,&q,&changed)
59 gv_check("actual equal-output different args cannot reuse review",obr_approve(&record,&changed,digest)==0,ctr)
60 nx_bo_release(&record);nx_bo_release(&context);nx_bo_release(&changed);nx_bo_release(&a);nx_bo_release(&b)
61 sys_munmap_direct(digest,65)
62 return gv_verdict("SHIP-BEHAVIOR-REVIEW",ctr,"Candidate only; exact review binding, not workload coverage or deployment acceptance")
63}