Skip to content

feat(workspace): guide tonight's first stop on map and player - #934

Open
seonghobae wants to merge 30 commits into
developfrom
feat/workspace-first-stop-handoff
Open

feat(workspace): guide tonight's first stop on map and player#934
seonghobae wants to merge 30 commits into
developfrom
feat/workspace-first-stop-handoff

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

Product outcome

After analysis, the room can see tonight's first explicit stop and take one honest next action: open that cut on the renderer-owned map, or hear it from Player only when playback authority is supplied.

Exact current identity

  • Protected base: develop@acdbea6344fe1231c39535b575f4de35e4c607c9.
  • Exact head: 7bb7ba61d3cfea4993454450592558ef1140f7b2.
  • Branch: feat/workspace-first-stop-handoff.
  • Open, non-Draft, mergeable, unmerged.

Product / trust boundary

  • Resolve only an explicit labeled stop section whose runtime window is an integer, non-negative, positive-duration interval bounded by shared MAX_SECTION_TIME_SECONDS.
  • Do not infer a stop from handoff/dropout/pickup evidence.
  • Name a holding part only when a unique active ranked section-local graph node corroborates it; otherwise keep the cut band-wide.
  • Workspace navigation uses renderer-owned section position, never analysis-controlled DOM ids, and arms follow-up guidance only after the action actually executes.
  • Player Hear exists only when the owning surface injects a callable seek callback.
  • Malformed runtime roots/collections/elements/ids/names/priorities/activity/timing are contained rather than becoming buyer-visible authority.

Test-first repair lineage

Earlier branch work established fail-closed collection/object/id/name/priority/activity/timing boundaries, renderer-owned navigation, callback-only playback, reduced-motion behavior, duplicate-identity rejection, and shared time-ceiling use.

Fresh exact-head verification exposed a branch-owned runtime-root defect on predecessor 2b1d1899cff7885d2477eec162255690b763da67:

  • release run 32208030870, job 95934940141, checked out PR merge 5db6670caa660c3009e505a052c33debcf380af4;
  • lint/typecheck and 233 other desktop tests passed, then FirstStopCallout.localization.test.tsx reproduced TypeError: Cannot read properties of null (reading 'sections') in resolveFirstStopHandoff();
  • the existing regression already supplied the realistic RED case (null as RehearsalSong), so no synthetic duplicate test was added;
  • GREEN/current 7bb7ba61d3cfea4993454450592558ef1140f7b2 adds the narrow owning guard !isRuntimeObject(song) || !Array.isArray(song.sections) before property use. No unrelated action, network, filesystem, IPC, package, or dependency authority changed.

The same predecessor release log also showed default checkout credential persistence; that is separately owned by canonical #894 and is not duplicated in this feature lane.

Exact-current-head verification state

A fresh repository cycle is dispatched for 7bb7ba61d3cfea4993454450592558ef1140f7b2 and is currently queued:

  • ci 32212352297;
  • release 32212352268;
  • build-baseline 32212352307;
  • security-audit 32212352251;
  • aggregate Security Scan 32212352344;
  • sbom 32212352315;
  • Bandit 32212352267;
  • secret-scan-gate 32212352221; and
  • SAST Semgrep 32212352359.

Queued evidence is non-passing, so exact-current-head GREEN is not claimed yet. Current inline review threads are empty. The only formal OpenCode review is dismissed predecessor-head CHANGES_REQUESTED from 1f6d98f63667cafbadb1ba535cc938c799f78181; dismissal is not approval and there is no qualifying independent non-author current-head approval.

Dependency routing

Merge gate

Keep unmerged until one unchanged exact head has every applicable repository and central gate terminal-success, exact required owned statement/branch/function/line coverage and docstring evidence where exposed, zero valid unresolved findings, canonical dependency prerequisites integrated/revalidated, a qualifying independent non-author last-push approval, and ordinary protected-branch acceptance. Queue/pending/skipped/cancelled/failed/stale/predecessor/protected-base/dismissed/self/author/model-only/rate-limited evidence is not success.

Security Notes

Untrusted rehearsal metadata remains data only. Runtime roots and collections are validated before access; section time windows are bounded; section-local identities and ranked activity are corroborated; renderer positions own navigation; Player playback remains explicit callback authority; and this repair adds no filesystem, network, subprocess, WebView, model, export, persistence, dependency, or review-credential authority.

Name the earliest labeled cut so the room can hold it. Workspace opens
the matching map section; the player exposes Hear only when the owning
surface supplies a seek callback. Fail closed on malformed role ids and
non-boolean activity flags.
@coderabbitai

coderabbitai Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@seonghobae, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 53 minutes

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.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits within each organization.

For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8d0b4bfa-161d-4250-8325-fd9d67df73c8

📥 Commits

Reviewing files that changed from the base of the PR and between acdbea6 and 7bb7ba6.

