#155 rig: BT_FORCE_EJECT_ARM hook (=1 steady / =2 chatter at the evaluator's rate) -- pins the panic-arm state with zero damage side-effects. Repro results so far, all NEGATIVE through the PadRIO screen-button injection path (BT_BTNTEST): bank presses deliver and pages flip with ModeEject steady ON (mask 0x650430 observed), and with the arm CHATTERING (2063 edges/run, two presses on two MFDs both delivered). Combined with the authenticity verdict (no eject gating anywhere in content/binary/engine), the dead-bank defect lives ABOVE the mapping layer: prime suspects are the glass window's mouse hit-test / panel rebuild under per-frame mode churn, and the HOTAS CONTROLS.MAP route. Next step needs a human at the desktop: BT_FORCE_EJECT_ARM=2 + mouse clicks on the eng/weapon MFD buttons (and the HOTAS bindings), watching [mode] preset receipts -- ten minutes, fully scripted otherwise.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016bw71WVsccjwW7uKRg4aWD
This commit is contained in:
Joe DiPrima
2026-08-14 14:29:25 -05:00
co-authored by Claude Fable 5
parent ccfa875b65
commit 97bdb5cc0c
+20
View File
@@ -603,6 +603,26 @@ int
|| (liveGenerators == 0)
|| (coolantFrac < 0.05f) // _DAT_0049fb50
|| (gimped && noviceSim);
// (#155 rig) BT_FORCE_EJECT_ARM: pin the panic-arm state without damage
// side-effects, so the dead-MFD-bank repro isolates the ModeEject
// interaction. =1 steady ON; =2 CHATTER at the evaluator's own rate
// (the authentic no-hysteresis flap, e.g. a coolant fraction hovering at
// the 0.05 threshold). Env-gated bench scaffolding, off by default.
{
static int s_forceArm = -1;
if (s_forceArm < 0)
{
const char *fa = getenv("BT_FORCE_EJECT_ARM");
s_forceArm = (fa != 0) ? atoi(fa) : 0;
}
if (s_forceArm == 1)
ejectPermitted = 1;
else if (s_forceArm == 2)
{
static unsigned s_flap = 0;
ejectPermitted = (int)(++s_flap & 1);
}
}
return ejectPermitted;
}