docs: correct stale facts in scratch.md

Fixes three claims that would mislead a cold session: the levelCursorPopup
patching note (reversed in Phase 2), the tryInteract classification claim
(corrected in Phase 3), and the answered-questions list.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Accessibility Mod
2026-08-01 21:34:51 +02:00
co-authored by Claude Opus 5
parent c17c5277d4
commit bd338087ce
+15 -12
View File
@@ -2,11 +2,11 @@
**Read this first on any handoff.** Living document: update it whenever state changes, before ending a turn. **Read this first on any handoff.** Living document: update it whenever state changes, before ending a turn.
Last updated: 2026-08-01 · Currently: **Phases 0–1 done, menus + dialogue done. Last updated: 2026-08-01 · Currently: **Phases 0–3 done + menus/dialogue.
Phase 3 done. Phase 4 (remaining menus) next.** Phase 4 (remaining menus) next.**
**Game is now playable start-to-finish by ear** from main menu through the intro **Game is playable start-to-finish by ear** from main menu through the intro
conversation into gameplay — verified by the testbed, 9/9 checks. conversation into gameplay — verified by the testbed, **13/13 checks**.
### Run the testbed (do this after any change) ### Run the testbed (do this after any change)
``` ```
@@ -42,10 +42,14 @@ Full research is in `accessibility/docs/` — read `README.md` there for the map
## Still-open questions (in `04-open-questions.md`) ## Still-open questions (in `04-open-questions.md`)
Q3 verbosity (relay vs augment) · Q4 console auto-speak policy · Q5 wall-tone triggers · **Answered:** Q1 (dev LÖVE), Q2 (tracker hierarchy), Q3 (augment, not relay),
Q6 keybinding integration vs separate · Q8 full keyboard audit as deliverable? Q4 (speak everything queued, cancelled by explicit action), Q5 (wall tones on
step, stop-and-replay — confirmed working by ear), Q7/Q10 (patches allowed,
probe backend kept open for Steam), Q9 (NVDA, lovec approved).
None block Phase 0. Q4 lands in Phase 1, Q5 + verbosity in Phase 2. **Still open:** Q6 (integrate our keys into the game's rebinding UI, or keep a
separate scheme) · Q8 (full keyboard-reachability audit as an explicit
deliverable?). Neither blocks Phase 4.
--- ---
@@ -53,9 +57,9 @@ None block Phase 0. Q4 lands in Phase 1, Q5 + verbosity in Phase 2.
- **`console.print(msg, colorTemplate)`** in `modules/console.lua` is the *single* chokepoint for all game log text. Repeated identical messages coalesce into `"msg (x3)"` via a `times` counter. Buffer entries expire after 3s — useless as history, so we keep our own. - **`console.print(msg, colorTemplate)`** in `modules/console.lua` is the *single* chokepoint for all game log text. Repeated identical messages coalesce into `"msg (x3)"` via a `times` counter. Buffer entries expire after 3s — useless as history, so we keep our own.
- **`level.getCursorMessage()`** returns the description under the examine cursor (actor first, then top visible tile). The game already has a full arrow-key examine mode: `states/ingame_observe.lua`. - **`level.getCursorMessage()`** returns the description under the examine cursor (actor first, then top visible tile). The game already has a full arrow-key examine mode: `states/ingame_observe.lua`.
- **`cursorPopup.set(...)`** — patching `views/inventoryCursorPopup.lua` + `views/levelCursorPopup.lua` narrates focus in `inventory`, `craft`, `refine`, `trade`, `ingame_observe` at once. - **`inventoryCursorPopup.set(...)`** — one patch narrates focus in `inventory`, `craft`, `refine` and `trade`. ⚠ `levelCursorPopup` is deliberately **not** patched: it fires from an animation-completion callback and lands a keypress late. `ingame_observe` polls `level.cursorX/Y` instead.
- **All 28 states already implement `keypressed`.** The gap is narration, not reachability. - **All 28 states already implement `keypressed`.** The gap is narration, not reachability.
- **`modules/tile.lua:234`**: `tile.tryInteract = (self.loot or self.tryInteractFunction) and function...` — authoritative "player can do something here" flag. Basis of tracker classification. - **`modules/tile.lua:234`**: `tile.tryInteract = (self.loot or self.tryInteractFunction)`. ⚠ This is **not** a "worth tracking" signal — `wall` has a flavour-only `tryInteractFunction`. Structural tiles (`blocksMovement and blocksVision`) must be excluded first. See the D4 correction in `05-decisions.md`.
- **Template counts:** 231 tiles, 40 actors, 344 items. Parent inheritance is *already flattened* by `modules/tile/preprocess.lua` during `love.load`, so read fields directly. - **Template counts:** 231 tiles, 40 actors, 344 items. Parent inheritance is *already flattened* by `modules/tile/preprocess.lua` during `love.load`, so read fields directly.
- **6 un-nameable mechanical templates to exclude:** `blank`, `throw_blocker`, `movement_blocker`, `fire_detector`, `wall_features_position_dummy`, `ladder_down_hidden`. - **6 un-nameable mechanical templates to exclude:** `blank`, `throw_blocker`, `movement_blocker`, `fire_detector`, `wall_features_position_dummy`, `ladder_down_hidden`.
- **`debug.getupvalue` works** on this Lua build — verified reading `selectedOption` / `optionsList` from a state's `keypressed`. - **`debug.getupvalue` works** on this Lua build — verified reading `selectedOption` / `optionsList` from a state's `keypressed`.
@@ -112,9 +116,8 @@ None block Phase 0. Q4 lands in Phase 1, Q5 + verbosity in Phase 2.
at end of frame. Any keypress that reaches the game counts as an explicit action at end of frame. Any keypress that reaches the game counts as an explicit action
and silences the pending backlog (`hotkeys.onGameKey` → `speech.silence`). and silences the pending backlog (`hotkeys.onGameKey` → `speech.silence`).
**⚠ Not yet verified in-game.** Loading, the self-test, and history logic are all **Verified in-game** by the testbed (console capture + `(x2)` fold + review keys)
confirmed. Whether console speech and wall tones behave correctly *during play* and by Talon at the keyboard (wall tones).
needs a human at the keyboard — Talon to test.
### Keymap so far ### Keymap so far