Skip to content

Document ADR immutability convention so agents avoid modifying accepted ADRs #6423

Description

@fullsend-ai-retro

What happened

Issue #6160 asked agents to add a maintenance step for ADR-0045. The code agent produced PR #6161 on Aug 12, which added a checklist step directing agents to update ADR-0045's field tables in place. The review agent (run 32299704901 on the predecessor) approved with "Looks good to me" — zero inline comments, zero findings — and the PR was auto-labeled ready-for-merge. Seven days later, maintainer ralphbean closed it without merging, explaining that accepted ADRs should be immutable records of decisions and evolving operational details (field tables, merge rules, struct definitions) should live in a separate living document. The system then re-triaged and the code agent produced the correct approach in PR #6398, which was merged after a thorough review/fix cycle.

What could go better

The root cause is that neither the code agent nor the review agent had access to a documented convention about ADR immutability. ADRs being point-in-time records is an established software engineering practice, but it was not codified anywhere in this repo's agent-facing guidance. The code agent followed the issue description literally (add a step to update ADR-0045) and the review agent had no heuristic to flag "directing agents to modify accepted ADR content" as architecturally suspect. This wasted one full code agent cycle, one review agent cycle, and 7 days of human review latency on a PR that was architecturally wrong. Confidence is high that the missing convention was the proximate cause — the maintainer's rejection message directly articulated the principle that was undocumented. Three existing open issues touch adjacent aspects: #2948 covers plan doc immutability, #1660 addresses the review agent suggesting ADR edits, and fullsend-ai/agents#404 asks the challenger to respect ADR conventions. None of these documents the convention itself; they all presuppose it exists.

Proposed change

Add ADR handling guidance to AGENTS.md (in the agent guidance index) and to docs/contributing/writing-adrs.md (or create a section in the existing ADR contribution guide). The convention should state: (1) Accepted ADRs are point-in-time records of decisions — do not modify their substantive content after acceptance. (2) When operational details in an ADR evolve (field tables, struct definitions, merge rules, configuration examples), extract them to a living reference document under docs/contributing/ and link back to the ADR. (3) Acceptable ADR modifications are limited to: updating status fields (e.g., marking as Superseded), adding cross-references to successor ADRs or living docs, and fixing typos. This convention would give code agents the context to choose living-doc extraction over ADR modification, and review agents a heuristic to flag PRs that add evolving content to accepted ADRs.

Validation criteria

The next time a code agent is tasked with changes involving ADR content, it should prefer creating or updating a living doc over modifying the ADR body. The next time a review agent reviews a PR that adds evolving operational detail to an accepted ADR, it should flag the approach. Measure over the next 5 agent PRs that touch ADR files — none should propose adding mutable tables or implementation details to accepted ADRs without the review agent flagging the approach.


Generated by retro agent from #6398

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions