code wiki / _hdl_build / nx_builddeploy_gate_qualify_20260910.nx

nx_builddeploy_gate_qualify_20260910.nx

buildroot/runtime/_hdl_build/nx_builddeploy_gate_qualify_20260910.nx

17640 B267 linesdepth 5pulls 7 transitivereach 0 importersview sourcekind tooltopic builddeploy
docsdependenciesstructsconstsfunctions

about

nx_builddeploy_gate.nx -- holds nx_builddeploy_lib, THE ruler for "may this build write a consumer-visible binary?". IN-PROCESS by construction: the lib is pure integer logic in this gate's own build closure, so nx_gate_bite can actually reach it. A gate that fork/execs a deployed elf cannot be mutation-proven (every mutant reads NOT-REACHED), which is precisely why the queued-build class went unmeasured -- the decision lived inline in a 105KB builder that no fixture could drive. THE DEFECT THIS EXISTS TO STOP, measured 2026-08-26 from the queue's own artifact: [nx_sov_build_run] nx_gate_roster_run: DEPLOYED to serving root (twin refresh, live for the next fork) -> ../nx_gate_roster_run.elf seeded by /api/build's load-refusal path, which had told the caller only that the build was deferred and to "promote deliberately afterwards". THE TWO TEETH THAT MATTER ARE A PAIR, AND EITHER ALONE IS A TRAP: - build-only must install NOTHING (stops the defect) - the DEFAULT path must still refresh a present twin (stops the over-correction) A fix that silenced the first by disabling all installs would reintroduce LM-026 staleness estate-wide and every consumer would silently fork a stale binary. Both directions are held here. license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0

dependencies 3 imports · 0 importers

nx_gate_verdict.nx nx_tool_run.nx nx_builddeploy_lib_qualify_2026091 nx_builddeploy_gate_qualify_20

imports: nx_gate_verdict.nxnx_tool_run.nxnx_builddeploy_lib_qualify_20260910.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main bdg_text_eq gv_ctr sys_mmap nxa_die sys_write sys_exit nxa_lock_take nxa_lock_addr sys_write ↻ nxa_lock_give nxa_lock_addr ↻ nxa_report_overrun sys_write ↻ nxa_dump_printable sys_write ↻ nxa_dump_sizes sys_write ↻ gv_head gv_puts sys_write ↻ bd_locations bd_intent_permits_install gv_check gv_puts ↻ bdg_eq bd_writes_root bd_writes_offc gv_puts ↻ gv_num sys_mmap ↻ sys_write ↻ sys_munmap bd_root_held bd_intent_permits_install ↻ bd_why bd_intent_permits_install ↻ bd_locations ↻ gv_bite gv_puts ↻

structs

none

consts

24const BDG_BOOL_STATES: i64 = 2 // any twin probe answers exactly: present or absent
25const BDG_DKIND_STATES: i64 = 3 // organ_kind.conf answers daemon(1), not-daemon(0), UNPROVEN(-1)
26const BDG_DKIND_LO: i64 = 0 - 1
27const BDG_DKIND_HI: i64 = 1
28const BDG_NOT_DAEMON: i64 = 0
29const BDG_IS_DAEMON: i64 = 1
30const BDG_UNPROVEN: i64 = 0 - 1

functions

32func bdg_eq(a: i64, b: i64) -> i64 { if a == b { return 1 } return 0 }
called by 1: main
35func bdg_retain(mark:*u8,out:*u8,n:i64)->i64
43func bdg_runtime(runner:*u8,target:*u8,f1:*u8,f2:*u8,tail:*u8,expected:i64,mark:*u8,ctr:*i64)->i64
54func bdg_same_file(path:*u8,before:*u8,n:i64)->i64
called by 1: bdg_runtime_checks
59func bdg_runtime_checks(runner:*u8,target:*u8,ctr:*i64)->i64
86func bdg_text_eq(a:*u8,b:*u8)->i64
called by 1: main
90func bdg_process_fixture(runner:*u8,mode:*u8,budget:*u8,expected:i64,ctr:*i64)->i64
98func main(argc: i64, argv: *i64) -> i64