Checkpoint Protocol
Checkpoint Protocol v2
Section titled “Checkpoint Protocol v2”Designed by Winnie 🦁 | Approved by Chris | 2026-02-27
Replaces the 4-line checkpoint block in SOUL.md with a verifiable, receipt-based protocol.
Full Checkpoint (session end, /new, sprint end)
Section titled “Full Checkpoint (session end, /new, sprint end)”Before any session close, /new, handover request, or end-of-sprint — ALL steps are required:
-
Write HANDOVER.md — Overwrite using the exact template. Must contain all 5 sections:
## Last Action## System State## Scope Rules## Dev Model## Next Actions
-
Append daily log — Add session summary to
memory/daily/YYYY-MM-DD.md(today’s date, append-only). -
Update HEARTBEAT.md — Refresh
Now:,Next:,Blockers:if anything changed this session. -
Update MC tasks — Mark completed tasks as
done, add new blockers as notes:Terminal window curl -s -X PATCH "http://127.0.0.1:3001/api/tasks/<ID>" \-H "Content-Type: application/json" \-d '{"status":"done","agent":"<YourName>"}' -
Self-verify — Read back HANDOVER.md. Confirm:
- All 5 template sections present
## Last Actionmatches this session’s actual work (not stale from a previous session)- Dates and system state are current
- If any check fails: fix and re-verify (max 2 retries, then flag in receipt)
-
Emit receipt — Output the checkpoint receipt as your final message:
✅ CHECKPOINT @ <ISO-timestamp>- HANDOVER: written (Last Action: "<one-line summary>")- Daily: appended (memory/daily/<YYYY-MM-DD>.md)- HEARTBEAT: updated (Now: "<current>", Next: "<next>")- MC: <task updates or "no changes">- Verify: PASS|FAIL (<details if fail>)
Quick Checkpoint (mid-session, ~30-min mark on long runs)
Section titled “Quick Checkpoint (mid-session, ~30-min mark on long runs)”- Overwrite HANDOVER.md only (current state)
- Append progress note to daily log
- No receipt required
- A checkpoint is NOT complete until the receipt is emitted.
- If self-verify fails after 2 retries, emit the receipt with
Verify: FAILand describe the issue. - Cron sprints MUST run a full checkpoint before session ends, regardless of whether tasks were completed.
Validation Script
Section titled “Validation Script”Path: /home/winnie/.openclaw/bin/verify-checkpoint.sh
# Usageverify-checkpoint.sh [max_age_minutes]# Default: max age = 10 minutes# Exit: 0 = all pass, 1 = any fail
# Output (JSON):# {"handover":"pass","daily":"pass","heartbeat":"pass","overall":"pass","errors":[]}Checks:
- HANDOVER.md exists, has all 5 sections, was modified within
max_age_minutes memory/daily/YYYY-MM-DD.mdexists and is non-empty- HEARTBEAT.md exists and contains
Now:,Next:,Blockers:
Cron Prompt Suffix
Section titled “Cron Prompt Suffix”Append to all sprint and brief cron prompts:
## Checkpoint (mandatory)Before session ends, run the full checkpoint protocol (SOUL.md § Session End / Checkpoint).Output the checkpoint receipt as your final message.A sprint without a receipt is incomplete.Fleet Deployment Checklist
Section titled “Fleet Deployment Checklist”| Agent | Workspace | SOUL.md |
|---|---|---|
| main (Winnie) | /home/winnie/.openclaw/workspace/ | SOUL.md |
| pm-frankel (Frankel) | /home/winnie/.openclaw/agents/pm-frankel/workspace/ | SOUL.md |
| pm-s1defence (Shield) | /home/winnie/.openclaw/agents/pm-s1defence/workspace/ | SOUL.md |
| pm-r6records (Vinyl) | /home/winnie/.openclaw/agents/pm-r6records/workspace/ | SOUL.md |
| dev-frontend (Pixel) | /home/winnie/.openclaw/agents/dev-frontend/workspace/ | SOUL.md |
| dev-backend (Stack) | /home/winnie/.openclaw/agents/dev-backend/workspace/ | SOUL.md |
| dev-ops (Pipe) | /home/winnie/.openclaw/agents/dev-ops/workspace/ | SOUL.md |
| research (Scout) | /home/winnie/.openclaw/agents/research/workspace/ | SOUL.md |
| monitor (Sentry) | /home/winnie/.openclaw/agents/monitor/workspace/ | SOUL.md |
All 9 agents follow the identical checkpoint protocol. The checkpoint section text is the same across all agents.
See Also
Section titled “See Also”- Claude Code SOP — Build workflow guide
- Changelog — Protocol deployment history