code wiki / _hdl_build / nx_mmbench_gate.nx

nx_mmbench_gate.nx

buildroot/runtime/_hdl_build/nx_mmbench_gate.nx

9007 B159 linesdepth 3pulls 4 transitivereach 0 importersview sourcekind gate/proof
docsdependenciesstructsconstsfunctions

about

nx_mmbench_gate.nx -- proves the media+companion ruler is a RULER, not a rubber stamp. It imports nx_mmbench_lib -- THE SAME lib nx_mmbench ships -- so these teeth bite the code that actually produces the published number, not a re-implementation of it. The ruler's entire honesty claim is aud(). If aud() does not really downgrade an unbacked claim, then coverage_permil is decoration and every gap-queue ranking derived from it is fiction. The first live run reported liar_killed=0, which is exactly the reading a BROKEN audit would also produce -- indistinguishable from a healthy one without these tests. Hence: T1 CLEAN : HAVE + an artifact that exists -> stays HAVE. (the ruler can say YES) T2 NEGATIVE CTRL : HAVE + an artifact that does NOT exist -> GAP, flagged liar-killed. THE anti-vacuity tooth. Without this, liar_killed=0 proves nothing. T3 UNGROUNDED : HAVE + no artifact named at all -> capped to PARTIAL, flagged ungrounded. T4 KILL-BEATS-RANK: PARTIAL + absent artifact -> GAP too. A false SPECIFIC claim is killed regardless of how modest the declared level was. T5 SILENCE-OK : PARTIAL + no artifact -> stays PARTIAL, unflagged. Declining to claim is not a lie; only asserting an unbacked WIN is. T6 ONE-WAY : GAP + a present artifact -> stays GAP. Evidence may only ever DEMOTE. A gate that let evidence PROMOTE could launder any gap into a win. T7/T8 PROBE : have() is truthful in both directions (present->1, absent->0). T9 STREQ : verb matching is exact -- a prefix must NOT match, or 'json' would fire on 'jsonx' and silently change which report is published. T10 MONOTONIC : a liar-kill must LOWER the computed headline. Proves the demotion actually reaches the arithmetic instead of just printing a warning next to it. expect_exit: 0 license_tier: ORIGINAL No hw writes (Rule 26).

dependencies 2 imports · 0 importers

nx_mmbench_lib.nx nx_gate_verdict.nx nx_mmbench_gate.nx

imports: nx_mmbench_lib.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

main gv_ctr sys_mmap gv_head gv_puts sys_write aud have sys_openat_rd sys_close gv_check gv_puts ↻ have ↻ streq gv_puts ↻ gv_num sys_mmap ↻ sys_write ↻ sys_munmap wired have ↻ usable wired ↻ bin_ref sys_openat_rd ↻ sys_mmap ↻ sys_read sys_close ↻ wired_ref wired ↻ bin_ref ↻ gv_verdict gv_puts ↻ gv_num ↻ gv_journal sys_openat_append sys_mmap ↻ gv_catn sys_mmap ↻ sys_munmap ↻

structs

none

consts

30const T_CLEAN: i64 = 20
31const T_KILLED: i64 = 1
32const T_UNGROUND: i64 = 12
33const T_PART_OK: i64 = 10
34const T_GAP_OK: i64 = 0

functions

36func main() -> i64