nx_adversarial_sov_gate.nx source
↩ module page · 59 lines · 3462 B
1// nx_adversarial_sov_gate.nx -- proves the ADVERSARIAL-SUITE store flip (nx_adversarial_sov) is byte-exact +
2// has teeth. GREEN (exit 0) only when: migrate seeds knowledge/store/adversarial byte-exact from the .conf
3// (ver==tot, tot>0), the store round-trips (ag_count==tot), the reader reconstructs every gate (ag_read_all
4// yields tot newline rows with the known anchor gate first), AND the neg-controls hold (no phantom row past the
5// end; the byte comparison discriminates right-vs-wrong). Run standalone (CWD=nxc2). license_tier: ORIGINAL
6import "nx_adversarial_sov.nx"
7import "nx_syscalls.nx"
8
9func gp(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
10func gn(v: i64) -> i64 {
11 let t: *u8=sys_mmap(24); var m: i64=v; var k: i64=0
12 if m==0 { t[0]=48 as u8; k=1 }
13 while m>0 { t[k]=(48+(m%10)) as u8; m=m/10; k=k+1 }
14 let o: *u8=sys_mmap(24); var i: i64=0; while i<k { o[i]=t[k-1-i]; i=i+1 } sys_write(1,o,k); return 0
15}
16func gred(msg: *u8) -> i64 { gp(" RED: " as *u8); gp(msg); gp("\n" as *u8); sys_exit(1); return 1 }
17
18// does the NUL-terminated store gate `a` equal the NUL-terminated expected `b`?
19func gstreq(a: *u8, b: *u8) -> i64 { var i: i64=0; while a[i]!=(0 as u8){ if a[i]!=b[i]{return 0} i=i+1 } if b[i]!=(0 as u8){return 0} return 1 }
20
21func main() -> i64 {
22 gp("=== nx_adversarial_sov_gate: prove the adversarial-suite store flip (byte-exact + teeth) ===\n" as *u8)
23
24 // T1 -- migrate seeds the store byte-exact from the .conf migrate-source
25 let totp: *i64 = sys_mmap(16) as *i64
26 let verp: *i64 = sys_mmap(16) as *i64
27 ag_migrate(totp, verp)
28 let tot: i64 = totp[0]
29 let ver: i64 = verp[0]
30 gp(" T1 migrate: tot=" as *u8); gn(tot); gp(" verified=" as *u8); gn(ver); gp("\n" as *u8)
31 if tot <= 0 { gred("no gates migrated (empty conf / store) -> fail-closed" as *u8) }
32 if ver != tot { gred("byte-verify mismatch (store row != conf row)" as *u8) }
33
34 // T2 -- the store round-trips: ag_count sees exactly the migrated rows
35 let cnt: i64 = ag_count()
36 gp(" T2 ag_count=" as *u8); gn(cnt); gp("\n" as *u8)
37 if cnt != tot { gred("ag_count != migrated tot (store lost/gained a row)" as *u8) }
38
39 // T3 -- the reader reconstructs every gate: ag_read_all yields tot newline rows, anchor gate first
40 let buf: *u8 = sys_mmap(65536)
41 let rlen: i64 = ag_read_all(buf, 65536)
42 var lines: i64 = 0; var i: i64 = 0
43 while i < rlen { if buf[i]==(10 as u8) { lines=lines+1 } i=i+1 }
44 gp(" T3 ag_read_all bytes=" as *u8); gn(rlen); gp(" lines=" as *u8); gn(lines); gp("\n" as *u8)
45 if lines != tot { gred("ag_read_all line count != tot (reader dropped/added a row)" as *u8) }
46 let g0: *u8 = sys_mmap(256)
47 ag_gate(0, g0, 256)
48 if gstreq(g0, "nx_regress_bank" as *u8) != 1 { gred("gate 0 != anchor nx_regress_bank (order/content drift)" as *u8) }
49
50 // T4 -- neg-controls: no phantom row past the end + the byte comparison discriminates (has teeth)
51 let past: *u8 = sys_mmap(256)
52 if ag_gate(tot, past, 256) != (0 - 1) { gred("neg-control FAIL: ag_gate(tot) returned a phantom row" as *u8) }
53 if gstreq(g0, "nx_NOT_A_REAL_GATE" as *u8) == 1 { gred("neg-control FAIL: comparison matched a wrong string (no teeth)" as *u8) }
54
55 gp("\nADVERSARIAL-SOV GATE GREEN -- " as *u8); gn(tot)
56 gp(" gates migrated byte-exact to knowledge/store/adversarial; reader + neg-controls hold.\n" as *u8)
57 sys_exit(0)
58 return 0
59}