code wiki / _hdl_build / nx_softtissue_diss_gate.nx

nx_softtissue_diss_gate.nx

buildroot/runtime/_hdl_build/nx_softtissue_diss_gate.nx

9392 B181 linesdepth 6pulls 7 transitivereach 0 importersview sourcekind gate/prooftopic softtissue
docsdependenciesstructsconstsfunctions

about

nx_softtissue_diss_gate.nx -- THE DISSIPATION SEAT FOR THE VOLUMETRIC TIER (council seat 6). WHY THIS EXISTS. Debt 1785786068: both council seats built 2026-08-03 target the shipping 3-point solver and the 2D ring; the sibling nx_softtissue_rot_gate v2 gave the volumetric tier its metamorphic seat (all 24 proper rotations + translation, bit-exact). This file is the OTHER seat. For soft tissue conservation is the wrong invariant -- the right ones are a DISSIPATION INEQUALITY and an EXACT FIXED POINT. WHAT THE FIRST RUN MEASURED, AND WHY T4 IS BOUNDEDNESS AND NOT DECAY-TO-ZERO. The v1 tail tooth demanded late-window maxima strictly decrease; it went GREEN on a 0.7% downtick of a fluctuation that swings +/-6% -- a lucky window pair, not a measurement. The trajectory says the truth: under standing gravity the cage decays hard from peak ~16.3M and then ORBITS a persistent kinetic floor (~570-660K in ST_M_KIN units) with no decay trend for hundreds of steps. At g=0 the fixed point is BIT-EXACT (T1) -- so the floor is not a velocity artifact; it is gravity + constraint projection + damping cycling around the discrete equilibrium. The continuum limit demands v -> 0; the discrete solver never settles. That defect is FILED as debt 1785789772 with these numbers, and a decay-to-zero tooth waits for the fix -- pinning today's floor into a band would bank the bug as the spec. What physics DOES require of a damped driven system, defect or no defect, is that the settled regime is BOUNDED: the tail must never re-approach the transient peak. That is T4 -- threshold-free (the peak is measured in-run), and genuinely refutable (any energy pump that GROWS crosses it). WHY THE FIXED POINT IS EXACT AND NOT A BAND. Rest lengths (erl) and rest volumes (trv) are captured at build from the SAME post-wall geometry the solver then reads, with the same isqrt and the same st_div_r rounding. At g=0 with zero initial velocities every constraint reads C=0, every correction is 0, damping of 0 is 0 -- so 300 steps must return the initial positions BIT-FOR-BIT. If they do not, the build and the solver disagree about what "rest" means, and that is a real defect, not tolerance noise. WHAT THIS GATE DELIBERATELY DOES NOT TEST. - Time-segmentation (run(300) == run(150);run(150)): st_run is a bare substep loop with no per-call state, so the relation cannot fail against today's source -- a tooth that cannot fail is a voter with information content 0. It gets seated only if st_run ever grows entry state. - Galilean boost: st_substep damps ABSOLUTE point velocity (v = v - v*dmp/Q12 after the position solve) -- the same ether-anchored class as the shipping tier's sd_step. But this cage has PINNED particles (iw=0, velocity forced to 0 in the world frame every substep), so the pins define a physical lab frame and a naive boost measures pin-tearing mixed with ether drag -- a plausible number that measures nothing. The clean invariance test needs anchor-boost support (the volumetric analog of sd_step_gal); FILED as debt 1785789784.

dependencies 3 imports · 0 importers

nx_syscalls.nx nx_gate_verdict.nx nx_softtissue.nx nx_softtissue_diss_gate.nx

imports: nx_syscalls.nxnx_gate_verdict.nxnx_softtissue.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 sys_mmap ↻ st_new sys_mmap ↻ st_profile st_profile_seeded st_hash pg_sample pg_has_bound pg_bound pg_bound ↻ st_span st_hash ↻ st_profile ↻ st_inside st_wall_drop st_abs st_isqrt st_six_vol st_div_r st_layer_alpha_vol st_add_edge st_isqrt ↻ st_layer_alpha_dist dg_snap sys_mmap ↻ st_run st_substep st_div_r ↻ st_isqrt ↻ st_alpha_tilde st_div_r ↻ st_eff_alpha_dist st_profile ↻ st_layer_alpha_dist ↻

structs

none

consts

46const DG_DT_US: i64 = 4167
47const DG_ITERS: i64 = 2
48const DG_STEPS: i64 = 1440
49const DG_G: i64 = 4096
53const DG_TRANS: i64 = 240
54const DG_FINE_HOP: i64 = 10
55const DG_TAIL_HOP: i64 = 50

functions

58func dg_snap(W: *i64) -> *i64
called by 1: main calls 1: sys_mmap
75func dg_diff(W: *i64, S: *i64, worst: *i64) -> i64
called by 1: main
99func dg_kin(W: *i64, M: *i64) -> i64
called by 1: main calls 1: st_measure
104func main(argc: i64, argv: *i64) -> i64