Skip to content

feat(workspace): lead the chart with tonight's first action - #1115

Open
seonghobae wants to merge 7 commits into
developfrom
feat/workspace-chart-first-action
Open

feat(workspace): lead the chart with tonight's first action#1115
seonghobae wants to merge 7 commits into
developfrom
feat/workspace-chart-first-action

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

Product outcome

The ready workspace already names tonight's first playable range. The chart JSON previously led with title/headline and every section×role row, so a player opening tonight's chart had to hunt for the first concrete check. The chart download is now Download tonight's first-action chart, and the file leads with that optional firstAction object only when a concrete named span can be established.

This is not a leftover/come-in/tacet/tutti map product and not a parallel MIR PR. Canonical MIR ownership remains #828 for #770. Cue-sheet CSV lead remains #1114.

Exact current identity

  • Protected target: develop@749511c3ad4000090048718f685c6bee6b3d2c25.
  • Exact current head: 223d53f6c63dc17f7ce219faa52e5eafbd7719ed.
  • Branch: feat/workspace-chart-first-action.

All predecessor-head checks/reviews are historical only.

Current exact scope

  • firstChartAction uses firstRangeSqueeze on the untrusted song payload and fails closed when no named span exists.
  • generateChartSummaryJson prepends an optional firstAction object; v1 chart shape remains valid when it is absent.
  • The chart is full-band. Transient workspace role selection does not change the exported lead or body.
  • Formula-shaped role names stay literal in the helper so JSON.stringify remains the chart encoder.
  • Korean and English copy: workspaceFirstRangeDownloadChart.
  • Docs: AGENTS.md, CLAUDE.md, ARCHITECTURE.md, CHANGELOG.md, docs/architecture/overview.md, docs/doctoring/chart-first-action.md.

Security Notes

Chart JSON is derived from untrusted analysis payloads. Section labels, role names, range labels, and next-action copy can carry formula-shaped values, quotes, and controls. JSON.stringify is the chart-JSON encoder; firstChartAction fails closed and does not invent a playable span; filename sanitization remains sanitizeFilename; this path does not write CSV. The export path adds no raw-song logging, path logging, telemetry, network, filesystem-read, subprocess, IPC, or model authority beyond the existing local download Blob.

Exact-head repository verification

Repository-local workflows on exact head 223d53f6c63dc17f7ce219faa52e5eafbd7719ed are terminal-success for CI, release, build-baseline, security-audit, aggregate Security Scan, SBOM, SAST Semgrep, Bandit, and secret scan. These results belong only to this unchanged head.

All currently visible inline review threads are resolved. Existing review submissions are COMMENTED only; there is no qualifying independent non-author approval on this exact head.

Current central review RCA — refreshed 2026-09-01

The earlier text naming open .github#1546 as a prerequisite is now stale. ContextualWisdomLab/.github#1546 merged normally on 2026-09-01 as protected-main commit 5686de41660d51a7a7f22b8840dfa6ccfe5ff3f1. That protected source preserves #1507 malformed-JSON, UTF-8/envelope validation, secret-safe diagnostics and repair guards while reconciling long-running Noema/OpenCode/Strix exact-head cancellation/publication. No predecessor check or review evidence transfers merely because the central implementation changed.

This unchanged BandScope head is now being re-evaluated only where the causal central implementation materially changed:

  • noema-review is currently in progress on the exact head under the current central source; in-progress is non-passing.
  • the predecessor opencode-review failure had dispatched successfully and then polled reviews 180 times at 30-second intervals before failing because no authenticated same-head formal verdict appeared. After #1546 reached protected main, that failed exact-head job was rerun once as evidentiary re-evaluation. The rerun bootstrap/materialization already succeeded and the new opencode-review job is queued; queued is non-passing.

No BandScope product/test code was changed to work around the former central behavior, and unchanged reviewer work is not repeatedly redispatched.

Dependency / supply chain

No new direct dependency or suppression is added. Canonical #783 is already protected develop truth; this branch inherits that baseline. The neutral Trivy configuration warning on the predecessor exact-head evidence is not counted as success; canonical #1119 owns the repository-wide PR-head Trivy configuration repair.

