|
2 | 2 |
|
3 | 3 | All notable changes to docops are recorded here. Dates are UTC. |
4 | 4 |
|
| 5 | +## v0.6.0 — 2026-04-30 |
| 6 | + |
| 7 | +### Added — Amendments as first-class decision metadata (ADR-0025) |
| 8 | + |
| 9 | +ADRs can now carry a structured, append-only `amendments:` log for |
| 10 | +editorial fixes, errata, clarifications, and late-binding patches that |
| 11 | +don't warrant a full superseding ADR. Validator, CLI, index, STATE.md, |
| 12 | +and the static HTML viewer are all amendment-aware. |
| 13 | + |
| 14 | +```yaml |
| 15 | +# docs/decisions/ADR-0019-...md |
| 16 | +amendments: |
| 17 | + - date: 2026-04-23 |
| 18 | + kind: editorial # editorial | errata | clarification | late-binding |
| 19 | + by: nix |
| 20 | + summary: "Tap/bucket repo names: per-tool → org-wide convention" |
| 21 | + affects_sections: ["v0.1.0 scope"] |
| 22 | + ref: TP-024 |
| 23 | +``` |
| 24 | +
|
| 25 | +- **Schema + validator** — `kind` enum (4 values) is the single source |
| 26 | + of truth for both the Go validator and `decision.schema.json`. Inline |
| 27 | + `[AMENDED YYYY-MM-DD kind]` markers in the body are correlated with |
| 28 | + frontmatter entries; mismatches are validation errors. Markers inside |
| 29 | + fenced code blocks are skipped. Amendments on `superseded` ADRs emit |
| 30 | + warnings rather than errors. |
| 31 | +- **`docops amend` CLI** — non-interactive mutation. Mirrors ADR-0025's |
| 32 | + flag surface (`--kind`, `--summary`, `--section`, `--ref`, `--by`, |
| 33 | + `--body`/`--body-file`, `--marker-at`). yaml.Node-based frontmatter |
| 34 | + edits preserve comments, key order, and quoting on unrelated fields. |
| 35 | + Atomic tmp+rename write. |
| 36 | +- **Index + STATE.md** — `docs/.index.json` gains `amendments` per ADR |
| 37 | + plus a top-level `recent_amendments` list (newest-first, windowed by |
| 38 | + `recent_activity_window_days`, UTC-midnight comparison). |
| 39 | + STATE.md gains a "Recent amendments" section. |
| 40 | +- **Static viewer (`docops html` / `docops serve`)** — ADR detail pages |
| 41 | + render an Amendments section under the body; the Home view shows a |
| 42 | + Recent amendments panel after STATE.md. The viewer bundle now carries |
| 43 | + `recent_amendments` in addition to per-doc `amendments`. |
| 44 | +- **TP-027 backfill** — ADR-0019's HTML-comment amendment stub is |
| 45 | + promoted to a proper frontmatter entry. |
| 46 | + |
| 47 | +Audit rules from ADR-0025 (≥5 amendments threshold, hand-edit drift, |
| 48 | +stale-ref) are deferred to TP-039. |
| 49 | + |
| 50 | +### Changed — Slash command surface narrows to 5 milestone moments (ADR-0029) |
| 51 | + |
| 52 | +Slash-style harnesses (Claude, Cursor, OpenCode) now ship a focused set |
| 53 | +of `/docops:*` commands instead of one slash per CLI verb: |
| 54 | + |
| 55 | +``` |
| 56 | +init progress next do plan |
| 57 | +``` |
| 58 | + |
| 59 | +Granular operations (`get`, `list`, `graph`, `search`, `audit`, `close`, |
| 60 | +`new-adr`, `new-ctx`, `new-task`, `refresh`, `state`, `upgrade`) remain |
| 61 | +available as **skills** for natural-language dispatch by the LLM, and |
| 62 | +as CLI verbs. The `/docops:do` skill routes free-form intents to the |
| 63 | +right skill or CLI invocation. |
| 64 | + |
| 65 | +`docops upgrade` removes the 12 deprecated slash files from |
| 66 | +`.claude/commands/docops/` and `.cursor/commands/docops/` automatically |
| 67 | +on next run. **Codex bundle is unchanged** — it uses skill-bundle |
| 68 | +delivery (not slashes), so the full surface stays in-bundle as |
| 69 | +subroutines. |
| 70 | + |
| 71 | +### Added — ADR-0030 (draft) — named baselines |
| 72 | + |
| 73 | +Drafted but not implemented: a baseline is a name + git tag + frozen |
| 74 | +index pointer (`docs/baselines/<name>.json`). Future work will add |
| 75 | +`docops baseline create|list|show|diff|current` and |
| 76 | +`docops get <ID> --at <baseline>`. No code change in this release. |
| 77 | + |
| 78 | +### Changed — Status enum literals surfaced where LLMs read |
| 79 | + |
| 80 | +LLMs were guessing `in_progress`, `wip`, `todo` for task status and |
| 81 | +hitting validator errors. The canonical enums are now inline in the |
| 82 | +docops block in `AGENTS.md`/`CLAUDE.md` (and templates), in the |
| 83 | +`new-task`, `new-adr`, and `close` skill files, with the common wrong |
| 84 | +guesses called out. JSON Schema remains canonical; these are read-side |
| 85 | +hints to short-circuit the trial-and-error loop. |
| 86 | + |
| 87 | +The `new-task` skill no longer references the nonexistent |
| 88 | +`docops status TP-xxx active` command — replaced with explicit |
| 89 | +edit-frontmatter + `docops refresh`. |
| 90 | + |
| 91 | +### Changed — CI runtimes bumped to Node 24 |
| 92 | + |
| 93 | +`actions/checkout v4 → v6`, `actions/setup-go v5 → v6`, |
| 94 | +`goreleaser/goreleaser-action v6 → v7` to clear GitHub's 2026-06-02 |
| 95 | +Node 20 deprecation. |
| 96 | + |
| 97 | +### Internal |
| 98 | + |
| 99 | +- New `internal/amender/` package; `cmd/docops/cmd_amend.go`. |
| 100 | +- `schema.Amendment` + `ADR.Amendments` (yaml `omitempty`); validator |
| 101 | + gains `ValidateAmendmentMarkers`; `loader.Doc` gains `Body []byte` |
| 102 | + for ADRs so the validator can correlate markers. |
| 103 | +- `index.IndexedDoc.Amendments`, `index.Index.RecentAmendments`, |
| 104 | + `index.IndexedAmendment`, `index.RecentAmendment`. |
| 105 | +- `state.Snapshot` threads `RecentAmendments` through; renderer emits |
| 106 | + the section only when non-empty. |
| 107 | +- `htmlviewer.Bundle.RecentAmendments` (was silently dropped). |
| 108 | +- `scaffold.SlashDeliverableCmds` defines the milestone-moment subset; |
| 109 | + upgrader auto-removes deprecated slash files via the existing |
| 110 | + "no-longer-shipped" cleanup path. New |
| 111 | + `TestRun_DeprecatesPreADR0029Slashes` covers the migration. |
| 112 | +- `templates/skills/docops/do.md` routing table updated to skill names |
| 113 | + (or CLI fallback) rather than defunct slashes. |
| 114 | +- `skill-lint` allowlist gains `amend`. |
| 115 | + |
| 116 | +### Known gaps (tracked) |
| 117 | + |
| 118 | +- TP-035 — `/docops:do` dispatcher fixture suite (≥95% routing |
| 119 | + accuracy bar). Load-bearing under ADR-0029 long-term; ships shortly |
| 120 | + after. |
| 121 | +- TP-037 — Timeline view in static HTML viewer. |
| 122 | +- TP-038 — Graph node annotations (amended/draft/stale). |
| 123 | +- TP-039 — Deferred amendment audit rules from ADR-0025. |
| 124 | +- ADR-0030 implementation — pending design ideation. |
| 125 | +- TP-034 deferred behavior — "preserve user-modified slash files with |
| 126 | + warning" rather than always overwriting on upgrade. |
| 127 | + |
| 128 | +### Migration |
| 129 | + |
| 130 | +Pre-launch — no migration needed. If you have an in-flight DocOps repo, |
| 131 | +running `docops upgrade` will: |
| 132 | + |
| 133 | +1. Remove 12 deprecated `/docops:*` slash files from Claude/Cursor |
| 134 | + command directories. |
| 135 | +2. Refresh `AGENTS.md` / `CLAUDE.md` docops blocks with Invariant #6 |
| 136 | + (status enums). |
| 137 | + |
| 138 | +ADRs without `amendments:` continue to validate; the field is additive. |
| 139 | + |
5 | 140 | ## v0.5.2 — 2026-04-25 |
6 | 141 |
|
7 | 142 | ### Changed — Codex layout collapses to one skill bundle |
|
0 commit comments