beadboard/skills/beadboard-driver/references/session-lifecycle.md
zenchantlive 18fbafdce4 refactor: extract agent bounded context + fix SSE comments + cleanup unused
- Extract src/lib/agent/ bounded context with types, registry, messaging
- Add comments_count to BeadIssue for SSE comment detection
- Create batch endpoints for mail/reservations APIs
- Add memory validation to session-preflight
- Remove unused empty dirs (mockup, sessions, timeline)
- Move stashes to docs/references, gitignore them
2026-03-04 22:06:40 -08:00

173 lines
3.4 KiB
Markdown

# Session Lifecycle
This runbook is the minimum lifecycle contract for agents using BeadBoard Driver.
## 1) Session Start
1. Run preflight and discovery checks:
```bash
node {baseDir}/scripts/session-preflight.mjs
```
2. Create or identify your agent bead first (required before claiming work):
```bash
bd create --title "Agent: <name>" --type task --priority 0 --label "gt:agent,role:<role>"
```
3. Set state transitions and attach hook when work begins:
```bash
bd agent state <agent-bead-id> spawning
bd agent state <agent-bead-id> running
```
4. Query hard memory for your domain before claim:
```bash
# Select domain: memory-arch | memory-workflow | memory-agent | memory-ux | memory-reliability
bd query "label=memory AND label=mem-canonical AND label=<domain> AND status=closed" --sort updated --reverse
```
## 2) Discover Work and Read Epic Context
1. Find ready work:
```bash
bd ready
```
2. For child tasks, read parent epic first:
```bash
bd show <epic-id>
bd children <epic-id>
```
3. Read full assigned bead:
```bash
bd show <bead-id>
```
## 3) Claim Correctly (`--assignee`, not `--claim`)
Claim order is strict:
1. Agent bead exists
2. Set bead to in_progress with assignee
3. Hook agent slot to current bead
```bash
bd update <bead-id> --status in_progress --assignee <agent-bead-id>
bd slot set <agent-bead-id> hook <bead-id>
bd agent state <agent-bead-id> working
```
## 4) Dependency Workflow During Execution
Use dependencies to model execution order, not visual grouping.
Add blocker dependency (`<blocked>` depends on `<blocker>`):
```bash
bd dep add <blocked-id> <blocker-id>
```
Add non-blocking related context link:
```bash
bd dep relate <id-a> <id-b>
```
Inspect dependency state:
```bash
bd dep list <bead-id>
bd dep tree <bead-id>
```
## 5) BLOCKED Path (Mandatory Pattern)
When blocked, do all four actions:
1. State signal:
```bash
bd agent state <agent-bead-id> stuck
```
2. Coordination signal:
```bash
bd mail send --to <target-agent-or-role> --bead <bead-id> --category BLOCKED --subject "<blocker summary>" --body "<what is needed>"
```
3. Keep heartbeat while waiting:
```bash
bd agent heartbeat <agent-bead-id>
```
4. Resume cleanly once unblocked:
```bash
bd agent state <agent-bead-id> running
bd agent state <agent-bead-id> working
```
## 6) Verification and Closure
Run gates before close claims:
```bash
npm run typecheck
npm run lint
npm run test
```
Record evidence and close bead:
```bash
bd update <bead-id> --notes "Commands run: ... Outputs: ..."
bd close <bead-id> --reason "<completed outcome>"
```
Detach hook when bead is complete:
```bash
bd slot clear <agent-bead-id> hook
bd agent state <agent-bead-id> done
```
## 7) Memory Review Rule (Create vs Skip)
Create/supersede canonical memory only when BOTH are true:
- Rule is reusable across future tasks
- Evidence exists from at least one concrete failure/recovery pattern
Otherwise, record:
```bash
bd update <bead-id> --notes "Memory review: no new reusable memory."
```
If reusable and novel:
- Create new memory decision bead
- Link anchor + evidence via `bd dep relate`
- Supersede old memory if replacing policy (`bd supersede <old> --with <new>`)
## 8) Session End Hygiene
1. Ensure no lingering hook slot:
```bash
bd slot show <agent-bead-id>
```
2. Ensure no unresolved required-ack backlog for your active work.
3. Set end state:
```bash
bd agent state <agent-bead-id> stopped
```