Zda funkce produktu existuje, se počítá, nikdy nezaznamenává. Funkce existuje, jen když projde každá ze šesti dimenzí:
EXISTS = ON_MASTER ∧ DEPLOYED ∧ PUBLICLY_VERIFIED ∧ REQUIRED_TESTS_CURRENT ∧ TEST_EVIDENCE_PUBLISHED ∧ UI_LINKED
Cokoli menšího je nedoručeno. Rozhodnutím je ADR 71; kódem je apps/majordomus-cli/src/delivery/.
Jak to číst
majordomus delivery report # every feature, one row per feature
majordomus delivery report --check # exit 10 unless every feature exists
majordomus delivery show evidence # one feature: each dimension, its reason, its remedy
majordomus delivery report --format json # the document GET /api/v1/delivery returns
Stejné odpovědi jsou GET /api/v1/delivery, GET /api/v1/delivery/feature?id=<id> a nástroje MCP majordomus_delivery a majordomus_delivery_feature. Všechny promítá jedna deklarace, capability/builtin/delivery.rs.
Verdikty
Každá dimenze je pass, fail nebo unknown, s větou, která rozhodla, a nápravou. Neznámé nikdy není pass. Web, ke kterému se nedalo dostat, není nasazen; klon bez origin/master není na masteru.
Stavy
Funkce je delivered nebo not_delivered. Jen druhá nese vývojovou fázi a fáze je jiný typ než dodávka:
| fáze | znamená |
|---|---|
unknown | git nedokázal říct, kde je jeho implementace |
not_implemented | nejmenuje žádnou implementaci, nebo ji nic necommitlo |
implemented_on_branch | jeho poslední implementační revize není na trunku |
on_master | jeho implementace je na trunku |
tested | na trunku, každý požadovaný test je aktuální |
deployed | testováno a obsaženo v tom, co veřejný web poskytuje |
Stupeň je žebřík: příčky se dosáhne, jen když projdou všechny příčky pod ní, takže funkce, jejíž testy nejsou známy, je on_master, i když ji web už poskytuje. blocking vypíše dimenze, které neprošly.
Dimenze
on_master
Cesty, kterými je funkce implementována, se odvozují z toho, co její soubor pojmenovává, nikdy se nepíší ručně: zdrojový soubor každého modulu schopnosti, lib/<command>.sh každého shellového příkazu a implementation každého tvrzení v docs/CLAIMS.yaml. Poslední commit, který se jich dotýká na HEAD, musí být předkem origin/<trunk>, nebo musí být cesty na obou bajtově shodné. Změna jen na aktuální větvi selže s implemented_on_branch; funkce, která nepojmenovává nic implementovatelného, selže s nápravou, aby to pojmenovala; klon bez trunku je neznámý.
deployed
Veřejný web poskytuje dokument identity, který .ai/repo/ci/pages.yaml jmenuje v deploy.identity (build.json), na base_url z site/config.toml. Nasazeno znamená, že commit v tom dokumentu obsahuje revizi trunku dané funkce. Čte se jednou na report. Nedostupný web nebo poskytovaný commit, který tento klon nemá, je neznámý.
publicly_verified
Nasazeno a zveřejnění ověřeno zvenčí skriptem, který ho vlastní:
- identita říká, že její strom byl čistý (
dirty: false); scripts/pages verify --url URL --commit SHA --timeout 0potvrdí, že ho web poskytuje;scripts/pages built --commit <origin/gh-pages>hlásí vlastní sestavení GitHubu jako sestavené.
Exit 10 kteréhokoli skriptu je selhání, exit 12 je neznámo.
required_tests_current, test_evidence_published, ui_linked
Fáze 1 je počítá jako unknown s důvodem evidence model lands with PR #577. Existují v typu, aby je fáze 2 naplnila — a aby, dokud to neudělá, žádná funkce neexistovala.
Hermetické běhy
MAJORDOMUS_DELIVERY_SITE_URL nahrazuje adresu webu. Adresář file:// obsahující build.json je web, který čtou jak modul delivery, tak scripts/pages verify přes tentýž curl: test/cases/373_delivery_is_computed.sh a test/cases/374_delivery_unknown_is_not_delivered.sh se sítě nikdy nedotknou.
Zatím ne
Veřejný web dodání nevykresluje. PUBLIC_FEATURE_FIELDS v src/product.rs je allow-list toho, co veřejná stránka nese, a řez stavu, který do něj dodání přidá, je pozdější změna.