| name | passive-adr |
| description | Before any architecturally-significant decision (stack, framework, database, design, structural pattern) — especially "let's use X", "go with Y", "I've decided", "should we use", or questions about how a past choice was made. Searches recorded decisions in .adr/ (live and archived) so settled ones are honored, searched before deciding, and superseded rather than contradicted. |
Passive ADR
This project records its architecturally-significant decisions as ADRs in
.adr/ (live) and .adr/archive/ (superseded/merged). The injected session
index shows only the hot live set — colder and archived decisions still exist
and still bind. The point is continuity: a decision made three sessions ago,
and the reasoning behind it, should still hold today.
Before making or accepting a decision
- Check the injected index, then search the full store —
/adr search <terms> covers live, cold, and archived records. Never assume the injected
slice is everything; the decision most relevant to you may be cold.
- If an accepted ADR covers this ground, honor it. Don't reopen it as if the
question were live. If it genuinely should change, say so explicitly and
treat it as a supersede (
/adr supersede <id>), not a fresh choice.
- Read the full ADR (
/adr show <id>) when you need the original rationale —
reading it also re-heats it, keeping it in the live inject.
A recorded decision should change how you behave, not sit in a folder.
Recording
Capture is automatic (background sweep at session end / pre-compaction). To
record immediately: /adr sweep. To dictate one: /adr new. A decision
without a stated rationale doesn't qualify — the "why" is the record's value.
Commands
/adr list | show <id> | search <term> | sweep | new | supersede <id> | on | off | decay [<N>|off] | consolidate
Each ADR: frontmatter (id, date, status, supersedes, decided_by,
last_read) + Context / Decision / Rationale sections.