Jen kódy, které tento příkaz může vrátit. Úplný kontrakt je na indexu příkazů.
0ok
2použití
12chybějící artefakt
Proč se to udělalo takto
Rozhodnutí zaznamenává volbu mezi skutečnými alternativami spolu s jejím důvodem. Záznam se nikdy neupravuje ani nemaže; pozdější rozhodnutí nahradí dřívější a obě zůstanou čitelná.
Zaznamenání rozhodnutí s jeho důvodem
uvedený důvod
ano
Pro tento repozitář platí
# ... and an active task scoped to lib, with work done inside that scope.
. "$FIXTURE_SETUP/installed.sh"
"$MJ" start "narrow the parser" --scope lib >/dev/null
echo work >> lib/a
Spustit
$ majordomus decision add refuse tabs in the parser --why two encodings for one token
Výstup obsahuje
zaznamenáno: odmítnout tabulátory v parseru
ukončení0
Id úlohy a hlava gitu se vypočítají a připojí, takže rozhodnutí lze vždy zasadit do stavu repozitáře, v jakém bylo učiněno.
Jejich čtení zpět
uvedený důvod
ano
Pro tento repozitář platí
# An active task that has already produced a checkpoint, a decision and an open question.
. "$FIXTURE_SETUP/active-task.sh"
printf 'the parser now refuses tabs\n' | "$MJ" checkpoint >/dev/null
"$MJ" decision add "refuse tabs in the parser" --why "two encodings for one token" >/dev/null
"$MJ" question add "should tabs be an error or a warning?" >/dev/null
Spustit
$ majordomus decision list
Výstup obsahuje
odmítat tabulátory v parseru
Proč: dvě kódování
ukončení0
Důvod je součástí záznamu, ne zpráva commitu, kterou někdo možná napsal a možná ne. Rozhodnutí bez něj je to, k čemu se pozdější worker nemůže bezpečně vrátit.
Reference
Zaznamenat nebo číst trvalá rozhodnutí. Jeden soubor jen pro připisování: state/decisions.md.
decision add "<what>" --why "<why>" připojí položku s id úlohy a spočteným git headem. --why je povinné: rozhodnutí bez zaznamenaného důvodu nelze později přezkoumat, jen znovu obhajovat. --rejected a --evidence jsou volitelné a výchozí je -.
Záznam se nikdy neupravuje ani nemaže. --supersedes "<text>" zaznamená, že pozdější rozhodnutí nahradilo dřívější. Text se porovnává jen s tituly zaznamenaných rozhodnutí, musí identifikovat právě jedno z nich a zaznamená se právě tento titul; text, který neodpovídá žádnému titulu nebo odpovídá více než jednomu, se odmítne, takže nahrazení vždy míří na jedno skutečné rozhodnutí. decision list označí nahrazený záznam pomocí Superseded by: <title>.
decision list [--task <id>] [--limit <n>] vypíše záznamy od nejnovějšího; decision show "<text>" vypíše první záznam, jehož název obsahuje daný text, nebo skončí s 12.
Profil deep-work nastavuje verification.decision_record_required: true; finish pak odmítne completed, pokud některý záznam nepojmenuje úlohu.
$ majordomus decision add "Normalise the callback URI before comparing state" \ --why "the mismatch is a trailing-slash difference, not a forged state parameter" \ --rejected "relaxing the comparison, which would accept genuinely forged states" \ --evidence "test/auth/callback_test.exs:41"recorded: Normalise the callback URI before comparing state
Důkazy
Každý případ níže běží v CI na Linuxu i macOS. Web se odmítne sestavit, pokud veřejný příkaz nemá behaviorální případ, negativní případ nebo ukázku.