📒 Files selected for processing (29)
  • AGENTS.md
  • ARCHITECTURE.md
  • CHANGELOG.md
  • CLAUDE.md
  • apps/desktop/src/features/player/index.test.tsx
  • apps/desktop/src/features/player/index.tsx
  • apps/desktop/src/features/workspace/FirstStopCallout.localization.test.tsx
  • apps/desktop/src/features/workspace/FirstStopCallout.reduced-motion.test.tsx
  • apps/desktop/src/features/workspace/FirstStopCallout.test.tsx
  • apps/desktop/src/features/workspace/FirstStopCallout.tsx
  • apps/desktop/src/features/workspace/Workspace.test.tsx
  • apps/desktop/src/features/workspace/Workspace.tsx
  • apps/desktop/src/features/workspace/firstStopHandoff.activity-type.test.ts
  • apps/desktop/src/features/workspace/firstStopHandoff.duplicate-identities.test.ts
  • apps/desktop/src/features/workspace/firstStopHandoff.inactive-labeled.test.ts
  • apps/desktop/src/features/workspace/firstStopHandoff.invalid-holder-collections.test.ts
  • apps/desktop/src/features/workspace/firstStopHandoff.invalid-holder-elements.test.ts
  • apps/desktop/src/features/workspace/firstStopHandoff.invalid-role-id.test.ts
  • apps/desktop/src/features/workspace/firstStopHandoff.invalid-section-collection.test.ts
  • apps/desktop/src/features/workspace/firstStopHandoff.invalid-section-id.test.ts
  • apps/desktop/src/features/workspace/firstStopHandoff.invalid-time-range.test.ts
  • apps/desktop/src/features/workspace/firstStopHandoff.test.ts
  • apps/desktop/src/features/workspace/firstStopHandoff.ts
  • apps/desktop/src/i18n/index.test.ts
  • apps/desktop/src/i18n/index.ts
  • apps/desktop/src/locales/en/common.json
  • apps/desktop/src/locales/ko/common.json
  • docs/design-system/component-contract.md
  • docs/doctoring/reduced-motion-first-stop-navigation.md
✨ 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-first-stop-handoff

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.

@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 1f6d98f63667cafbadb1ba535cc938c799f78181.

  • Head SHA: 1f6d98f63667cafbadb1ba535cc938c799f78181

  • Workflow run: 32193271993

  • 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 (25 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (25 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Docs (2 files)"]
  S2 --> I2["operator or user guidance"]
  I2 --> R2["Review risk: Docs (2 files)"]
  R2 --> V2["docs review"]
Loading

@opencode-agent

opencode-agent Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: 7bb7ba61d3cfea4993454450592558ef1140f7b2
  • Workflow run: 32220390862
  • 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 7bb7ba61d3cfea4993454450592558ef1140f7b2.

  • Head SHA: 7bb7ba61d3cfea4993454450592558ef1140f7b2

  • Workflow run: 32220390862

  • 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 (27 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (27 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Docs (2 files)"]
  S2 --> I2["operator or user guidance"]
  I2 --> R2["Review risk: Docs (2 files)"]
  R2 --> V2["docs review"]
Loading

@seonghobae
seonghobae dismissed opencode-agent[bot]’s stale review August 19, 2026 00:05

Stale predecessor-head review: this submission is explicitly bound to 1f6d98f, while the PR now points at 68a5927 after a test-first zero-length stop-window repair. Dismissal does not count as approval; current-head coverage/OpenCode/Noema/Strix evidence must be regenerated and evaluated independently.

@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 7bb7ba61d3cfea4993454450592558ef1140f7b2.

  • Head SHA: 7bb7ba61d3cfea4993454450592558ef1140f7b2

  • Workflow run: 32216795327

  • 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 (27 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (27 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Docs (2 files)"]
  S2 --> I2["operator or user guidance"]
  I2 --> R2["Review risk: Docs (2 files)"]
  R2 --> V2["docs review"]
Loading

@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 7bb7ba61d3cfea4993454450592558ef1140f7b2.

  • Head SHA: 7bb7ba61d3cfea4993454450592558ef1140f7b2

  • Workflow run: 32220390862

  • 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 (27 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (27 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Docs (2 files)"]
  S2 --> I2["operator or user guidance"]
  I2 --> R2["Review risk: Docs (2 files)"]
  R2 --> V2["docs review"]
Loading

Copy link
Copy Markdown
Collaborator Author

@opencode-agent @cwl-noema-review

Please run genuinely fresh review/coverage evidence on exact current head 7bb7ba61d3cfea4993454450592558ef1140f7b2 against protected develop@acdbea6344fe1231c39535b575f4de35e4c607c9. The prior central trusted-uv prerequisite is no longer pending: protected ContextualWisdomLab/.github@main is now 9e9f59f3ac1e96a960c021b131d768c238f4c21a (.github#1136 merged).

Repository CI/release/build/SBOM/Bandit/Semgrep/secret-scan are terminal-success on this unchanged head; current security-audit / aggregate Security Scan failures are inherited protected-base dependency findings owned by canonical #783 and must not be suppressed or counted as success. Revalidate the null/malformed runtime-root fail-closed boundary, renderer-owned map navigation, callback-only Player seek authority, exact coverage/docstrings, and all current policy gates. Do not reuse predecessor-head/dismissed review evidence and do not claim merge readiness while #783 or any required exact-head gate remains unresolved.

@opencode-agent

Copy link
Copy Markdown
Contributor

Queued @cwl-noema-review and @opencode-agent for PR #934 at head 7bb7ba61d3cfea4993454450592558ef1140f7b2. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

@opencode-agent

Copy link
Copy Markdown
Contributor

Already queued @cwl-noema-review and @opencode-agent on this exact request for PR #934 at head 7bb7ba61d3cfea4993454450592558ef1140f7b2. Central exact-name Actions artifacts are the durable dispatch ledger; existing review workflows remain authoritative for the final verdict and failure evidence.

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