Skip to content

feat(workspace): name tonight's first groove change on the map - #1122

Open
seonghobae wants to merge 28 commits into
developfrom
feat/workspace-first-groove-change
Open

feat(workspace): name tonight's first groove change on the map#1122
seonghobae wants to merge 28 commits into
developfrom
feat/workspace-first-groove-change

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

Canonical rehearsal-map change owner

This PR is the single current writer for the overlapping first-change rehearsal-map boundary previously split across #1122, #1124, and #1127. It owns one buyer-visible change surface and one roadmap next-action model rather than three sibling micro-PRs editing the same Workspace, SectionRoadmap, locales, and product docs.

Exact current identity

  • Protected target: develop@749511c3ad4000090048718f685c6bee6b3d2c25.
  • Branch: feat/workspace-first-groove-change.
  • Exact current head: 21f38bfcaf92c59c56675fb9d4f54197fcf817db.
  • Open, non-Draft, mergeable, unmerged at the latest fresh refetch.

Mounted product outcome

The ready workspace keeps the existing playable-range decision separate, then presents groove, section length, and confidence under one Tonight's first changes / 오늘 먼저 확인할 변화 surface. Each row preserves its own accessible label and exact next-action semantics. Section Roadmap likewise renders one compact next-action area per destination card while preserving stable-ID targeting for groove, duration, and confidence.

The duration path includes the transferred #1124 review repair: legacy migration compatibility placeholders are marked inside the project-load adapter and rejected as measured timing authority. An explicit measured one-second section remains valid, while a synthesized {0,1} legacy placeholder cannot become rehearsal guidance. Named missing/invalid timing fails closed instead of bridging measured sections.

Verified succession

The former sibling writers are already closed unmerged after their valid behavior/test requirements were transferred here:

  • feat(workspace): name tonight's first length change on the map #1124 final source head 8f468438825838ad43b6bc57040e0c91e55769ba: bounded integer time-range validation, duplicate-ID rejection, first change/hold semantics, literal interpolation, stable destination identity, synthetic timing provenance, and native load_project preservation are retained by this canonical branch.
  • feat(workspace): name tonight's first confidence change on the map #1127 final source head bf4edf83f24a69818df92f076d879b9b3c5c7c13: named low/medium/high validation, duplicate-ID rejection, first change/hold semantics, literal interpolation, stable destination identity, and localized confidence words are retained by this canonical branch.
  • firstChangesIntegration.test.tsx preserves the buyer-visible integration contract for held/change/missing duration and confidence behavior, EN/KO labels, coexistence with groove, and destination-only roadmap actions for repeated labels.

No #1124/#1127 check, review, approval, or predecessor evidence transfers to this head. Those PRs being closed does not make #1122 merge-ready.

Current verification boundary

Fresh exact-head check inventory currently contains 31 check-runs for 21f38bfcaf92c59c56675fb9d4f54197fcf817db. Required lanes including Windows/macOS build and OSV were still queued at the latest refetch; publish-manual-pr-evidence-status is skipped. Queued/skipped evidence is non-passing.

Historical automated reviews on predecessor heads remain historical. No self-approval or protection bypass is used. Merge requires a qualifying independent non-author approval covering the last push plus every applicable required exact-head gate at terminal success and zero valid unresolved current-head findings.

Ownership boundary

This consolidation does not replace #991 first-groove guidance, #828/#770 MIR accuracy, #811 CLI authority, #897 Storybook/design-token ownership, or #971/#961 active-player transport. It adds no new filesystem, network, subprocess, model, persistence, or playback authority.

Merge gate

Keep unmerged until this unchanged exact head has all applicable repository and central CI/build/release/security/SAST/SBOM/supply-chain/coverage/review gates terminal-success, zero valid unresolved actionable findings, exact required owned coverage/docstring evidence, and a qualifying independent non-author last-push approval under ordinary branch protection. Queued, pending, skipped-required, cancelled, failed, neutral, predecessor-head, protected-base, model-only, self/author, status-only, or administrative-bypass evidence is non-passing.

Name the first consecutive feel change on the ready rehearsal map and
tell the player to count the new groove in before that section. When
the form holds one feel, keep the same count-in instead of inventing a
reset.
@seonghobae seonghobae added area: ui-ux Frontend, interaction, design, or user experience priority: medium Normal-priority or P2 work scope: product-gap Customer-visible product gap type: feature New or expanded product capability labels Sep 1, 2026 — with Grok (by xAI)
@coderabbitai

coderabbitai Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

첫 named groove 변경을 계산하는 유틸리티를 추가했습니다. Workspace에는 첫 그루브 상태 요약을 추가했습니다. SectionRoadmap에는 도착 섹션의 다음 카운트인 안내를 추가했습니다. 영어와 한국어 번역 및 관련 테스트와 문서를 갱신했습니다.

