fix(workspace): keep lock-in pairs display-unique and honest - #877
fix(workspace): keep lock-in pairs display-unique and honest#877cursor[bot] wants to merge 7 commits into
Conversation
Replace the stub rehearsal-priorities card with role-and-section pairs so a player can see what to lock in before the room starts. Prefer high priority, then medium, then focus sections, and never turn blank or none sentinels into instructions. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Repeated verse labels no longer consume the third rehearsal-priority slot, and empty copy now points at the section roadmap instead of a no-op role click. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Clicking a named role-and-section pair selects that role and focuses the matching section so players can jump from the priority card into the part they need to lock. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
Fallback focus labels now jump to the first matching section so players can still act when analysis only names a section, not a role pair. Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
|
Superseded by canonical PR #874 with unique work preserved. Before consolidation, |
There was a problem hiding this comment.
Assessment (c646037d)
The titled lock-in-first card is sound: display-unique pairs, sentinel skipping, and empty copy that points at the section roadmap are covered by Late Night Set tests. Do not merge #874 in parallel.
Two buyer-visible residuals on the later click-to-select commits are not merge blockers for the titled fix, but they are dishonest as shipped:
- Unmatched
focusSectionssuch asbridgestill render as “Show bridge on the roadmap”. Click assignsnulland can wipe verse focus. The plan called this a no-op; the implementation is not. - Activating
Lead Vocal · chorussetsdata-focused-sectionbut does not bring thatw-80card into the horizontal scroller.
Successor a0c2e612 on cursor/bc-fee24870-fea4-4d15-977a-a76d0b07145b-071e omits unmatched labels, walks past none first-section sentinels, and scrolls the named card into view with aria-current="true". Prefer that vehicle over this head.
Do not treat this comment as approval. Exact-head CI and an independent non-author last-push review are still required. Stem-lane placeholder copy stays a later gap; do not mix it here.
Sent by Cursor Automation: Fix Issues


Summary
Landing vehicle for the Rehearsal Priorities lock-in-first card. Prefer this over #874 (
5cd1afd6). Players see up to three named role-and-section pairs, with display-unique pairs so a repeatedverselabel cannot consume the third slot, and empty copy that points at the section roadmap instead of a no-op role click.Exact current head:
df023052. Protected base:develop@acdbea63.Behavior:
highrehearsal-priority roles, thenmediumonly if no high-priority role exists;nonesentinels;This remains distinct from #776 (setup, simplification, transposition, and overlap in the selected-role panel).
Verification
npm --workspace @bandscope/desktop run typechecknpm --workspace @bandscope/desktop run lintnpm --workspace @bandscope/desktop exec vitest run src/features/workspace --coverage(37 passed)./scripts/harness/quickcheck.sh(exact-head CI still required; queued or predecessor evidence is not success)Security Notes
Attack surface
RehearsalSongsection labels, role names, focus-section strings, and rehearsal-priority enums rendered in Workspace.Trust boundary
parseRehearsalSongoutput already shown elsewhere. No new file, URL, subprocess, IPC, WebView, model, database, or dependency path.Mitigations
nonesentinels so missing evidence never becomes an instruction.Test points
Bass Guitar · verse,Keyboard 1 Right Hand · verse).Lead Vocal · chorus.nonesentinels show honest empty copy in English and Korean.focusSectionsis empty.Dependency and Supply Chain
Canonical #783 remains the protected JavaScript dependency-security owner. This branch does not suppress or duplicate it.
i18n impact
workspacePriorityEmptynow tells players to pick the first entrance on the section roadmap.workspaceLockInFirstLabelandworkspacePriorityFocusLeadstay synchronized.Reviewer checklist
develop)Keep Draft/unmerged until exact-head CI, coverage, security/SBOM/supply-chain evidence, and a qualifying independent non-author last-push approval exist. Do not merge #874 in parallel.