diff --git a/ROADMAP.md b/ROADMAP.md index c86a9d8..4212f6b 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -168,4 +168,4 @@ When a roadmap item flips from ⏳ to ✅, update the corresponding cell(s) in t The dated, end-of-session checkpoints — what got done, where the project stands, and how to resume — now live in [`docs/journal/`](docs/journal/), one file per session under `YYYY/MM/`, rather than inline in this file. Keeping them out of the roadmap leaves this document a forward-looking plan; the rationale and the agent rule are [ADR-0036](docs/adr/0036-session-journal-extraction.md) and [`AGENTS.md`](AGENTS.md) §7.6. -**Latest checkpoint:** [2026-06-14 — End of M8 release session (v1.1.0)](docs/journal/2026/06/2026-06-14-m8-release-v1.1.0.md) — the planned roadmap (Milestones 0–8) is **complete**; the project is now in the maintained-product phase governed by [`docs/workflow/maintenance.md`](docs/workflow/maintenance.md). The full trail is in [`docs/journal/`](docs/journal/). +**Latest checkpoint:** [2026-06-15 — Bug ledger & triage protocol](docs/journal/2026/06/2026-06-15-bug-ledger.md) — the in-repo bug ledger (`docs/bugs/`, [ADR-0039](docs/adr/0039-bug-ledger-and-triage-protocol.md)) and the agent triage protocol ([`AGENTS.md`](AGENTS.md) §7.7) are now live; the planned roadmap (Milestones 0–8) remains **complete** and the project is in the maintained-product phase governed by [`docs/workflow/maintenance.md`](docs/workflow/maintenance.md). The full trail is in [`docs/journal/`](docs/journal/). diff --git a/docs/journal/2026/06/2026-06-15-bug-ledger.md b/docs/journal/2026/06/2026-06-15-bug-ledger.md new file mode 100644 index 0000000..70f6fe6 --- /dev/null +++ b/docs/journal/2026/06/2026-06-15-bug-ledger.md @@ -0,0 +1,12 @@ +# 2026-06-15 — Bug ledger & triage protocol (maintenance session) + +> Session checkpoint — part of the [session journal](../../README.md). Checkpoints live outside `ROADMAP.md` per [ADR-0036](../../../adr/0036-session-journal-extraction.md). + +- **Done in this session** — added the in-repo **bug ledger** and the agent triage protocol that governs it (PR #89, merged), plus a one-line `.gitignore` chore (PR #90, merged). The ledger: one Markdown record per defect at `docs/bugs///BUG-NNNN-.md` — a globally-monotonic stable id combined with the journal's date-tree foldering — with [`docs/bugs/README.md`](../../../bugs/README.md) (index + lifecycle) and [`docs/bugs/template.md`](../../../bugs/template.md). The ledger is the **source of truth** (a GitHub issue is referenced, not authoritative). Decision recorded in [ADR-0039](../../../adr/0039-bug-ledger-and-triage-protocol.md); governance in [`docs/workflow/maintenance.md`](../../../workflow/maintenance.md) (defect-lifecycle section); agent rule in [`AGENTS.md`](../../../../AGENTS.md) §7.7. A new `bugs` check in [`tools/consistency_lint.py`](../../../../tools/consistency_lint.py) enforces frontmatter, vocabularies, filename↔id and path↔discovered agreement, monotonic ids, the index bijection, and `fixed`⇒`fixed-in` (no-op on an empty ledger). `.markdownlint.json` relaxes `MD025.front_matter_title` so a record may carry both a frontmatter `title` and a visible H1. +- **Library state on `master`** — **unchanged**. This session is documentation / process / tooling only; no code, public C ABI, C++ surface, or build change. The `v1.1.0` static archive is byte-identical. The `CHANGELOG` `[Unreleased]` block now carries the bug-ledger `Added` entry, pending the next release. +- **ADRs accepted to date** — 0001–0039. Total: **36** (this session added 0039). +- **Patterns catalogue** — unchanged: eleven Implemented; no new pattern (the ledger is a process/tooling change, not a code pattern). +- **Spec Coverage Map** — unchanged: fifteen rows ✅ (no spec row maps to this maintenance work). +- **Versions** — `v1.1.0` is the latest released version; these changes sit unreleased on `master`. Per [`AGENTS.md`](../../../../AGENTS.md) §7.3 / [ADR-0037](../../../adr/0037-new-feature-roadmap-placement.md) this is a maintenance change, not a milestone — recorded in the `CHANGELOG`, justified by ADR-0039, no roadmap item. +- **Open issues / follow-ups** — none blocking. The bug ledger is **empty** (no defects recorded yet — green by design). Standing note: the pre-1.0 milestone GitHub Releases `v0.4.0`/`v0.5.0`/`v0.6.0` remain Draft (old, likely intentional — do not publish without asking). +- **Resume the next session with** — the bug ledger is live. When asked to hunt for bugs, create a `docs/bugs/` record only for a **verified, reproducible** defect; when a third party reports a bug, **reproduce and root-cause first**, recording an unconfirmed report as `cannot-reproduce`/`rejected` — per [`AGENTS.md`](../../../../AGENTS.md) §7.7. Run `python tools/consistency_lint.py` (now with the `bugs` check) before drafting any PR. Maintained-product governance otherwise unchanged ([`docs/workflow/maintenance.md`](../../../workflow/maintenance.md)). diff --git a/docs/journal/README.md b/docs/journal/README.md index 896b365..ccdf1bc 100644 --- a/docs/journal/README.md +++ b/docs/journal/README.md @@ -15,6 +15,7 @@ carrying an ever-growing log ([ADR-0036](../adr/0036-session-journal-extraction. ### June +- [2026-06-15 — Bug ledger & triage protocol (maintenance session)](2026/06/2026-06-15-bug-ledger.md) - [2026-06-14 — End of M8 release session (v1.1.0) — planned roadmap complete](2026/06/2026-06-14-m8-release-v1.1.0.md) - [2026-06-14 — Packaging patch release (v1.0.1)](2026/06/2026-06-14-packaging-patch-v1.0.1.md) - [2026-06-14 — End of M7 release session (v1.0.0 — the stable release)](2026/06/2026-06-14-m7-release-v1.0.0.md)