Checkpoint is explicit state capture
Compaction reduces context. A checkpoint preserves the operational truth before reduction. It names the current goal, files touched, decisions made, tests run, blockers, next action, and authority boundaries. Do this before the context is full, before switching tasks, before risky edits, and before handing to another model instance.
Verifiable beats vague
A good checkpoint contains exact paths, commit hashes, command results, and status. A vague checkpoint is just a diary with delusions of usefulness. The acid test: could a fresh instance, reading only the checkpoint and the current source, continue the work? If no, the checkpoint is incomplete.
Checkpoints accumulate, not replace
A new checkpoint does not delete the old one. Together they form an audit trail. The most recent is the operating truth; older ones are reference for how the project got here.