Skip to content

feat(workspace): guide tonight's first verse on map and player - #947

Draft
seonghobae wants to merge 12 commits into
developfrom
feat/workspace-first-verse-line
Draft

seonghobae wants to merge 12 commits into
developfrom
feat/workspace-first-verse-line

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 19, 2026 •

Copy link
Copy Markdown
Collaborator

Product outcome

After analysis, the room can see tonight's first explicitly labeled verse and take one bounded next action: open that section on the renderer-owned map, or hear it from Player only when the owning surface supplies playback authority. Copy names the holding part only when section-local role evidence corroborates it; otherwise it stays band-wide.

Exact current identity

  • Protected product base: develop@314ddeae7b775a4957594b599358c8255617eb2e.
  • Exact current head: c0008336a63b6b984310d59e8e063a5f3e5cffd0.
  • Branch: feat/workspace-first-verse-line.
  • Open / Draft / mergeable.
  • Fresh protected-base compare: ahead 12 / behind 0; merge base exactly protected develop.
  • Current feature diff: 15 files, limited to Player/Workspace first-verse source/tests, i18n EN/KO contracts, and feature-specific reduced-motion doctoring.

Stale-base / single-writer repair

The live branch had moved to 38ed1c8f4dc5f020db43536596aa401c454db55c while this body still described 56e5b811.... Fresh comparison showed that the intervening history had merged old protected snapshots (#783 and #957) and left the branch behind current develop by two commits. It also made this micro-feature a writer of repository-wide AGENTS.md, ARCHITECTURE.md, CLAUDE.md, CHANGELOG.md, and docs/design-system/component-contract.md.

GitHub's clean current-base merge candidate 8cc442ab6fca495943c66999f6331be186897536 proved the feature can reconcile with current protected develop. Ordinary two-parent descendant c0008336... uses that current-base merge tree, but restores those five repository-wide authority files from protected develop. The branch therefore consumes current protected workflow/security/product truth without taking ownership of global agent, architecture, release-history, or design-system policy. Branch movement was force=false; the full intervening history remains ancestry.

No unrelated npm/PDF.js/workflow/dependency source is present in the current protected-base diff.

Product / trust boundary

  • Resolve only an explicit labeled verse section whose runtime window is an integer, non-negative, positive-duration interval bounded by shared MAX_SECTION_TIME_SECONDS.
  • Do not infer a verse from intro, pre-chorus, chorus, bridge, outro, tag, pickup, stop, handoff, or an unlabeled section.
  • Name a holding part only when a unique active ranked section-local graph node corroborates it.
  • Workspace navigation uses renderer-owned section position, never analysis-controlled DOM ids, and arms follow-up guidance only after the action executes.
  • Player Hear exists only when the owning surface injects a callable seek callback.
  • Malformed runtime roots/collections/elements/ids/names/priorities/activity/timing fail closed rather than becoming buyer-visible authority.
  • Completion state is bound to the current runtime song object as well as verse identity, so replacement songs cannot inherit success-shaped guidance through missing or malformed external ids.

Test-first stale-completion repair retained

  • RED 6125221ab28147ae45986e14b71ebd20e6ea5f1d covers two distinct runtime songs with invalid ids but equal verse metadata.
  • GREEN a1f2c73834cd1268f598d2dffa0a29e55ed9d8c1 binds the completion receipt to the current RehearsalSong object and requires receipt/song identity equality.
  • d77924814b33c2977bd2ad331421b9bbad9b149f restores the production file terminal newline.
  • 56e5b81150fba328028c58b98052751a66c4d7ba preserved release history after an intermediate changelog mistake.
  • Later particle-safe KO evidence is retained: vowel-ending role names use fixed-noun 파트가 wording rather than attaching 이 directly to the dynamic role name.

Current inline review threads are resolved; prior reviews/checks do not transfer to c0008336....

Distinct from neighboring rehearsal-decision lanes

First-intro, first-chorus, first-bridge, first-stop, playable-range, and other rehearsal-decision slices keep their own semantic ownership. This PR owns only the explicitly labeled first-verse decision surface and its Player/Workspace presentation; it does not absorb their source or repository-wide policy.

Exact-current-head verification

Fresh PR workflow generation exists for c0008336a63b6b984310d59e8e063a5f3e5cffd0:

  • ci 35841964936: queued
  • build-baseline 35841964960: queued
  • Security Scan 35841965026: queued
  • SAST Semgrep 35841964872: queued
  • sbom 35841965032: queued
  • CodeQL PR 35841964968: queued

Queued/pending/absent evidence is not GREEN. Inspect exact job/log/checkout-SHA evidence for any terminal failure before mutation or rerun. There is no qualifying independent non-author current-head APPROVED review.

Merge gate

Keep Draft until one unchanged exact head has terminal applicable repository/security/SAST/SBOM/CodeQL/build evidence, zero valid unresolved current-head findings, required owned coverage/docstring evidence, buyer-visible browser/Electron accessibility acceptance for this material UI, and a qualifying independent non-author latest-head approval.

Do not self-approve, force-push, destructively rebase, weaken branch protection, transfer predecessor evidence, create source-neutral wake commits, or blind-rerun failures.

Name the earliest labeled verse so the room can open the story line on
the map or hear it from the player. Fail closed on intro, pre-chorus,
chorus, bridge, outro, tag, pickup, stop, and handoff labels, and keep
Hear behind a real seek callback.
@coderabbitai

coderabbitai Bot commented Aug 19, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/workspace-first-verse-line

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

devin-ai-integration[bot]

This comment was marked as resolved.

@opencode-agent opencode-agent Bot added area: ui-ux Frontend, interaction, design, or user experience priority: medium Normal-priority or P2 work status: needs-review Open pull request requiring current-head review or checks type: feature New or expanded product capability labels Aug 22, 2026
…le names

The ko firstVerseBody template attached the subject particle directly to
the dynamic role name ("{role}이 ..."), which produces ungrammatical copy
for vowel-ending names such as 피아노 (피아노이). Restructure the template
to "{at} {section}에서 {role} 파트가 첫 소절을 잡습니다." so particles
always attach to the fixed noun 파트, matching the particle-safe callout
convention used across the workspace-first series, and update the main
callout test expectation accordingly.
# Conflicts:
#	AGENTS.md
#	CHANGELOG.md
#	CLAUDE.md
#	apps/desktop/src/features/workspace/Workspace.tsx
#	apps/desktop/src/locales/en/common.json
#	apps/desktop/src/locales/ko/common.json
@seonghobae

Copy link
Copy Markdown
Collaborator Author

Merged current develop into this branch: resolved shared-file conflicts by including both this feature's first-verse-line callout and the newly landed #957 playable-range work (Workspace.tsx keeps both imports; en/ko locales unioned with symmetric keys; AGENTS/CLAUDE/CHANGELOG unioned). No behavior dropped.

devin-ai-integration[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Collaborator Author

Admission-state correction for exact head 38ed1c8f4dc5f020db43536596aa401c454db55c.

Finding: live develop comparison is diverged (11 ahead / 2 behind).

This PR remains Open and is moved to Draft/Proposed. Its commits, reviews, threads, and valid delta are preserved. Return it to Ready after causal repair/non-force reconciliation and fresh exact-head evidence. No bypass, synthetic status/approval, manual rerun, Force Push, review dismissal, or Close is used.

@seonghobae
seonghobae marked this pull request as draft September 19, 2026 22:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ui-ux Frontend, interaction, design, or user experience enhancement New feature or request priority: medium Normal-priority or P2 work status: needs-review Open pull request requiring current-head review or checks type: feature New or expanded product capability

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant