"""#142 -- correct the report and record what benching established. ASCII only.""" import sys sys.path.insert(0, r"C:\git\bt411\scratchpad\night7") import gitea gitea.comment(142, """**RE-SCOPED 2026-08-07 -- the mech crouches fine; this is a missing PANEL ANIMATION.** The original report ("the crouch button did not toggle to display crouched ... the light next to it always flashes when pressed, but state does not change") reads like a locomotion or lamp bug. Benching says it is neither. ## What works (benched, `scratchpad/night13/crouch142.sh` + `crouchmp.sh`) * SOLO, madcat: both presses reach `DuckRequestMessageHandler`, zero drops, `[duck] SQUAT (posture 1 -> leg clip 2)` then `squat clip parked`, then `[duck] RISE`. A full toggle cycle. * MULTIPLAYER, same chassis: identical -- 2 requests, 0 drops, SQUAT + RISE. So the MP path is not refusing it either. A receipt was added at the consumer's silent miss (`[duck] REQUEST DROPPED`, ungated) covering both gates -- `squatCapable == 0` (which skips the consumer entirely AND leaves `duckState` latched at 1, with no log at all today) and `mapPosture` not 1/2 (previously logged only under `BT_DUCK_LOG`, which no player sets). Neither fired on madcat. Chassis without `squ`/`sqd` clips are still untested; the bench takes a vehicle argument for that sweep. ## What the pilot actually sees The crouch button's LAMP is momentary press feedback, not state. Traced with `BT_LAMP_LOG`: PRESS -> [lamp] 0x13 <- 0x3c (lit) SQUAT -> mech crouches, clip parked RELEASE -> [lamp] 0x13 <- 0x14 (unlit) <-- while still CROUCHED PRESS2 -> [lamp] 0x13 <- 0x3c RISE -> mech stands RELEASE -> [lamp] 0x13 <- 0x14 Crouched and standing are visually identical, so the lamp can never carry posture. ## What it is SUPPOSED to be (era testimony, this day) The operator, correcting the framing: the crouch button is supposed to **animate a MECH SYMBOL next to the button**, standing <-> crouching. Not a two-state lamp -- a missing animation. VGL Lynx: *"When a mech stops, crouch button lowers its stance and plays crouch animation. Mech is immobilized until crouch is pushed again, and mech rises."* Draco: *"Checks out with my memories."* ## Two gaps, and the second is the reported one 1. **No immobilization while crouched.** Nothing in the port gates movement on `duckState` or the parked leg alarm -- grep of every consumer of both across `game/reconstructed/` finds no speed/throttle/demand gate. Per Lynx the mech should be immobile until the button is pushed again. ⚠ Worth checking what a crouched mech that IS driven does today, since the leg clip is parked -- a moving mech with a parked leg channel is the [skate] signature (#52). 2. **No stance symbol.** No gauge element anywhere in `btl4gau*.cpp` draws a posture/stance icon, and the decomp has no crouch/squat/stance/duck graphic STRING (only substring false positives: "existance", "distance"). So it is likely an authored IMAGE element on the secondary/radar MFD rather than something findable by name -- next step is the secondary MFD's element list in the binary, not another string search. Not fixed. Re-scoped, with the locomotion half cleared and the real target named.""")