feat(agents): M26-1 container lifecycle module + state machine #599
No reviewers
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks!599
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "boss/588"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Adds
infrastructure/container/lifecycle.tswith a per-instanceStopped → Starting → Running → Stoppingstate machine guarded by an in-process mutex. The registry nowacquireForEnqueues before each lazy dispatch (docker start + readiness probe) and schedules a one-shot idle-stop timer atidle_stop_secondson task completion.Closes #588
Test plan
bun test apps/server/src/infrastructure/container/lifecycle.test.ts— 23 unit cases (state machine, concurrency, probe retries)bun test apps/server/src/domain/dispatch/registry.test.ts— confirms registry integration unchanged for non-lazy workersjust qaclean (typecheck, biome lint + format, full server test suite)State machine correct, mutex implementation clean, CI green (run #2625).
doc-gap:docs/modules.mddocuments "every file inapps/server/src/" (per CLAUDE.md) but the newlifecycle.tshas no entry. Not blocking — worth a follow-up commit.