Changes

그루브 안내

Layer / File(s) Summary
첫 그루브 변경 분석
apps/desktop/src/features/workspace/firstGrooveChange.ts, apps/desktop/src/features/workspace/firstGrooveChange.test.ts
firstGrooveChange가 형식 순서에서 첫 named groove 변경 또는 유지 상태를 반환합니다. 잘못된 입력을 건너뛰고 문구 토큰을 치환합니다.
Workspace 요약 안내
apps/desktop/src/features/workspace/Workspace.tsx, apps/desktop/src/features/workspace/Workspace.test.tsx, apps/desktop/src/locales/*/common.json
Workspace가 그루브 변경, 유지, 정보 없음 상태를 표시합니다. 영어와 한국어 문구 및 렌더링 테스트를 추가했습니다.
SectionRoadmap 다음 카운트인
apps/desktop/src/features/workspace/SectionRoadmap.tsx, apps/desktop/src/features/workspace/SectionRoadmap.test.tsx, AGENTS.md, ARCHITECTURE.md, CHANGELOG.md, CLAUDE.md
그루브 변경의 도착 섹션에만 다음 카운트인 안내를 표시합니다. 관련 테스트와 프로젝트 문서를 갱신했습니다.

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

Merge Risk: 🟡 Moderate · up to 4172a

Repeated section labels can cause the next count-in guidance to appear on multiple roadmap cards instead of only the actual destination section. The PR is not merge-ready until destination matching uses a stable section identity or the behavior is explicitly accepted.

Sequence Diagram(s)

sequenceDiagram
  participant Player
  participant Workspace
  participant firstGrooveChange
  participant SectionRoadmap
  Player->>Workspace: 리허설 곡 열기
  Workspace->>firstGrooveChange: 곡의 sections 분석
  firstGrooveChange-->>Workspace: 첫 그루브 상태 반환
  Workspace-->>Player: 그루브 요약 카드 표시
  Workspace->>SectionRoadmap: 곡과 그루브 상태 전달
  SectionRoadmap-->>Player: 도착 섹션의 다음 카운트인 표시
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 75.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 8 functions across 6 files. (6 skipped: 6… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
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 제목은 워크스페이스 맵에서 오늘 밤의 첫 그루브 변경을 표시하는 주요 변경 사항을 정확하고 간결하게 설명합니다.
Full details: Docstring Coverage

Explanation

Docstring coverage is 75.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 8 functions across 6 files. (6 skipped: 6 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 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-groove-change

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.

coderabbitai[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Collaborator Author

Noema 실패 원인을 중앙 리뷰 어댑터에서 재현했습니다. RuntimeError: Noema reviewed line 3 is not an exact changed-side lineline 3은 소스 3행이 아니라 reviewed_lines의 세 번째 항목이며, strict validator는 정상적으로 잘못된 diff 좌표를 차단했습니다.

문제는 최초 요청과 repair retry가 모델에 허용된 (path, line, side) 집합을 제공하지 않고 raw diff에서 다시 추론하게 한 데 있었습니다. 중앙 수정 PR을 열었습니다: ContextualWisdomLab/.github#1612

수정은 정확한 변경 좌표를 파일·LEFT/RIGHT별 범위 JSON manifest로 제공하되, 후단 검증을 느슨하게 하거나 잘못된 좌표를 보정·삭제하지 않습니다. 선행 커버리지 기준선 복구 PR ContextualWisdomLab/.github#1610 병합 후 #1612를 병합하고, 이 PR의 동일 head에서 Noema를 다시 실행해 실제 canary를 확인하겠습니다.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Collaborator Author

Exact-head RCA/fix: hosted release-preflight run 33588547526 on predecessor head f973cb704a74231ac80467f58b8b31b2d543bdee reached the real desktop test suite and failed only firstChangesIntegration.test.tsx because that regression still expected the pre-review “first two sections” fallback. The current product copy had deliberately changed after review to section-count-safe, truthful fail-closed guidance (Section timing isn't confirmed yet. Analyze section timing before using a count-in. / Section confidence isn't confirmed yet. Analyze section confidence before rehearsal.), so the failure was a stale test contract rather than a production regression. Commit 21f38bfcaf92c59c56675fb9d4f54197fcf817db updates only that integration regression (including its test name) to the reviewed current behavior. Predecessor GREEN/FAIL evidence does not transfer; fresh workflows on 21f38bfc... are newly queued, and CodeQL PR currently has a zero-job startup failure, so this head remains non-passing pending exact-head evidence.

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 priority: medium Normal-priority or P2 work scope: product-gap Customer-visible product gap type: feature New or expanded product capability

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant