Skip to content

feat(workspace): set up tonight's part before the first entrance - #910

Draft
seonghobae wants to merge 58 commits into
bolt-performance-chart-export-13223013812255847379from
feat/workspace-setup-first-entrance
Draft

seonghobae wants to merge 58 commits into
bolt-performance-chart-export-13223013812255847379from
feat/workspace-setup-first-entrance

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 18, 2026 •

Copy link
Copy Markdown
Collaborator

Buyer-visible outcome

After a part is selected, the workspace turns existing setupNote, transposition/range evidence, and the earliest real entrance into an executable setup action instead of leaving Transcribe Bass as a dead-end. Missing setup/start evidence fails closed; no transcription, stem playback, or parallel MIR authority is invented.

Current buyer-truth repair

The same Workspace/GrooveMap lane repaired two misleading loading-state behaviors:

  • RED a3a6ab6442a353d04ab417f2163048758f9d780e requires no Cancel control when cancellation capability is absent and exactly one callback invocation when capability is supplied.
  • RED 9a5bf5dafbf821aec3f9e009bfa278dd7d142a10 rejects fabricated 45% progress in EN/KO loading copy.
  • GREEN 340bf2e8385b5731e1cc7b6c7ce93f1c4765e850 adds optional onCancel; the button exists only when that real capability is supplied. No cancellation backend is invented.
  • 103d2a2cbd6103e591489d4b336f82351e8837d0 and 48783c020231acb3672dc4ddd955fb37ed084380 remove unsupported numeric progress from EN/KO resources.
  • d49602760840e255d5893c1c23feafd58100b5a5 makes the Figma/code contract explicit: no capability-less Cancel and no manufactured percentage.
  • b5594975ae6d3087ca359cf76bcbb220491a7a0c restored full CHANGELOG history after an intermediate full-file write truncated older entries; the final net changelog delta is additive only.

This repair does not add filesystem, network, subprocess, IPC, WebView, model, export, or analysis-cancellation authority. Without onCancel, Cancel is omitted.

Canonical formatter prerequisite / actual ancestry

The direct-develop generation exposed that this Workspace source itself was not the CI failure. Repository ci run 35731825321 became terminal FAILURE only at Ubuntu ci / build-and-test job 106832987895 → Run quickcheck → Ruff 0.15.5 format --check, reporting exactly:

services/analysis-engine/tests/test_supply_chain_policy.py

The job had already passed documentation, Security Notes, security patterns, supply-chain verification, GitHub bootstrap, JS/TS lint, Python docstring checks and Ruff lint. #910 does not semantically own that Python file; canonical formatter owner is #1176 exact 8fe6b6d99c009527ef0bcba419e6f6debdb23c23.

Accordingly #910 is now intentionally stacked on #1176 rather than copying the formatter repair:

This is an ancestry repair, not base-label bookkeeping. After #1176 normally reaches protected develop, this lane must ordinary/non-force reconcile to that protected descendant and reacquire final exact-head/base evidence.

Direct-develop exact-source evidence before stacking

For semantic head b5594975ae6d3087ca359cf76bcbb220491a7a0c:

  • build-baseline 35731825256: SUCCESS; all Windows amd64/arm64 and macOS amd64/arm64 platform jobs completed successfully.
  • Security Scan 35731825235: SUCCESS.
  • SAST Semgrep 35731825263: SUCCESS.
  • sbom 35731825240: SUCCESS.
  • repository ci 35731825321: FAILURE, solely on the inherited repair(ci): format consolidated supply-chain policy test #1176 Ruff-format file described above; npm-lock validation and macOS rust-check succeeded.
  • CodeQL PR 35731825310: still queued/nonterminal at the final direct-head read.

The clean CI install also again reported three moderate npm advisories; package/advisory identity and reachability remain the separate dependency-security owner, not the causal #910 failure.

The current stacked head 89de8e2c... has not yet produced repository-owned PR workflows because protected-target workflow admission does not materialize the same way on this feature-base stack. Zero runs are absence of evidence, not GREEN. No source-neutral wake commit, blind rerun, force-push, destructive rebase, self-approval or required-gate weakening is used.

Security / accessibility / interaction notes

PR #905 overlaps the same Workspace/GrooveMap surface but remains a preservation lane. Its unique first-note/reduced-motion intent must be adopted through verified succession; its consumer-local timing/velocity policy must not override canonical shared admission.

Merge gate

