CONTINUATION-PROTOCOL — Smart Pause + Resume¶
Status: live · Version: 1.0.0 · Camada: 7
Purpose¶
When a story must be interrupted (budget warning, deadline approaching, blocker discovered), pause gracefully so the NEXT invocation can resume without losing context.
When to pause¶
| Trigger | Pause type |
|---|---|
| Budget consumed > 80% of capsule cap | soft pause (current skill finishes) |
| Deadline within 5 min | soft pause |
| External blocker (dependency, lock, human input) | blocked pause |
| Resource lock contention > 60s | re-queue |
| Phase 3 gate fails | HALT (not pause) |
| Manual operator pause | controlled pause |
Pause artifacts¶
When pause fires, producer agent emits:
1. Final CHECKPOINT with state.status: paused (or blocked)
2. Continuation capsule describing what's left:
continuation_id: cont_a1b2c3d4
parent_capsule_id: cap_xyz789
pause_reason: budget_warning
resumable_at: 2026-05-23T19:00:00Z
remaining_work:
- 'finish DoR section in STORIES.md (~5 min)'
- 'run linter + tests'
- 'emit final REVIEW request'
context_snapshot_ref: redis://ctx/story_72/snap_pause_1
Resume¶
1. Orchestrator schedules resumption (or operator triggers)
2. Resumption capsule includes continuation_id
3. Producer reads:
- parent capsule
- last checkpoint
- continuation capsule
- context_snapshot
4. Resume from `next_action` in the checkpoint
5. Emit `story_resumed` event
State after pause¶
- Resource locks: RELEASED (caller can re-acquire on resume)
- Memory: persisted (episodic + procedural)
- Artifacts: partial outputs marked as draft
Pause vs. abandon¶
| Pause | Abandon | |
|---|---|---|
| Story state | paused / blocked | abandoned |
| Recovery | yes | no |
| Triggers | budget / deadline / blocker | 3 review-cycles failed (Rule 12) |
| Continuation capsule | required | not produced |
| MEMORY entry | episodic | episodic + (often) postmortem |
Failure modes¶
| Mode | Mitigation |
|---|---|
| Pause snapshot too large | TTL on snapshots; size cap; warn at 1 MB |
| Resume after long pause: stale context | Continuation capsule has expires_at; after that, resumption requires re-planning |
| Multiple resumes race | Locking on continuation_id |
| Resume mismatches original constraints | Re-validate against current capsule policy |
Cross-references¶
- CHECKPOINT.md template (Camada 4) — the snapshot format
- HANDOFF.md template — capsule format for continuation
- TOKEN-BUDGET-PROTOCOL (sibling) — fires pause on overrun
- RESOURCE-LOCK-REGISTRY (sibling) — locks released on pause
- MEMORY (Camada 4) — episodic entry per pause