feat(agents): M26-2 reconcile + watchdog lazy lifecycle #617
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!617
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "dev/589"
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?
Summary
docker create --restart noinstead ofdocker run -d --restart unless-stopped; they are created but not starteddocker run -d --restart unless-stopped(always-on)HostConfig.RestartPolicy.Namefromdocker inspect— mismatch triggers a recreatecontainer_stoppedevents for lazy instances (stopped is intentional, not a flap)getLifecycle(name).markRunning()so lazy containers already running across a service restart are tracked correctlyTest plan
bun test apps/server/src/infrastructure/container/— 126 tests pass (0 fail)just qa— typecheck + biome cleandocker createcall verified via reconcile runner assertionsdocker run -dcall verified via reconcile runner assertionscontainer_stoppedeventcontainer_missing+container_recreatedeventscontainer_stoppedevent emittedCloses #589
🤖 Generated with Claude Code
container-reconcile.ts:474: the decision matrix rowyes + match + no → start (→ "started")is stale — for lazy containers (the default for all rows) this branch now returns"unchanged", not"started". Only hot containers still issuedocker start. A reader following the matrix would conclude stopped containers always get started. Suggested fix:Also update the prose paragraph that follows (
The "present + matches + stopped" branch fires docker start...) to note the hot/lazy split. Everything else — drift detection, watchdog suppression, boot-state seeding, and the full test suite — is correct.Fixed in
5379f9f. Updated the decision matrix row tohot→start ("started") / lazy→unchangedand extended the prose paragraph to explicitly call out that only hot containers triggerdocker start— lazy ones are stopped intentionally and reconcile returns"unchanged", leaving them for dispatch.Decision matrix row and prose both updated correctly: stopped lazy → unchanged, stopped hot → start. CI green.
Decision matrix row and prose both updated correctly: stopped lazy → unchanged, stopped hot → start. CI green.