docs(03): capture phase context
Phase 03: Lifecycle Management - Implementation decisions documented - Phase boundary established Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
ce76f18485
commit
134124f04e
1 changed files with 64 additions and 0 deletions
64
.planning/phases/03-lifecycle-management/03-CONTEXT.md
Normal file
64
.planning/phases/03-lifecycle-management/03-CONTEXT.md
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
# Phase 3: Lifecycle Management - Context
|
||||
|
||||
**Gathered:** 2026-02-04
|
||||
**Status:** Ready for planning
|
||||
|
||||
<domain>
|
||||
## Phase Boundary
|
||||
|
||||
Sessions suspend automatically after configurable idle timeout and resume transparently with full conversation history. Includes `/timeout` and `/sessions` commands. Graceful cleanup on bot restart with no zombie processes.
|
||||
|
||||
</domain>
|
||||
|
||||
<decisions>
|
||||
## Implementation Decisions
|
||||
|
||||
### Suspend/resume feedback
|
||||
- Silent suspension — no notification sent when a session auto-suspends
|
||||
- On resume: send brief status message ("Resuming session...") before Claude's actual response
|
||||
- Claude's Discretion: whether to include idle duration in the resume message
|
||||
|
||||
### Resume mechanism
|
||||
- Use Claude Code's `--resume` flag to restore full conversation state from before suspension
|
||||
- If resume fails: send error message to user and wait for their decision (don't auto-start fresh)
|
||||
|
||||
### Idle detection rules
|
||||
- Activity = both user messages AND Claude responses/tool use reset the idle timer
|
||||
- Never suspend while Claude is actively processing (timer only starts after response completes)
|
||||
- Per-session idle timeout, stored in session metadata
|
||||
- Default: 10 minutes
|
||||
- Claude's Discretion: allowed range for `/timeout` command
|
||||
|
||||
### Multi-session behavior
|
||||
- Multiple sessions can have live subprocesses simultaneously, each with independent idle timers
|
||||
- Switching sessions with `/session` leaves the previous session's subprocess running (it'll suspend on its own idle timer)
|
||||
- Claude's Discretion: `/sessions` list format and detail level
|
||||
- Claude's Discretion: message routing approach (always-active-session vs session prefix)
|
||||
|
||||
### Startup & cleanup
|
||||
- On bot restart: all sessions start in suspended state — no subprocesses launched until user messages
|
||||
- Unlimited total sessions — no cap, sessions accumulate until manually archived
|
||||
- Claude's Discretion: suspend method (SIGTERM + --resume vs SIGSTOP/SIGCONT) based on resource trade-offs
|
||||
|
||||
</decisions>
|
||||
|
||||
<specifics>
|
||||
## Specific Ideas
|
||||
|
||||
- Resume should feel fast and transparent — user messages a suspended session and it "just works" with a brief status indicator
|
||||
- The system should be invisible when working — no notifications on suspend, minimal friction on resume
|
||||
- Per-session timeouts allow long-running task sessions to stay alive longer while quick sessions clean up fast
|
||||
|
||||
</specifics>
|
||||
|
||||
<deferred>
|
||||
## Deferred Ideas
|
||||
|
||||
None — discussion stayed within phase scope
|
||||
|
||||
</deferred>
|
||||
|
||||
---
|
||||
|
||||
*Phase: 03-lifecycle-management*
|
||||
*Context gathered: 2026-02-04*
|
||||
Loading…
Add table
Reference in a new issue