Keep Draft until #1176 reaches protected ancestry, this branch is ordinarily reconciled without losing its Workspace/GrooveMap delta, and one unchanged final exact head has every applicable repository/central gate terminal-success, zero valid unresolved findings, material browser/a11y evidence, and a qualifying independent non-author last-push approval.

UI Delivery Gate: FAIL. The loading copy/action now matches real capability in source, but current stacked-head browser evidence is absent for pointer/touch/keyboard, focus/interaction state, responsive/400% zoom, forced colors, Narrator/VoiceOver, and KO/EN/JA/ZH/VI/ES/DE/FR rendered acceptance.

Commercial Release Gate: FAIL. The direct semantic head passed build/Security/Semgrep/SBOM and failed repository CI only on canonical #1176 formatting debt, now consumed by actual ancestry. #1176 protected integration, fresh final exact-head gates/review, real-audio MIR acceptance, crash-safe persistence, signing/notarization, provenance/reproducibility, immutable release and updater rollback remain open.

Replace the inert Transcribe Bass control with a named setup action
from setupNote, transposition, or simplification, then point at the
first analyzed entrance on the groove map. Isolation stays fail-closed.
@cursor

cursor Bot commented Aug 18, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@coderabbitai

coderabbitai Bot commented Aug 18, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Workspace가 역할별 setup cue와 첫 transcription 진입점을 계산합니다. 사용자가 setup을 활성화하면 설정 카드로 이동하고, GrooveMap이 해당 음표를 강조합니다. 영어·한국어 안내와 관련 테스트 및 문서가 추가되었습니다.

Changes

역할 설정 및 진입점 안내

