Okamžik
Někdo se ptá, proč služba zapisuje do fronty před databází, a ne po ní. Odpověď je známa — jednou byla pečlivě vypracována — a jediné místo, kde existuje, je konverzace, která mezitím byla uzavřena.
Proč k tomu dochází
Zaznamenání rozhodnutí je jiný akt než jeho učinění a přichází ve chvíli, kdy jsou všichni zúčastnění přesvědčeni, že si ho zapamatují. Pamatují, asi čtrnáct dní. Mezitím existující artefakt je přepis, který je dlouhý, neindexovaný a psaný v rejstříku rozhovoru, ne záznamu.
Proč to lepší model nevyřeší
Model dokáže shrnout přepis do něčeho, co vypadá jako záznam o rozhodnutí, ale výsledek je rekonstrukce bez váhy: nerozliší, co bylo rozhodnuto a co se jen probíralo, a nic ho neváže ke commitu, na který se vztahoval.
Co to stojí
Rozhodnutí se znovu obhajuje (což je vlastní okamžik) nebo, hůř, tiše popírá. A protože důvod není k dispozici, další člověk nerozliší záměrné omezení od nehody, takže všechna omezení pokládá za nehody.
Co Majordomus dělá
majordomus decision add zaznamená, co bylo rozhodnuto, a odmítne to zaznamenat bez --why. --rejected zaznamená alternativu, která byla vyloučena; --evidence říká, kde hledat. Id úlohy a git head se počítají, nikdy nepíšou, a záznamy jsou pouze přidávací: --supersedes zaznamená náhradu a odmítne odkázat na rozhodnutí, které neexistuje. Rozhodnutí dost trvalé na to, aby přežilo úlohu, se povýší na architektonické rozhodnutí pod vrstvou, s kontextem, alternativami a důsledky, a adr propose jej navrhne z lokálního záznamu, ne z prózy.
Před a po
before "we discussed it in the design session" (which one?)
after $ majordomus search "queue before database" --kind decision
t-…a4f1 head=8c31f0e
decided: write to the queue before the database
why: a lost enqueue is recoverable; a lost row is not
rejected: writing after, which loses the event on a crash between the twoCo nedělá
Nerozhoduje, co stojí za zaznamenání, a netěží přepisy. Práh je úsudek, který repozitář vyjadřuje jako pravidlo; nástroj odmítne rozhodnutí bez důvodu a nikdy neukládá konverzaci.