Glass 'keymap regression' triage: stale build-glass exe, not code — rebuild + full re-verify

The live-reported glass regressions (arrows dead / lever+detent missing /
V+J/K/L+N inert / weapons into the ground) were build-glass/Release/btl4.exe
built at 07:47 running the pre-5dd3536 image: no suppression tables, no V/J/K/L
keys, unpinned RIO ids.  content\bindings.txt already carried the merged map
(arrows = W/S lever + A/D pedals) and parsed clean.  Clean rebuild closed every
symptom; SendInput re-verification: lever holds on release + stops at zero,
LEFT/RIGHT turn in MID (wire-sign correct), V toggles with BT_SHOT pair, level
boresight at spawn, R/F elevation drive; pod build rebuilt + smoked un-regressed.

Code delta: BT_MPPR_TRACE [mppr-c] line enriched with mode/pedals/stick/turn/elev
so one env-gated line proves the whole control surface.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
arcattack
2026-07-20 10:36:16 -05:00
co-authored by Claude Fable 5
parent 80c9394131
commit 1535e3e48d
3 changed files with 58 additions and 2 deletions
+35
View File
@@ -243,6 +243,41 @@ pre-btinput double-dispatch, back on the glass side.
- Un-regression: build-pod (gates OFF) compiles 0 errors; forced-walk run drives
(speedDemand=61.501, 32 subsystems, streamed ids 3→+0xdc / 4→+0xe4 unchanged).
### 2026-07-20 (later) — the "keymap regression" live report: STALE EXE, not code [T2]
**Report (human, live glass session):** arrows dead/half-dead (UP accelerated, no detent;
LEFT/RIGHT no turn), throttle not a lever, V no view toggle, J/K/L/N inert, weapons firing into
the ground. **Root cause: `build-glass/Release/btl4.exe` was built 07:47 — BEFORE commit
`5dd3536` (08:35) landed the whole audit fix set** (SuppressKey tables, V/J/K/L hardcoded keys,
the RIO-id pinning that makes 0x15/N work) — the session was relaunched without rebuilding, and
kept running the pre-audit image. `content\bindings.txt` (08:23) already WAS the merged map and
the loader parsed it fine (`[padrio] bindings loaded: 40 keys, 10 pad buttons, 5 pad axes`), so
every bindings-file symptom analysis was a red herring; the binary was simply old. The
ground-fire symptom is the same session: with the R/F/X semantic chaos of the unsuppressed typed
channel, the torso elevation had been driven down and nothing recentered it.
**Fix:** `rm build-glass/Release/btl4.exe && cmake --build build-glass --config Release` (0
`error C`). No input-code change was needed — arrows/lever/detent/V were all already correct at
HEAD. One diagnostic enrichment landed: the `BT_MPPR_TRACE` `[mppr-c]` line now also prints
`mode/pedals/stick/turn/elev`, so one env-gated line proves the whole control surface.
**Re-verification (build-glass, DEV.EGG solo, SendInput-injected keys, own PID only):**
- UP hold 0.9 s → thr 0→0.63, dmd 38.70; released → **holds** 0.63 for 3 s (persistent lever).
- DOWN hold 2.5 s → thr 0.36→0.0028→0, rev=0 throughout — **stops at zero, no reverse
crash-through** (the wire throttle is the authentic 0..1 lever; reverse is the 0x3F button).
- M → `[mode] control mode -> 1`; LEFT → pedals +1 / turnDemand +1 (CCW=left, the wire sign);
RIGHT → pedals 1 / turnDemand 1; both auto-center on release. (In BAS the pedals are
authentically inactive — turns are the stick, Q/E.)
- R/F → stick.y ±1, torso elev 0→+0.349→−0.195, holds where released (positional torso,
matches the btinput path); **boresight level at spawn (elev=0)**.
- V → `[view] COCKPIT eyepoint``[view] external chase`, BT_SHOT pair confirms
(chase mech ↔ canopy + reticle). Closes the audit's one T3 (V edge) as [T2].
- SPACE → `[emitter] FIRED #1`. Pod build rebuilt + smoked: BT_AUTODRIVE=0.8 →
dmd=49.2008, clean log, no cross-contamination.
**Lesson (procedural):** after landing an engine/input commit, REBUILD every live build dir
before relaunching — a stale `build-glass` exe reproduces "the whole keymap is broken" exactly.
## 2026-07-18 — Merge origin/master (commit f889e24): btinput meets PadRIO
Master's 33-commit run landed (D1 relay/operator-console line, CONTROLS.MAP+XInput binding