code wiki / _hdl_build / nx_softtissue_diss_gate.nx
nx_softtissue_diss_gate.nx
buildroot/runtime/_hdl_build/nx_softtissue_diss_gate.nx
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
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
structs
| none |
consts
| 46 | const DG_DT_US: i64 = 4167 |
| 47 | const DG_ITERS: i64 = 2 |
| 48 | const DG_STEPS: i64 = 1440 |
| 49 | const DG_G: i64 = 4096 |
| 53 | const DG_TRANS: i64 = 240 |
| 54 | const DG_FINE_HOP: i64 = 10 |
| 55 | const DG_TAIL_HOP: i64 = 50 |
functions
| 58 | func dg_snap(W: *i64) -> *i64 |
| 75 | func dg_diff(W: *i64, S: *i64, worst: *i64) -> i64 called by 1: main |
| 99 | func dg_kin(W: *i64, M: *i64) -> i64 |
| 104 | func main(argc: i64, argv: *i64) -> i64 |