Merge gate

Keep unmerged until this unchanged exact head has every applicable repository and central CI/coverage/review/security/SAST/SBOM/supply-chain gate terminal-success, zero valid unresolved findings, a qualifying independent non-author last-push approval, and ordinary branch-protection acceptance.

Queued, pending, skipped, cancelled, neutral, failed, predecessor-head, protected-base, model-only, self/author, synthetic, or administrative-bypass evidence is not success. Do not self-approve or use administrative bypass.

Name the chart download as tonight's first-action chart and prepend
the same playable-range check the ready map already named. Omit the
lead when no named span exists rather than inventing one.
@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ca1355d8-0efb-410f-9c68-11e2194726ab

📥 Commits

Reviewing files that changed from the base of the PR and between b159392 and 223d53f.

📒 Files selected for processing (6)
  • AGENTS.md
  • apps/desktop/src/features/workspace/Workspace.chartExport.test.tsx
  • apps/desktop/src/features/workspace/firstChartAction.test.ts
  • apps/desktop/src/features/workspace/firstChartAction.ts
  • docs/architecture/overview.md
  • docs/doctoring/chart-first-action.md
🚧 Files skipped from review as they are similar to previous changes (3)
  • AGENTS.md
  • docs/architecture/overview.md
  • docs/doctoring/chart-first-action.md

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

ready workspace가 전체 밴드의 첫 재생 가능 범위를 계산합니다. 계산 결과는 차트 JSON의 firstAction으로 내보냅니다. 유효한 범위가 없으면 해당 필드를 생략합니다. 다운로드 버튼에 영어와 한국어 번역을 적용했습니다.

Changes

첫 연주 범위 차트

Layer / File(s) Summary
첫 연주 범위 계산
apps/desktop/src/features/workspace/firstChartAction.ts, apps/desktop/src/features/workspace/firstChartAction.test.ts
firstChartAction이 전체 밴드 기준의 첫 재생 가능 범위와 안내 문구를 반환합니다. 유효한 범위가 없거나 런타임 입력이 잘못되면 null을 반환합니다.
차트 JSON 내보내기 연결
apps/desktop/src/lib/export.ts, apps/desktop/src/lib/export.test.ts, apps/desktop/src/features/workspace/Workspace.tsx, apps/desktop/src/features/workspace/Workspace.test.tsx, apps/desktop/src/features/workspace/Workspace.chartExport.test.tsx
generateChartSummaryJson이 선택적 firstAction을 JSON의 두 번째 키로 포함합니다. Workspace는 전체 밴드 기준으로 계산된 값을 전달하고 Blob 다운로드를 실행합니다. 필드 생략, 키 순서, 다운로드 및 역할 안정성을 테스트합니다.
다운로드 라벨과 출력 계약 문서
apps/desktop/src/locales/en/common.json, apps/desktop/src/locales/ko/common.json, apps/desktop/src/features/workspace/Workspace.tsx, apps/desktop/src/features/workspace/Workspace.test.tsx, ARCHITECTURE.md, docs/architecture/overview.md, docs/doctoring/chart-first-action.md, AGENTS.md, CLAUDE.md, CHANGELOG.md
다운로드 버튼에 번역 키를 적용합니다. firstAction의 포함 조건과 전체 밴드 기준을 문서화합니다. 로컬 Blob 다운로드의 로깅 및 개인정보 처리 내용을 문서화합니다.

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

Merge Risk: ⚪ Minimal · up to 223d5

The chart download now optionally leads with tonight’s first action while preserving the existing chart when no valid playable range exists. No actionable merge-blocking risk remains after normal checks and review.

Sequence Diagram(s)

