code wiki / _hdl_build / nx_landmine_harvest.nx

nx_landmine_harvest.nx source

↩ module page · 155 lines · 8766 B

1// nx_landmine_harvest.nx -- Ingests the landmine registry into the sovereign knowledge base, adding new documented bugs while skipping duplicates and retired entries. 2import "nx_gate_gn.nx" 3// nx_landmine_harvest.nx -- ingest the DOCUMENTED landmine registry (knowledge/registry/landmines.tsv -- itself the 4// consolidation of "scattered memory files and module headers", per its own header) into the SOVEREIGN ki- recall 5// catalogue, so the team can recall EVERY documented past bug, not just the 14 hand-seeded by nx_known_issue_seed. 6// GROUNDED BY CONSTRUCTION (rule 4): it READS the real file at runtime -- no hardcoded/fabricated lessons; re-run as 7// the registry grows. ADDITIVE + GUARDED (rule 10/13): reads the live ki:ids, skips ids already present + RETIRED 8// rows, appends only NEW ones, never clobbers. Ingested as recall-by-id (signature "-") = the seed's honest pattern 9// for documented disciplines; the ONE measured-diagnostic upgrade is LM-030 (signature "unexpected operator token 10// kind=47", quoted verbatim from its own row) so it AUTO-matches. Self-proves: a harvested id is present, LM-030 11// auto-recalls, neg-control clean. NB: written flat (early-return helpers, no break/&&) to honor LM-002 (4-deep 12// nested-if miscompiles) and LM-001 (no &&/||/break). license_tier: ORIGINAL 13import "nx_known_issue_store.nx" 14import "nx_seg_store.nx" 15import "nx_syscalls.nx" 16const K_MAGIC_4096: i64 = 4096 17const K_MAGIC_1800: i64 = 1800 18const K_MAGIC_16384: i64 = 16384 19const K_MAGIC_2048: i64 = 2048 20 21func gp(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 22func tlen(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} return n } 23func bputs(dst: *u8, off: i64, s: *u8) -> i64 { var o: i64=off; var i: i64=0; while s[i]!=(0 as u8){ dst[o]=s[i]; o=o+1; i=i+1 } return o } 24func bcatn(dst: *u8, off: i64, src: *u8, from: i64, n: i64) -> i64 { var o: i64=off; var i: i64=0; while i<n { dst[o]=src[from+i]; o=o+1; i=i+1 } return o } 25func ucase(dst: *u8, off: i64, src: *u8, from: i64, n: i64) -> i64 { var o: i64=off; var i: i64=0; while i<n { var c: i64=src[from+i] as i64; if c>=97 { if c<=122 { c=c-32 } } dst[o]=c as u8; o=o+1; i=i+1 } return o } 26func find_tab(buf: *u8, from: i64, end: i64) -> i64 { var i: i64=from; while i<end { if buf[i]==(9 as u8){return i} i=i+1 } return 0-1 } 27func line_end(buf: *u8, from: i64, blen: i64) -> i64 { var e: i64=from; while e<blen { if buf[e]==(10 as u8){return e} e=e+1 } return blen } 28func streq_lit(buf: *u8, from: i64, n: i64, lit: *u8) -> i64 { 29 var L: i64=0; while lit[L]!=(0 as u8){L=L+1} 30 if L != n { return 0 } 31 var i: i64=0; while i<n { if buf[from+i]!=lit[i]{return 0} i=i+1 } return 1 32} 33// index of the next TAB at/after `from` within ilen, or ilen if none. 34func tok_end(idx: *u8, ilen: i64, from: i64) -> i64 { var e: i64=from; while e<ilen { if idx[e]==(9 as u8){return e} e=e+1 } return ilen } 35// 1 if idx[from..to) byte-equals id[0..idl). 36func is_tok(idx: *u8, from: i64, to: i64, id: *u8, idl: i64) -> i64 { 37 if (to-from) != idl { return 0 } 38 var k: i64=0; while k<idl { if idx[from+k]!=id[k]{return 0} k=k+1 } return 1 39} 40// 1 if `id` (idl bytes) is a TAB-delimited token in idx[0..ilen). 41func idx_has(idx: *u8, ilen: i64, id: *u8, idl: i64) -> i64 { 42 var i: i64=0 43 while i < ilen { 44 let le: i64 = tok_end(idx, ilen, i) 45 if is_tok(idx, i, le, id, idl) == 1 { return 1 } 46 i = le + 1 47 } 48 return 0 49} 50 51// parse one registry line [ls,e); if it is a NEW non-retired landmine, append its key/value + index token. 52func process_line(buf: *u8, ls: i64, e: i64, idx: *u8, ilenp: *i64, keys: *i64, vals: *i64, nrecp: *i64) -> i64 { 53 if e <= ls { return 0 } 54 if buf[ls] == (35 as u8) { return 0 } 55 let t1: i64 = find_tab(buf, ls, e) 56 if t1 < 0 { return 0 } 57 let t2: i64 = find_tab(buf, t1+1, e) 58 if t2 < 0 { return 0 } 59 if streq_lit(buf, t1+1, t2-(t1+1), "RETIRED-STALE" as *u8) == 1 { return 0 } 60 let idl: i64 = t1 - ls 61 let idb: *u8 = sys_mmap(64) 62 var k: i64=0; while k<idl { idb[k]=buf[ls+k]; k=k+1 } idb[idl]=0 as u8 63 if idx_has(idx, ilenp[0], idb, idl) == 1 { return 0 } 64 let key: *u8 = sys_mmap(80) 65 var ko: i64 = bputs(key, 0, "ki:" as *u8); ko = bputs(key, ko, idb); key[ko]=0 as u8 66 let val: *u8 = sys_mmap(K_MAGIC_4096) 67 var vo: i64 = bcatn(val, 0, buf, ls, idl) 68 val[vo]=9 as u8; vo=vo+1 69 vo = ucase(val, vo, buf, t1+1, t2-(t1+1)) 70 val[vo]=9 as u8; vo=vo+1 71 vo = bputs(val, vo, "DISCIPLINE" as *u8) 72 val[vo]=9 as u8; vo=vo+1 73 var issig: i64 = 0 74 if streq_lit(buf, ls, idl, "LM-030" as *u8) == 1 { issig = 1 } 75 if issig == 1 { vo = bputs(val, vo, "unexpected operator token kind=47" as *u8) } 76 if issig == 0 { val[vo]=45 as u8; vo=vo+1 } 77 val[vo]=9 as u8; vo=vo+1 78 var rn: i64 = e-(t2+1) 79 if rn > K_MAGIC_1800 { rn = K_MAGIC_1800 } 80 vo = bcatn(val, vo, buf, t2+1, rn) 81 val[vo]=0 as u8 82 let n: i64 = nrecp[0] 83 keys[n]=key as i64; vals[n]=val as i64 84 nrecp[0] = n + 1 85 var il: i64 = ilenp[0] 86 idx[il]=9 as u8; il=il+1 87 var kk: i64=0; while kk<idl { idx[il]=buf[ls+kk]; il=il+1; kk=kk+1 } 88 ilenp[0]=il 89 return 0 90} 91 92func main() -> i64 { 93 gp("=== nx_landmine_harvest: ingest documented landmines.tsv into the ki- recall catalogue ===\n" as *u8) 94 let lp: *i64 = sys_mmap(16) as *i64; lp[0]=0 95 let buf: *u8 = sys_read_file("knowledge/registry/landmines.tsv" as *u8, lp) 96 if (buf as i64)==0 { gp(" FAIL cannot read knowledge/registry/landmines.tsv\n" as *u8); sys_exit(1); return 1 } 97 let blen: i64 = lp[0] 98 99 let pq: *i64 = sys_mmap(16) as *i64 100 let lq: *i64 = sys_mmap(16) as *i64 101 let idx: *u8 = sys_mmap(K_MAGIC_16384); var ilen: i64 = 0 102 var have_existing: i64 = 0 103 if ki_get("ki:ids" as *u8, pq, lq) == 1 { 104 let src: *u8 = pq[0] as *u8; let sl: i64 = lq[0] 105 var c: i64=0; while c<sl { idx[c]=src[c]; c=c+1 } ilen=sl 106 if idx_has(idx, ilen, "LM-021" as *u8, 6) == 1 { have_existing=1 } 107 } 108 if have_existing==0 { gp(" FAIL ki:ids missing/unseeded (LM-021 absent) -- run nx_known_issue_seed first\n" as *u8); sys_exit(1); return 1 } 109 110 let keys: *i64 = sys_mmap(8*64) as *i64 111 let vals: *i64 = sys_mmap(8*64) as *i64 112 let ilenp: *i64 = sys_mmap(16) as *i64; ilenp[0]=ilen 113 let nrecp: *i64 = sys_mmap(16) as *i64; nrecp[0]=0 114 115 var i: i64 = 0 116 while i < blen { 117 let e: i64 = line_end(buf, i, blen) 118 process_line(buf, i, e, idx, ilenp, keys, vals, nrecp) 119 i = e + 1 120 } 121 let nrec: i64 = nrecp[0] 122 gp(" documented landmines NEW to the catalogue=" as *u8); gn(nrec); gp("\n" as *u8) 123 124 var committed: i64 = 0 125 if nrec > 0 { 126 let w: *i64 = ss_begin() 127 var j: i64=0 128 while j<nrec { ss_add(w, 1, keys[j] as *u8, vals[j] as *u8, tlen(vals[j] as *u8)); j=j+1 } 129 ss_add(w, 1, "ki:ids" as *u8, idx, ilenp[0]) 130 let segid: i64 = ki_seg_next_p(KI_PREFIX) 131 let rc: i64 = ss_commit(KI_PREFIX, w, segid) 132 if rc==0 { committed=1 } 133 gp(" commit_rc=" as *u8); gn(rc); gp("\n" as *u8) 134 } 135 if nrec == 0 { committed=1; gp(" (idempotent: every documented landmine is already catalogued)\n" as *u8) } 136 137 var pass: i64=0; var fail: i64=0 138 if committed==1 { pass=pass+1 } else { fail=fail+1; gp(" FAIL commit\n" as *u8) } 139 let g1: *i64 = sys_mmap(16) as *i64; let g2: *i64 = sys_mmap(16) as *i64 140 if ki_get("ki:LM-023" as *u8, g1, g2) == 1 { pass=pass+1 } else { fail=fail+1; gp(" FAIL LM-023 not in store\n" as *u8) } 141 let oid: *u8=sys_mmap(128); let orem: *u8=sys_mmap(K_MAGIC_2048); let ost: *u8=sys_mmap(64) 142 let d30: *u8 = "nx_parse: unexpected operator token kind=47 at expression start (no primary; parser desync)" as *u8 143 let r30: i64 = ki_recall(KI_PREFIX, d30, tlen(d30), oid, orem, ost) 144 var hit30: i64=0; if r30==KI_HIT { if ki_substr(oid, tlen(oid), "LM-030" as *u8, 6) >= 0 { hit30=1 } } 145 gp(" recall(unexpected operator token kind=47) -> id=" as *u8); gp(oid); gp("\n" as *u8) 146 if hit30==1 { pass=pass+1 } else { fail=fail+1; gp(" FAIL recall-lm030\n" as *u8) } 147 let oid2: *u8=sys_mmap(128); let orem2: *u8=sys_mmap(K_MAGIC_2048); let ost2: *u8=sys_mmap(64) 148 let dz: *u8 = "all green nothing wrong here at all today" as *u8 149 let rz: i64 = ki_recall(KI_PREFIX, dz, tlen(dz), oid2, orem2, ost2) 150 if rz==KI_UNKNOWN { pass=pass+1 } else { fail=fail+1; gp(" FAIL neg-control\n" as *u8) } 151 152 gp("LANDMINE-HARVEST pass=" as *u8); gn(pass); gp(" fail=" as *u8); gn(fail) 153 if fail==0 { gp(" verdict=GREEN (documented landmines ingested from the real registry; LM-030 auto-recalls; neg-control clean)\n" as *u8); sys_exit(0); return 0 } 154 gp(" verdict=RED\n" as *u8); sys_exit(1); return 1 155}