Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
51bab85
feat: add StateOff to OrchestratorState enum (canopy-khl6)
jzila Jan 24, 2026
2c89979
refactor: rename RepoOrchestrator to OrchestratorLifecycle (canopy-okoa)
jzila Jan 24, 2026
da88749
fix(agent): always set process group for graceful termination (canopy…
jzila Jan 24, 2026
9033f28
fix: route kill agent requests through OrchestratorManager (canopy-b5y0)
jzila Jan 24, 2026
a9e2efb
docs: update active-orchestrator-model design doc (canopy-bmtb)
jzila Jan 24, 2026
88cdc80
refactor: remove watch mode, orchestrator always polls (canopy-2pcj)
jzila Jan 24, 2026
754f472
fix: resolve build errors in orchestration handler and (canopy-cqxn)
jzila Jan 24, 2026
5a01174
feat: add state transition callbacks for Idle/Active (canopy-dex2)
jzila Jan 24, 2026
f135db7
feat(dashboard): add token breakdown dropdown to header (canopy-c6mk)
jzila Jan 24, 2026
f06dfdd
feat(dashboard): add orchestrator state indicator to header (canopy-o…
jzila Jan 24, 2026
4072f04
fix(daemon): extract all merge status fields in (canopy-o6mb)
jzila Jan 24, 2026
6ed742c
feat(dashboard): add retry attempt indicator to agent cards (canopy-x…
jzila Jan 24, 2026
4518076
fix: update agent status atomically with merge status (canopy-jygc)
jzila Jan 24, 2026
2cb6ff6
fix(ps): show repairing status for agents under repair (canopy-vf1u)
jzila Jan 24, 2026
69db929
docs: add agent lifecycle state machine design
jzila Jan 24, 2026
24217f0
docs: add state machine pattern guidelines
jzila Jan 24, 2026
c276966
fix(dashboard): hide Activate button during state transition (canopy-…
jzila Jan 24, 2026
3a96915
feat(ps): display orchestrator lifecycle state (canopy-03bs)
jzila Jan 24, 2026
ab66996
feat(lifecycle): add agent lifecycle state machine (canopy-ku8t)
jzila Jan 24, 2026
dd1cfe0
refactor(orchestrator): rename RepoOrchestrator to (canopy-2360)
jzila Jan 24, 2026
7add674
fix(daemon): remove status race between merge and completion (canopy-…
jzila Jan 24, 2026
3ed6982
fix(ps): display repository path instead of UUID (canopy-ibq7)
jzila Jan 24, 2026
0677689
fix(mergequeue): send validation 'pending' status before (canopy-cu1v)
jzila Jan 24, 2026
9d31c35
test(lifecycle): add comprehensive state machine transition (canopy-8…
jzila Jan 24, 2026
e0983b5
feat(ps): display agent lifecycle state from state machine (canopy-6rbb)
jzila Jan 24, 2026
900907a
feat(ps): display merge queue state in canopy ps output (canopy-w8gi)
jzila Jan 24, 2026
af02472
feat(lifecycle): add parallel lifecycle tracking to (canopy-njyn)
jzila Jan 24, 2026
faf376b
fix(lifecycle): add 'starting' intermediate state to agent
jzila Jan 24, 2026
38e93ba
feat(repair): add intermediate status states for repair agent (canopy…
jzila Jan 24, 2026
0248eeb
fix(orchestrator): add debounce to idle state transitions (canopy-v9pa)
jzila Jan 24, 2026
608f90b
feat(mergequeue): migrate processor to lifecycle transitions (canopy-…
jzila Jan 24, 2026
7711cc9
feat(lifecycle): migrate orchestrator callbacks to use (canopy-5g0u)
jzila Jan 24, 2026
1516e97
feat(dashboard): display lifecycle_state in agent cards (canopy-hseb)
jzila Jan 24, 2026
d5b9c9a
feat(ps): display lifecycle state and add --show-history flag (canopy…
jzila Jan 24, 2026
2fff7a9
feat(mergequeue): add sequence numbers to merge status events (canopy…
jzila Jan 24, 2026
721301b
feat(dashboard): implement optimistic updates for state (canopy-p2pn)
jzila Jan 24, 2026
0785ab6
feat(lifecycle): persist and restore lifecycle state (canopy-zj64)
jzila Jan 24, 2026
dea4718
fix(orchestrator): increment failure count when merge fails (canopy-8…
jzila Jan 24, 2026
eb6a00a
fix(daemon): publish lifecycle state transitions to EventBus (canopy-…
jzila Jan 24, 2026
7bec55c
fix(daemon): include orchestrator_state in state sync events (canopy-…
jzila Jan 24, 2026
506c762
fix(sandbox): detect fuse-overlayfs character device (canopy-im2y)
jzila Jan 24, 2026
93e1d43
chore: remove orphaned RunControlBar.tsx component (canopy-4fjq)
jzila Jan 24, 2026
3bb59ee
feat(ps): restore merge queue display in canopy ps output (canopy-ov5v)
jzila Jan 24, 2026
6a8c10d
fix(dashboard): ensure Details button shows for failed agents (canopy…
jzila Jan 24, 2026
416ed94
fix(lifecycle): recover from stuck states when merge status (canopy-6…
jzila Jan 24, 2026
bc3d2d8
fix(daemon): publish events for all lifecycle state (canopy-lwp5)
jzila Jan 24, 2026
017cecc
fix(daemon): pass task ID to scheduler.Kill() instead of (canopy-j1qk)
jzila Jan 24, 2026
5d49ec3
fix(dashboard): consistently display commit count for (canopy-lvbz)
jzila Jan 24, 2026
c5fc6c8
fix(dashboard): show commit list in agent detail pane (canopy-psot)
jzila Jan 24, 2026
4cc577c
feat(orchestrator): wire up retry event and attempt tracking (canopy-…
jzila Jan 24, 2026
b14b0af
fix(daemon): subscribe eventBus before state restoration (canopy-jo5x)
jzila Jan 24, 2026
996b21e
fix(daemon): add agent to state before lifecycle transition (canopy-p…
jzila Jan 24, 2026
5dbe60e
fix(mergequeue): detect stale overlays and route to resolver (canopy-…
jzila Jan 24, 2026
0717fd2
fix(canopy-o7p3): prevent infinite retry loops with FailPermanently()
jzila Jan 24, 2026
8f9d82e
fix(canopy-m52i): pass task ID to scheduler Kill(), not agent ID
jzila Jan 24, 2026
f882e56
refactor(canopy-0qti): delegate canopy run to daemon orchestrator
jzila Jan 24, 2026
4247c0e
fix(canopy-52cf): cleanup active overlays on daemon shutdown
jzila Jan 24, 2026
808be77
fix: wait for overlay cleanup on orchestrator cancellation (canopy-492r)
jzila Jan 24, 2026
97c521b
feat(persistence): add run_configs table for orchestrator (agent-65cb…
jzila Jan 24, 2026
4df1b90
feat: add attempt/max_retries fields to AgentState and (agent-65cbf7a…
jzila Jan 24, 2026
089d604
fix(canopy-37jl): add event sequence numbers to prevent stale (agent-…
jzila Jan 24, 2026
b75ccca
feat(api): add REST endpoints for run config CRUD (agent-65cbf7af-can…
jzila Jan 24, 2026
e236bf6
feat(lifecycle): add terminal callback for overlay cleanup (agent-65c…
jzila Jan 24, 2026
699d5b7
feat(dashboard): display retry status in agent detail panel (agent-65…
jzila Jan 24, 2026
0d16c80
feat(dashboard): add Configure button for run settings (agent-65cbf7a…
jzila Jan 24, 2026
0b63f0f
feat(dashboard): display retry status in agent detail panel (agent-65…
jzila Jan 24, 2026
664feff
fix(daemon): route merge status events through EventBus (agent-65cbf7…
jzila Jan 24, 2026
e537374
fix(dashboard): prevent race condition in runs dropdown (canopy-ii0s)
jzila Jan 24, 2026
ea297e0
fix: use original bead ID in commit messages for (agent-3772cec2-cano…
jzila Jan 24, 2026
68b12fb
feat(dashboard): show Details drawer for completed tasks with (agent-…
jzila Jan 24, 2026
8d31451
fix(daemon): route commit events through EventBus for (agent-3772cec2…
jzila Jan 24, 2026
e6da17d
feat(rules): implement three-tier precedence hierarchy with (canopy-9…
jzila Jan 24, 2026
6242c2f
feat(dashboard): populate RunConfigDialog with config-loaded (canopy-…
jzila Jan 24, 2026
7fa2664
fix: resolve lint errors for CI
jzila Jan 24, 2026
3062be7
fix: remove unused variables in dashboard TypeScript
jzila Jan 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,15 @@ activeCount atomic.Int64
| `sync.RWMutex` | Structured data, snapshots, iteration | `RuntimeState` |
| `atomic` | Simple flags, counters | `paused`, `closed` |

## State Machine Patterns

| Complexity | Pattern | Example |
|------------|---------|---------|
| ≤5 events | Explicit methods (`UserPause()`, `AgentResume()`) | `pkg/mergequeue/pause_state.go` |
| >5 events | Event-driven (`Transition(ctx, event)`) | `pkg/lifecycle/state.go` |

**Both patterns require:** mutex-protected state, query methods (`State()`, `IsTerminal()`), `String()` for logging.

## API Conventions (Go ↔ TypeScript)

**JSON field names use snake_case** throughout the codebase.
Expand Down
Loading