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}