From a6cc8d63d22650fbc8f52a647494132c7487f6af Mon Sep 17 00:00:00 2001 From: Joe DiPrima Date: Thu, 13 Aug 2026 19:56:47 -0500 Subject: [PATCH] cadence census checklist: night-17 queue closed out -- five rows moved to DONE with bench numbers (sway inherited 4.5x, gyro timescale-only impulse verdict, footstep ramp90 restored, doppler -20% operand TV with T3 perceptual flag, registry map pattern); new rows: child-entity worldLinearVelocity=0 self-sound doppler (pre-existing, needs a binary-behavior ruling) + the five-clock BTSimClock consolidation note. decomp-reference env-gate table gains BT_GYRO_SPRING_HZ / BT_GYRO_KICK / BT_AUD_SMOOTH_HZ / BT_AUD_DOPPLER_HZ / BT_AUD_DOPPLER_LOG. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_016bw71WVsccjwW7uKRg4aWD --- context/decomp-reference.md | 7 ++++- context/open-questions.md | 53 ++++++++++++++++++++++++++----------- 2 files changed, 44 insertions(+), 16 deletions(-) diff --git a/context/decomp-reference.md b/context/decomp-reference.md index d244c80..f276688 100644 --- a/context/decomp-reference.md +++ b/context/decomp-reference.md @@ -774,7 +774,12 @@ default-ON (`'0'` disables). | `BT_WARP_*` | translocation-warp visual tuning — all default to the verified values (see [[translocation-warp]]): `EYE_UP=8.25` (on-axis), `SPIN=4`, `TWIST=0`, `CONTRAST=1.0`, `LO_*/HI_*` (lavender ramp), `BLUR=0`, `TESS=3`, `MIP=1`, `CULL=cw`, `ANISO=0` | | `BT_WARP_SELFTEST` / `BT_WARP_SELFSHOT=` | DIAG (off by default): force a held warp in a solo game / dump backbuffer frames to disk (visual-verification harness) | | `BT_GYRO_LOG` | gyro bring-up log (gyro.cpp) | -| `BT_GYRO_TRACE` | per-frame hit-bounce integrator trace | +| `BT_GYRO_TRACE` | per-frame hit-bounce integrator trace (`[gtrace]`, carries wall-ms `t=`) | +| `BT_GYRO_SPRING_HZ=` | gyro spring-damper integrator clock override (default 28 = the pod tick, census item 2; `=0` restores render-cadence stepping) | +| `BT_GYRO_KICK=[,amt]` | one-shot deterministic gyro impulse via the authentic GyroApplyDamage fan-out (impulse-response bench; default frame 900, amt 25; `[gyro-kick]` receipt) | +| `BT_AUD_SMOOTH_HZ=` | footstep AudioControlSmoother intake clock override (default 28, census item 3; `=0` restores per-poll intake) | +| `BT_AUD_DOPPLER_HZ=` | doppler velocity-operand sample-and-hold clock override (default 28, census item 4; `=0` restores per-call) | +| `BT_AUD_DOPPLER_LOG` | `[doppler]` receipt (cents/v/d/h/hm2, capped 6000; h=1 fresh / 0 held / -1 legacy) | | `BT_CRIT_PROBE=` | hammer one own-mech zone every 4s (crit-propagation diag, task #2; mech4.cpp) | | `BT_REPL_LOG` | replicant/MP replication log (mech4.cpp) | | `BT_GOTO="enemy"\|"x z"` / `BT_GOTO_LOG` | self-driving beeline (to the enemy or a map coordinate) + its log | diff --git a/context/open-questions.md b/context/open-questions.md index 83272ef..9444d2c 100644 --- a/context/open-questions.md +++ b/context/open-questions.md @@ -1268,22 +1268,45 @@ consistent with internals-only, see #103). Logs: `scratchpad/night16/` + Oracle ## Cadence census -- the shared 28Hz sim-clock migration checklist (2026-08-13) [T1/T2] Census of sampled-history-at-render-cadence sites (gotcha 32; full table in the census -workflow journal wf_d875938f + classifier verdicts). DONE: velocity ring default-28Hz -(mech4.cpp, HIGH, the #173 fix -- myomer heat + instability/sway inherit); heatLoad already -pod-clocked (#119, the reference pattern). REMAINING for the BTSimClock migration (one -shared 28Hz tick source; tick-native sites subscribe; dt-native physics -- Mover/missile ODE --- stays on real dt): -- MED gyro eye/body spring-damper integrators (gyro.cpp:503-575): per-tick position step, NO - dt, damping carries last-frame state -- cockpit bounce timescale runs 2.14x the machine's. - Needs an impulse-response bench (28 vs 60) before/after. -- LOW footstep AudioControlSmoother windows (AUDCMP.cpp:952-977): authored N=30/15 sized for - 28Hz; halved at 60fps + noisy operand. Clock the watcher-poll intake. -- LOW doppler operand (AUDLOC.cpp:439-505 reads UNSMOOTHED worldLinearVelocity frame - derivative): per-stride pitch warble on nearby movers. A/B-able by ear. +workflow journal wf_d875938f + classifier verdicts). Night-17 queue receipts: +`scratchpad/night17/CADENCE_STATE.md` (benches + curves for every row below); commits +f811c64/567ffac/b355844/f9546d2. + +DONE (each a per-instance 28Hz accumulator/hold, heat.cpp #119 pattern, env-override to +bracket, receipts armed): +- velocity ring default-28Hz (mech4.cpp, HIGH, the #173 fix -- myomer heat inherits); + heatLoad already pod-clocked (#119, the reference pattern). +- instability/sway operand: VERIFIED inherited from the ring fix (no code change) -- same- + build A/B via BT_MYO_RING_HZ=0: cruise unstablePct median 0.490 -> 0.109 (4.5x), |a| p90 + 48 -> 14.5. [T2] +- gyro eye/body spring-damper integrators (gyro.cpp, was MED): stepped on a 28Hz + accumulator, integrator bodies byte-untouched; impulse bench (BT_GYRO_KICK one-shot) + BEFORE/AFTER: overshoot 23%->7%, period 1.43->2.4s, settle equal (per-SECOND damping is + cadence-invariant); shape verdict = timescale-only. BT_GYRO_SPRING_HZ. [T2] +- footstep AudioControlSmoother intake (AUDCMP.cpp, was LOW): only the Add clocked; the + poll path measured at ~141-147/s (worse than assumed -- the wall window was 0.2s, not + 0.5s); ramp90 0.55->1.23s (the authored ~1.07s window restored); N untouched. + BT_AUD_SMOOTH_HZ. [T2] +- doppler operand (AUDLOC.cpp, was LOW): relative WORLD velocity sample-and-held at 28Hz, + consumer-side only, head-frame geometry live; operand total-variation -20%, stride std + preserved. BT_AUD_DOPPLER_HZ + [doppler] receipt (BT_AUD_DOPPLER_LOG). [T2 mechanism / + T3 PERCEPTUAL -- solo-rig cents jitter moved only -11% (near-field geometry dominates at + d~1); the nearby-walking-mech warble claim still needs an ear A/B or a 2-node rig.] +- ring dt-accumulator registry productionized: 16-slot static -> heat.cpp map pattern + (17th-mech silent revert now impossible); smoke identical within run noise. [T2] + +REMAINING for the BTSimClock migration (one shared 28Hz tick source; tick-native sites +subscribe; dt-native physics -- Mover/missile ODE -- stays on real dt): - LOW published localVelocity 0.25s exponential smoothing (mech4.cpp:5578-5613): re-base to the binary's own 15-sample@28Hz filter once the shared clock exists. +- NEW (night-17, receipt-exposed, pre-existing, UNTOUCHED): doppler sources linked to CHILD + entities of a moving mech read relative v = full ground speed (child worldLinearVelocity + = 0) -> dopplerCents ~ -200 on self-sounds at d~1 (the [doppler] receipt shows it + directly). Not a cadence bug -- a producer-frame question; determine whether the + binary's located-audio path behaved the same (the pod cab may simply have masked it) + before touching anything. [T3] - DEFERRED dead-reckon divergence (@_DAT_004be050) -- only matters if the Missile entity revives. ANNOTATE-ONLY: Simulate telemetry FilteredScalars (dormant). -- Productionize the ring's 16-slot dt-accumulator registry (mech4.cpp) to the heat.cpp map - pattern (degrades gracefully to per-frame push on overflow today; fine for one mission's - mech count, sloppy long-term). +- Consolidation: five per-site clocks now duplicate the same accumulator idiom (heat, ring, + gyro, smoother intake, doppler hold) -- fold onto the one BTSimClock when it lands, one + site per commit, using the existing env-overrides as the bracketing levers.