When to fire (EXP-L21: attention efficiency decays to ~11% late-session; a reset from a checkpoint restores the flat ~50-70k load-bearing line):
- a long task crosses a natural boundary (a commit lands, a phase completes)
- context is about to compact, or the session is degrading (anchor-drift, I0.13)
- the manifest's execution.checkpoints list says so
Checkpoint vs handoff: same task + same session continuation → checkpoint. Ending the session / transferring to a future session with decisions and policy → handoff.
Write
_meta/checkpoints/{task}-{timestamp}.jsonper schemas/kernel.checkpoint.v1.schema.json:- task: goal + handoff_ref/contract_ref if they exist
- steps_completed: each with EVIDENCE (commit sha, test output, command result), never intent. Receipts describe intent; files describe reality.
- current_outputs: files produced so far
- provenance.dirty_tree_sha256: when dirty, sha256 of
git diff --binary HEAD - pending_steps: what remains, in order
- resume: position (exact place in the work), entrypoint (skill to re-enter), next_operation (the LITERAL first action — "retarget tests/run-tests.sh lines ~1250 registration tests", not "continue the migration")
- context (optional): required selectors + budget if the resume should be bounded
Quote every sha/commit string (all-digit shas parse as integers and fail validation).
Validate — MANDATORY:
"${CLAUDE_PLUGIN_ROOT:-.}/orchestration/manifest/kernel-manifest" validate _meta/checkpoints/{file}.jsonRecord:
agentdb write-end '{"skill":"checkpoint","saved_to":"_meta/checkpoints/{file}.json","position":"..."}'
Resume path: /kernel:ingest discovers the newest manifest automatically
(kernel-manifest latest — checkpoints and handoffs share discovery), or accepts an
explicit path.