code wiki / (root) / nx_accept_release_gate.nx

nx_accept_release_gate.nx source

↩ module page · 60 lines · 3693 B

1// Real-file qualification of additive CLI adapter. Fixture only; no acceptance plane writes. 2import "nx_accept.nx" 3import "nx_gate_verdict.nx" 4func arg_case(label:*u8,count:i64,args:*i64,want:i64,c:*i64,subject:*u8,tmo:i64)->i64 { 5 gv_check(label,(acm_check_release(count,args)==want) as i64,c) 6 let av:*i64=sys_mmap((count+1)*8) as *i64 7 av[0]=subject as i64 8 var i:i64=1 9 while i<count {av[i]=args[i];if av[i]==0{av[i]="unexpected" as *u8 as i64};i=i+1} 10 av[count]=0 11 let out:*NxBufOwned=sys_mmap(NX_BO_BYTES) as *NxBufOwned 12 out.buf=0 as *u8;out.len=0;out.cap=0 13 let rc:i64=tr_run_capture_owned(subject,av,out,tmo,0,0 as *u8) 14 var valid:i64=0 15 if rc==want&&tr_contains(out.buf,out.len,"accept-release-check/v1")==1&&tr_contains(out.buf,out.len,"receipt-binding-only")==1&&tr_contains(out.buf,out.len,"not-performed")==1 {valid=1} 16 gv_check("candidate executable matches expected receipt contract",valid,c) 17 if nx_bo_release(out)!=0 {gv_check("owned capture release",0,c);return 1} 18 sys_munmap(out as *u8,NX_BO_BYTES);sys_munmap(av as *u8,(count+1)*8) 19 return 0 20} 21func main(argc:i64,argv:*i64)->i64{ 22 if argc!=4{acm_p("usage: nx_accept_release_gate <candidate-elf> <fixture-path> <timeout-ms>\n");return 2} 23 let subject:*u8=argv[1] as *u8 24 let fixture:*u8=argv[2] as *u8 25 let parsed:*i64=sys_mmap(8) as *i64 26 let tmo:i64=al_parse_int(argv[3] as *u8,0,al_slen(argv[3] as *u8),parsed) 27 if parsed[0]!=1{return 2} 28 sys_munmap(parsed as *u8,8) 29 if tmo<=0{return 2} 30 acm_p("ACCEPT-RELEASE-GATE candidate=");acm_p(subject);acm_p(" fixture=");acm_p(fixture);acm_p("\n") 31 32 let c:*i64=gv_ctr() 33 let a:*i64=sys_mmap(9*8) as *i64 34 a[0]="nx_accept" as *u8 as i64;a[1]="check-release" as *u8 as i64 35 a[2]="fixture_release" as *u8 as i64;a[3]="0000000000000000000000000000000000000000000000000000000000000000" as *u8 as i64 36 a[4]="alpha" as *u8 as i64;a[5]="1111111111111111111111111111111111111111111111111111111111111111" as *u8 as i64 37 a[6]="accca88d12a8311cbd46e48db8ca1ef1178a659ff0daeb18db259f353c834bb6" as *u8 as i64 38 a[7]=fixture as i64;a[8]=0 39 arg_case("real fixture accepted binding",8,a,ARB_ACCEPTED,c,subject,tmo) 40 arg_case("repeat same fixture idempotent",8,a,ARB_ACCEPTED,c,subject,tmo) 41 a[4]="beta" as *u8 as i64 42 arg_case("alpha receipt not beta",8,a,ARB_IDENTITY,c,subject,tmo) 43 a[4]="production" as *u8 as i64 44 arg_case("alpha receipt not production",8,a,ARB_IDENTITY,c,subject,tmo) 45 a[4]="alpha" as *u8 as i64;a[3]="1111111111111111111111111111111111111111111111111111111111111111" as *u8 as i64 46 arg_case("different candidate refused",8,a,ARB_IDENTITY,c,subject,tmo) 47 a[3]="0000000000000000000000000000000000000000000000000000000000000000" as *u8 as i64;a[5]="0000000000000000000000000000000000000000000000000000000000000000" as *u8 as i64 48 arg_case("different intended-use policy refused",8,a,ARB_IDENTITY,c,subject,tmo) 49 a[5]="1111111111111111111111111111111111111111111111111111111111111111" as *u8 as i64;a[6]="0000000000000000000000000000000000000000000000000000000000000000" as *u8 as i64 50 arg_case("different receipt reference hash refused",8,a,ARB_IDENTITY,c,subject,tmo) 51 a[6]="accca88d12a8311cbd46e48db8ca1ef1178a659ff0daeb18db259f353c834bb6" as *u8 as i64 52 arg_case("extra argument refused",9,a,ARB_INVALID,c,subject,tmo) 53 arg_case("missing argument refused",7,a,ARB_INVALID,c,subject,tmo) 54 a[7]="knowledge/gates/accept-binding-missing-t230.tsv" as *u8 as i64 55 arg_case("absent file incomplete",8,a,ARB_INCOMPLETE,c,subject,tmo) 56 a[7]="knowledge/gates" as *u8 as i64 57 arg_case("directory cannot pass receipt",8,a,ARB_IO,c,subject,tmo) 58 sys_munmap(a as *u8,9*8) 59 return gv_verdict("ACCEPT-RELEASE",c,"real immutable fixture; no evaluator or rights authorization claimed") 60}