nx_accept_binding_gate_t230.nx source
↩ module page · 51 lines · 8113 B
1// Native acceptance binding predicate qualification; synthetic receipts use retained Beach artifact identity.
2// Does not validate the technical report or rights themselves; no writes to acceptance planes.
3import "nx_accept_binding_candidate_t230.nx"
4import "nx_gate_verdict.nx"
5const ABG_C:*u8="f6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8"
6const ABG_P:*u8="7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d"
7const ABG_Z:*u8="0000000000000000000000000000000000000000000000000000000000000000"
8func abg_sha(b:*u8,n:i64)->*u8 {
9 let d:*u8=sys_mmap(SHA256_DIGEST_BYTES)
10 let h:*u8=sys_mmap(ARB_HASH_HEX+1)
11 if (d as i64)<=0||(h as i64)<=0{return 0 as *u8}
12 if sha256_digest_checked_native(b,n,d)!=0{return 0 as *u8}
13 let a:*u8="0123456789abcdef";var i:i64=0
14 while i<SHA256_DIGEST_BYTES{let c:i64=d[i] as i64;h[i*2]=a[(c>>4)&15];h[i*2+1]=a[c&15];i=i+1}
15 h[ARB_HASH_HEX]=0 as u8;sys_munmap(d,SHA256_DIGEST_BYTES);return h
16}
17func abg_case(name:*u8,body:*u8,stage:*u8,want:i64,ctr:*i64)->i64 {
18 let n:i64=arb_len(body);let h:*u8=abg_sha(body,n)
19 let got:i64=arb_receipt("beach_material",ABG_C,stage,ABG_P,h,body,n)
20 gv_check(name,(got==want) as i64,ctr);if (h as i64)>0{sys_munmap(h,ARB_HASH_HEX+1)};return got
21}
22func main(argc:i64,argv:*i64)->i64{
23 let ctr:*i64=gv_ctr()
24 abg_case("alpha exact","acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json\n","alpha",0,ctr)
25 abg_case("beta exact","acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\tbeta\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json\n","beta",0,ctr)
26 abg_case("production exact","acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\tproduction\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json\n","production",0,ctr)
27 abg_case("alpha cannot accept beta","acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json\n","beta",4,ctr)
28 abg_case("alpha cannot accept production","acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json\n","production",4,ctr)
29 abg_case("beta cannot accept production","acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\tbeta\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json\n","production",4,ctr)
30 abg_case("previous candidate refused","acceptance-release/v1\tbeach_material\t0000000000000000000000000000000000000000000000000000000000000000\talpha\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json\n","alpha",4,ctr)
31 abg_case("different subject refused","acceptance-release/v1\tother\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json\n","alpha",4,ctr)
32 abg_case("changed audience policy refused","acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tpass\t0000000000000000000000000000000000000000000000000000000000000000\tknowledge/gates/material-schema-served-review-t218.json\n","alpha",4,ctr)
33 abg_case("incomplete stays incomplete","acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tincomplete\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json\n","alpha",1,ctr)
34 abg_case("failure stays rejected","acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tfail\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json\n","alpha",2,ctr)
35 abg_case("unknown verdict invalid","acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tready\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json\n","alpha",3,ctr)
36 abg_case("unknown schema invalid","acceptance-release/v2\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json\n","alpha",3,ctr)
37 abg_case("truncated receipt invalid","acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json","alpha",3,ctr)
38 abg_case("extra field invalid","acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json\textra\n","alpha",3,ctr)
39 abg_case("second row invalid","acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json\nacceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json\n","alpha",3,ctr)
40 abg_case("empty evidence invalid","acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\t\n","alpha",3,ctr)
41 abg_case("control byte invalid","acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tevidence\rpath\n","alpha",3,ctr)
42 let body:*u8="acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/material-schema-served-review-t218.json\n";let n:i64=arb_len(body);let h:*u8=abg_sha(body,n)
43 gv_check("wrong receipt hash refused",(arb_receipt("beach_material",ABG_C,"alpha",ABG_P,ABG_Z,body,n)==ARB_IDENTITY) as i64,ctr)
44 gv_check("missing receipt incomplete",(arb_receipt("beach_material",ABG_C,"alpha",ABG_P,h,0 as *u8,0)==ARB_INCOMPLETE) as i64,ctr)
45 gv_check("invalid target stage",(arb_receipt("beach_material",ABG_C,"unknown",ABG_P,h,body,n)==ARB_INVALID) as i64,ctr)
46 gv_check("invalid candidate hash",(arb_receipt("beach_material","abc","alpha",ABG_P,h,body,n)==ARB_INVALID) as i64,ctr)
47 let changed:*u8="acceptance-release/v1\tbeach_material\tf6d279df6c936134933df05b82e5b45aa732d667b6edf59e9df7a654f9337ce8\talpha\tpass\t7ea3d9e27ec69eb7a426252bab95e17322cd8a5aea901ea898c9590a43750f1d\tknowledge/gates/other-report.json\n"
48 gv_check("substituted evidence reference refused",(arb_receipt("beach_material",ABG_C,"alpha",ABG_P,h,changed,arb_len(changed))==ARB_IDENTITY) as i64,ctr)
49 sys_munmap(h,ARB_HASH_HEX+1)
50 return gv_verdict("ACCEPT-BINDING-T230",ctr,"predicate only; no evaluator authorization or release promotion")
51}