nx_autofix_intake_gate.nx source
↩ module page · 161 lines · 7586 B
1// nx_autofix_intake_gate.nx -- THE WILD/FOREIGN-BUG INTAKE GATE (2026-07-16): turns proposed fix-loop
2// instances into a VERIFIED episode manifest. Any lane (mutation, janitor, doctor, human, other-model)
3// appends `name|path` rows to knowledge/forge/fix/mut_proposed.txt; this gate BUILDS+RUNS each one and
4// keeps ONLY instances whose bug REPRODUCES (>=1 failing FNRES row) -- the classic equivalent-mutant
5// discipline: a mutation every test passes is NOT an instance, and a build-broken file is not either.
6// Output: knowledge/forge/fix/mut_manifest.txt (nx_autofix_auto's episode list).
7// Teeth: T1 parsed >=10 proposed rows; T2 kept >=10 reproducing; T3 THE DISCARD TOOTH -- the deliberate
8// equivalent mutant (nx_autofix_mut_eqv, all-pass by construction) MUST be absent from the output;
9// T4 verified manifest written. expect_exit: 0 license_tier: ORIGINAL
10import "nx_tool_run.nx"
11
12func w(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
13func wn(v: i64) -> i64 {
14 var m: i64 = v
15 if m < 0 { w("-" as *u8); m = 0 - m }
16 let t: *u8 = sys_mmap(24)
17 var k: i64 = 0
18 if m == 0 { t[0] = 48 as u8; k = 1 }
19 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 }
20 let o: *u8 = sys_mmap(24)
21 var i: i64 = 0
22 while i < k { o[i] = t[k - 1 - i]; i = i + 1 }
23 sys_write(1, o, k)
24 return 0
25}
26func slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n }
27func find_first(hay: *u8, hn: i64, needle: *u8, from: i64) -> i64 {
28 let m: i64 = slen(needle)
29 if m == 0 { return 0 - 1 }
30 var i: i64 = from
31 while i + m <= hn {
32 var j: i64 = 0
33 var ok: i64 = 1
34 while j < m { if hay[i+j] != needle[j] { ok = 0; j = m } else { j = j + 1 } }
35 if ok == 1 { return i }
36 i = i + 1
37 }
38 return 0 - 1
39}
40
41// does the capture contain a FAILING FNRES row (passed < total)? 1 yes / 0 all-pass / -1 none.
42func has_failing(out: *u8, n: i64) -> i64 {
43 var any: i64 = 0
44 var p: i64 = 0
45 var res: i64 = 0
46 var done: i64 = 0
47 while done == 0 {
48 let r: i64 = find_first(out, n, "FNRES " as *u8, p)
49 if r < 0 { done = 1 }
50 else {
51 any = 1
52 // parse: FNRES <name> <passed> <total> -- flag-exit scans ONLY: a negated index does
53 // not leave `while i < n` (negative < n stays true), so an `i = 0 - i` pseudo-break
54 // spins forever on the first parsed row.
55 var sp1: i64 = 0 - 1
56 var i: i64 = r + 6
57 var sd: i64 = 0
58 while sd == 0 { if i >= n { sd = 1 } else { if out[i] == (32 as u8) { sp1 = i; sd = 1 } else { i = i + 1 } } }
59 if sp1 >= 0 {
60 var passed: i64 = 0
61 var q: i64 = sp1 + 1
62 var qd: i64 = 0
63 while qd == 0 { if q >= n { qd = 1 } else { let c: i64 = out[q] as i64; if c >= 48 { if c <= 57 { passed = passed * 10 + (c - 48); q = q + 1 } else { qd = 1 } } else { qd = 1 } } }
64 var total: i64 = 0
65 var q2: i64 = q + 1
66 var q2d: i64 = 0
67 while q2d == 0 { if q2 >= n { q2d = 1 } else { let c2: i64 = out[q2] as i64; if c2 >= 48 { if c2 <= 57 { total = total * 10 + (c2 - 48); q2 = q2 + 1 } else { q2d = 1 } } else { q2d = 1 } } }
68 if passed < total { res = 1; done = 1 }
69 }
70 p = r + 6
71 }
72 }
73 if res == 1 { return 1 }
74 if any == 1 { return 0 }
75 return 0 - 1
76}
77
78func main(argc: i64, argv: *i64) -> i64 {
79 w("=== NX-AUTOFIX-INTAKE -- verify proposed instances reproduce; discard equivalents/broken ===\n" as *u8)
80 var inp: *u8 = "knowledge/forge/fix/mut_proposed.txt" as *u8
81 var outp: *u8 = "knowledge/forge/fix/mut_manifest.txt" as *u8
82 if argc >= 2 { inp = argv[1] as *u8 }
83 if argc >= 3 { outp = argv[2] as *u8 }
84 let lb: *i64 = sys_mmap(8) as *i64
85 let src: *u8 = sys_read_file(inp, lb)
86 if (src as i64) == 0 { w("cannot read proposed manifest\n" as *u8); return 1 }
87 let n: i64 = lb[0]
88 let cap: *u8 = sys_mmap(1048576)
89 let outbuf: *u8 = sys_mmap(16384)
90 var oo: i64 = 0
91 let name: *u8 = sys_mmap(96)
92 var proposed: i64 = 0
93 var kept: i64 = 0
94 var discarded: i64 = 0
95 var eqv_kept: i64 = 0
96 var p: i64 = 0
97 while p < n {
98 var e: i64 = p
99 var f: i64 = 0
100 while f == 0 { if e >= n { f = 1 } else { if src[e] == (10 as u8) { f = 1 } else { e = e + 1 } } }
101 // skip comments/empties; rows are name|path
102 var isrow: i64 = 0
103 if e > p { if src[p] != (35 as u8) { isrow = 1 } }
104 if isrow == 1 {
105 // name = up to '|'
106 var b: i64 = p
107 var nl: i64 = 0
108 while b < e { if src[b] == (124 as u8) { b = e + 1 } else { if nl < 90 { name[nl] = src[b]; nl = nl + 1 } b = b + 1 } }
109 name[nl] = 0 as u8
110 if nl > 0 {
111 proposed = proposed + 1
112 let av: *i64 = sys_mmap(64) as *i64
113 av[0] = ("_offc/nx_sov_build_run.elf" as *u8) as i64
114 av[1] = name as i64
115 av[2] = 0
116 let olen: *i64 = sys_mmap(8) as *i64
117 olen[0] = 0
118 tr_run_capture("_offc/nx_sov_build_run.elf" as *u8, av, cap, 1048575, olen)
119 let hf: i64 = has_failing(cap, olen[0])
120 w(" " as *u8); w(name)
121 if hf == 1 {
122 kept = kept + 1
123 var z: i64 = p
124 while z < e { outbuf[oo] = src[z]; oo = oo + 1; z = z + 1 }
125 outbuf[oo] = 10 as u8
126 oo = oo + 1
127 w(" REPRODUCES -> kept\n" as *u8)
128 } else {
129 discarded = discarded + 1
130 if hf == 0 { w(" ALL-PASS (equivalent mutant) -> DISCARDED\n" as *u8) } else { w(" NO FNRES ROWS (broken/foreign format) -> DISCARDED\n" as *u8) }
131 if find_first(name, nl, "eqv" as *u8, 0) >= 0 { } else { }
132 }
133 if hf == 1 { if find_first(name, nl, "eqv" as *u8, 0) >= 0 { eqv_kept = 1 } }
134 }
135 }
136 p = e + 1
137 }
138 let fd: i64 = sys_openat_wr(outp, 0x1a4)
139 var wrote: i64 = 0
140 if fd >= 0 { wrote = sys_write(fd, outbuf, oo); sys_close(fd) }
141
142 var pass: i64 = 0
143 var ttl: i64 = 0
144 ttl = ttl + 1
145 w("\n T1 parsed >=10 proposed rows: " as *u8)
146 if proposed >= 10 { pass = pass + 1; w("PASS (" as *u8); wn(proposed); w(")\n" as *u8) } else { w("FAIL\n" as *u8) }
147 ttl = ttl + 1
148 w(" T2 kept >=10 reproducing instances: " as *u8)
149 if kept >= 10 { pass = pass + 1; w("PASS (" as *u8); wn(kept); w(")\n" as *u8) } else { w("FAIL\n" as *u8) }
150 ttl = ttl + 1
151 w(" T3 DISCARD TOOTH (>=1 discarded AND the deliberate equivalent mutant is NOT in the output): " as *u8)
152 if discarded >= 1 { if eqv_kept == 0 { pass = pass + 1; w("PASS (" as *u8); wn(discarded); w(" discarded)\n" as *u8) } else { w("FAIL (kept the equivalent mutant!)\n" as *u8) } } else { w("FAIL (nothing discarded -- tooth unproven)\n" as *u8) }
153 ttl = ttl + 1
154 w(" T4 verified manifest written: " as *u8)
155 if wrote > 0 { pass = pass + 1; w("PASS (" as *u8); wn(wrote); w("B)\n" as *u8) } else { w("FAIL\n" as *u8) }
156
157 w("\nNX-AUTOFIX-INTAKE-GATE passed " as *u8); wn(pass); w("/" as *u8); wn(ttl)
158 if pass == ttl { w(" verdict=GREEN (intake verified; equivalents discarded; manifest ready)\n" as *u8); return 0 }
159 w(" verdict=RED\n" as *u8)
160 return 1
161}