CROUCH complete: full cycle + MP replication verified

The WIP's 'pose does not hold' was a chain of bench-instrument errors, not a
code bug: every capture ran in COCKPIT view (the pilot cannot see their own
legs; the eye-height residual masked as reversion).  Joint probes prove the
park holds indefinitely (knee 1.138, root -2.219 steady); the 2-node bench
shows the observer's replicant fully crouched and held (duckmpA_031 -- the
type-3 state record carries it with zero new replication code); the second
scripted press (new BT_BTNTEST2 env) verifies RISE -> standing zeros.
MP button delivery confirmed mode-mask-clean (the one miss was round-start
jitter).  Diags added, all BT_DUCK_LOG-gated: SetLegAnimation re-arm tracer,
1 Hz joint probe, RIO press mode-mask, BT_TREE_LOG topology dump, and the
squat-park log.  RESIDUAL filed: pilot's own cockpit eye does not ride the
root drop (DPLEyeRenderable chain composition; cosmetic).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Joe DiPrima
2026-08-06 00:50:12 -05:00
co-authored by Claude Fable 5
parent dd70061e0e
commit 591d205b19
8 changed files with 136 additions and 0 deletions
+21
View File
@@ -4435,6 +4435,27 @@ void
<< " squat=" << squatCapable << ")\n" << std::flush;
duckState = 0; // consumed (@0x4aa0a9)
}
// DIAG (BT_DUCK_LOG, 1 Hz): live joint sample -- does the parked
// crouch HOLD at the JOINT level? Discriminates render-side loss
// from a hidden joint writer (the crouch-hold hunt).
if (getenv("BT_DUCK_LOG"))
{
static Scalar s_duckProbe = 0.0f;
s_duckProbe += dt;
if (s_duckProbe >= 1.0f)
{
s_duckProbe = 0.0f;
JointSubsystem *duckJs = GetJointSubsystem();
Joint *knee = (duckJs != 0) ? duckJs->GetJoint(11) : 0;
Joint *root = (duckJs != 0) ? duckJs->GetJoint(0) : 0;
DEBUG_STREAM << "[duck] probe legLvl=" << (int)legStateAlarm.GetLevel()
<< " j11=" << (knee ? (float)knee->GetHinge().rotationAmount : -99.0f)
<< " j0ty=" << ((root && root->GetJointType() == Joint::BallTranslationJointType)
? (float)root->GetTranslation().y : -99.0f)
<< "\n" << std::flush;
}
}
}
{