Skip to content

feat(workspace): name tonight's first remaining leftover on the map - #1102

Open
seonghobae wants to merge 3 commits into
developfrom
feat/workspace-first-remaining-leftover
Open

feat(workspace): name tonight's first remaining leftover on the map#1102
seonghobae wants to merge 3 commits into
developfrom
feat/workspace-first-remaining-leftover

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

Product outcome

The ready rehearsal map names tonight's first remaining leftover at a leftover return from existing partGraph evidence so the leftover part stays out while another leftover comes back, and the band counts that leftover part out. This is not a come-in, tacet, leftover sit-out, leftover return, dropout, tutti, handoff, Fine, last-line breath, a leftover return with nobody still out, a continued sit-out with nobody returning, a new dropout after every original sit-out returns, or a new MIR product.

Exact current identity

  • Protected target: develop@749511c3ad4000090048718f685c6bee6b3d2c25.
  • Exact current head: d9216d33b0450709d4826f131c39b9831535056e.
  • Branch: feat/workspace-first-remaining-leftover.

Current exact scope

  • firstRemainingLeftover admits a named leftover sit-out (at least one previously sitting-out named part is own-property active and at least one remains own-property tacet), then a later named leftover return where at least one leftover named part is own-property active and at least one leftover remains own-property tacet.
  • Blank labels, missing graph nodes, inherited is_active, missing is_active, unnamed roles, leftover sit-outs without a leftover return, leftover returns with nobody still out, come-ins without a leftover, all-active later sections after a full original return (tuttis), continued sit-outs with nobody returning, new dropouts after a full original return, and malformed roots fail closed.
  • When a role is selected, only a remaining leftover after a leftover sit-out that includes that named part is shown. The remaining leftover gets stay-out copy; included returning parts get count-them-out copy.
  • Ready workspace copy names the next action: stay out from the top of the named leftover return, count the remaining leftover out from the top, or confirm who stays out at that return before the first section when the remaining leftover is missing.
  • AGENTS / CLAUDE / ARCHITECTURE / CHANGELOG and the component contract stay current.
  • Doctoring: docs/doctoring/first-remaining-leftover.md.

Distinct from adjacent first-X work

Verification

  • Desktop Vitest on this head: 242 tests passed; coverage thresholds held on the configured files.
  • npm run typecheck --workspace @bandscope/desktop
  • npm run lint --workspace @bandscope/desktop
  • ./scripts/harness/quickcheck.sh (full harness left to required CI on this exact head)

Security Notes

Attack surface

Untrusted RehearsalSong JSON, section labels, partGraph nodes, is_active, role ids, and role names from analysis or a reopened project.

Trust boundary

Workspace helper never opens files, URLs, IPC, WebView, subprocesses, model artifacts, or export paths. It only admits an own-property leftover sit-out followed by a later named leftover return where a leftover part is own-property active and another leftover remains own-property tacet.

Mitigations

Allowlist: section labels and role names must be meaningful text. A missing graph node is not a remaining leftover. Inherited is_active is isolated. A leftover return with nobody still out is a leftover return, not a remaining leftover. When a role is selected, only a remaining leftover after a leftover sit-out that includes that named part is shown. Safe failure returns null so the workspace shows the missing-copy next action.

Test points

firstRemainingLeftover.test.ts, selected-role search, and the Workspace callout cover the demo all-active case, an explicit lead remaining leftover after a leftover return, selected-role scoping, inherited flags, missing is_active, continued sit-outs, tuttis, come-ins, leftover returns with nobody still out, new dropouts after a full original return, unnamed roles, empty graphs, and literal copy filling.

Dependency and Supply Chain

i18n impact

  • Korean and English locale impact was updated

Dependency / merge gate

Reviewer checklist

  • Gitflow target branch is develop
  • protected-branch rules were not weakened
  • required checks are expected to stay green (do not treat queue/pending/skipped/cancelled as passing; do not merge without independent non-author APPROVE + exact-head required-gate success)

Devin Review

The ready rehearsal map names the leftover part that stays out at a leftover
return so the band counts that part out from the top. Fail closed when the
leftover return has nobody still out.
@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 18 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d1ff99aa-4c66-40a1-924b-ba233f87d3bb

📥 Commits

Reviewing files that changed from the base of the PR and between 749511c and e1c091d.

📒 Files selected for processing (14)
  • AGENTS.md
  • ARCHITECTURE.md
  • CHANGELOG.md
  • CLAUDE.md
  • apps/desktop/src/features/workspace/Workspace.test.tsx
  • apps/desktop/src/features/workspace/Workspace.tsx
  • apps/desktop/src/features/workspace/firstRemainingLeftover.selected-role.test.ts
  • apps/desktop/src/features/workspace/firstRemainingLeftover.test.ts
  • apps/desktop/src/features/workspace/firstRemainingLeftover.ts
  • apps/desktop/src/i18n/index.test.ts
  • apps/desktop/src/locales/en/common.json
  • apps/desktop/src/locales/ko/common.json
  • docs/design-system/component-contract.md
  • docs/doctoring/first-remaining-leftover.md

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/firstRemainingLeftover.ts
Comment thread apps/desktop/src/features/workspace/firstRemainingLeftover.ts
Comment thread apps/desktop/src/features/workspace/firstRemainingLeftover.ts
Comment thread apps/desktop/src/features/workspace/firstRemainingLeftover.ts

Copy link
Copy Markdown
Collaborator Author

@opencode-agent Please perform the required independent formal review for exact current head e1c091de54a243fb7938e910af6b3c7ff9220c22 against protected base develop@749511c3ad4000090048718f685c6bee6b3d2c25 and submit an authenticated GitHub formal APPROVED or CHANGES_REQUESTED verdict anchored to that unchanged head. Verify the selected-role remaining-leftover fix: a cue is eligible only when the selected role belonged to the originating reduced cohort, while an originally reduced role that returned and later drops again must still be handled correctly. Exact-head quickcheck is green (desktop 243/243 with 100% statement/branch/function/line; shared-types 20/20 at 100%; analysis engine 702 passed, 1 skipped at 100% statement/branch), and all current inline review threads are resolved. Do not mutate the contributor branch, do not inherit predecessor-head evidence, and do not infer approval from pending or unrelated gates.

Copy link
Copy Markdown
Collaborator Author

@opencode-agent Independently review exact current head e1c091de54a243fb7938e910af6b3c7ff9220c22 against protected develop@749511c3ad4000090048718f685c6bee6b3d2c25 and submit an authenticated formal APPROVED or CHANGES_REQUESTED verdict anchored to this unchanged head. Do not mutate the contributor branch and do not reuse predecessor-head evidence. The exact-head repository CI/build/release/security/SAST/SBOM gates are terminal-success; the required OpenCode job 99387263326 failed only because no qualifying same-head verdict existed. Verify the repaired selected-role provenance in firstRemainingLeftover: an unrelated dropout/return cohort must not leak a remaining-leftover cue to a role that was never part of the originating reduced cohort, while a selected role that did belong to that original cohort remains eligible even if it returned before the final cue. Also inspect malformed/inherited activity fail-closed behavior and EN/KO action-copy parity. Publish a formal verdict only 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