# Tasks

`@arbe/task` is repo-native planning state — local on purpose. Lives in `.arbe/tasks/` as `meta.json` + `deps.json` + one JSON file per task, committed alongside the code it motivated. Not the substrate's universal planning model — it's the planning surface for code work in one repo.

```
status   open · in_progress · blocked · closed · deferred
type     bug · feature · task · chore · epic
priority 0..4
deps     blocks · discovered-from
```

`arbe task list` shows tasks by status. `arbe task ready` is narrower: only `open` and `in_progress` tasks with no open `blocks` deps — the starting point for every session. List output annotates open blockers; `--json` and `view --json` include `is_ready` + `open_blockers` so callers don't recompute readiness. Normal loop is still `ready → claim → implement → close`.

A task body is a commitment pointer, not a design doc. Keep it to one screen — Why, Outcome, scope. Reasoning, full type shapes, and decision histories live in `docs/` and get linked. When a task body grows past that, it's two things: task + doc, or epic + subtasks.

Code: `packages/task/src/task.ts` (CRUD, dep cycle detection, ready/blocked computation). CLI: `arbe task --help`.<br>
See [cli](./cli.md), [system/control-plane](./system/control-plane.md), [thinking/layers](./thinking/layers.md), [threads](./system/threads.md).
