nx_forge_ctx_gate.nx source
↩ module page · 188 lines · 8773 B
1// nx_forge_ctx_gate.nx -- gate for the F2 pack emitter (nx_forge_ctx.nx). Teeth:
2// T1 emit from the REAL tree -> sig count sane + all three sections present
3// T2 sig cross-check: every emitted `func std_` line exists verbatim in the LIVE lib (0 bad)
4// T3 NEG planted-signature: fixture lib + std_fake_planted -> cross-check vs REAL lib CATCHES it
5// T4 exemplar embedded byte-exact (tail-compare vs runtime/nx_fbench_probe.nx)
6// T5 NEG UNVERIFIED marker: fixture rules with a planted UNVERIFIED line -> fc_emit REFUSES (-3)
7// GREEN requires 5/5 (a rubber-stamp emitter or checker fails T3/T5 structurally).
8// license_tier: ORIGINAL expect_exit: 0
9import "nx_forge_ctx.nx"
10import "nx_gate_verdict.nx"
11
12func g_write2(path: *u8, a: *u8, an: i64, b: *u8, bn: i64) -> i64 {
13 let fd: i64 = sys_openat_wr(path, 420)
14 if fd < 0 {
15 let neg: i64 = 0 - 1
16 return neg
17 }
18 let w1: i64 = fc_wb(fd, a, an)
19 let w2: i64 = fc_wb(fd, b, bn)
20 sys_close(fd)
21 let s: i64 = w1 + w2
22 return s
23}
24
25func main(argc: i64, argv: *i64) -> i64 {
26 var pass: i64 = 0
27 // T1: emit from real sources, sections present
28 let r1: i64 = fc_emit("knowledge/forge/pack_rules_v1.txt" as *u8, "knowledge/forge/pack_rules_vet_v1.txt" as *u8, "runtime/nx_lib_std.nx" as *u8, "runtime/nx_fbench_probe.nx" as *u8, "/tmp/fc_pack_t1.txt" as *u8)
29 let pbuf: *u8 = sys_mmap(131072) as *u8
30 let pn: i64 = fc_read("/tmp/fc_pack_t1.txt" as *u8, pbuf, 131072)
31 var t1: i64 = 0
32 if r1 >= 5 {
33 if pn > 1000 {
34 let m1: *u8 = "HARD RULES" as *u8
35 let l1: i64 = std_slen(m1)
36 let f1: i64 = fc_contains(pbuf, pn, m1, l1)
37 let m2: *u8 = "SOVEREIGN STANDARD LIBRARY" as *u8
38 let l2: i64 = std_slen(m2)
39 let f2: i64 = fc_contains(pbuf, pn, m2, l2)
40 let m3: *u8 = "VERIFIED EXEMPLAR" as *u8
41 let l3: i64 = std_slen(m3)
42 let f3: i64 = fc_contains(pbuf, pn, m3, l3)
43 let fsum: i64 = f1 + f2 + f3
44 if fsum == 3 { t1 = 1 }
45 }
46 }
47 std_puts("T1 emit-real sigs=" as *u8)
48 std_pdec(r1)
49 if t1 == 1 { std_putln(" sections PASS" as *u8) }
50 if t1 == 0 { std_putln(" sections FAIL" as *u8) }
51 pass = pass + t1
52 // T2: cross-check emitted sigs vs the live lib
53 let lbuf: *u8 = sys_mmap(65536) as *u8
54 let lln: i64 = fc_read("runtime/nx_lib_std.nx" as *u8, lbuf, 65536)
55 var bad2: i64 = 0 - 1
56 if lln > 0 {
57 if pn > 0 { bad2 = fc_check_sigs(pbuf, pn, lbuf, lln) }
58 }
59 var t2: i64 = 0
60 if bad2 == 0 { t2 = 1 }
61 std_puts("T2 sig-crosscheck bad=" as *u8)
62 std_pdec(bad2)
63 if t2 == 1 { std_putln(" PASS" as *u8) }
64 if t2 == 0 { std_putln(" FAIL" as *u8) }
65 pass = pass + t2
66 // T3 NEG: planted signature in a fixture lib must be CAUGHT vs the real lib
67 let planted: *u8 = "\nfunc std_fake_planted(x: i64) -> i64 {\n" as *u8
68 let pl: i64 = std_slen(planted)
69 let wfix: i64 = g_write2("/tmp/fc_fix_lib.nx" as *u8, lbuf, lln, planted, pl)
70 var r3: i64 = 0 - 99
71 if wfix == 0 { r3 = fc_emit("knowledge/forge/pack_rules_v1.txt" as *u8, "knowledge/forge/pack_rules_vet_v1.txt" as *u8, "/tmp/fc_fix_lib.nx" as *u8, "runtime/nx_fbench_probe.nx" as *u8, "/tmp/fc_pack_t3.txt" as *u8) }
72 let p3: *u8 = sys_mmap(131072) as *u8
73 var p3n: i64 = 0
74 if r3 > 0 { p3n = fc_read("/tmp/fc_pack_t3.txt" as *u8, p3, 131072) }
75 var bad3: i64 = 0
76 if p3n > 0 { bad3 = fc_check_sigs(p3, p3n, lbuf, lln) }
77 var t3: i64 = 0
78 if bad3 > 0 { t3 = 1 }
79 std_puts("T3 planted-sig caught bad=" as *u8)
80 std_pdec(bad3)
81 if t3 == 1 { std_putln(" NEGCTL-CAUGHT PASS" as *u8) }
82 if t3 == 0 { std_putln(" NEGCTL-NOT-CAUGHT FAIL" as *u8) }
83 pass = pass + t3
84 // T4: exemplar embedded byte-exact at the pack tail
85 let ebuf: *u8 = sys_mmap(65536) as *u8
86 let en: i64 = fc_read("runtime/nx_fbench_probe.nx" as *u8, ebuf, 65536)
87 var t4: i64 = 0
88 if en > 0 {
89 if pn > en {
90 let off: i64 = pn - en
91 var k: i64 = 0
92 var okt: i64 = 1
93 while k < en {
94 let pi: i64 = off + k
95 let a: i64 = pbuf[pi] as i64
96 let b: i64 = ebuf[k] as i64
97 if a != b { okt = 0; k = en }
98 if a == b { k = k + 1 }
99 }
100 t4 = okt
101 }
102 }
103 std_puts("T4 exemplar-tail bytes=" as *u8)
104 std_pdec(en)
105 if t4 == 1 { std_putln(" PASS" as *u8) }
106 if t4 == 0 { std_putln(" FAIL" as *u8) }
107 pass = pass + t4
108 // T5 NEG: UNVERIFIED-marked rules must make fc_emit refuse with -3
109 let unv: *u8 = "UNVERIFIED planted claim with no runtime witness\n" as *u8
110 let un: i64 = std_slen(unv)
111 let rbuf: *u8 = sys_mmap(32768) as *u8
112 let rn: i64 = fc_read("knowledge/forge/pack_rules_v1.txt" as *u8, rbuf, 32768)
113 var t5: i64 = 0
114 var r5: i64 = 0 - 99
115 if rn > 0 {
116 let wf2: i64 = g_write2("/tmp/fc_fix_rules.txt" as *u8, unv, un, rbuf, rn)
117 if wf2 == 0 { r5 = fc_emit("/tmp/fc_fix_rules.txt" as *u8, "knowledge/forge/pack_rules_vet_v1.txt" as *u8, "runtime/nx_lib_std.nx" as *u8, "runtime/nx_fbench_probe.nx" as *u8, "/tmp/fc_pack_t5.txt" as *u8) }
118 }
119 let want5: i64 = 0 - 3
120 if r5 == want5 { t5 = 1 }
121 std_puts("T5 unverified-refused rc=" as *u8)
122 std_pdec(r5)
123 if t5 == 1 { std_putln(" NEGCTL-CAUGHT PASS" as *u8) }
124 if t5 == 0 { std_putln(" NEGCTL-NOT-CAUGHT FAIL" as *u8) }
125 pass = pass + t5
126 // T6: status-driven render -- planted ACTIVE row must be EMITTED, planted RETIRED row OMITTED
127 let fixv: *u8 = "RULE|ZA|ACTIVE|none|ZZMARK_ACTIVE_EMIT|WHY=planted active|COST=x|RETIRE=x\nRULE|ZR|RETIRED|none|ZZMARK_RETIRED_OMIT|WHY=planted retired|COST=x|RETIRE=x\n" as *u8
128 let fvl: i64 = std_slen(fixv)
129 let zero: *u8 = "\x00" as *u8
130 let wf6: i64 = g_write2("/tmp/fc_fix_vet.txt" as *u8, fixv, fvl, zero, 0)
131 var t6: i64 = 0
132 if wf6 == 0 {
133 let r6: i64 = fc_emit("knowledge/forge/pack_rules_v1.txt" as *u8, "/tmp/fc_fix_vet.txt" as *u8, "runtime/nx_lib_std.nx" as *u8, "runtime/nx_fbench_probe.nx" as *u8, "/tmp/fc_pack_t6.txt" as *u8)
134 if r6 > 0 {
135 let p6: *u8 = sys_mmap(131072) as *u8
136 let p6n: i64 = fc_read("/tmp/fc_pack_t6.txt" as *u8, p6, 131072)
137 if p6n > 0 {
138 let ma: *u8 = "ZZMARK_ACTIVE_EMIT" as *u8
139 let mal: i64 = std_slen(ma)
140 let fa: i64 = fc_contains(p6, p6n, ma, mal)
141 let mr: *u8 = "ZZMARK_RETIRED_OMIT" as *u8
142 let mrl: i64 = std_slen(mr)
143 let fr: i64 = fc_contains(p6, p6n, mr, mrl)
144 if fa == 1 {
145 if fr == 0 { t6 = 1 }
146 }
147 }
148 }
149 }
150 if t6 == 1 { std_putln("T6 status-render ACTIVE-in RETIRED-out PASS" as *u8) }
151 if t6 == 0 { std_putln("T6 status-render FAIL" as *u8) }
152 pass = pass + t6
153 // T7: LOCAL-TIER mini pack fits the serve budget (8192-byte prompt cap minus task headroom)
154 let r7: i64 = fc_emit_mini("knowledge/forge/pack_rules_mini_v1.txt" as *u8, "knowledge/forge/pack_rules_vet_v1.txt" as *u8, "runtime/nx_lib_std.nx" as *u8, "knowledge/forge/fix/cand_t3_ok.nx" as *u8, "/tmp/fc_pack_mini_t7.txt" as *u8, 6900)
155 var t7: i64 = 0
156 if r7 > 0 {
157 if r7 <= 6900 {
158 let p7: *u8 = sys_mmap(65536) as *u8
159 let p7n: i64 = fc_read("/tmp/fc_pack_mini_t7.txt" as *u8, p7, 65536)
160 if p7n > 1000 {
161 let m1: *u8 = "HARD RULES" as *u8
162 let f1: i64 = fc_contains(p7, p7n, m1, std_slen(m1))
163 let m2: *u8 = "STANDARD LIBRARY" as *u8
164 let f2: i64 = fc_contains(p7, p7n, m2, std_slen(m2))
165 let m3: *u8 = "func main" as *u8
166 let f3: i64 = fc_contains(p7, p7n, m3, std_slen(m3))
167 if f1 == 1 && f2 == 1 && f3 == 1 { t7 = 1 }
168 }
169 }
170 }
171 std_puts("T7 mini-pack size=" as *u8)
172 std_pdec(r7)
173 if t7 == 1 { std_putln(" within-budget PASS" as *u8) }
174 if t7 == 0 { std_putln(" FAIL" as *u8) }
175 pass = pass + t7
176 // verdict
177 std_puts("FORGE-CTX-GATE pass=" as *u8)
178 std_pdec(pass)
179 // MIGRATED onto nx_gate_verdict by nx_gate_dry_apply (D001, minimal form): every check
180 // row above is untouched, so the PASS/FAIL vector cannot change; only the hand-rolled
181 // verdict emission is replaced by the ONE shared base class. Proven by nx_gate_migrate verify.
182 let ctr__dry: *i64 = gv_ctr()
183 ctr__dry[0] = pass
184 ctr__dry[1] = 7
185 let rc__dry: i64 = gv_verdict("FORGE-CTX-GATE" as *u8, ctr__dry, "teeth unchanged; verdict emission migrated onto the shared base class" as *u8)
186 sys_exit(rc__dry)
187 return rc__dry
188}