Tři seznamy říkají, k čemu nástroj je, ze tří úhlů, a každý z nich jsou data, která nástroj kontroluje:
| list | otázka, na kterou odpovídá | kde |
|---|---|---|
| případy užití | jakou úlohu člověk provádí a dělá ji nástroj | .ai/repo/use-cases/<id>.md |
| aplikace | do jakého kontextu nástroj zapadá a kam ne | .ai/repo/applications/<id>.md |
| commands | co dělá jeden příkaz, flag po flagu | share/commands.yaml, docs/CLI.md |
Stránka why je okamžik, který poznáte; případ užití je úloha, kterou provádíte; aplikace je kontext, kterému vyhovuje; stránka příkazu je povrch jednoho příkazu.
Proč jsou to data
Psané jako próza se nic z toho nedá ověřit: případ užití by mohl jmenovat příkaz, který byl přejmenován, pravidlo, které nikdy nebylo vynucováno, slib, který nikdo netestuje, a stránka by to říkala sebejistě. Jako objekty vrstvy se každý odkaz vyřeší, jinak build selže: příkaz proti dispatch tabulce, pravidlo proti registru doktrín, tvrzení proti docs/CLAIMS.yaml, odpovědnost proti docs/RESPONSIBILITIES.yaml, aplikace proti případům užití, které jmenuje, a zpět, kategorie proti taxonomii. majordomus doctor použije stejnou kontrolu pod majordomus.catalogue-integrity, takže visící odkaz se nemůže dostat na publikovaný web.
A případ užití je víc než popis: nese scénář, který nástroj provádí proti sobě samému, a stránka toto provedení ukazuje. docs/USE_CASES.md je smlouva; tento dokument je mapa.
Objekty
Případ užití (share/schemas/majordomus/use-case/use-case.v1.schema.json):
---
id: prove-a-rule-is-enforced # the file name, the URL slug
kind: use-case
title: '...'
summary: '...'
category: policy # an id of taxonomy.yaml
status: active # active | draft | deprecated
target: guaranteed # what the author aims at; the maturity is observed
actors: [maintainer, reviewer]
difficulty: intermediate
commands: [doctrine, doctor] # bin/majordomus dispatches each
doctrines: [majordomus.enforcement-wiring]
claims: [dispatcher-wiring]
responsibilities: [doctor]
applications: [ci-gated-project] # each names this use case back
scenario: # setup, given, steps (run, expect), then
...
---
# Situation
# Outcome
Aplikace (share/schemas/majordomus/application/application.v1.schema.json): id, kind: application, title, summary, fits_when, does_not_fit_when (obojí povinné: katalog, který jen vypisuje shody, je marketing), use_cases (vzájemné), doctrines, responsibilities a tělo s # Context.
Taxonomie (.ai/repo/use-cases/taxonomy.yaml): kategorie s titulkem, shrnutím a pořadím. Členství určuje category každého případu užití; kategorie bez případu užití vykreslí prázdnou stránku a nic nepočítá.
Dvě pravidla
Křížové odkazy jsou vzájemné: případ užití pojmenovává své aplikace a každá aplikace pojmenovává jeho zpět a odkaz, který se překládá jen jedním směrem, je odmítnut.
does_not_fit_when je povinné. Aplikace, která jen říká, kam zapadá, není popis.
Jak ji rozšířit
Přidejte soubor. majordomus usecase validate jej vyřeší, majordomus usecase run <id> jej provede, scripts/generate-site-data přegeneruje data, trasu, kategorii, křížové odkazy, související odkazy každé další stránky a tabulku pokrytí. Není co upravovat v šabloně ani co aktualizovat v seznamu; přegenerovaná data commitněte se souborem. majordomus usecase scaffold napíše koncept pro schopnost, kterou žádný případ užití nepokrývá.
Co se kontroluje a co ne
Rozlišení se kontroluje; provádění se kontroluje; přesnost vyprávění je úsudek člověka. Případ užití, jehož scénář tvrdí málo, prokazuje málo, a recenzent čte prózu proti důkazům vedle ní.