CLAUDE.md §8: gauge system COMPLETE — 0 NULL bindings + 0 parse-skips (aggregate bank, valve, SectorDisplay/PrepEngr/MessageBoard)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
arcattack
2026-07-07 21:44:06 -05:00
co-authored by Claude Opus 4.8
parent 5b9100da74
commit 401b290949
+23
View File
@@ -760,6 +760,29 @@ the `SegmentArc270` recharge-dial + `BitMapInverseWipeScalar` eject-wipe childre
NULL); the remaining raw heat-leaf-branch value-pointer reads (BEST-EFFORT — need the branch re-base or per-field
bridges); the separate 960×384 gauge window (docked mode renders; separate-window is existing dev-gauge infra).
**✅✅✅ GAUGE SYSTEM COMPLETE — every config attribute binds + every config gauge widget builds (full map:
`docs/GAUGE_COMPOSITE.md`).** Closing the data-binding wave (user: "complete the full guage system"):
- **Attribute bindings: 0 NULL** (`BT_GAUGE_ATTR_LOG` = 50 OK). The LAST unresolved binding
(`HeatSink/AmbientTemperature`) is cleared by the reconstructed **`AggregateHeatSink` 0xBBE** (the heat-sink
BANK class, ctor @4ae8d0, GUID 0x50e590, byte-exact sizeof 0x1E4; publishes HeatSinkCount + AmbientTemperature=300,
frozen). Deliberate deviation: keep the base HeatSinkSimulation, do NOT install the authentic Performance @4ae73c
(it derefs a raw self+0xE0→[+0x158] that doesn't map in our layout → AV for EVERY mech; ambient is a frozen
constant so the gauge reads 300 either way).
- **Widgets: 0 parse-skips** (`BT_GAUGE_SKIP_LOG` = 0). The last 3 unregistered primitives reconstructed + registered:
**SectorDisplay** (radar SECTOR X/Z read-out — LIVE: `Round(-Z*0.01)+500`/`Round(X*0.01)+500` 100-unit sectors,
verified sectorA=510/sectorB=504 from live position), **PrepEngrScreen** (12 engineering-screen label overlays —
base `GraphicGaugeBackground` paint-on-activation, NOT Execute), **MessageBoard** (sec-MFD comm ticker — DEFERRED
empty: SetSource has no caller + StatusMessagePool is a NULL stub, so no messages exist; safe no-op).
- **Condenser valve gauge**: fixed the `/FORCE` ODR dup (heat.cpp stub Condenser ctor shadowed the real reslice one
→ valveState=garbage) + reconstructed **`RecomputeCondenserValves`** (FUN_0049f788, was a no-op `FinishConstruction`
stub) → coolantFlowScale = valveState/Σvalve, so `ValveSetting` reads the authentic **1/N** (BLH 6 condensers →
0.1667 each). **`Condenser::MoveValve`** replaced (the reslice body was mislabeled @4afbe0 controls-mapper; real
@4ae464 disassembled: cycle 1→5→50→0; DORMANT — route/guard via 0xBD3).
- **Remaining gauge work = DATA FEEDS, not widgets** (deferred systems, marked): the valve/message CONTROL routes
(0xBD3 SubsystemMessageManager, WAVE 8) + the status-message queue (StatusMessagePool); `SeekVoltageGraph`'s 4
Seek* attributes (cluster-child, not config-called). ⚠ VERIFICATION GOTCHA: the gauge renderer builds LAZILY
(BuildConfigurationFile) — a too-early process kill shows a false "0 skips / not built"; wait for the gauge window.
**Alternate route considered:** run original `btrel410.exe` under DOSBox — **blocked**: it needs the
VPX/IG board DOSBox can't emulate; bypassing it = the shim work anyway.