feat(workspace): name tonight's first leftover last-dropout remaining on the map - #1110
feat(workspace): name tonight's first leftover last-dropout remaining on the map#1110seonghobae wants to merge 1 commit into
Conversation
… on the map Name who still stays out after leftover last-dropout: leftover sit-out, leftover return with remaining leftover, leftover last-return, leftover last-dropout as a cohort of at least two named parts, then leftover last-dropout remaining when at least one leftover last-dropout comes back and at least one remains tacet.
|
Warning Review limit reachedNext included review available in 33 minutes. View limit detailsLimit 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. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (13)
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. Comment |
| const roleId = meaningfulRangeText(nodeValue.role_id); | ||
| if (!roleId || !namedRoles.has(roleId) || seenRoleIds.has(roleId)) { | ||
| return null; | ||
| } |
There was a problem hiding this comment.
🟡 Permanently inactive parts suppress valid cues
namedGraphNodes rejects every section when a graph part never appears in active-only role lists. Valid analyses with a permanently silent part always show missing guidance.
Prompt for agents
The production engine's RoleExtractor._build_activity_topology emits all five identities in partGraph but includes only active identities in section roles. firstLeftoverLastDropoutRemaining builds names only from those active role lists, then namedGraphNodes rejects any graph identity absent from that catalog. A role that remains inactive for the whole song therefore disables detection even when the named roles contain a valid sequence. Adjust catalog/graph admission so permanently inactive unnamed graph members are excluded from cue candidates without invalidating complete, consistent activity evidence for named roles. Preserve duplicate, malformed, and missing-node fail-closed behavior for identities that participate in detection, and add a production-shaped regression test.
Was this helpful? React with 👍 or 👎 to provide feedback.
| let reducedFrom: string | null = null; | ||
| let sittingOutIds: Set<string> | null = null; | ||
| let pendingSitOut: PendingLeftoverSitOut | null = null; | ||
| let pendingRemaining: PendingRemainingLeftover | null = null; | ||
| let pendingLastReturn: PendingLastReturn | null = null; | ||
| let pendingDropout: PendingDropout | null = null; |
|
@opencode-agent You are the sole writer for canonical BandScope branch The current Devin finding at thread Repair this owning helper in this existing branch. First add the smallest production-shaped RED regression: use active-only section role lists, keep a fifth identity (for example Then make the narrowest causal repair. The graph may contain well-formed, own-boolean identities that never appear in the song-wide active-role name catalog; those permanently inactive identities must be ignored as non-candidate graph members rather than invalidating the section. Preserve fail-closed behavior for malformed graph nodes, duplicate role_ids, inherited/missing/non-boolean Run the focused desktop test first, then the full desktop suite/typecheck/lint and repository-exposed coverage; keep exact 100% configured statement/branch/function/line coverage. Refetch exact new head/base after writing. Resolve only the validated bug thread after the repaired exact head has focused GREEN; leave the advisory state-machine-property-test thread unresolved unless you actually address it. Then let exact-head CI/security/SBOM/release/review gates run; do not claim predecessor evidence. |
Product outcome
The ready rehearsal map names tonight's first leftover last-dropout remaining after leftover last-dropout from existing
partGraphevidence so the leftover last-dropout remaining stays out, and the band counts that leftover last-dropout remaining out. This is not a come-in, tacet, leftover sit-out, leftover return, remaining leftover at leftover return, leftover last-return, leftover last-dropout, leftover last-dropout return with nobody still out, tutti, handoff, Fine, last-line breath, a singleton leftover last-dropout, a leftover last-dropout without a later remaining return, a new dropout after remaining leftover, or a new MIR product.Exact current identity
develop@749511c3ad4000090048718f685c6bee6b3d2c25.04e70a0b28e1bffd06924fad085dfe519b1aa975.feat/workspace-first-leftover-last-dropout-remaining.Current exact scope
firstLeftoverLastDropoutRemainingadmits 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, then a later named leftover last-return where every remaining leftover is own-property active, then a later named leftover last-dropout where at least two named parts are own-property tacet, then a later named leftover last-dropout remaining where at least one leftover last-dropout named part is own-property active and at least one leftover last-dropout remains own-property tacet.is_active, missingis_active, unnamed roles, leftover sit-outs without leftover return, leftover last-dropouts without a later remaining return, leftover last-dropout returns with nobody still out, singleton leftover last-dropouts, come-ins without a leftover, all-active later sections after leftover last-return (tuttis), remaining leftovers without last-return, new dropouts after remaining leftover, and malformed roots fail closed.docs/doctoring/first-leftover-last-dropout-remaining.md.Distinct from adjacent first-X work
Verification
npm run typecheck --workspace @bandscope/desktopnpm run lint --workspace @bandscope/desktop./scripts/harness/quickcheck.sh(full harness left to required CI on this exact head)Security Notes
Attack surface
Untrusted
RehearsalSongJSON, section labels,partGraphnodes,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, leftover return with remaining leftover, leftover last-return, leftover last-dropout cohort of at least two named parts, and a later named leftover last-dropout remaining where at least one leftover last-dropout named part is own-property active and at least one leftover last-dropout remains own-property tacet.
Mitigations
Allowlist: section labels and role names must be meaningful text. A missing graph node is not leftover last-dropout remaining. Inherited
is_activeis isolated. A leftover last-dropout is leftover last-dropout, not leftover last-dropout remaining. A leftover last-dropout return with nobody still out is leftover last-dropout return, not leftover last-dropout remaining. A leftover last-return is leftover last-return, not leftover last-dropout remaining. Remaining leftover at leftover return is remaining leftover, not leftover last-dropout remaining. A singleton leftover last-dropout cannot leave leftover last-dropout remaining. A new dropout after remaining leftover is a dropout, not leftover last-dropout remaining. All-active later sections after leftover last-return are tuttis, not leftover last-dropout remaining, until a leftover last-dropout cohort exists and later leaves someone out. When a role is selected, only leftover last-dropout remaining after a leftover last-dropout that includes that named part, or leftover last-dropout remaining of that named part, is shown. Safe failure returnsnullso the workspace shows the missing-copy next action.Test points
firstLeftoverLastDropoutRemaining.test.ts, selected-role search, and the Workspace callout cover the demo all-active case, an explicit bass leftover last-dropout remaining after leftover last-dropout, selected-role scoping, inherited flags, missingis_active, leftover last-dropouts without later remaining return, leftover last-dropout returns, singleton leftover last-dropouts, tuttis, come-ins, leftover returns with nobody still out, remaining leftovers without last-return, new dropouts after remaining leftover, unnamed roles, empty graphs, and literal copy filling.Dependency and Supply Chain
developshipped truth. This branch inherits that JavaScript baseline and does not duplicate or suppress it. Inherited npm HIGH findings must not be suppressed here.i18n impact
Dependency / merge gate
developshipped truth. This branch inherits that JavaScript baseline and does not duplicate or suppress it. Inherited npm HIGH findings must not be suppressed here.Reviewer checklist
develop