Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Každý generovaný artefakt deklaruje dokument, který promítá, kódování, ve kterém je zapsán, schéma, které jeho obsah splňuje, a svůj zdroj, a strukturovaný dokument se zapisuje v každém kódování, ve kterém je commitnut, z jedné hodnoty

majordomus generate zapisuje *typovaný* strom. Každý soubor v něm deklaruje čtyři věci: **dokument**, který promítá, **kódování**, ve kterém je zapsán (json, yaml, markdown nebo text, podle své vlastní přípony), **schéma**, které jeho obsah splňuje, má-li dokument kontrakt, a **zdroj**, ze kterého byl odvozen. Každý soubor nese hlavičku provenance ve formě, kterou jeho kódování dovoluje, takže kdo ho otevře, dozví se, že jde o cache, dříve než ho upraví.

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

JSON, YAML a Markdown dokumentu jsou vykreslení jedné hodnoty, takže se nemohou rozcházet; každé nese hlavičku původu ve formě, kterou jeho kódování dovoluje; index celé sady, docs/generated/artifacts.json, je sám generovaný a čte jej zpět artifacts.list.

Co to znamená

majordomus generate zapisuje typovaný strom. Každý soubor v něm deklaruje čtyři věci: dokument, který promítá, kódování, v němž je zapsán (json, yaml, markdown nebo text, podle vlastní přípony), schéma, které jeho obsah splňuje tam, kde dokument má kontrakt, a zdroj, z něhož byl odvozen. Každý soubor nese hlavičku provenience ve tvaru, který jeho kódování dovoluje, takže člověk, který ho otevře, zjistí, že jde o cache, dřív než ho upraví.

Dokument je jedna hodnota. docs/generated/registry.json a docs/generated/registry.yaml jsou dvě její vykreslení; docs/generated/benchmarks.md, .json a .yaml jsou tři. Nemohou se neshodnout, protože existuje jeden výpočet a několik kodérů — tentýž tvar, jaký tento repozitář vyžaduje od každého jiného rozhraní.

Rejstřík celé sady je docs/generated/artifacts.{json,yaml,md} a je generovaný. Nikde nic neuchovává seznam toho, co je generované: tím seznamem je plán.

Princip

generate::Artifact nese deklaraci a generate::Document nese hodnotu; Document::artifacts vykreslí hodnotu do každého kódování, v němž je dokument commitnut. Kontrakty žijí pod share/schemas/generated/, jedno schéma JSON na dokument, přiřazené mu podle const jeho člena schema — objevování schémat druhů nerekurzuje, takže nic z toho nelze číst jako schéma druhu objektu.

generate::verify zkontroluje celý plán dřív, než se zapíše nebo porovná jediný bajt: deklarované kódování proti příponě, hlavičku proti kódování, dokument proti jeho zveřejněnému kontraktu a manifest proti plánu. generate i generate --check ji spouštějí, takže se nikdy nevytvoří napůl typovaný strom ani se nehlásí jako synchronizovaný.

Tři vlastní kódování manifestu nenesou hash — dokument, který by hashoval sám sebe, by neměl pevný bod — a --check je místo toho porovnává bajt po bajtu, což je silnější tvrzení.

Jak to vidět

apps/majordomus-cli/target/debug/majordomus generate --check   # names each file with its schema, then: in sync
sed -n '1,6p' docs/generated/registry.yaml                     # the banner, then schema/generated/generator
printf '\n' >> docs/generated/registry.yaml
apps/majordomus-cli/target/debug/majordomus generate --check   # exit 10: docs/generated/registry.yaml (differs)
apps/majordomus-cli/target/debug/majordomus generate registry  # both encodings restored, from one value
curl -s localhost:8741/api/v1/artifacts | jq '.tallies'        # the same manifest, reconciled with the tree

docs/generated/artifacts.md je index pro čtenáře; /cockpit/artifacts a /registry/artifacts/ webu jsou týž index jako stránka.

Co nepokrývá

Bootstrapy providerů (AGENTS.md, CLAUDE.md) nesou místo tohoto bannera razítko majordomus update politiky, ze které byly vykresleny: projekce regionu vlastní část souboru, který nenapsala, a hlavička na jeho začátku by byla tvrzením nad textem, který generátor nevlastní. Kopie manifestu na webu nese deklarace bez velikostí a hashů, protože dva subjekty manifestu zapisuje pozdější fáze scripts/derive než ta, která kopii vytváří; hashe se místo toho odpovídají živě. A schéma zde fixuje nejvyšší úroveň a tvar každé položky, místo aby opakovalo typy v Rustu, takže přidání pole do deskriptoru není změnou schématu, zatímco jeho odebrání ano.

Proč existuje

Generátor věděl věci o svém výstupu, které výstup nenesl: některé soubory uváděly, že jsou generované, a jiné ne, jeden jmenoval schéma, které splňuje, a další ne, matice měření výkonu existovala pro čtenáře, ale ne pro program, nic nebylo napsáno v YAML a žádný soubor nikde neříkal, čím generovaná sada byla. Každé z toho je táž vada. project.generated-artifacts-are-typed@1 je pravidlo; apps/majordomus-cli/tests/generated_documents.rs dokazuje každou klauzuli nad skutečným plánem a dokazuje, že každá klauzule, porušená, je odmítnuta; test/cases/52_generated_artifact_typing.sh to dokazuje o commitnutém stromu a čte každé .yaml parserem YAML, který tento repozitář nevlastní.

Detail vykreslený z docs/claims/generated-artifacts-typed.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Každý generovaný artefakt deklaruje dokument, který promítá, kódování, ve kterém je zapsán, schéma, které jeho obsah splňuje, a svůj zdroj, a strukturovaný dokument se zapisuje v každém kódování, ve kterém je commitnut, z jedné hodnoty

    Vytvořeno na Declare once.

  2. 2 · kanonické tvrzení

    generated-artifacts-typeddeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v přečtěte si to na tomto webu · docs/CAPABILITIES.md

  3. 3 · implementace

    apps/majordomus-cli/src/generate.rs

  4. 4 · test a scénáře

    Test: test/cases/52_generated_artifact_typing.sh

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh 52_generated_artifact_typing

Související tvrzení stejná implementace

Prohledává názvy a popisy všech stránek, které tento web publikuje.