Co to znamená
docs/generated/openapi.json, docs/generated/capabilities.md a share/allow/*.txt jsou cache registru a schémat, commitnuté, aby šlo rozhraní posoudit v diffu. majordomus generate je zapíše; majordomus generate --check je odvodí znovu, porovná bajt po bajtu, nic nezapíše a skončí s kódem 10 s výčtem každého souboru, který se liší nebo chybí. CI spouští kontrolu při každém pushi, takže změna deskriptoru či schématu bez přegenerovaných souborů se nesloučí.
Princip
generate.rs je jediná pipeline: dokument OpenAPI z http/openapi.rs, reference z vestavěných položek registru a jeden seznam povolených na schéma nesoucí x-majordomus-allow, každé setříděné vykreslení bez časových razítek. --check čte, co je na disku, a porovnává.
Jak to vidět
apps/majordomus-cli/target/debug/majordomus generate --check # generate --check: in sync
printf '\n' >> docs/generated/openapi.json
apps/majordomus-cli/target/debug/majordomus generate --check # exit 10: docs/generated/openapi.json (differs)
git checkout docs/generated/openapi.jsonCo nepokrývá
Kontrola porovnává commitnuté soubory s registrem spustitelného souboru, který ji provádí: zastaralý spustitelný soubor kontroluje proti zastaralému registru, proto CI před kontrolou builduje. Reference vypisuje vestavěné schopnosti celé a deklarativní zdroje popisuje pravidlem, ne výčtem, takže pravidlo přidané do vrstvy nezmění žádný commitnutý soubor.
Proč existuje
Vlastní doktrína repozitáře, project.derived-files-regenerated, aplikovaná na rozhraní spustitelného souboru v Rustu: generovaný soubor se mění změnou svého zdroje a opětovným spuštěním generátoru a obojí se commituje společně. apps/majordomus-cli/tests/generate_check.rs dokazuje, že chybějící a pozměněné soubory se detekují bez zápisu; test/cases/76_capabilities_projections.sh generuje do jednorázového repozitáře, kontroluje, pozmění a vidí odmítnutí.