Skip to content

Steps in a Task

A Step is a child of a Task with only a title and a done state. Steps cannot be starred, assigned, shared, dated, or nested — and a Step cannot have Steps (Product Brief §5.2 “Step rules”).

  • The steps table (src/db/schema.ts): taskId, title, done, rank, timestamps.
  • createStepsRepository(db) (src/db/repositories/steps.ts) — typed access (list/create/update/delete/reorder by rank).
  • Routes in src/api/routes/steps.ts (registerStepsRoutes) — contract-first under /v1. New Steps are added at the bottom of the Step list (rank at end); deleting a Task deletes its Steps.
  • Steps reconcile via reconcileSteps(...) and reconcileAllSteps(...) (see Sync-Core Reconcilers); ordering uses the Fractional Rank Algorithm (per-Task scope).
  • Optimistic create/rename/toggle/reorder flow through the offline mutation API + outbox (see Offline Outbox & Optimistic Writes).

Related: Fractional Rank Algorithm (per-Task ordering), Sync-Core Reconcilers, Task Attributes API (the parent Task).