Task Registry#
CafeKit tracks task state in spec.json.task_registry.
This machine-readable layer is what makes the workflow resumable and auditable.
Status Model#
The primary statuses are:
pendingin_progressblockeddone
Why Not Just Markdown Checkboxes?#
Markdown checkboxes are useful for humans, but they are too weak as the only state source.
The registry lets CafeKit answer questions like:
- what is the next unblocked task?
- which task is already in progress?
- was this task really verified before being marked done?
Typical Entry#
{
"tasks/task-R0-02-auth-setup-dual-mode.md": {
"id": "R0-02",
"title": "Auth Setup (Better Auth + Extension Token)",
"status": "in_progress",
"dependencies": ["tasks/task-R0-01-project-scaffold-database-schema.md"],
"blocker": null,
"started_at": "2026-04-18T11:45:00+07:00",
"completed_at": null,
"last_updated_at": "2026-04-18T12:10:00+07:00"
}
}
Completion Rule#
A task should only become done after:
- quality gate passes
- evidence is recorded
- markdown task state is synchronized
- docs checkpoint is handled
If evidence is partial, the task should stay pending, in_progress, or blocked.
Related Command#
Use /hapo:sync when task registry and markdown drift apart.