Zdůvodnění
Záznam rozhodnutí se čte měsíce po napsání, někým, kdo rozhoduje, zda omezení stále platí. Dva záznamy nárokující jednu identitu činí každý odkaz na tuto identitu nejednoznačným a nic si toho nevšimne, dokud čtenář jeden nenásleduje. To není hypotetické: v repozitáři Majordomus, kde bylo toto pravidlo napsáno, dva worktree přidělily 0005 během tří hodin od sebe a dva přidělily 0007 během jedné, a kolize přežila merge, protože žádný příkaz neměl o sekci názor. Validace sady při každém běhu doctor staví selhání do stromu, se jmenovanými soubory, místo do hlavy toho, kdo čte druhý záznam.
Druhá polovina pravidla se týká toho, co smí stroj tvrdit. majordomus adr propose zapisuje záznam z lokálního rozhodnutí a záznam, který zapsal, smí být proposed nebo rejected a nic jiného. Nástroj, který umí zapsat accepted, může ze své vlastní domněnky udělat pravdu repozitáře samotným zapsáním, a čtenář, který ten záznam později najde, nemá jak poznat, k čemu došlo.
Požadované chování
Každý soubor, který třída zdrojů adr objeví, má front matter splňující share/schemas/majordomus/adr/adr.v1.schema.json (žádný neznámý klíč, schema: adr/v1, kind: adr, status z uzavřené množiny, date jako YYYY-MM-DD), id tvaru adr-NNNN, jehož číslo je prefixem názvu souboru, a tělo s neprázdnými sekcemi ## Context, ## Decision a ## Consequences. Žádné dva záznamy si nenárokují jednu identitu a žádné dva názvy souborů jedno číslo. superseded_by je přítomno právě tehdy, když je stav superseded, a každý cíl supersedes existuje a odkazuje zpět na nahrazující záznam. Záznam, jehož provenance.origin je extracted, jmenuje alespoň jeden odkaz derived_from a nese stav proposed nebo rejected. Každý odkaz je <type>:<value> se známým typem a odkaz file: nebo test: se vyřeší na cestu v repozitáři.
Chování při selhání
Porušení je nález FAIL v kategorii adr, jmenuje soubor a každý důvod a příkaz, který jej našel, skončí s kódem 10. Pod watch se totéž porušení hlásí jako drift a příkaz skončí s kódem 11. Repozitář bez rozhodnutí se tak i hlásí, nikdy jako průchod nad ničím.
Ověření
Rozhoduje mj_validate_adr, spouštěné z doctor, watch; majordomus adr check provede stejné prověření na požádání a vypíše své počty. Prokazuje to behaviorální případ test/cases/99_adr.sh a CI tento případ spouští.