Superseded — no longer in force because something replaced it; the successor is named in the field, not in the prose.
5 of 141 decisions. Back to the full index.
| # | Title | Summary | Status |
|---|---|---|---|
| ADR-007 v2 | Document status is reported, not enforced | Two standing reports — reference status (references to retired documents) and pending decisions (undecided, by age AND citation count) — are WARNINGS that never fail a build, with one summary line each from luria lint. Citing a Rejected decision is often exactly right, and a decision can be legitimately open for months, so only a human can judge a row; a guard that’s wrong most of the time gets suppressed, and then the times it’s right go unread. A deliberate reference is silenced by an inactive-ok: comment (line, -block or -file scoped), counted in the report rather than hidden, and reported when it stops applying. luria reports writes both in full for a CI artifact, because a warning with nowhere to be read is a warning nobody reads. Rejected: a lint error (fails CI on correct citations), a bot that auto-updates statuses (invents decisions nobody made), and a ratchet on a checked-in baseline (a file every contribution touches — DP-2). | Superseded — by ADR-035 |
| ADR-010 | Name the project chester, after Chesterton’s Fence | Name the package chester, after Chesterton’s Fence — the parable that a fence should not be removed until you know why it was put there, which is what a decision record is for. Superseded the same day by ADR-011: the allusion names only the narrowest slice of what the record does (defending existing constraints), it survives being shortened to “chester” only for readers who already know the parable, and it frames the record defensively — as an argument against change — when its actual job is to make change cheap. Kept for the record, and as the corpus’s worked example of supersession. | Superseded — by ADR-011 |
| ADR-015 | A foreign record gets a prefix; the config turns it into a URL | Another project’s decision is cited as SG-ADR-032 — a registered remote prefix composed with that project’s own code — and a [luria.remotes.SG] entry teaches Luria to build the URL, so luria link --fix writes it and luria lint demands it exactly as for a local code. This is the alternative ADR-014 rejected, and what it was missing is a lockfile: a remote whose filenames carry title slugs can’t be resolved by any template, but it can be discovered — from a local clone, or the GitHub contents API, reading the remote’s own luria.toml for where its documents live — and the code→filename map committed so CI and offline checkouts resolve identically. luria remotes --check probes reachability; it is a separate command, never part of luria lint, because a check that opens a socket fails on a train. Rejected: a live lookup (flaky, and useless for a private remote), and a flat second scheme (loses which project a code belongs to). | Superseded — by ADR-016; drops the local-clone discovery path and makes Luria its own worked example |
| ADR-084 | A relation declares its converse; symmetry is the self-converse case | A reference field may declare its converse, the field holding the same relation read backwards; a pair is mutual, same-scheme and plural on both sides, and a symmetric relation is its own converse. The declaration is what licenses luria link --fix to complete the missing side, and it completes by what changed since HEAD rather than by which side is empty, so a deleted relation removes its back-reference instead of returning. A document naming another in both directions, or two each claiming to come first, is a contradiction reported and never written, and a repair that would break the document it lands in is not applied. The check leaves broken-chains for its own class, one-sided-relations, because a pair is one-sided whether or not a chain walks it. Rejected: deleting the symmetry check, completing only symmetric relations (what #178 shipped), inferring the converse without a declaration, declaring it on the chain, a separate --prune flag, and making one side authoritative. | Superseded — by ADR-137; for directed pairs, which now store their primary side alone; symmetric relations and pairs that declare no direction still follow this rule, restated in ADR-137 |
| ADR-140 | luria unconcretize gives the named documents their numbers back as temporary codes, rewriting the codes wherever concretize would and recording no alias | luria unconcretize CODE... is the inverse of luria concretize. Each named document is renamed to a fresh temporary code (ADR-049) and loses its number:, and every whole occurrence of its code is rewritten, in the files concretize rewrites. That file list is now one function both commands read, and it gains luria.yaml. The command does not ask why it is run: the user names the documents, and it flips them. It serves a branch whose filing-allocated number the trunk took first (run it before merging the trunk), and a renumbering. No formerly: is recorded, since the number goes back to the pool. Rejected: scoping the rewrite to lines added since a commit; refusing mid-merge or for a document that predates the branch; recording the old code as an alias; plain substring replacement. | Superseded — by ADR-141 |