code wiki / _hdl_build / nx_seat_gate.nx

nx_seat_gate.nx

buildroot/runtime/_hdl_build/nx_seat_gate.nx

4644 B95 linesdepth 5pulls 6 transitivereach 0 importersview sourcekind gate/prooftopic seat
docsdependenciesstructsconstsfunctions

about

nx_seat_gate.nx -- makes nx_seat's OWN proof reachable by the ship loop. THE GAP THIS CLOSES, measured 2026-08-22: nx_seat IS gated -- `nx_seat selftest` runs 29 gv_check teeth and prints "NX-SEAT-GATE passed 29/29 verdict=GREEN". But that proof lives behind a VERB, and osl_gate_resolve resolves only gate BINARIES (<target>_gate by convention, or a declared row in knowledge/organ_gate.conf whose value is a gate NAME). So every ship of nx_seat reported `prove=NO-GATE-FOUND UNPROVEN` while a 29-tooth gate sat one argument away. *A PROOF THAT THE SHIP LOOP CANNOT REACH IS, TO THE SHIP LOOP, A PROOF THAT DOES NOT EXIST. WHY A THIN GATE AND NOT A RESOLVER CHANGE: organ_gate.conf already treats SPACE as a field separator, so encoding "<binary> <verb>" there needs a NEW SYNTAX DECISION, not a mechanical fix -- and the resolver is the path every organ in the estate ships through. Satisfying the existing convention costs one small binary and changes nothing anyone else depends on. *WHEN A CONVENTION AND A SUBJECT DISAGREE, THE CHEAPER AND SAFER MOVE IS USUALLY TO SATISFY THE CONVENTION, NOT TO REDESIGN THE CONTRACT EVERY OTHER CALLER SHARES. This is a PASS-THROUGH, deliberately: it does not re-implement or re-judge anything. It runs the real selftest and requires BOTH that the process exited 0 AND that its verdict line says GREEN -- because an exit code alone cannot distinguish "green" from "the binary was replaced by something that exits 0", and a string alone cannot see a crash after printing.

dependencies 3 imports · 0 importers

nx_syscalls.nx nx_gate_verdict.nx nx_tool_run.nx nx_seat_gate.nx

imports: nx_syscalls.nxnx_gate_verdict.nxnx_tool_run.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 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 ↻ sg_exists sys_openat_rd sys_close gv_need gv_puts ↻ sys_mmap ↻ tr_run_capture sys_mmap ↻ sys_pipe2 sys_fork sys_close ↻ sys_dup3 sys_execve_clean sys_close_inherited sys_close_inherited_proc sys_openat_rd ↻ sys_mmap ↻ sys_getdents64 dirent_reclen sys_close ↻

structs

none

consts

25const SG_OUT: i64 = 262144
26const SG_SUBJ_A: *u8 = "./nx_seat.elf"
27const SG_SUBJ_B: *u8 = "_offc/nx_seat.elf"

functions

29func sg_has(buf: *u8, n: i64, needle: *u8) -> i64
called by 1: main
43func sg_exists(p: *u8) -> i64
called by 1: main calls 2: sys_openat_rdsys_close
50func main() -> i64