Twinned from https://github.com/cfsh/ninefold/issues/349 by tools/beads/import_github.py's reconcile pass.
The CONTROLS guide has no assertion surface in the probe harness, so hint regressions ship silently — proven twice:
editing notes + the L1/R1/L2/R2/L3 rows) was unreachable at cursor entry from #195 until #332 (nothing refreshed the guide on the flip) and no probe could have caught it.EditorState.HintsChanged) itself shipped shot-verified only — the reviewer's gate note both times: *"an expect_hint step is the real ask; the shots pin the state but assert nothing."*Proposal (small, self-contained):
- ControlsGuide exposes a probe-readable HintsShown string (the hint texts it last rendered — it already computes exactly this as its refresh signature).
- VisualProbe gains { "expect_hint": "walk song" }: locate the guide in the tree, assert some rendered row contains the arg (the BarShown reflection idiom, tree-wide).
- guide-cursor.json upgrades its shot-only legs to real asserts: cursor entry → expect_hint "walk song" (a row that ONLY exists in the cursor set), ◯ exit → expect_hint "switch to song".
Closes the standing gate honestly and gives every future guide change a regression gate.
None.
No comments.