nx_verdictlog_gate.nx
buildroot/runtime/nx_verdictlog_gate.nx
about
nx_verdictlog_gate.nx -- THE REFEREE FOR FM3 AND FM4 OF /compare/failmodes.
ONE GATE FOR TWO RUNGS BECAUSE THEY SHARE ONE RULER. Splitting it would put two referees on
nx_verdictlog_lib, and two guards for one invariant is the duplicate-ruler defect this campaign
exists to stop. Every tooth below names which accept rule it enforces.
FM3 ACCEPT RULE, QUOTED VERBATIM FROM failmodes.plan BEFORE THE WORK BEGAN:
"run it over the EXISTING detector fleet and publish the four numbers per detector; the rung is
accepted only if at least one currently-shipping detector is shown to score badly enough to
justify changing or retiring it. A scorer that flatters every incumbent has measured nothing."
FM4 ACCEPT RULE, QUOTED VERBATIM FROM failmodes.plan BEFORE THE WORK BEGAN:
"the organ must report DISAGREE only when the two vantages are observed within a bounded window
of each other, and must emit UNOBSERVABLE rather than AGREE when either vantage is missing --
an axis that cannot see must abstain, not acquit."
FIXTURES ARE ASSEMBLED AT RUNTIME under /tmp/nx_verdictlog_gate/, never checked in and never
written as source literals: a detector that scans a directory will find its own test fixture, and
a gate that shares a fixture with a production beat reports on the FIXTURE and not on the code.
Setup REMOVES every artifact it is about to assert on, so the gate is idempotent -- one that is
not reports honestly on its first run and lies about every run after.
THE CLASSIFIER IS COMPOSED IN-PROCESS, NEVER FORKED. Handing a directory walker a file path once
produced files=0 and a GREEN verdict elsewhere in this estate; composing vl_* directly means the
gate exercises the same functions the census calls, and every tooth that asserts an outcome first
asserts the call examined something.
dependencies 2 imports · 0 importers
imports: nx_gate_verdict.nxnx_verdictlog_lib.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
| 31 | const VG_DIR: *u8 = "/tmp/nx_verdictlog_gate/" |
| 32 | const VG_STREAMS: *u8 = "/tmp/nx_verdictlog_gate/streams/" |
| 33 | const VG_EMPTY: *u8 = "/tmp/nx_verdictlog_gate/emptydir/" |
| 34 | const VG_PATH: i64 = 4096 |
| 35 | const VG_MODE_0755: i64 = 493 |
| 39 | const VG_SC_RUNS: i64 = 5 // sc.log: GREEN GREEN RED RED GREEN |
| 40 | const VG_SC_GREEN: i64 = 3 |
| 41 | const VG_SC_RED: i64 = 2 |
| 42 | const VG_SC_RESET: i64 = 2 // the episode opens at run index 2 and closes at run index 4 |
| 43 | const VG_SC_MAXGAP: i64 = 240 // stamps 100 160 220 280 520 -> gaps 60 60 60 240 |
| 44 | const VG_NG_RUNS: i64 = 3 |
| 45 | const VG_GR_RUNS: i64 = 3 |
| 46 | const VG_FIX_FILES: i64 = 8 // sc ng lat gr unk unklatch snap nov |
| 47 | const VG_FIX_SCORED: i64 = 2 // sc lat |
| 48 | const VG_FIX_LATCH: i64 = 2 // ng lat |
| 49 | const VG_FIX_OFFEND: i64 = 2 // ng (constant-nongreen) and lat (latched) -- gr is NOT one |
| 50 | const VG_VAN_ROWS: i64 = 8 |
functions
| 52 | func vg_join(dst: *u8, dir: *u8, name: *u8) -> i64 |
| 59 | func vg_p(dir: *u8, name: *u8) -> *u8 |
| 67 | func vg_setup() -> i64 |
| 106 | func vg_series_of(conf: *u8, voc: *i64, name: *u8, sr: *i64) -> *u8 |
| 110 | func main(argc: i64, argv: *i64) -> i64 |