# docs/plans/

The plan for one piece of work, written before it starts and frozen once it
does. A plan is what was intended. What happened is the commits, the
subsystem's living doc under `docs/`, and the measurement under `docs/evals/`.

Changes of mind go to the Vikunja task, never back into the plan. The value of
a frozen plan is that it can be compared to the outcome afterwards.

## Rules for this directory

* **A plan carries its task id in the `V-<id>` form.** `V-` and not `#`,
  because Gitea autolinks `#123` to the wrong tracker. Put it in the first three
  lines, so it is visible without reading the plan.
* A plan whose work has landed stays. It is not edited to say "shipped" beyond
  a dated status line, and it is never rewritten to match what was built.
* A plan nobody will act on goes to `docs/archive/`, not to the bin.

## Two naming schemes, on purpose

`NN-<name>.md` is a Maven feature plan. The number is an append-order id and
carries no priority. A new plan takes the next free number. Six Go source
comments cite these paths, so renaming one is a code change.

`YYYY-MM-DD-<name>.md` is a training runbook for the model rig on workpc, not
for this repo's daemons. Five exist, all from July 2026, all predating the
numbering. They are dated because a runbook is read as of a day. Renumbering
would put the oldest plans last and imply an order that is not real. Do not do
it.

## Plans with no task id

These have never carried one. Do not invent ids for them. Resolve each against
Vikunja project Maven (ID 2) before citing it, or file a task if none exists.

`01-email-reader.md`, `02-pattern-proposal.md`, `04-self-update.md`,
`05-model-swap.md`, `06-mcp-support.md`, `09-behavioral-memory.md`,
`11-smarthome-integration.md`, `12-bluetooth-network-scan.md`.

The five training runbooks have no id either. The nearest live task is V-122,
which owns finishing the Qwen3-1.7B CPT run on workpc.
