nx_gateemit_gate.nx
buildroot/runtime/nx_gateemit_gate.nx
about
nx_gateemit_gate.nx -- WHAT FRACTION OF PROMOTED GATES CAN BE READ BY A RULER?
R4 of the SOTA plan asks that every gate be non-vacuous: able to fail, and able to prove it looked.
That cannot be CLAIMED fleet-wide without being MEASURED fleet-wide -- which is the same mistake the
whole coverage taxonomy is about. This measures it.
THE EMIT CONTRACT a ruler needs (learned the hard way today, from my own gates being UNPARSED):
1. `passed N/M verdict=` on stdout -- so nx_gateverify can parse a pass ratio
2. a durable line in knowledge/status/ -- because stdout is watched for ten seconds and the LOG is
what every ruler reads forever
A gate missing either is CORRECT but INVISIBLE, and an invisible gate contributes nothing to any
rollup. I shipped four such gates today before noticing.
⚠⚠ THIS IS A STATIC PROXY AND SAYS SO. It greps the promoted BINARY for the emit strings. That proves
the gate CAN emit, not that it DOES on every path -- only running it proves that, and running 379
gates costs hours (one finance gate alone takes 156s). Binary presence is a LOWER BOUND on capability
and an UPPER BOUND on nothing. Cf. the recorded law: BINARY GREP IS VALID ONE WAY ONLY -- a string's
PRESENCE is evidence it shipped; a string's ABSENCE is the only thing this can assert about emit.
The authoritative per-gate check remains nx_gateverify, which RUNS the gate and compares printed vs
logged. This is the cheap sweep that tells you WHERE to point it.
license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0
D001 MIGRATE-ON-TOUCH, applied to this gate BY ITS OWN SUBJECT MATTER. The promote chokepoint refused
an earlier revision with: "this gate rolls its own verdict instead of inheriting nx_gate_verdict, so
nothing can read its outcome" -- i.e. the gate that MEASURES emit-contract adoption was itself only
MIMICKING the strings rather than inheriting the lib. Mimicry passes a grep and still leaves no
harness.jrnl frame, so flake and erosion stay invisible for it exactly as for the 307 it names.
★★★★★★ EMITTING THE RIGHT STRING IS NOT THE SAME AS INHERITING THE CONTRACT -- one satisfies a
reader, the other joins the ledger. The enforcement caught me; that is the enforcement working.
dependencies 3 imports · 0 importers
imports: nx_syscalls.nxnx_dirent.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
| 34 | const GE_LOG: *u8 = "knowledge/status/gateemit_gate.log" |
| 35 | const GE_MODE: i64 = 420 |
| 36 | const GE_CAP: i64 = 4194304 |
functions
| 38 | func ge_len(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } |
| 39 | func ge_p(s: *u8) -> i64 { let n: i64 = ge_len(s); sys_write(1, s, n); return 0 } |
| 40 | func ge_wf(fd: i64, s: *u8) -> i64 { let n: i64 = ge_len(s); sys_write(fd, s, n); return 0 } |
| 41 | func ge_pn(v: i64) -> i64 |
| 52 | func ge_pnf(fd: i64, v: i64) -> i64 |
| 63 | func ge_has(buf: *u8, n: i64, needle: *u8) -> i64 |
| 79 | func ge_is_gate(nm: *u8) -> i64 |
| 89 | func main() -> i64 |