adr: relocate ADRs to /adr; add ADR-0002 (location) + retrospective ADR-0003-0014#73
Conversation
- Align retrospective ADR records and relocated governance with approved decisions - Enforce the default-branch immutability boundary and ADR directory configuration - Add focused regression coverage and record local verification evidence
- Keep verified_date in SKILL.md frontmatter only - Record the owner decision and pending reviews
- Scope ordinary validation to ADRs changed against the comparison base - Cover push-event immutability paths and refresh governance guidance
- Clarify verification truth, metadata, and mapped skill dependencies - Record the deferred PQC posture gap and pending review state
- Preserve durable update, panel, and skill-maintenance invariants - Move rollout detail to planning and record prospective reviewers
📋 Consolidated Review — PR #73Branch: 🔴 Critical (must fix before merge)
|
| # | Finding | Evidence |
|---|---|---|
| W1 | All 13 retrospective ADRs (0002–0014) omit the template's required **Reviewers:** field — only ADR-0001 has it. |
adr/TEMPLATE.md:6 |
| W2 | No shared convention for "Accepted retroactively" — each ADR invents its own phrasing; ADR-0001 (the policy) doesn't define it. ADR-0002 claims to be prospective while being shipped in the same PR as the move it records — inconsistent with 0003–0014. | adr/ADR-0002:10, adr/ADR-0003..0014:Acceptance |
| W3 | ADR-0009 (human→automation path) commits to nothing actionable — §Decision records a trajectory; §Validation says "bar is set when panel is specified." No steps, owners, milestones. | adr/ADR-0009-human-review-gate-path-to-full-automation.md:Decision,Validation |
| W4 | ADR-0012 records autonomi-developer as canonical but ships skills/start/ on disk — naming divergence is honest and tracked in planning/skill-open-questions.md, but it's unresolved debt. |
adr/ADR-0012:62,90 |
| W5 | Handover fragility — adr/README.md references TEMPLATE.md and external tools (adrs/adr-kit) but lacks: numbering continuation rule, who can Accept, how to record a retrospective, or that TOOLING.md paths now diverge from docs. |
adr/README.md, adr/TOOLING.md |
| W6 | Script lost executable bit (100755 → 100644). Functionally fine (workflow invokes python3), but unexplained. |
git diff origin/main...HEAD -- scripts/adr-governance.py |
✅ Looks Good
- GitBook isolation confirmed —
.gitbook.yamlhasroot: ./docs/,SUMMARY.mdhas no ADR entries,llms.txtsweep is fromdocs/. ADRs cannot leak to the published developer site. - CI path filters correct —
.github/workflows/adr-governance.ymllines 6,15 updated toadr/**on bothpull_requestandpushtriggers. .adr-kit.yamlconsistent —adr_directory: adrmatches the new location.- No stray
docs/adrreferences in CLAUDE.md, README.md, skills/, .claude-plugin/, scripts/, prose-guard, or the 13 new ADRs. - Sequence integrity — ADR-0001 through 0014 contiguous, no gaps, no name collisions.
- Template header order — all 14 ADRs follow
TEMPLATE.mdsequence (Context → Decision Drivers → Considered Options → Decision → Consequences → Positive/Negative/Neutral → Validation → Notes for AI-assisted work). ADR-0001 only omits the last section (added later to template). - Implementation ↔ ADR traceability — each retrospective ADR (0003–0014) maps to real code/config in this repo or its sibling (skills/start/, component-registry.yml, .gitbook.yaml, sweep workflows). ADR-0005 correctly flags the personal-Claude-subscription dependency as out-of-repo.
planning/skill-open-questions.mdis action-oriented — each open item has a "To do:" line with a concrete next step; supersession mechanism is the stated resolution path (consistent with ADR practice).
🎯 Recommendation
Do not approve/merge until C1–C3 are fixed. The fixes are surgical:
- C1: Add
Supersedes: ADR-0001to ADR-0002 front-matter; addSuperseded by: ADR-0002to ADR-0001. - C2: Fix
scripts/adr-governance.py— replace hardcodeddocs/adr/ADR-prefix with dynamicADR_DIR/.adr-kit.yamladr_directoryso PR-mode validation works on the new path. - C3: Update
adr/TOOLING.md:41-42to point atadr/andadr/TEMPLATE.md.
W1–W6 can be addressed in a follow-up PR or superseding ADRs — they don't break anything today but will bite future maintainers.
Happy to draft the fixes and push to this branch, or open a follow-up PR — let me know how you'd like to proceed.
Reviewed by Hermes Agent (6-agent consensus)
Disposition of consolidated reviewThanks for the thorough review against Critical
Warnings
Additional review workThe branch also separates durable ADR decisions from mutable mechanics in ADR-0006 and ADR-0014, preserves ADR-0009 panel intent, records implementation gaps outside immutable ADRs, and keeps exact workflow and maintenance procedures in the routine, guard workflows, registries, and Local pre-push evidence on |
dirvine
left a comment
There was a problem hiding this comment.
✅ Approval — PR #73
Reviewed at: ff391657 (post-merge of main, +110/-77 over 298e998 — pure doc-sweep refresh + planning/sweeps/2026-07-21.md + minor SKILL.md/version.json bumps. No changes to ADR machinery, governance script, or any review concerns.)
Re-validation against new head:
| Check | Result |
|---|---|
python3 scripts/adr-governance.py |
✅ Pass — 15/15 ADRs |
python3 -m unittest scripts.tests.test_adr_governance -v |
✅ 20/20 tests pass (4.96s) |
| All 6 GitHub CI checks | ✅ Pass |
Summary
The branch addresses all 3 critical + 6 warning findings from the original review (51724df) and adds substantial hardening:
- C1 ADR-0001 immutability honoured (no backlink; byte-identical); ADR-0002 carries
Supersedes: ADR-0001 (location clause only); ADR-0015 codifies the forward-only supersession convention. - C2
scripts/adr-governance.pyrewritten —Path("adr")filter replacesdocs/adr/ADR-hardcode; byte-for-byte relocation check for Accepted ADRs;.adr-kit.yamlvalidated; 20 integration tests covering PR/push/merge-base/relocation/edit/rename/Acceptance/multi-commit. - C3
adr/TOOLING.mdandCLAUDE.mdboth referenceadr/andadr/TEMPLATE.md. - W1 Prospective ADRs (0002, 0015) carry
Reviewers: Jim Collinson; retros intentionally omit per template allowance. - W2
Acceptance: Retrospective — <basis>convention codified in ADR-0015 + enforced by governance + template. - W3 ADR-0009 split — durable decision in ADR; rollout order, evidence windows, thresholds, panel-automation slice all in
planning/adr-implementation-conformance.md. - W4 Skill-naming debt (
skills/start/vsautonomi-developer) tracked inplanning/skill-open-questions.md; ADR-0012 cross-references for supersession path. - W5
adr/README.mddefines sequential numbering, prospective acceptance authority, retrospective acceptance, default-branch immutability, forward-only supersession. - W6
scripts/adr-governance.pymode preserved at100755.
Process notes (non-blocking)
- Forward-only supersession means discoverability relies on convention + tooling rather than backlinks on the older record. Acceptable; README documents it.
- ADR-0015 codifies a rule whose first applications predate it (ADR-0007/0009/0012/0014). All five are owner-confirmed; coherent.
Verdict
Merge-ready. Strong review-team consensus — 6-agent re-verification confirmed no regressions and clean CI on the current head.
Approved by Hermes Agent (6-agent consensus, head-verified)
Summary
Two things in one change:
docs/adr/to repo-root/adr. In this repodocs/is the published GitBook product (.gitbook.yamlsetsroot: ./docs/), so ADRs underdocs/would leak into the public developer-docs site (nav / search /llms.txt) and get swept by the docs tooling. Recorded as ADR-0002.What changed
git mv docs/adr → adr(movesADR-0001,TEMPLATE.md,TOOLING.md,README.md)..adr-kit.yaml→adr_directory: adrscripts/adr-governance.py→ADR_DIR = Path("adr").github/workflows/adr-governance.yml→ path filters →adr/**adr/ADR-0002 … ADR-0014.planning/skill-open-questions.md(open items the skill ADRs leave — see below).The ADRs
/adr, notdocs/adr(this change; a normal prospective decision)Automation
repository_dispatchwebhooks and API-billed CI)Docs platform & authoring
CLAUDE.mdas the enforced authoring-constraints contractDeveloper skill
feeds_skillsregistry wiringStatus: Accepted, retrospectively
ADR-0003–0014 record decisions taken before this ADR process existed. They are marked Accepted with an explicit
Acceptance: Retrospectiveline — ratified by the implementation already built on them and by this review pass, not by prospective pre-implementation review. This gives them immutability (protection from casual edits) while staying honest about how acceptance happened. ADR-0002 is an ordinary prospective decision.Open items (non-blocking)
Tracked in
planning/skill-open-questions.md— most notably the skill's canonical name (autonomi-developer) vs the current on-diskskills/start/, and a possible future migration toWithAutonomi/skills. These resolve later via superseding ADRs, not edits.Validation
python3 scripts/adr-governance.pypasses against the 14 ADRs at/adr(verified on a mirror of this branch:ADR governance passed (14 ADR file(s) checked)).adr/**;sweep-guard/prose-guard/sweep-sha-reachabilitygreen-skip on this non-claude/*branch.Reviewer notes
adr_directoryknob — the shared mechanics (template, lifecycle, immutable-Accepted enforcement) are untouched. Full rationale in ADR-0002.