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}