Layer / File(s) Summary
역할 setup 계산 및 활성화
apps/desktop/src/features/workspace/Workspace.tsx, apps/desktop/src/locales/*/common.json
역할의 전사 노트, 음역, setup cue를 계산합니다. setup 활성화와 설정 카드 포커스 이동을 처리합니다. 기존 Bass 전사 분기를 제거합니다.
GrooveMap 진입점 표시
apps/desktop/src/features/workspace/GrooveMap.tsx, docs/design-system/component-contract.md
선택적 entranceOnset을 추가합니다. 일치하는 음표에 강조 스타일, 툴팁, 접근성 문구를 적용합니다.
동작 검증 및 제품 지침
apps/desktop/src/features/workspace/Workspace.test.tsx, AGENTS.md, ARCHITECTURE.md, CHANGELOG.md, CLAUDE.md
setup cue 기반 활성화, 후속 섹션 진입, 스크롤·포커스 이동, 비활성 상태, 한국어 라벨을 검증합니다. 관련 제품 지침과 변경 기록을 갱신합니다.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: 🟡 Moderate · up to 25bd7

The change can arm setup without a valid first entrance and can describe non-Bass parts as Bass, while unavailable controls and groove-map keyboard focus do not provide reliable interaction feedback. This can misdirect tonight’s setup and weaken accessibility, so the PR is not merge-ready until these bounded issues are fixed.

Sequence Diagram(s)

sequenceDiagram
  participant RoleSwitcher
  participant Workspace
  participant SetupCard
  participant GrooveMap
  RoleSwitcher->>Workspace: 역할 선택
  Workspace->>SetupCard: setup cue와 시작 정보 표시
  Workspace->>GrooveMap: entranceOnset 전달
  SetupCard->>Workspace: 설정 활성화
  Workspace->>GrooveMap: 첫 transcription 위치로 이동
Loading

Possibly related PRs

  • ContextualWisdomLab/bandscope#906: Workspace.tsx와 테스트에서 초기 rehearsal 진입점으로 이동하고 포커스를 설정하는 흐름을 함께 수정합니다.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 선택한 파트를 첫 진입 전에 준비하는 이번 변경의 핵심 목적을 정확하고 간결하게 설명합니다.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
📝 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-setup-first-entrance

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.

coderabbitai[bot]

This comment was marked as resolved.

github-advanced-security[bot]

This comment was marked as resolved.

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

OpenCode cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head 61aa51f274c04d60289da7919a70d40155f2674d.

  • Head SHA: 61aa51f274c04d60289da7919a70d40155f2674d

  • Workflow run: 32136920512

  • Workflow attempt: 1

Coverage evidence

Coverage evidence job did not run or did not publish coverage evidence.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file (10 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (10 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Docs: component-contract.md"]
  S2 --> I2["operator or user guidance"]
  I2 --> R2["Review risk: Docs: component-contract.md"]
  R2 --> V2["docs review"]
Loading

@opencode-agent

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: 61aa51f274c04d60289da7919a70d40155f2674d
  • Workflow run: 32136920512
  • Workflow attempt: 1
  • Gate result: REQUEST_CHANGES (approval step)

Pull request overview

OpenCode cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head 61aa51f274c04d60289da7919a70d40155f2674d.

  • Head SHA: 61aa51f274c04d60289da7919a70d40155f2674d

  • Workflow run: 32136920512

  • Workflow attempt: 1

Coverage evidence

Coverage evidence job did not run or did not publish coverage evidence.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file (10 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (10 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Docs: component-contract.md"]
  S2 --> I2["operator or user guidance"]
  I2 --> R2["Review risk: Docs: component-contract.md"]
  R2 --> V2["docs review"]
Loading

@seonghobae
seonghobae enabled auto-merge (squash) August 18, 2026 13:57
@opencode-agent
opencode-agent Bot disabled auto-merge August 18, 2026 14:08
@opencode-agent opencode-agent Bot added area: ui-ux Frontend, interaction, design, or user experience priority: medium Normal-priority or P2 work labels Aug 22, 2026
@seonghobae
seonghobae changed the base branch from develop to bolt-performance-chart-export-13223013812255847379 September 22, 2026 18:26
Make the canonical supply-chain Ruff formatting prerequisite actual ancestry of the Workspace/GrooveMap lane without duplicating source ownership. Preserve the buyer-visible loading/cancel truth repair unchanged.

Signed-off-by: Seongho Bae <me@seonghobae.me>
seonghobae added a commit that referenced this pull request Sep 24, 2026
Keep the concrete Workspace callback-stability candidate while removing the generated repository-wide “always use useCallback” rule and unsupported performance claims. Canonical adoption remains #910-owned and measurement-bound.

Copy link
Copy Markdown
Collaborator Author

Fresh single-writer review of generated #1263 found one plausible owner-local performance delta and one invalid doctrine delta. I repaired #1263 to Draft, removed its .jules/bolt.md “always use useCallback / completely breaks React.memo” claim, and retargeted the surviving one-file Workspace.tsx callback-stability delta onto this canonical lane.

Concrete causal path here: after a role is selected, armTonightSetup() mutates only armedSetupRoleId; song, activeRole, and onSongUpdate can remain unchanged. Because PracticeProgress is memoized, a focused RED should instrument child render count for that parent-local state transition. If it reproduces, the minimal GREEN is stable handlePracticeProgressChange identity with dependencies [song, activeRole, onSongUpdate]. This is render-identity evidence only; do not claim buyer-visible latency/main-thread improvement without packaged React/Electron profiling.

Carrier/preservation: #1263 current 3d4b206baa82569a6d85eb2e3fd6d14313dd2045, base=this branch, one-file +3/-3, fresh checks nonterminal. Do not merge the preservation lane independently; adopt or reject the delta here with the focused RED/GREEN and preserve #1176 ancestry.

Copy link
Copy Markdown
Collaborator Author

Downstream owner-consolidation update: canonical GrooveMap performance lane #1170 now consumes this exact buyer-visible Workspace/GrooveMap contract instead of layering on stale protected behavior. #1170 current be321e36bfe6c34c228c1019674470843e3bb461 is an ordinary two-parent descendant of its previous live head and #910@89de8e2ce8cba589fa9683c7c364d4c0c822e8fa, and its PR base is retargeted here. Fresh compare from #910 is ahead-only and contains exactly .jules/bolt.md, GrooveMap.tsx, and a focused GrooveMap.test.tsx; localized loading/empty/region copy, capability-bound actionable Cancel, roleName, entranceOnset, and first-entrance announcement/highlight remain #910-owned and are preserved. #1170 now owns only the max-offset indexed Math.max fold plus its timing/geometry evidence. Fresh exact-head CI/review is required on be321e36...; predecessor evidence does not transfer.

Consolidate #1170's unique max-offset helper, focused regression/geometry tests, and scoped performance doctoring into the canonical Workspace/GrooveMap owner while preserving #910 buyer-visible loading, cancellation, localization, role, and first-entrance semantics. Keep #1170 ancestry explicit; no force update.

Signed-off-by: Seongho Bae <me@seonghobae.me>
seonghobae added a commit that referenced this pull request Sep 24, 2026
Record the canonical #1170 -> #910 succession and keep the performance/evidence claim boundary code-current without duplicating product source ownership.

Signed-off-by: Seongho Bae <me@seonghobae.me>
seonghobae added a commit that referenced this pull request Sep 24, 2026
seonghobae added a commit that referenced this pull request Sep 24, 2026
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.

2 participants