code wiki / _hdl_build / nx_promptpack.nx
nx_promptpack.nx source
↩ module page · 349 lines · 13390 B
1// nx_promptpack.nx -- CU01 PROMPT-SCAFFOLD EMITTER (capability-uplift lane; SPEC1 promptpack-format-law
2// pinned 2026-07-21): internal SSOT = capuplift- plane (sovereign rows); per-target scaffolds are EMITTED
3// from emitter rules held as DATA in the same plane (rule 11) -- an emitfmt row maps target -> 4 boundary
4// affixes (open_pre|open_suf|close_pre|close_suf pipe-packed in content); a secmap row maps section+order
5// -> the PT row whose guidance fills it. Adding a partner model or section = a data row, ZERO code.
6// XML/markdown exist ONLY as emitted boundary bytes (sovereign-base-interop-boundary law), never the base.
7// Composes nx_sovjson_lib + nx_store_seed_lib + nx_gate_verdict from birth = OO, dogfoods the shared base.
8// license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0
9// emit <target> [prefix] -> scaffold text | targets [prefix] -> JSON map | selftest [tmpprefix] -> gate
10// capuplift- row = id name sev status owner topic content (7-col; topic emitfmt/secmap drive the emit).
11import "nx_sovjson_lib.nx"
12import "nx_store_seed_lib.nx"
13import "nx_seg_store.nx"
14import "nx_gate_verdict.nx"
15import "nx_syscalls.nx"
16
17const PP_CAP: i64 = 1048576
18const PP_OUT: i64 = 65536
19const PP_SPAN: i64 = 16
20const PP_USAGE: i64 = 2
21const PP_NOTGT: i64 = 3
22const PP_ORDMAX: i64 = 32
23const PP_TGTESC: i64 = 40
24const PP_FMTESC: i64 = 60
25
26func pp_cat_span(out: *u8, o: i64, buf: *u8, s: i64, e: i64) -> i64 {
27 var oo: i64 = o
28 var j: i64 = s
29 while j < e {
30 out[oo] = buf[j]
31 oo = oo + 1
32 j = j + 1
33 }
34 return oo
35}
36
37func pp_span_eq(a: *u8, s1: i64, e1: i64, b: *u8, s2: i64, e2: i64) -> i64 {
38 let l1: i64 = e1 - s1
39 let l2: i64 = e2 - s2
40 if l1 < l2 { return 0 }
41 if l2 < l1 { return 0 }
42 var ok: i64 = 1
43 var j: i64 = 0
44 while j < l1 {
45 let x: i64 = a[s1 + j] as i64
46 let y: i64 = b[s2 + j] as i64
47 if x < y { ok = 0 }
48 if x > y { ok = 0 }
49 j = j + 1
50 }
51 return ok
52}
53
54func pp_find(buf: *u8, l: i64, lit: *u8) -> i64 {
55 let ll: i64 = sj_vlen(lit)
56 var hit: i64 = 0 - 1
57 var i: i64 = 0
58 while i + ll <= l {
59 if hit < 0 {
60 var ok: i64 = 1
61 var j: i64 = 0
62 while j < ll {
63 let x: i64 = buf[i + j] as i64
64 let y: i64 = lit[j] as i64
65 if x < y { ok = 0 }
66 if x > y { ok = 0 }
67 j = j + 1
68 }
69 if ok == 1 { hit = i }
70 }
71 i = i + 1
72 }
73 return hit
74}
75
76// idx-th pipe-separated field inside [s,e); fills f[0]/f[1]; pipes appear ONLY in emitfmt content.
77func pp_field(buf: *u8, s: i64, e: i64, idx: i64, f: *i64) -> i64 {
78 var fs: i64 = s
79 var k: i64 = 0
80 var found: i64 = 0
81 var j: i64 = s
82 while j < e {
83 if found == 0 {
84 let ch: i64 = buf[j] as i64
85 if ch == 124 {
86 if k == idx {
87 f[0] = fs
88 f[1] = j
89 found = 1
90 }
91 k = k + 1
92 fs = j + 1
93 }
94 }
95 j = j + 1
96 }
97 if found == 0 {
98 if k == idx {
99 f[0] = fs
100 f[1] = e
101 found = 1
102 }
103 }
104 return found
105}
106
107func pp_section(buf: *u8, n: i64, out: *u8, o: i64, ss: i64, se: i64, rs: i64, re: i64, es: i64, ee: i64) -> i64 {
108 let f2: *i64 = sys_mmap(PP_SPAN) as *i64
109 let f3: *i64 = sys_mmap(PP_SPAN) as *i64
110 let d0: *i64 = sys_mmap(PP_SPAN) as *i64
111 let d6: *i64 = sys_mmap(PP_SPAN) as *i64
112 var oo: i64 = o
113 if pp_field(buf, es, ee, 0, f2) == 1 { oo = pp_cat_span(out, oo, buf, f2[0], f2[1]) }
114 oo = pp_cat_span(out, oo, buf, ss, se)
115 if pp_field(buf, es, ee, 1, f2) == 1 { oo = pp_cat_span(out, oo, buf, f2[0], f2[1]) }
116 out[oo] = 10 as u8
117 oo = oo + 1
118 var i: i64 = 0
119 while i < n {
120 let le: i64 = sj_le(buf, i, n)
121 if sj_col(buf, i, le, 0, d0) == 1 {
122 if pp_span_eq(buf, d0[0], d0[1], buf, rs, re) == 1 {
123 if sj_col(buf, i, le, 6, d6) == 1 {
124 oo = sj_cat(out, oo, "guidance: " as *u8)
125 oo = pp_cat_span(out, oo, buf, d6[0], d6[1])
126 out[oo] = 10 as u8
127 oo = oo + 1
128 }
129 }
130 }
131 i = le + 1
132 }
133 var has2: i64 = 0
134 var has3: i64 = 0
135 if pp_field(buf, es, ee, 2, f2) == 1 { if f2[1] > f2[0] { has2 = 1 } }
136 if pp_field(buf, es, ee, 3, f3) == 1 { if f3[1] > f3[0] { has3 = 1 } }
137 var closed: i64 = 0
138 if has2 == 1 { closed = 1 }
139 if has3 == 1 { closed = 1 }
140 if closed == 1 {
141 oo = pp_cat_span(out, oo, buf, f2[0], f2[1])
142 oo = pp_cat_span(out, oo, buf, ss, se)
143 oo = pp_cat_span(out, oo, buf, f3[0], f3[1])
144 out[oo] = 10 as u8
145 oo = oo + 1
146 }
147 out[oo] = 10 as u8
148 oo = oo + 1
149 return oo
150}
151
152func pp_emit(prefix: *u8, tgt: *u8, out: *u8) -> i64 {
153 let buf: *u8 = sys_mmap(PP_CAP)
154 let n: i64 = sts_load(prefix, buf, PP_CAP)
155 let c1: *i64 = sys_mmap(PP_SPAN) as *i64
156 let c2: *i64 = sys_mmap(PP_SPAN) as *i64
157 let c5: *i64 = sys_mmap(PP_SPAN) as *i64
158 let c6: *i64 = sys_mmap(PP_SPAN) as *i64
159 var em_s: i64 = 0 - 1
160 var em_e: i64 = 0 - 1
161 var i: i64 = 0
162 while i < n {
163 let le: i64 = sj_le(buf, i, n)
164 if sj_col(buf, i, le, 5, c5) == 1 {
165 if sj_lit_eq(buf, c5[0], c5[1], "emitfmt" as *u8) == 1 {
166 if sj_col(buf, i, le, 1, c1) == 1 {
167 if sj_lit_eq(buf, c1[0], c1[1], tgt) == 1 {
168 if sj_col(buf, i, le, 6, c6) == 1 {
169 em_s = c6[0]
170 em_e = c6[1]
171 }
172 }
173 }
174 }
175 }
176 i = le + 1
177 }
178 if em_s < 0 { return 0 - 1 }
179 var o: i64 = 0
180 o = sj_cat(out, o, "NX-PROMPTPACK scaffold target=" as *u8)
181 o = sj_cat(out, o, tgt)
182 o = sj_cat(out, o, " src=capuplift-plane law=SPEC1-data-driven order=secmap\n" as *u8)
183 var nsec: i64 = 0
184 var ord: i64 = 0
185 while ord < PP_ORDMAX {
186 var i2: i64 = 0
187 while i2 < n {
188 let le2: i64 = sj_le(buf, i2, n)
189 if sj_col(buf, i2, le2, 5, c5) == 1 {
190 if sj_lit_eq(buf, c5[0], c5[1], "secmap" as *u8) == 1 {
191 if sj_col(buf, i2, le2, 2, c2) == 1 {
192 if sj_atoi_span(buf, c2[0], c2[1]) == ord {
193 if sj_col(buf, i2, le2, 1, c1) == 1 {
194 if sj_col(buf, i2, le2, 6, c6) == 1 {
195 o = pp_section(buf, n, out, o, c1[0], c1[1], c6[0], c6[1], em_s, em_e)
196 nsec = nsec + 1
197 }
198 }
199 }
200 }
201 }
202 }
203 i2 = le2 + 1
204 }
205 ord = ord + 1
206 }
207 o = sj_cat(out, o, "NX-PROMPTPACK-END sections=" as *u8)
208 o = sj_catn(out, o, nsec)
209 out[o] = 10 as u8
210 o = o + 1
211 return o
212}
213
214func pp_targets(prefix: *u8, out: *u8) -> i64 {
215 let buf: *u8 = sys_mmap(PP_CAP)
216 let n: i64 = sts_load(prefix, buf, PP_CAP)
217 let c1: *i64 = sys_mmap(PP_SPAN) as *i64
218 let c5: *i64 = sys_mmap(PP_SPAN) as *i64
219 let c6: *i64 = sys_mmap(PP_SPAN) as *i64
220 var o: i64 = 0
221 o = sj_cat(out, o, "{\"organ\":\"nx_promptpack\",\"verb\":\"targets\",\"targets\":[" as *u8)
222 var shown: i64 = 0
223 var i: i64 = 0
224 while i < n {
225 let le: i64 = sj_le(buf, i, n)
226 if sj_col(buf, i, le, 5, c5) == 1 {
227 if sj_lit_eq(buf, c5[0], c5[1], "emitfmt" as *u8) == 1 {
228 if sj_col(buf, i, le, 1, c1) == 1 {
229 if shown > 0 { o = sj_cat(out, o, "," as *u8) }
230 o = sj_cat(out, o, "{\"target\":\"" as *u8)
231 o = sj_cat_esc(out, o, buf, c1[0], c1[1], PP_TGTESC)
232 o = sj_cat(out, o, "\",\"fmt\":\"" as *u8)
233 if sj_col(buf, i, le, 6, c6) == 1 { o = sj_cat_esc(out, o, buf, c6[0], c6[1], PP_FMTESC) }
234 o = sj_cat(out, o, "\"}" as *u8)
235 shown = shown + 1
236 }
237 }
238 }
239 i = le + 1
240 }
241 o = sj_cat(out, o, "],\"targets_total\":" as *u8)
242 o = sj_catn(out, o, shown)
243 o = sj_cat(out, o, ",\"note\":\"emitfmt rows ARE the target->format map (SPEC1 rule-11): open_pre|open_suf|close_pre|close_suf pipe-packed; add a target = add a data row, zero code\"}" as *u8)
244 out[o] = 10 as u8
245 o = o + 1
246 return o
247}
248
249func pp_selftest(base: *u8) -> i64 {
250 let ctr: *i64 = gv_ctr()
251 gv_head("nx_promptpack selftest -- data-driven per-target scaffold emitter (SPEC1)" as *u8)
252 let now: i64 = sys_now_realtime_sec()
253 let fp: *u8 = sys_mmap(256)
254 var fo: i64 = sj_cat(fp, 0, base)
255 fo = sj_catn(fp, fo, now)
256 fo = sj_cat(fp, fo, "capup-" as *u8)
257 fp[fo] = 0 as u8
258 let seed: *u8 = sys_mmap(PP_CAP)
259 var so: i64 = 0
260 so = sj_cat(seed, so, "PT01\ttask-struct\t8\tINGESTED\tmw\tpromptpack\tTask first with role and purpose\n" as *u8)
261 so = sj_cat(seed, so, "PT03\tprefill\t7\tINGESTED\tmw\tpromptpack\tPrefill the assistant turn\n" as *u8)
262 so = sj_cat(seed, so, "EMX\txmlish\t8\tACTIVE\tmw\temitfmt\t<|>|</|>\n" as *u8)
263 so = sj_cat(seed, so, "EMM\tmdish\t8\tACTIVE\tmw\temitfmt\t## |||\n" as *u8)
264 so = sj_cat(seed, so, "SC1\ttask\t1\tACTIVE\tmw\tsecmap\tPT01\n" as *u8)
265 so = sj_cat(seed, so, "SC2\treminders\t2\tACTIVE\tmw\tsecmap\tPT03\n" as *u8)
266 sts_seed(fp, seed, so)
267 let o1: *u8 = sys_mmap(PP_OUT)
268 let l1: i64 = pp_emit(fp, "xmlish" as *u8, o1)
269 gv_check("T1 xml-style target wraps+closes section around PT guidance" as *u8, sj_span_has(o1, 0, l1, "<task>\nguidance: Task first with role and purpose\n</task>" as *u8), ctr)
270 let o2: *u8 = sys_mmap(PP_OUT)
271 let l2: i64 = pp_emit(fp, "mdish" as *u8, o2)
272 var t2: i64 = 0
273 if sj_span_has(o2, 0, l2, "## task\nguidance: Task first" as *u8) == 1 {
274 if sj_span_has(o2, 0, l2, "</task>" as *u8) == 0 {
275 if sj_span_has(o2, 0, l2, "## reminders" as *u8) == 1 { t2 = 1 }
276 }
277 }
278 gv_check("T2 md-style target: native headers, NO close tags (fmt is per-target data)" as *u8, t2, ctr)
279 var t3: i64 = 0
280 let p1: i64 = pp_find(o1, l1, "<task>" as *u8)
281 let p2: i64 = pp_find(o1, l1, "<reminders>" as *u8)
282 if p1 >= 0 { if p2 > p1 { t3 = 1 } }
283 gv_check("T3 secmap order honored (task order-1 before reminders order-2)" as *u8, t3, ctr)
284 so = sj_cat(seed, so, "EMZ\tzz\t8\tACTIVE\tmw\temitfmt\t[ | ]|[end | ]\n" as *u8)
285 sts_seed(fp, seed, so)
286 let o4: *u8 = sys_mmap(PP_OUT)
287 let l4: i64 = pp_emit(fp, "zz" as *u8, o4)
288 var t4: i64 = 0
289 if sj_span_has(o4, 0, l4, "[ task ]" as *u8) == 1 { if sj_span_has(o4, 0, l4, "[end task ]" as *u8) == 1 { t4 = 1 } }
290 gv_check("T4 rule-11 tooth: NEW target = one data row, ZERO code change" as *u8, t4, ctr)
291 let o5: *u8 = sys_mmap(PP_OUT)
292 var t5: i64 = 0
293 if pp_emit(fp, "nope" as *u8, o5) < 0 { t5 = 1 }
294 gv_check("T5 NEG unknown target fails LOUD (no silent empty scaffold)" as *u8, t5, ctr)
295 let o6: *u8 = sys_mmap(PP_OUT)
296 let l6: i64 = pp_targets(fp, o6)
297 var t6: i64 = 0
298 if sj_span_has(o6, 0, l6, "\"target\":\"xmlish\"" as *u8) == 1 { if sj_span_has(o6, 0, l6, "\"target\":\"zz\"" as *u8) == 1 { t6 = 1 } }
299 gv_check("T6 targets verb lists the live data-map (incl the added row)" as *u8, t6, ctr)
300 let rc: i64 = gv_verdict("PROMPTPACK-GATE" as *u8, ctr, "per-target scaffolds from plane data: emitfmt affixes + secmap order + PT guidance; unknown target loud-fails" as *u8)
301 return rc
302}
303
304func main(argc: i64, argv: *i64) -> i64 {
305 if argc < 2 {
306 sj_werr("usage: nx_promptpack {emit <target> [prefix] | targets [prefix] | selftest [tmpprefix]}\n" as *u8)
307 sys_exit(PP_USAGE)
308 return PP_USAGE
309 }
310 let verb: *u8 = argv[1] as *u8
311 if sj_lit_eq(verb, 0, sj_vlen(verb), "emit" as *u8) == 1 {
312 if argc < 3 {
313 sj_werr("PROMPTPACK-FAIL emit needs <target>\n" as *u8)
314 sys_exit(PP_USAGE)
315 return PP_USAGE
316 }
317 var pfx: *u8 = "knowledge/store/capuplift-" as *u8
318 if argc > 3 { pfx = argv[3] as *u8 }
319 let out: *u8 = sys_mmap(PP_OUT)
320 let n: i64 = pp_emit(pfx, argv[2] as *u8, out)
321 if n < 0 {
322 sj_werr("PROMPTPACK-FAIL unknown target (no emitfmt row in plane)\n" as *u8)
323 sys_exit(PP_NOTGT)
324 return PP_NOTGT
325 }
326 sys_write(1, out, n)
327 sys_exit(0)
328 return 0
329 }
330 if sj_lit_eq(verb, 0, sj_vlen(verb), "targets" as *u8) == 1 {
331 var pfx2: *u8 = "knowledge/store/capuplift-" as *u8
332 if argc > 2 { pfx2 = argv[2] as *u8 }
333 let out2: *u8 = sys_mmap(PP_OUT)
334 let n2: i64 = pp_targets(pfx2, out2)
335 sys_write(1, out2, n2)
336 sys_exit(0)
337 return 0
338 }
339 if sj_lit_eq(verb, 0, sj_vlen(verb), "selftest" as *u8) == 1 {
340 var b: *u8 = "/tmp/nxppk_st" as *u8
341 if argc > 2 { b = argv[2] as *u8 }
342 let rc: i64 = pp_selftest(b)
343 sys_exit(rc)
344 return rc
345 }
346 sj_werr("PROMPTPACK-FAIL unknown verb\n" as *u8)
347 sys_exit(PP_USAGE)
348 return PP_USAGE
349}