sequenceDiagram
  participant Workspace
  participant firstChartAction
  participant generateChartSummaryJson
  participant Browser
  Workspace->>firstChartAction: 곡과 activeRole 전달
  firstChartAction-->>Workspace: firstAction 또는 null 반환
  Workspace->>generateChartSummaryJson: firstAction 옵션 전달
  generateChartSummaryJson-->>Workspace: 차트 JSON 반환
  Workspace->>Browser: Blob 생성 및 다운로드 실행
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 80.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 7 files. (3 skipped: 3 u…
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 80.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 7 files. (3 skipped: 3 unsupported.)

✨ 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-chart-first-action

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 devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Devin Review found 4 potential issues.

Devin Review

Comment thread apps/desktop/src/features/workspace/Workspace.tsx
Comment thread apps/desktop/src/features/workspace/firstChartAction.ts Outdated
Comment thread apps/desktop/src/lib/export.ts
Comment thread apps/desktop/src/features/workspace/Workspace.test.tsx
coderabbitai[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Collaborator Author

Fresh exact-head failure routing for 223d53f6c63dc17f7ce219faa52e5eafbd7719ed over develop@749511c3ad4000090048718f685c6bee6b3d2c25:

  • Required OpenCode job 99504355736 dispatched successfully, then waited the full current 180×30s window and failed only because no authenticated opencode-agent APPROVED/CHANGES_REQUESTED verdict appeared for this exact SHA. There is no BandScope source/test failure at that boundary.
  • Required Noema job 99525158822 materialized trusted central .github@1cbb6aaf0a24c3628d24c3dd6d9dcaa8a7eec0c5, vendored contextual-orchestrator 8cd99f139915131ba0239bce12a5d6a5fd85394e, obtained two ready free routes and passed gateway preflight, then scripts/ci/noema_review_gate.py failed at opener.open(..., timeout=120) with TimeoutError after the substantive review request exceeded the hard 120-second request budget.

This is a read-only central review-control boundary, not a correct BandScope-local repair opportunity. The current canonical central owner lanes are .github#1508 (fix(noema): preserve long-running substantive reviews, removes the per-request Noema timeout and fixes changed-side evidence) and .github#1507 (current timeout validation also removes the 120-second hard stop and widens the enclosing Noema/OpenCode review budgets). Do not add a BandScope timeout override, fallback approval, review suppression, duplicate workflow, or local orchestrator workaround.

Acceptance after the central owner integrates: rerun this unchanged exact head and require a substantive exact-head OpenCode verdict, terminal-success Noema review without the 120s hard-stop, all other required exact-head gates terminal-success, zero unresolved findings, and a qualifying independent non-author last-push approval. Predecessor/central-PR evidence does not satisfy this PR.

Copy link
Copy Markdown
Collaborator Author

Fresh central-control-plane correction — 2026-09-01

The PR body’s Noema RCA is historically correct for the predecessor execution but its stated upstream repair dependency is no longer current and must not drive a leaf-code change.

  • Protected ContextualWisdomLab/.github/main is now 9b57e4bb95b1a6efe9976a208fe7ca2c0d36dfec after #1507, not 7b1a028e....
  • Current protected-main Noema sets NOEMA_LLM_TIMEOUT_SECONDS = 4 * 60 * 60 and includes the #1507 malformed/invalid UTF-8/envelope fail-closed hardening. The old 120-second socket limit that failed this PR is therefore no longer the current protected-main implementation.
  • .github#1508 is not presently a safe merge prerequisite. Its current head c86911a6301ef25737ae220c67b60c136381caee is now non-mergeable against protected main and its older noema_review_gate.py would regress #1507 parsing/error protections if landed wholesale. I recorded the required semantic-reconciliation boundary on #1508 rather than modifying this BandScope branch.

This does not convert the historical Noema failure into passing evidence. It changes the next action: once the then-current central required workflow materializes for this exact BandScope head, use that fresh result; if it still fails, inspect that exact central source/log. Do not repeatedly rerun the old 120-second failure and do not weaken this product branch to compensate for a superseded central implementation.

Copy link
Copy Markdown
Collaborator Author

@opencode-agent Please review exact current head 223d53f6c63dc17f7ce219faa52e5eafbd7719ed only. Repository-local CI/release/build/security/SBOM/SAST gates are terminal-success and all current inline review threads are resolved. Do not transfer predecessor-head evidence; return the governed APPROVED or CHANGES_REQUESTED verdict for this exact head.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant