code wiki / _hdl_build / nx_engorge_gate.nx

nx_engorge_gate.nx

buildroot/runtime/_hdl_build/nx_engorge_gate.nx

7772 B140 linesdepth 6pulls 9 transitivereach 0 importersview sourcekind gate/proof
docsdependenciesstructsconstsfunctions

about

nx_engorge_gate.nx -- TISSUE SWELLS BECAUSE ITS REST STATE GREW (softbody SB16, 2026-08-25). THE CROSS-BOARD CONTRACT THIS CLOSES. procgen's arousal row names its own blocker: "a pure normal push is not volume-conserving, which the conservation gate above would refuse." That gate is ours, and it is right to refuse -- displacing surface vertices leaves every rest length and rest volume untouched, so the constraints are all violated and the next substep pulls the tissue back. The tissue never swells; it fights. Growing the REST STATE instead lets the solver find the new equilibrium with every constraint satisfied the whole way. THE ORACLE IS GEOMETRY, NOT AN OPINION. Isotropic linear growth by s must scale measured volume by s^3. That is a closed-form prediction, so this gate does not ask whether the tissue "looks bigger" -- it asks whether the measured volume ratio matches the cube of the commanded factor. A model that merely pushed the surface outward would move the skin without tracking s^3. ⚠ SCOPE: the MECHANISM only. How much any real tissue engorges, and how fast, is a measurement nobody in this estate has mirrored, so the factor is the caller's and no band is invented here -- the same cite-or-abstain split the friction coefficient ships under. license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0

dependencies 3 imports · 0 importers

nx_syscalls.nx nx_softtissue.nx nx_gate_verdict.nx nx_engorge_gate.nx

imports: nx_syscalls.nxnx_softtissue.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 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 ↻ eg_settled st_new sys_mmap ↻ st_profile st_profile_seeded st_hash pg_sample pg_has_bound pg_bound st_span st_hash ↻ st_profile ↻ st_inside st_wall_drop st_abs st_isqrt vm_isqrt st_six_vol st_div_r st_layer_alpha_vol

structs

none

consts

23const EG_G: i64 = 9800
24const EG_ITERS: i64 = 8
25const EG_SETTLE: i64 = 40
26const EG_H_MM: i64 = 10
27const EG_GROW: i64 = 1200 // +20% linear, well inside integer range at s^3
28const EG_REST: i64 = 1000 // unity: the pristine rest state
33const EG_TOL_PERMIL: i64 = 120

functions

35func eg_settled(prof: i64) -> *i64
called by 1: main calls 2: st_newst_run
43func eg_vol(W: *i64) -> i64
called by 1: main calls 2: sys_mmapst_measure
49func main() -> i64