code wiki / _hdl_build / nx_queue_load.nx
nx_queue_load.nx source
↩ module page · 238 lines · 9170 B
1// nx_queue_load.nx -- IM-Q1: the PROGRAM'S OWN COORDINATION DATA becomes
2// first-class records on the sovereign store (operator 2026-06-11: "own our
3// information management -- a tsv file is not nishi; bottom up hardware rung
4// and each rung nishi"). The seg-store substrate is already hardware-up
5// (rungs 1-9, beats FTS5); this rung puts the QUEUE on it:
6// assignment_queue.tsv rows -> key "aq:"+<row-id>, value = canonical record
7// {kind: queue-row, id, row}. SAME key, NEW VERSION on every change --
8// `nx_store_query hist aq:X-Q-003` is the row's full status time-travel,
9// something the bare TSV can never answer. Idempotent: unchanged row =
10// identical canonical bytes = dup_instore, never re-added.
11// sponsor_decisions.tsv / planning_prefs.tsv / callouts.tsv lines ->
12// content-CID line records (sd:/pp:/co: prefixes, nx_log_load pattern) --
13// the sponsor's decisions + the training corpus gain provenance lineage.
14// The TSV files stay as the WRITE surface this rung (API stability); IM-Q2
15// (filed) moves writers store-first and derives the TSV as a render.
16// argv[1]=store prefix override, argv[2]=queue path override (gates).
17// Evidence: QUEUE-STORE row -> stdout + knowledge/status/infomgmt_store.log.
18// license_tier: ORIGINAL
19
20import "nx_syscalls.nx"
21import "nx_canon_cid.nx"
22import "nx_seg_store.nx"
23const QL_MAGIC_3800: i64 = 3800
24const QL_MAGIC_4096: i64 = 4096
25const QL_MAGIC_8192: i64 = 8192
26
27func ql_p(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
28func ql_fp(fd: i64, s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(fd,s,n); return 0 }
29func ql_fn(fd: i64, v: i64) -> i64 { let bb: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m; sys_write(fd,"-" as *u8,1)}; let t: *u8=sys_mmap(28); var k: i64=0; if m==0{t[0]=48;k=1}; while m>0{t[k]=(48+(m%10)) as u8;m=m/10;k=k+1}; var i: i64=0; while i<k{bb[i]=t[k-1-i];i=i+1}; sys_write(fd,bb,k); return 0 }
30
31func ql_memeq(a: *u8, b: *u8, n: i64) -> i64 {
32 var i: i64 = 0
33 while i < n {
34 if a[i] != b[i] { return 0 }
35 i = i + 1
36 }
37 return 1
38}
39
40// st: st[0]=writer st[1]=wdocs st[2]=segs st[3]=added st[4]=dup st[5]=scanned
41// st[6]=abort-rc st[7]=open handle
42const QL_CHUNK: i64 = 64
43
44func ql_flush(prefix: *u8, st: *i64) -> i64 {
45 if st[1] == 0 { return 0 }
46 let rc: i64 = ss_commit(prefix, st[0] as *i64, sys_now_us())
47 if rc != 0 { st[6] = rc; return rc }
48 st[0] = ss_begin() as i64
49 st[1] = 0
50 st[2] = st[2] + 1
51 return 0
52}
53
54// add record if the store's latest version differs (or key absent); 0/neg
55func ql_put(prefix: *u8, st: *i64, kbuf: *u8, enc: *u8, el: i64) -> i64 {
56 let pp: *i64 = sys_mmap(16) as *i64
57 let ll: *i64 = sys_mmap(16) as *i64
58 var have: i64 = 0
59 let g: i64 = ss_hget(st[7] as *i64, kbuf, pp, ll)
60 if g == 1 { if ll[0] == el { if ql_memeq(pp[0] as *u8, enc, el) == 1 { have = 1 } } }
61 if have == 1 { st[4] = st[4] + 1; return 0 }
62 if ss_add(st[0] as *i64, 1, kbuf, enc, el) != 0 { st[6] = 0 - 98; return 0 - 3 }
63 st[3] = st[3] + 1
64 st[1] = st[1] + 1
65 if st[1] >= QL_CHUNK { if ql_flush(prefix, st) != 0 { return 0 - 4 } }
66 return 0
67}
68
69// one queue row line [i,lend) -> aq:<id> versioned record
70func ql_row(prefix: *u8, st: *i64, b: *u8, i: i64, lend: i64) -> i64 {
71 let llen: i64 = lend - i
72 if llen <= 0 { return 0 }
73 if b[i] == (35 as u8) { return 0 }
74 if llen > QL_MAGIC_3800 { return 0 }
75 // id = field 0 (to first tab); no tab = not a row
76 var idl: i64 = 0
77 var go: i64 = 1
78 while go == 1 {
79 if i + idl >= lend { return 0 } else {
80 if b[i + idl] == (9 as u8) { go = 0 } else {
81 idl = idl + 1
82 if idl > 40 { return 0 }
83 }
84 }
85 }
86 if idl == 0 { return 0 }
87 st[5] = st[5] + 1
88 let idb: *u8 = sys_mmap(64)
89 var t: i64 = 0
90 while t < idl { idb[t] = b[i + t]; t = t + 1 }
91 idb[idl] = 0 as u8
92 let lbuf: *u8 = sys_mmap(QL_MAGIC_4096)
93 t = 0
94 while t < llen { lbuf[t] = b[i + t]; t = t + 1 }
95 lbuf[llen] = 0 as u8
96 let keys: *i64 = sys_mmap(8 * 4) as *i64
97 let vals: *i64 = sys_mmap(8 * 4) as *i64
98 keys[0] = "kind" as *u8 as i64
99 keys[1] = "id" as *u8 as i64
100 keys[2] = "row" as *u8 as i64
101 vals[0] = "queue-row" as *u8 as i64
102 vals[1] = idb as i64
103 vals[2] = lbuf as i64
104 let enc: *u8 = sys_mmap(QL_MAGIC_8192)
105 let el: i64 = canon_encode(keys, vals, 3, enc)
106 let kbuf: *u8 = sys_mmap(128)
107 var ko: i64 = 0
108 ko = ss_cat(kbuf, ko, "aq:" as *u8)
109 ko = ss_cat(kbuf, ko, idb)
110 kbuf[ko] = 0 as u8
111 return ql_put(prefix, st, kbuf, enc, el)
112}
113
114func ql_load_queue(prefix: *u8, path: *u8, st: *i64) -> i64 {
115 let szp: *i64 = sys_mmap(16) as *i64
116 let b: *u8 = ss_readall(path, szp)
117 let sz: i64 = szp[0]
118 if sz <= 0 { return 0 - 1 }
119 var i: i64 = 0
120 while i < sz {
121 var e: i64 = i
122 var go: i64 = 1
123 while go == 1 {
124 if e >= sz { go = 0 } else {
125 if b[e] == (10 as u8) { go = 0 } else { e = e + 1 }
126 }
127 }
128 if ql_row(prefix, st, b, i, e) < 0 { return 0 - 2 }
129 i = e + 1
130 }
131 return 0
132}
133
134// line-CID records for a sponsor-surface file (nx_log_load pattern)
135func ql_load_lines(prefix: *u8, path: *u8, tag: *u8, st: *i64) -> i64 {
136 let szp: *i64 = sys_mmap(16) as *i64
137 let b: *u8 = ss_readall(path, szp)
138 let sz: i64 = szp[0]
139 if sz <= 0 { return 0 }
140 let keys: *i64 = sys_mmap(8 * 4) as *i64
141 let vals: *i64 = sys_mmap(8 * 4) as *i64
142 keys[0] = "kind" as *u8 as i64
143 keys[1] = "log" as *u8 as i64
144 keys[2] = "line" as *u8 as i64
145 vals[0] = "sponsor-surface-line" as *u8 as i64
146 vals[1] = tag as i64
147 let lbuf: *u8 = sys_mmap(QL_MAGIC_4096)
148 let enc: *u8 = sys_mmap(QL_MAGIC_8192)
149 let cid: *u8 = sys_mmap(96)
150 let kbuf: *u8 = sys_mmap(160)
151 var i: i64 = 0
152 while i < sz {
153 var e: i64 = i
154 var go: i64 = 1
155 while go == 1 {
156 if e >= sz { go = 0 } else {
157 if b[e] == (10 as u8) { go = 0 } else { e = e + 1 }
158 }
159 }
160 let llen: i64 = e - i
161 var use: i64 = 1
162 if llen <= 0 { use = 0 }
163 if llen > QL_MAGIC_3800 { use = 0 }
164 if use == 1 { if b[i] == (35 as u8) { use = 0 } }
165 if use == 1 {
166 st[5] = st[5] + 1
167 var t: i64 = 0
168 while t < llen { lbuf[t] = b[i + t]; t = t + 1 }
169 lbuf[llen] = 0 as u8
170 vals[2] = lbuf as i64
171 let el: i64 = canon_encode(keys, vals, 3, enc)
172 cid_of(enc, el, cid)
173 var ko: i64 = 0
174 ko = ss_cat(kbuf, ko, tag)
175 ko = ss_cat(kbuf, ko, ":" as *u8)
176 ko = ss_cat(kbuf, ko, cid)
177 kbuf[ko] = 0 as u8
178 if ql_put(prefix, st, kbuf, enc, el) < 0 { return 0 - 2 }
179 }
180 i = e + 1
181 }
182 return 0
183}
184
185func main(argc: i64, argv: *i64) -> i64 {
186 var prefix: *u8 = "knowledge/store/im-" as *u8
187 var qpath: *u8 = "knowledge/registry/assignment_queue.tsv" as *u8
188 if argc >= 2 { prefix = argv[1] as *u8 }
189 if argc >= 3 { qpath = argv[2] as *u8 }
190 let logfd: i64 = sys_openat_append("knowledge/status/infomgmt_store.log" as *u8, 0x1a4)
191
192 let st: *i64 = sys_mmap(8 * 16) as *i64
193 st[0] = ss_begin() as i64
194 st[7] = ss_open(prefix) as i64
195
196 if ql_load_queue(prefix, qpath, st) != 0 {
197 ql_p("QUEUE-STORE FAILED rc-inner=" as *u8); ql_fn(1, st[6]); ql_p(" -- fail loud\n" as *u8)
198 sys_exit(1)
199 }
200 // sponsor surfaces ride the same pass (real paths only; scratch gates
201 // pass a scratch prefix so these dedup against it harmlessly)
202 ql_load_lines(prefix, "knowledge/registry/sponsor_decisions.tsv" as *u8, "sd" as *u8, st)
203 ql_load_lines(prefix, "knowledge/registry/planning_prefs.tsv" as *u8, "pp" as *u8, st)
204 ql_load_lines(prefix, "knowledge/registry/callouts.tsv" as *u8, "co" as *u8, st)
205 if st[6] != 0 {
206 ql_p("QUEUE-STORE FAILED late rc=" as *u8); ql_fn(1, st[6]); ql_p("\n" as *u8)
207 sys_exit(1)
208 }
209 if ql_flush(prefix, st) != 0 {
210 ql_p("QUEUE-STORE final commit FAILED -- fail loud\n" as *u8)
211 sys_exit(1)
212 }
213
214 // probe: the queue is QUERYABLE on the team's own substrate
215 let h2: *i64 = ss_open(prefix)
216 let pp2: *i64 = sys_mmap(16) as *i64
217 let ll2: *i64 = sys_mmap(16) as *i64
218 let probe: i64 = ss_hget(h2, "aq:X-Q-003" as *u8, pp2, ll2)
219
220 var fdi: i64 = 0
221 while fdi < 2 {
222 var fd: i64 = 1
223 if fdi == 1 { fd = logfd }
224 if fd > 0 {
225 ql_fp(fd, "QUEUE-STORE scanned=" as *u8); ql_fn(fd, st[5])
226 ql_fp(fd, " added=" as *u8); ql_fn(fd, st[3])
227 ql_fp(fd, " dup_instore=" as *u8); ql_fn(fd, st[4])
228 ql_fp(fd, " segments=" as *u8); ql_fn(fd, st[2])
229 ql_fp(fd, " probe_aq=" as *u8); ql_fn(fd, probe)
230 ql_fp(fd, " epoch=" as *u8); ql_fn(fd, sys_now_realtime_sec())
231 ql_fp(fd, " verdict=GREEN\n" as *u8)
232 }
233 fdi = fdi + 1
234 }
235 if logfd > 0 { sys_close(logfd) }
236 sys_exit(0)
237 return 0
238}