Skip to content

Extend ADR lifecycle: Rejected status, body-section rules, frontmatter cleanup#47

Merged
levifig merged 4 commits into
mainfrom
refactor/adr-lifecycle-extension
May 2, 2026
Merged

Extend ADR lifecycle: Rejected status, body-section rules, frontmatter cleanup#47
levifig merged 4 commits into
mainfrom
refactor/adr-lifecycle-extension

Conversation

@levifig
Copy link
Copy Markdown
Owner

@levifig levifig commented May 2, 2026

Summary

Post-release follow-up to PR #46. Codifies the lifecycle refinements that emerged during shipping the architecture-skill tightening and ADR deprecations.

Ships as v2.0.0-dev.39.

Changes

ADR lifecycle

  • Adds Rejected as a fifth ADR status. Full lifecycle: Proposed | Accepted | Rejected | Deprecated | Superseded. A Rejected ADR records "the team weighed this option and explicitly chose against it."
  • Codifies body-section requirements: ## Deprecated required for Deprecated, ## Rejected required for Rejected, ## Superseded optional for Superseded (linkage carries it).
  • Finalizes ADR frontmatter schema as structured what+when only: status, date, accepted_date (optional), rejected_date, deprecated_date, supersedes, superseded_by. Drops deprecated_reason and migrated_to from frontmatter — those belong in the body section's prose where they have context.
  • Cleans up ADR-004, ADR-006, ADR-009 frontmatter accordingly. Body sections preserve all migration content.
  • Updates content/templates/adr.md with the new schema and a header note about the body-section requirement.

docs/ARCHITECTURE.md Operating Principles

Two new subsections sibling to the Authorship Model principle:

  • Adversarial Review for Substantive Guidance Changesloaf:reviewer (internal-consistency) is the baseline; codex:rescue (adversarial design) is recommended when available. Each catches different defect classes. Codex is plugin-dependent and optional.
  • Recategorization as a General Lifecycle Pattern — distinguishes supersession (the answer changed) from recategorization (the classification was wrong, the rule still holds). Generalizes beyond ADRs.

Bookkeeping

Test plan

  • npm run typecheck clean
  • loaf build clean across all 6 targets
  • loaf release --pre-merge --bump prerelease — version + CHANGELOG updated, build refreshed, release commit landed
  • No occurrence of "irreversible" introduced (sweep clean)
  • All 3 deprecated ADRs verified to retain migration content in body after frontmatter cleanup

levifig added 4 commits May 2, 2026 23:21
…frontmatter cleanup)

Post-release reflection on PR #46. Codifies refinements that emerged during
shipping the architecture-skill tightening:

- Add `Rejected` as a fifth ADR status: `Proposed | Accepted | Rejected |
  Deprecated | Superseded`. A Rejected ADR records "team weighed this option
  and explicitly chose against it" — useful when the same idea resurfaces.
- Codify body-section requirements by status. `## Deprecated` required for
  `Deprecated`, `## Rejected` required for `Rejected`, `## Superseded`
  optional for `Superseded` (linkage carries it).
- Finalize ADR frontmatter schema: structured what+when only (status,
  date, accepted_date, rejected_date, deprecated_date, supersedes,
  superseded_by). Drop the `deprecated_reason` and `migrated_to` fields
  introduced during the deprecation pass — those belong in the body
  section's prose where they have context. Frontmatter is for indexing
  and future tooling; the body is the authoritative narrative.
- Clean up `ADR-004`/`ADR-006`/`ADR-009` frontmatter accordingly.
- `docs/ARCHITECTURE.md` Operating Principles section gains two more
  subsections informed by PR #46:
  - **Adversarial Review for Substantive Guidance Changes** —
    `loaf:reviewer` (internal-consistency) is the baseline; `codex:rescue`
    (adversarial design) is recommended when available. Each catches
    different defect classes. Codex is plugin-dependent and optional.
  - **Recategorization as a General Lifecycle Pattern** — supersession
    (the answer changed) vs recategorization (the classification was
    wrong, the rule still holds). Generalizes beyond ADRs.
Session wrap-up summary for the 2026-05-02 release session
(v2.0.0-dev.38, PR #46 + ADR-lifecycle extension follow-up).
@levifig levifig merged commit 5cf95a3 into main May 2, 2026
1 check passed
@levifig levifig deleted the refactor/adr-lifecycle-extension branch May 2, 2026 22:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant