Co to znamená
Případ užití nese scénář: připravený repozitář a skutečná volání bin/majordomus s očekávanými exit kódy a výstupem. majordomus usecase run jej provede krok za krokem v dočasném repozitáři, který připravil setup skript, a zaznamená příkaz, exit kód, výstup a aserce každého kroku jako důkaz v lokální polovině. Generátor webu spouští tytéž scénáře a důkaz vkládá, takže stránka, která ukazuje, co příkaz vypsal, ukazuje, co nástroj udělal v době jejího vzniku, a scripts/generate-site-data --check to v CI dokládá znovu.
Princip
mj_uc_run_one v lib/usecase.sh vytvoří repozitář, načte setup skript z fixtures (sdílený s ukázkami příkazů), spustí každý krok s argv ze souboru (nikdy shellový řetězec), zachytí spojený výstup, ověří exit kód a každé očekávání stdout_contains, stdout_not_contains, files_exist a files_contain, normalizuje výstup (cesta repozitáře, cesta nástroje, domovský adresář, časová razítka, id úloh a relací, hashe záznamů, doby trvání) a zapíše .ai/local/evidence/use-cases/<id>.json. Generátor zahodí časování a zbytek vloží do site/data/generated/catalogue.json; šablona stránky jej vykreslí.
Jak to vidět
majordomus usecase run # every scenario; exit 10 on a failed step
majordomus usecase run prove-a-rule-is-enforced --keep
majordomus usecase show prove-a-rule-is-enforced # the file and its last evidence
jq '.steps[] | {command, exit, result}' .ai/local/evidence/use-cases/prove-a-rule-is-enforced.jsonCo nepokrývá
Důkazy dokazují tvrzení scénáře a nic víc: scénář, který tvrdí málo, dokazuje málo. Normalizace nahrazuje hodnoty, které se liší podle stroje a času; chování, které se liší podle stroje, jí není skryto a kontrola selže.
Proč existuje
Vložený přepis v dokumentaci je fikce den poté, co byl vložen. Důkaz vygenerovaný provedením scénáře a ověřený proti čisté regeneraci se od nástroje nemůže rozejít.