# Bug records and their status Kept separate from `openwolf.md` because `openwolf update` overwrites that file. - Each bug is a Markdown record, `.wolf/bugs/.md`, written to the standard in `.claude/skills/buglog/bug-record.md` (what Description, Environment, Reproduction, Root cause, Fix and Verification must contain). Create and change records with the `buglog` skill (`scripts/buglog.py`), which checks them against that standard. - `.wolf/buglog.json` is an index generated from the records; never edit it. `.wolf/buglog-archive.json` holds retired OpenWolf hook auto-detections. - The front-matter `status` is the only source of truth for whether a bug is open. Never infer it from the Fix text or tags: migrated records often quote "NOT FIXED" or "PENDING" from earlier stages. - 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; `fix_commits` lists the commit(s) and the Verification section says how the fix was proven. - `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 record; set `duplicate_of`. - Change status only with `python3 scripts/buglog.py status ` (`--note` for every status except `fixed`; `--commit ` for `fixed`). It sets `status_updated` and refuses a change the record doesn't support. - A `cannot-reproduce` bug that recurs: `buglog.py recur ` bumps `occurrences`/`last_seen` and sets `status` back to `investigating`. - Open-bug list: `python3 scripts/buglog.py list --open`, or from the index: `jq -r '.bugs[] | select(.status | IN("open","partial","investigating")) | "\(.id) [\(.status)] \(.status_note // .error_message[0:90])"' .wolf/buglog.json` - Records with no valid status need triage: `python3 scripts/buglog.py triage`.