Task Registry

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:

  • pending
  • in_progress
  • blocked
  • done

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.

Use /hapo:sync when task registry and markdown drift apart.