Okamžik
README říká, že nástroj před zápisem ověřuje vstup. Dříve ano. Ověření bylo odstraněno při refaktoringu před osmi měsíci a věta zůstala, protože nic nespojovalo větu s kódem.
Proč k tomu dochází
Próza a chování se udržují různými úkony. Smazání kódu je změna s diffem; smazání věty, která jej popisovala, je akt vzpomínání. Nikdo si nevzpomene a žádná kontrola neexistuje, protože věta není testovatelný artefakt — je to odstavec.
Proč to lepší model nevyřeší
Worker, který má implementovat podle dokumentace, věrně implementuje podle popisu systému, který už neexistuje. Dokumentace, která nemůže být nepravdivá, se od pravdivé nedá odlišit.
Co to stojí
Uživatelé a přispěvatelé staví na slibu, který se nedodržuje. Hůř, slib se používá jako specifikace: někdo popsané chování špatně obnoví nebo postaví vrstvu na záruce, která nikdy neexistovala.
Co Majordomus dělá
Věta o schopnosti je tvrzení se stavem — guaranteed, advisory, planned nebo rejected — se souborem, který ji implementuje, a behaviorálním případem, který ji dokazuje. Zaručené tvrzení bez skutečné implementace a skutečného testu kontrolu neprojde a věta, kterou nelze podložit, se formuluje jako cíl. Případy užití jdou dál: každý jmenuje příkazy a tvrzení, která procvičuje, a nese scénář, který se provádí proti skutečnému nástroji, takže příklad na stránce je výstupem běhu, ne vloženým textem.
Před a po
before README: "validates input before writing" (last true in January)
after $ majordomus doctor
FAIL claims input-validation — status guaranteed, test '-'
[reproduce: majordomus usecase coverage]Co nedělá
Nepíše testy a nepozná, zda je test dobrý. Odmítá kombinaci silného tvrzení a žádných důkazů, což je stav, v němž dokumentace začíná lhát.