nx_dyna_bind_skin_gate.nx
buildroot/runtime/nx_dyna_bind_skin_gate.nx
about
nx_dyna_bind_skin_gate.nx -- THE MOTION GATE: one tooth per NAMED failure mode, every bound READ
FROM knowledge/gamefeel_oracle.conf, never written here.
WHY THE TEETH ARE SHAPED THIS WAY. The operator's bar is that the motion be best-of-breed and
that previous attempts were awful. "Awful" is not one thing, so a single "it deformed" tooth
would pass the exact solver we are trying to beat. Each recognisable way secondary motion reads
as wrong therefore gets its OWN tooth with its OWN derived bound:
dead -- no visible secondary motion. Tooth: the excitation must actually reach the plant.
jelly -- under-damped, never settles. Tooth: residual excursion must decay.
buzzing -- unstable at the substep. Tooth: the measured natural frequency must be far below
the sampling rate; a plant that "oscillates" AT the sample rate is quantization
chatter, which is exactly the defect this lane hit and fixed on 2026-08-23.
unobservable -- a profile whose response does not complete a period inside the window. Tooth:
that must report UNOBSERVABLE and must NOT be scored as a pass. An instrument
that cannot see must abstain, never acquit.
swimming/symmetry -- the binding must DISCRIMINATE: some skin vertices bound to a region and
some skin-locked. Both signals present at once, or the tooth proves nothing.
The plant-vs-subject comparison (fn, zeta) is REPORTED against the cited bands. It is deliberately
NOT a pass/fail tooth in this gate: knowledge/gamefeel_oracle.conf itself records that our two
shipped profiles bracket the human band, so failing the build on it would be failing on a
modelling result rather than on a regression. The numbers are printed every run so the movement
is visible, and the ratchet belongs in the profile lane that owns those constants.
SUBJECT: ./nx_dyna_bind_skin.elf -- the promoted binary, forked. Subprocess capture comes from
nx_gatekit_lib because a hand-rolled pipe DEADLOCKED a sibling gate in production today
(pid 2240, 50+ minutes in pipe_wait). Never re-roll that plumbing.
license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0
dependencies 3 imports · 0 importers
imports: nx_syscalls.nxnx_gate_verdict.nxnx_gatekit_lib.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
| 32 | const DG_ELF: *u8 = "./nx_dyna_bind_skin.elf" |
| 33 | const DG_CONF: *u8 = "knowledge/gamefeel_oracle.conf" |
| 34 | const DG_CAP: i64 = 65536 |
| 35 | const DG_AMP_CMM: i64 = 3200 |
| 40 | const DG_DT_US: i64 = 4167 |
| 41 | const DG_US_PER_S: i64 = 1000000 |
| 42 | const DG_MHZ: i64 = 1000 |
| 48 | const DG_CROSS_FOR_PERIOD: i64 = 3 |
functions
| 50 | func dg_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } |
| 55 | func dg_band(b: *u8, n: i64, key: *u8, out: *i64) -> i64 |
| 120 | func dg_after(buf: *u8, n: i64, key: *u8) -> i64 |
| 153 | func dg_ringdown(prof: *u8, buf: *u8, blen: *i64) -> i64 |
| 157 | func dg_ringdown_amp(prof: *u8, amp: *u8, buf: *u8, blen: *i64) -> i64 |
| 161 | func main(argc: i64, argv: *i64) -> i64 |