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:
parent
e77dd7c413
commit
05bfe8d162
11 changed files with 129 additions and 1294 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue