# Buglog status field Kept separate from `openwolf.md` because `openwolf update` overwrites that file. OpenWolf itself ignores this field (search, pre-write hints and the hook-created entries don't read or set it), so the convention is enforced only by this rule. - Every `.wolf/buglog.json` entry carries a `status`, and it is the only source of truth for whether a bug is open. Never infer it from `fix`: many entries have a populated `fix` that says "NOT FIXED", "PENDING" or "PARTIAL". - Values: - `open`: defect confirmed and still in the code. Intermittent test failures that do still recur count as `open`, not `cannot-reproduce`. - `partial`: part fixed; `status_note` says what remains. - `investigating`: real failure observed, root cause not found yet or waiting for a reproduction. - `fixed`: fix committed; cite the commit in `fix` or `status_note`. - `cannot-reproduce`: reproduction was attempted and failed; record what was tried in `repro_attempts` (e.g. "0/40 runs, 2026-08-01"). - `wontfix`: not a bug, accepted limitation, or deferred with no plan. - `duplicate`: same defect as another entry; set `duplicate_of`. - Whenever you log a bug or change its state, set `status` and `status_updated` (YYYY-MM-DD), plus `status_note` unless the status is `fixed` with the commit already in `fix`. Put them right after `"id"`. - A `cannot-reproduce` bug that recurs: bump `occurrences`/`last_seen` and set `status` back to `investigating`. - Use the `buglog` skill (`scripts/buglog.py`) to add entries and change status: `add`, `status`, `note`, `recur`, `list`, `triage`. It picks the next free id and edits only the touched entry's lines. Don't re-serialize the whole file with `json.dumps`/`jq`; that rewrites ~1,200 unrelated lines. - Open-bug list: `jq -r '.bugs[] | select(.status | IN("open","partial","investigating")) | "\(.id) [\(.status)] \(.status_note // .error_message[0:90])"' .wolf/buglog.json` - Entries with no `status` (hand-written without it, or created by an OpenWolf hook) need triage: `jq -r '.bugs[] | select(.status == null) | .id' .wolf/buglog.json`