code wiki / (root) / nx_forge_gate.nx

nx_forge_gate.nx source

↩ module page · 82 lines · 3345 B

1// nx_forge_gate.nx -- gate for the F3 forge driver (nx_forge.nx). Teeth (fixture specs in 2// knowledge/forge/fix/, candidate files = the rung-1 "model"): 3// T1 correct candidate -> GREEN at cycle 1 4// T2 builds-but-wrong-output -> judge REJECTS byte-exact (exhausted, rc -20) [negctl v2 class] 5// T3 hardcoded-banned-literal 1st -> FLAGGED pre-build, clean 2nd candidate GREEN at cycle 2 6// T4 broken 1st (parse trap) -> verbatim compiler output BANKED to repair ctx, GREEN at 2 7// T5 only broken candidates -> stops at the maxcycles bound (rc -21), never GREEN 8// license_tier: ORIGINAL expect_exit: 0 9import "nx_forge.nx" 10import "nx_gate_verdict.nx" 11 12func main(argc: i64, argv: *i64) -> i64 { 13 var pass: i64 = 0 14 // T1 15 let r1: i64 = fg_run("knowledge/forge/fix/spec_t1.txt" as *u8) 16 var t1: i64 = 0 17 if r1 == 1 { t1 = 1 } 18 std_puts("T1 green-first rc=" as *u8) 19 std_pdec(r1) 20 if t1 == 1 { std_putln(" PASS" as *u8) } 21 if t1 == 0 { std_putln(" FAIL" as *u8) } 22 pass = pass + t1 23 // T2 24 let r2: i64 = fg_run("knowledge/forge/fix/spec_t2.txt" as *u8) 25 var t2: i64 = 0 26 let wantx: i64 = 0 - 20 27 if r2 == wantx { t2 = 1 } 28 std_puts("T2 judge-reject rc=" as *u8) 29 std_pdec(r2) 30 if t2 == 1 { std_putln(" NEGCTL-CAUGHT PASS" as *u8) } 31 if t2 == 0 { std_putln(" FAIL" as *u8) } 32 pass = pass + t2 33 // T3 34 let r3: i64 = fg_run("knowledge/forge/fix/spec_t3.txt" as *u8) 35 var t3: i64 = 0 36 if r3 == 2 { t3 = 1 } 37 std_puts("T3 hardcode-flag-then-clean rc=" as *u8) 38 std_pdec(r3) 39 if t3 == 1 { std_putln(" PASS" as *u8) } 40 if t3 == 0 { std_putln(" FAIL" as *u8) } 41 pass = pass + t3 42 // T4 (check repair ctx got the verbatim compiler output) 43 let r4: i64 = fg_run("knowledge/forge/fix/spec_t4.txt" as *u8) 44 var t4: i64 = 0 45 if r4 == 2 { 46 let xbuf: *u8 = sys_mmap(65536) as *u8 47 let xn: i64 = fc_read("/tmp/forge_repair_ctx.txt" as *u8, xbuf, 65536) 48 if xn > 80 { 49 let m1: *u8 = "CYCLE-FAIL build" as *u8 50 let l1: i64 = std_slen(m1) 51 let f1: i64 = fc_contains(xbuf, xn, m1, l1) 52 if f1 == 1 { t4 = 1 } 53 } 54 } 55 std_puts("T4 repair-banks-stderr rc=" as *u8) 56 std_pdec(r4) 57 if t4 == 1 { std_putln(" PASS" as *u8) } 58 if t4 == 0 { std_putln(" FAIL" as *u8) } 59 pass = pass + t4 60 // T5 61 let r5: i64 = fg_run("knowledge/forge/fix/spec_t5.txt" as *u8) 62 var t5: i64 = 0 63 let wantb: i64 = 0 - 21 64 if r5 == wantb { t5 = 1 } 65 std_puts("T5 cycle-bound rc=" as *u8) 66 std_pdec(r5) 67 if t5 == 1 { std_putln(" NEGCTL-CAUGHT PASS" as *u8) } 68 if t5 == 0 { std_putln(" FAIL" as *u8) } 69 pass = pass + t5 70 // verdict 71 std_puts("FORGE-GATE pass=" as *u8) 72 std_pdec(pass) 73 // MIGRATED onto nx_gate_verdict by nx_gate_dry_apply (D001, minimal form): every check 74 // row above is untouched, so the PASS/FAIL vector cannot change; only the hand-rolled 75 // verdict emission is replaced by the ONE shared base class. Proven by nx_gate_migrate verify. 76 let ctr__dry: *i64 = gv_ctr() 77 ctr__dry[0] = pass 78 ctr__dry[1] = 5 79 let rc__dry: i64 = gv_verdict("FORGE-GATE" as *u8, ctr__dry, "teeth unchanged; verdict emission migrated onto the shared base class" as *u8) 80 sys_exit(rc__dry) 81 return rc__dry 82}