id, uuid, title,
status, severity, and reported. Two fields are added by you at
resolution time: resolved: (ISO timestamp) and a resolution: block.
Status lifecycle
Fixes have four statuses:completed has a hard rule: every task must be either completed (with
a commitSha) or superseded. Three completed + two superseded = a
completed fix; one task still open = the fix stays in_progress.
Body sections
The CLI scaffolds Issue Summary, Reproduction, and a Tasks placeholder. The sections worth adding:- Reproduction Steps / Expected / Actual — the bug, pinned precisely.
- Root Cause Analysis — the code path and the logic error, plus affected
files. (Remember the parser rule: no
### N.numbered headings outside## Tasks.) - Test Plan — three tables: 🔒 regression tests that must pass unchanged, ✏️ amended tests whose expectations change, and 🆕 new tests the fix adds.
- Tasks — same task-block syntax as
features; commits reference them with
Fix:+Task:headers instead ofPRD:/Feature:.
The resolution block
When the last task closes, the frontmatter gets the outcome:tiny-brain task sync docs/fixes/login-timeout.md). The fix
document ends its life as a complete record: what broke, why, how it was
proven fixed, and which commits did it.