nx_autofix_intake_gate_t138.nx
buildroot/runtime/nx_autofix_intake_gate_t138.nx
about
nx_autofix_intake_gate.nx -- THE FOREIGN-BUG INTAKE GATE (2026-07-16; envelope + untrusted-input
admission added autodev AD3/AD6, 2026-08-27). Any lane appends `name|path[|origin=external|prov=h..|
merged=yes]` rows to knowledge/forge/fix/mut_proposed.txt; this gate ADMITS each (deny by default),
BUILDS+RUNS every LOCAL row in a SANDBOX and keeps only instances whose bug REPRODUCES (>=1 failing
FNRES row) -- the equivalent-mutant discipline. EXTERNAL rows are DATA-ONLY (provenance-pinned AND
maintainer-merged) and are NEVER built or run; anything else is refused BY NAME. Output:
knowledge/forge/fix/mut_manifest.txt (nx_autofix_auto's episode list of LOCAL, reproducing instances).
WHY THE REWRITE: the old gate exited 1 RED with no proposal plane (there was no mut_proposed.txt), and
it built each candidate in place with no untrusted-input admission -- the two sev-8 poisoning rows
(1784661149, 1784661346) demand deny-by-default before any ingestion. It now composes nx_autofix_lib:
one admission ruler, one sandbox, one FNRES reader -- shared with the loop and the auto gate so they
cannot disagree. SKIP (gv_need) when the proposal plane is absent: a host with no plane is not a failure.
TEETH
T0 precondition: the proposal plane resolves (else SKIP, never a false RED)
T1 parsed >=1 proposed row
T2 kept >=1 reproducing LOCAL instance
T3 DISCARD TOOTH: the deliberate equivalent mutant (nx_autofix_mut_eqv, all-pass) is ABSENT from output
T4 ADMISSION: a planted unmerged EXTERNAL row is refused BY NAME and never built (neg-control)
T5 the verified manifest is written and every kept row was BUILT+RUN inside a sandbox (tree untouched)
expect_exit: 0 license_tier: ORIGINAL
dependencies 4 imports · 0 importers
imports: nx_syscalls.nxnx_gate_verdict.nxnx_estate_path.nxnx_autofix_lib_t138.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| 28 | const AIG_CAP: i64 = 1048576 |
| 29 | const AIG_OUT: i64 = 65536 |
| 34 | const AIG_TAIL: i64 = 240 // bytes of grader output carried on a NO-FNRES discard (the cause, not the whole log) |
| 35 | const AIG_PROPOSED: *u8 = "knowledge/forge/fix/mut_proposed.txt" |
| 36 | const AIG_MANIFEST: *u8 = "knowledge/forge/fix/mut_manifest.txt" |
| 41 | const AIG_BUILDER_ADMIT_REFUSED: i64 = 6 |
functions
| 32 | func has_failing(cap: *u8, n: i64, namebuf: *u8) -> i64 { return afl_fn_failing(cap, n, namebuf) } |
| 43 | func main(argc: i64, argv: *i64) -> i64 |