nx_media_ingest_pipeline_gate.nx
buildroot/runtime/nx_media_ingest_pipeline_gate.nx
about
nx_media_ingest_pipeline_gate.nx -- teeth for the keystone pipeline's path resolver + always-inform contract.
license_tier: ORIGINAL
D001 MIGRATION 2026-09-01 (/compare/mediaingest). This gate was one of FOUR in this domain that the matrix
header listed as "candidate gates already in tree" and that had NO ELF AT ALL (exit 127). The reason was not
neglect: /api/promote REFUSES a gate that rolls its own verdict, so the source could never become an
artifact, so the domain's own evidence base was a list of names. The refusal was correct and the fix is the
migration, never the allow_own_verdict escape -- that escape ships a gate whose outcome nothing can read.
WHAT CHANGED AND WHAT DID NOT. The four subjects, their order and their assertions are byte-for-byte the
same checks; only the verdict machinery moved from a hand-rolled pass/tot pair onto nx_gate_verdict:
- gv_ctr/gv_check make DECLARED == EXECUTED by construction. The hand-rolled version could print
"pass=4/4" while a tooth had silently stopped running, because the same code incremented both numbers.
- the exit code is now produced by gv_verdict, so /api/gate_run and nx_gate_green can both READ the
outcome, and the run records a harness.jrnl frame -- without which flake and erosion are invisible
for this gate specifically.
- T3 is renamed to say it is a NEGATIVE CONTROL. It always was one; it was invisible to the L2 census
purely by naming, which costs nothing to fix and makes it countable.
The old main() printed verdict=GREEN/RED and exited 0/1, so this migration does not CHANGE the verdict for
any input -- it makes the same verdict legible to the judge.
dependencies 3 imports · 0 importers
imports: nx_syscalls.nxnx_media_ingest_pipeline.nxnx_gate_verdict.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
| none |
functions
| 25 | func g_streq(a: *u8, b: *u8) -> i64 { var i: i64 = 0; while a[i] != (0 as u8) { if a[i] != b[i] { return 0 } i = i + 1 } if b[i] != (0 as u8) { return 0 } return 1 } called by 1: main |
| 27 | func main() -> i64 |