Co to znamená
GitHub Pages nemá pro registr žádný vlastní obsahový model. /registry/ čte site/data/registry/registry.json; tento soubor zapisuje Rust spustitelný soubor z registru schopností a z indexu (majordomus generate site) a majordomus generate --check, který CI spouští při každém pushi, jej odvodí znovu a skončí s exit 10, když se commitnutý soubor liší. Číslo na té stránce, které se se spustitelným souborem rozchází, je zastaralý vygenerovaný soubor a build jej odmítne.
Princip
apps/majordomus-cli/src/site.rs sestaví jednu datovou sadu (majordomus-site-registry/v1): identitu a verzi generátoru; otisk registru a počty se shrnutím každé vestavěné schopnosti (id, druh, vystavení, stabilita, politika měření výkonu a cache, provenience) a každý modul s tím, co skládá; otisk indexu, stav, sekce, počty podle druhu a každý objekt bez obsahu (URI, druh, identita, titulek, cesta, sekce, třída zdroje, velikost, štítky); každý druh, který program čte, s formátem, pravidlem front matter, schématem a poli identity; a projekce poskytovatelů, které politika deklaruje. Vše je seřazeno, nic nenese časové razítko, absolutní cestu ani commit (vlastní source.json webu nese commit a zapisuje se při sestavení).
Adresář patří samotnému spustitelnému souboru v Rustu. Shellový generátor webu (scripts/generate-site-data) nahrazuje site/data/generated/ celý a soubor, který nezapsal, hlásí jako osiřelý, takže dataset registru žije vedle něj, ne uvnitř: žádný adresář nemá dva zapisovatele.
Jak to vidět
apps/majordomus-cli/target/debug/majordomus generate site --check # OK generated site/data/registry/registry.json
jq '.registry.fingerprint, .registry.summary.total, .index.by_kind' site/data/registry/registry.json
printf '\n' >> site/data/registry/registry.json
apps/majordomus-cli/target/debug/majordomus generate --check # exit 10: site/data/registry/registry.json (differs)
git checkout site/data/registry/registry.jsonCo nepokrývá
Dataset vypisuje vestavěné schopnosti v plném znění a deklarativní jako objekty, jejichž jsou zdroji; neobsahuje obsah, schémata ani výsledky měření výkonu. Zbytek webu (tvrzení, plán, plán rozvoje, dokumenty) stále odvozuje scripts/generate-site-data ze souborů, které ty fakty vlastní; tento dataset je výřez z registru, ne náhrada tohoto generátoru.
Proč existuje
Pravidlo repozitáře, že rozhraní jsou projekce registru (project.interfaces-are-projections), aplikované na web: dříve stránky z registru neukazovaly nic a stránka, která by ukazovala, by musela ručně udržovat druhý seznam operací a druhů. apps/majordomus-cli/tests/projections.rs sestaví celý plán dvakrát nad fixture a porovná, odmítne cestu checkoutu v jakémkoli artefaktu, přidá jedno pravidlo do vrstvy a uvidí, že se otisk datasetu pohne a bootstrapy zůstanou, změní politiku a uvidí opak, a uvidí, že check jmenuje přesně artefakt, kterého se každá změna týká.