Problem
The workspace board is a manual kanban. Users drag cards between columns (todo, in-progress, in-review, completed), but nothing keeps these states accurate. Cards sit in "in-progress" long after a PR is merged. Agents finish work but the card stays where it was. The board goes stale because nobody remembers to update it.
Proposal
Two board modes, toggled in settings:
- Manual board (current behavior, default). User drags cards. Nothing changes.
- Agent-driven board. Agents infer workspace status from corroborating signals. The user acts as the PM: final authority, can override or lock any transition.
This requires agent tokens/activity to function, so it must be an explicit opt-in toggle. Users who do not want agent cycles spent on board management keep the manual board.
Core Principle
Agents prove work happened. The system proposes a transition only when multiple signals agree. The user's last word is law.
Signal to Status Mapping
| Signal |
Corroborating Evidence |
Proposed Transition |
| Worktree created, no commits |
None needed |
to do |
First commit on branch OR agent status reports working |
Both ideally, either sufficient |
in progress |
| PR opened (linkedPR detected) |
Branch has commits |
in review |
Agent status reports done + no PR exists yet |
Commits exist on branch |
in review |
| PR merged |
CI passed (if available) |
completed |
| PR review has comments/requested changes |
Feedback detected on linked PR |
back to in progress |
| Re-push after addressing feedback |
New commits after review comments |
in review (again) |
That last row is critical. When a PR is "in review" and gets feedback (requested changes, blocking comments), the workspace moves back to "in progress" because there is work to do. Once the agent or user pushes fixes, it returns to "in review". This loop continues until the PR is approved and merged.
Heartbeats via Automations
The feedback detection (PR comments, review status, CI failures) should run as a heartbeat automation using Orca's existing automations system. This keeps the polling visible and configurable.
Proposed implementation: a built-in automation type (or a preset template) that runs on a schedule and checks linked PR status:
orca automations create \
--name "Board status heartbeat" \
--trigger "*/15 * * * *" \
--prompt "Check linked PR status for all active workspaces. If review feedback exists, move to in-progress. If approved and CI green, move to completed." \
--provider claude \
--workspace-mode existing
The heartbeat checks:
- PR review state (approved, changes requested, commented)
- CI status (passing, failing)
- New comments since last check
- Merge status
These heartbeats should be visible in the Automations tab so users can see when they last ran, what they found, and what transitions they proposed. This is the same pattern as GitHub bots that review PRs, but operating on the local board state.
Configuration
Settings > Workspace Board:
Board mode:
( ) Manual (default, current behavior)
( ) Agent-driven (uses agent tokens for status inference)
When agent-driven:
[x] Move to "in progress" on first commit or agent activity
[x] Move to "in review" when PR is opened
[x] Move back to "in progress" when review feedback received
[x] Move to "completed" when PR is merged
Heartbeat interval: [every 15 minutes v]
The heartbeat automation appears in the Automations tab alongside user-created automations, clearly labeled as a system automation. Users can pause it, change its schedule, or view its run history like any other automation.
Existing Plumbing
worktree.set RPC accepts workspaceStatus (the write path exists)
- Agent hook server already emits agent states (
working, blocked, done)
linkedPR field already exists on worktrees
- Board UI already reacts to status changes in real-time
- Automations system already supports scheduled agent runs with workspace targeting
- Automations tab already shows run history and status
Most of the wiring is already in place. What's missing is a thin inference layer connecting these signals to the write path, plus a heartbeat template for PR/review polling.
Problem
The workspace board is a manual kanban. Users drag cards between columns (todo, in-progress, in-review, completed), but nothing keeps these states accurate. Cards sit in "in-progress" long after a PR is merged. Agents finish work but the card stays where it was. The board goes stale because nobody remembers to update it.
Proposal
Two board modes, toggled in settings:
This requires agent tokens/activity to function, so it must be an explicit opt-in toggle. Users who do not want agent cycles spent on board management keep the manual board.
Core Principle
Agents prove work happened. The system proposes a transition only when multiple signals agree. The user's last word is law.
Signal to Status Mapping
workingdone+ no PR exists yetThat last row is critical. When a PR is "in review" and gets feedback (requested changes, blocking comments), the workspace moves back to "in progress" because there is work to do. Once the agent or user pushes fixes, it returns to "in review". This loop continues until the PR is approved and merged.
Heartbeats via Automations
The feedback detection (PR comments, review status, CI failures) should run as a heartbeat automation using Orca's existing automations system. This keeps the polling visible and configurable.
Proposed implementation: a built-in automation type (or a preset template) that runs on a schedule and checks linked PR status:
The heartbeat checks:
These heartbeats should be visible in the Automations tab so users can see when they last ran, what they found, and what transitions they proposed. This is the same pattern as GitHub bots that review PRs, but operating on the local board state.
Configuration
The heartbeat automation appears in the Automations tab alongside user-created automations, clearly labeled as a system automation. Users can pause it, change its schedule, or view its run history like any other automation.
Existing Plumbing
worktree.setRPC acceptsworkspaceStatus(the write path exists)working,blocked,done)linkedPRfield already exists on worktreesMost of the wiring is already in place. What's missing is a thin inference layer connecting these signals to the write path, plus a heartbeat template for PR/review polling.