Okamžik
Podstatná změna je v trunku. Není to špatná práce. Nic ji nevyžádalo, nic ji neohraničilo a otázku, zda se měla vůbec dělat, nyní zpětně zodpovídá ten, kdo ji recenzuje.
Proč k tomu dochází
Vyrobit změnu se stalo mnohem levnějším než zapsat, k čemu změna je. Když pracovník dokáže implementovat nápad za deset minut, deset minut na jeho formulaci jako ohraničeného kontraktu vypadá jako čistá režie — dokud se nezjistí, že změna zasahuje čtyři subsystémy nebo že je to špatný nápad, a režie se pak zaplatí desetinásobně.
Proč to lepší model nevyřeší
Neohraničená instrukce vyrábí neohraničenou práci a lepší pracovník jí vyrobí víc, rychleji, a každou její část přesvědčivě obhájí. Hranice jsou vstup, ne něco, co dodá schopnost.
Co to stojí
Posouzení, které musí z diffu rekonstruovat záměr. Konflikty při merge s prací, která měla hranici. A narůstající objem změn, který nikdo nedokáže přiřadit k důvodu, což je stav, v němž je kódu obtížné rozumět.
Co Majordomus dělá
Práce je omezena v okamžiku, kdy začíná. majordomus start vyžaduje cíl a rozsah; rozsah se normalizuje a ukládá a check i finish selžou na jakémkoli dotčeném souboru mimo něj. Kde repozitář nese plán, je úkol prováděcím kontraktem: cesty, kterých se smí dotknout, cesty, kterých se dotknout nesmí, k čemu slouží, úkoly, na nichž závisí, jeho akceptační kritéria a důkazy, které vyžaduje jeho dokončení — bez pole stavu, protože stav se odvozuje. Commity se přisuzují úloze, která je vytvořila.
Před a po
before "improve error handling" -> 31 files, 4 subsystems, one review
after $ majordomus start "retry the enqueue on transient errors" \
--scope lib/queue,test/queue
$ majordomus check
FAIL scope lib/http/router.rs is outside the declared scopeCo nedělá
Nevyžaduje úkol pro každou změnu; repozitář bez plánu se přeskočí, a neselže. Vyžaduje, aby jakákoli probíhající práce uvedla, čeho se smí dotýkat.