decisions - CyrilB1531/lodestar GitHub Wiki

Architecture decision records โ€” index

Seven records, one per axis of the project's trajectory: what it targets, what it may read, how it is laid out, what it writes rather than delegates, what proves it, which reference each stemmer follows, and where it knowingly differs from that reference. One row per file. The status and date columns are copied from each file's own **Status:** โ€ฆ ยท **Date:** โ€ฆ line โ€” correct the record to correct this table, not the other way around.

A record states an axis. A tool, a numerical mechanism or a shape the code already shows is not an axis, and does not earn a record: it belongs in the tool's own documentation, in the XML comment on the member, in ../guides/performance.md when it is a measurement, or in ../equivalence.md when it is a divergence. That rule is what #1103 applied.

index.yaml is the mechanical layer beneath the table. Each record declares supersedes, amends and applies in its own frontmatter; tools/regen_adr_index.py reverses those edges, because an immutable record cannot name the decision that later amended it, and tools/check_adr_index_sync.py refuses any drift. All seven lists are empty today: an amendment to one of these records is a new record, which is what immutability means here โ€” a record is never edited, and may only be deleted, as tools/check_adr_immutable.py enforces.

# Title Status Date Relationships
0001 The foundations: target frameworks, comparison unit, persistence and versioning accepted 2026-09-20 โ€”
0002 Provenance and the allowed references accepted 2026-09-20 โ€”
0003 The package layout: tiers, boundaries and edges accepted 2026-09-20 โ€”
0004 What is written here and what is delegated accepted 2026-09-20 โ€”
0005 The proof standard and the oracle each family is frozen from accepted 2026-09-20 โ€”
0006 The stemmers' references accepted 2026-09-20 โ€”
0007 The deliberate divergences accepted 2026-09-20 โ€”

What accepted means here

All seven carry accepted. None has been rejected or withdrawn โ€” a status this table would otherwise need a second word for.

The numbering restarted at 0001

These seven replace the 147 records of the first numbering, written between 2026-08-01 and 2026-09-18 and deleted on 2026-09-20. A number below therefore names a different record from the one it named before that date: 0003 was Code provenance and license in the first numbering and is The package layout in this one. Read an old citation โ€” in CHANGELOG.md, in docs/superpowers/, or in a commit message โ€” against the tree it was written in:

git show 53af23c2:docs/decisions/0072-omega-is-an-input-not-a-seed.md

docs/decisions/.numbering-epoch carries the epoch this directory numbers in, and .next-adr skips any checkout or ref declaring another one, so a branch opened before the restart cannot push the next number back into the 0148 range.

What each record absorbed

The first numbering's 75 axis records were merged into these seven; its other 72 stated a mechanism and were deleted, their content moved to the tool, the guide or the equivalence row that carries it. Each record's own tables name the first-numbering record every case came from.

# merges
0001 0001, 0002, 0011, 0012, 0055
0002 0003, 0010, 0082, 0084, 0099
0003 0016, 0071, 0076, 0081, 0089, 0095, 0096, 0097, 0098, 0100, 0101, 0103, 0111, 0119, 0124, 0138, 0139
0004 0059, 0060, 0068, 0072, 0074, 0104, 0105, 0115, 0116, 0129, 0130, 0131, 0132, 0133, 0134, 0135, 0136, 0137, 0140
0005 0007, 0013, 0014, 0017, 0034, 0036, 0075, 0077, 0127, 0143, 0144, 0146
0006 0008, 0086, 0087, 0090, 0091, 0092, 0094, 0145
0007 0005, 0006, 0023, 0039, 0063, 0070, 0080, 0093, 0117