code wiki / _hdl_build / nx_reader_census_gate.nx
nx_reader_census_gate.nx source
↩ module page · 66 lines · 3600 B
1import "nx_gate_gn.nx"
2// nx_reader_census_gate.nx -- liar-kill gate: the reader census lives in the SOVEREIGN seg-store (NO TSV), proven
3// by reading the STORE directly (not the .tsv). Walks rc:ids, reads every rc:<id>, checks each has a valid status
4// field, asserts a known cell (rc:SC59 = the zero-JS reader, must be HAVE), and a NEGATIVE CONTROL: a bogus key is
5// ABSENT (the store never fabricates). Independent of the .tsv -> safe to delete the tsv after this is GREEN.
6// expect_exit: 0
7import "nx_reader_census_store.nx" // rc_get / rc_field
8import "nx_seg_store.nx"
9import "nx_syscalls.nx"
10
11func gp(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
12func 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 }
13
14func main() -> i64 {
15 gp("=== nx_reader_census_gate: census in the sovereign seg-store, read from the STORE (no tsv) ===\n" as *u8)
16 var pass: i64 = 0; var fail: i64 = 0
17
18 let pq: *i64 = sys_mmap(16) as *i64
19 let lq: *i64 = sys_mmap(16) as *i64
20 if rc_get("rc:ids" as *u8, pq, lq) == 1 { pass=pass+1 } else { fail=fail+1; gp(" FAIL no-index\n" as *u8); gp("READER-CENSUS-GATE verdict=RED\n" as *u8); sys_exit(1); return 1 }
21 let ids: *u8 = pq[0] as *u8
22 let idn: i64 = lq[0]
23
24 let idbuf: *u8 = sys_mmap(64)
25 let keybuf: *u8 = sys_mmap(128)
26 let stbuf: *u8 = sys_mmap(64)
27 let rq: *i64 = sys_mmap(16) as *i64
28 let rl: *i64 = sys_mmap(16) as *i64
29
30 var cells: i64 = 0
31 var valid_status: i64 = 0
32 var i: i64 = 0
33 while i < idn {
34 var o: i64 = 0
35 while i < idn { if ids[i] == (9 as u8) { break } idbuf[o] = ids[i]; o = o + 1; i = i + 1 }
36 if i < idn { i = i + 1 }
37 idbuf[o] = 0 as u8
38 if o > 0 {
39 keybuf[0]=114 as u8; keybuf[1]=99 as u8; keybuf[2]=58 as u8
40 var k: i64=0; while k<o { keybuf[3+k]=idbuf[k]; k=k+1 } keybuf[3+o]=0 as u8
41 if rc_get(keybuf, rq, rl) == 1 {
42 cells = cells + 1
43 rc_field(rq[0] as *u8, rl[0], 5, stbuf)
44 if gstreq(stbuf,"HAVE" as *u8)==1 { valid_status=valid_status+1 }
45 else { if gstreq(stbuf,"PARTIAL" as *u8)==1 { valid_status=valid_status+1 }
46 else { if gstreq(stbuf,"MISSING" as *u8)==1 { valid_status=valid_status+1 } } }
47 }
48 }
49 }
50 gp(" cells_in_store=" as *u8); gn(cells); gp(" valid_status=" as *u8); gn(valid_status); gp("\n" as *u8)
51 if cells >= 60 { pass=pass+1 } else { fail=fail+1; gp(" FAIL too-few-cells\n" as *u8) }
52 if valid_status == cells { pass=pass+1 } else { fail=fail+1; gp(" FAIL bad-status-field\n" as *u8) }
53
54 // a known cell: rc:SC59 (the ZERO-JS reader capability) must be present + HAVE
55 if rc_get("rc:SC59" as *u8, rq, rl) == 1 {
56 let st: *u8 = sys_mmap(64); rc_field(rq[0] as *u8, rl[0], 5, st)
57 if gstreq(st, "HAVE" as *u8) == 1 { pass=pass+1 } else { fail=fail+1; gp(" FAIL SC59-not-HAVE\n" as *u8) }
58 } else { fail=fail+1; gp(" FAIL SC59-absent\n" as *u8) }
59
60 // NEGATIVE CONTROL: a bogus key must be ABSENT (the store never fabricates)
61 if rc_get("rc:SC_BOGUS_XYZ" as *u8, rq, rl) != 1 { pass=pass+1 } else { fail=fail+1; gp(" FAIL bogus-fabricated\n" as *u8) }
62
63 gp("READER-CENSUS-GATE pass=" as *u8); gn(pass); gp(" fail=" as *u8); gn(fail)
64 if fail == 0 { gp(" verdict=GREEN (census served from the sovereign seg-store; no tsv needed)\n" as *u8); sys_exit(0); return 0 }
65 gp(" verdict=RED\n" as *u8); sys_exit(1); return 1
66}