Repository navigation
Replies: 3 comments
|
For agents, I would make status mandatory rather than relying on prose inside the ADR. Keep ADRs immutable except for their status metadata, and resolve a conflict by creating a new ADR that explicitly supersedes the old one. A workable header is: status: accepted # proposed | accepted | superseded | rejected
superseded-by: ADR-0042Then add an ADR index and tell agents to use only The current ADR format makes status optional, including |
|
Hi Matt — question about ADRs in domain modeling. The classic ADR rule is that an ADR is immutable: if a decision changes, you write a new ADR rather than editing the old one. ADR-FORMAT.md doesn’t explicitly say that; it only has an optional Status field, such as “superseded by ADR-NNNN.” The issue I’m running into is that after a few dozen ADRs, older and newer decisions can directly conflict while both still appear “accepted.” An agent may grep the folder, find an older ADR, read the beginning, and never notice that it was superseded. It then has conflicting guidance and may simply choose whichever supports the change it already wants to make. So two questions:
|
|
I think there are two separate questions here: what the current format guarantees, and what convention would be safest for agents. From the current For agent-driven repos, though, I think the safer convention would be:
For example: ---
status: superseded
superseded_by: ADR-0042
---
# Use PostgreSQL for event storage
...And the replacement: ---
status: accepted
supersedes: ADR-0017
---
# Use DynamoDB for event storage
...The important part for agents is that conflict resolution needs to be deterministic. If an agent finds two contradictory ADRs and both appear accepted, it should not choose whichever supports its current implementation. It should stop and surface the contradiction. Something like: So yes, I think making status metadata prominent and mandatory once an ADR is superseded would substantially reduce this failure mode. I wouldn't necessarily require status metadata on every brand-new ADR if the goal is to keep ADRs lightweight, but as soon as a decision is revisited, the relationship between the old and new ADR should become explicit and machine-readable. |
Uh oh!
There was an error while loading. Please reload this page.
Hi Matt — question about ADRs in
domain-modeling.The classic rule is that an ADR is a timestamp: you never change it, and if the decision changes you write a new one.
ADR-FORMAT.mddoesn't say that. The only hint is one optional line — Status frontmatter,superseded by ADR-NNNN, "useful when decisions are revisited".The problem I keep hitting: once you have a few dozen ADRs, an early one and a much later one say opposite things — A here, B there, true here, false there. Both files still read as "accepted". An agent greps the ADR folder, opens a hit, reads the first few lines and stops. If the supersede note is buried in the body, it never sees it. So it now has two conflicting decisions and no rule for which one wins — and it just picks whichever one suits the change it already wants to make. It never asks; it justifies.
Two questions:
All reactions