Twinned from https://github.com/cfsh/ninefold/issues/366 by tools/beads/import_github.py's reconcile pass.
Suggestions from ninefold-reviewer's review of #359.
1. RowLabelPennant.LabelShown has no reader — the wrap-vs-ellipsis gate is not armed.
#359 wires the #346 capture-from-draw contract into the row label (games/tonapse/ui/SongGrid.cs — LabelShown assigned from DrawPennant's out on both the single-line and wrapped paths, wrapped lines joined /). The capture is correct, but nothing in the probe harness can read it, so today it is a write-only property and the wrap can still silently regress to ellipsis with the suite green.
Two independent blockers:
expect_chit reflects a property literally named PennantShown (shared/VisualProbe.cs:504), not LabelShown.GetViewport().GuiGetFocusOwner(), and RowLabelPennant is a bare Control with no FocusMode set (SongGrid.cs:507-522); only SongCellButton sets FocusModeEnum.All (SongGrid.cs:582). A row label can therefore never be the focus owner.Options, roughly in increasing cost:
{"expect_row_label": [rowIdx, "GOLDEN/POTATO"]}) that walks to the RowLabelPennant for a row instead of going through focus. No behaviour change; same shape as the HintsShown plumbing discussed in #365 and #351.expect_chit reaches them — cheaper to wire, but it changes grid d-pad navigation, which is a controller-UX call, not a probe call.A is the recommended default. This was explicitly kept out of #359's scope.
2. Below-gate, noted only: a sound name with a *trailing* hyphen would silently lose the hyphen on the single-line fallback path (shared/WaveletNames.cs only emits adj-noun, so nothing live hits this); and #359's screenshots landed under pr-new/ on the screenshots branch rather than pr<N>/ as CLAUDE.md specifies.
None.
No comments.