fix #434: delete the unreachable DebugPanel/DebugVM surface and the comments that advertised it

DebugPanel and DebugVM have not been constructible since Campaign V slice
V11 removed the ImGui frontend that hosted them: nothing in src/ ever
called their constructors, only a test did. Two consequences, both fixed
here — 35 environment reads inside them were unreachable, and roughly forty
XML doc comments across the diagnostics owners promised a runtime checkbox
that no longer exists. A flag documented as runtime-toggleable when it is
startup-only sends the next investigation down a path that cannot work.

Deleted DebugPanel.cs (340 lines), DebugVM.cs (548) and DebugVMTests.cs
(327). Corrected the surviving claims in PhysicsDiagnostics,
RenderingDiagnostics, CameraDiagnostics, PhysicsEngine and GameWindow to say
what is actually true: these flags are set from the environment at startup
or by direct assignment.

The one real dependant was CombatFeedbackSlot, whose binding target was
DebugVM. It now takes a plain Action<string>, which removes the dependency
without changing behavior — and makes visible that there is no behavior:
nothing binds the slot, so the combat refusals it carries ("No monster
target", "Enter melee or missile combat first") have been discarded all
along. Filed as #436 and pinned by a test, rather than papered over with an
invented chat message; the retail text and channel need the oracle first.

Deliberately untouched: F1's AcdreamToggleDebugPanel binding, which
GameplayInputCommandController consumes as a documented no-op so the key
does not fall through to a lower input scope; and the
DebugVmRenderFactsPublisher / DevToolsRuntimeSources chain, which is still
wired into production composition and deserves its own dead-code pass
instead of being pulled into this one.

Full hermetic suite 15,333 passed / 0 failed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-24 10:58:59 +02:00
parent e77dd7c413
commit 05bfe8d162
11 changed files with 129 additions and 1294 deletions

View file

@ -76,9 +76,53 @@ id list), so deletion order matters.
---
## #434 — The DebugPanel/DebugVM developer surface is unreachable, and ~40 doc comments still advertise it as live
## #436 — Combat refusal text ("No monster target") is silently dropped
**Status:** OPEN
**Severity:** MEDIUM (missing user feedback on a common action)
**Filed:** 2026-08-24 (exposed by #434's dead-code removal)
**Component:** combat / chat presentation
**Symptom:** `LiveCombatAttackOperations` produces two refusal messages —
`"Enter melee or missile combat first"` and `"No monster target"` — and
hands them to `CombatFeedbackSlot.Show`. Nothing in `src/` ever binds a
target to that slot, so **both messages go nowhere**. Attacking with no
target, or without a combat mode, gives the player no explanation at all.
**How it got here:** the slot's binding target used to be the developer
`DebugVM`, which Campaign V slice V11 left unreachable (see #434). Nothing
noticed because the drop is silent — `Show` is a null-conditional invoke.
#434 converted the seam to a plain `Action<string>` so it no longer depends
on deleted code, and pinned the current drop-on-the-floor behavior in
`CombatFeedbackSlotTests.AnUnboundSlotDropsItsMessages` so the day it gets a
real binder, that test is what changes.
**Fix shape:** route the slot to the chat window, where retail puts this
text. Needs the retail oracle first: confirm the exact strings and their
LogTextType/channel (`claude-memory/project_chat_digest.md` has the color
and channel map) rather than inventing wording — retail's own text may
differ from these two placeholder strings.
---
## #434 — CLOSED: The DebugPanel/DebugVM developer surface is unreachable, and ~40 doc comments still advertise it as live
**Status:** CLOSED 2026-08-24. Deleted `DebugPanel.cs` (340 lines),
`DebugVM.cs` (548) and `DebugVMTests.cs` (327) — 1,215 lines. Converted the
one real dependant (`CombatFeedbackSlot`) to a delegate seam, which exposed
#436. Corrected every false "runtime-toggleable via the DebugPanel" claim in
`PhysicsDiagnostics`, `RenderingDiagnostics`, `CameraDiagnostics`,
`PhysicsEngine` and `GameWindow`. Full hermetic suite 15,333 passed / 0
failed. **Deliberately left alone:** F1's `AcdreamToggleDebugPanel` binding,
which `GameplayInputCommandController` consumes as a documented no-op on
purpose (so the key does not fall through to a lower scope); and the
`DebugVmRenderFactsPublisher` / `DevToolsRuntimeSources` chain, which is
still wired into production composition and needs its own dead-code pass
rather than being dragged into a documentation cleanup.
**Original report follows.**
**Status (original):** OPEN
**Severity:** LOW (no runtime defect; a documentation-truth and dead-code problem)
**Filed:** 2026-08-24 (found during the launch-options audit)
**Component:** UI.Abstractions / diagnostics ownership