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.

Datová sada, ze které se web vykresluje, nese jen pole, která jmenuje povolený seznam, takže próza funkce, strojová cesta nebo pole, které nikdo nepovolil, se nemůže dostat na publikovanou stránku

site/data/registry/product.json není serializovaný model produktu. Je to pole po poli

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

Hranicí je kopie pole po poli přes PUBLIC_FEATURE_FIELDS, ne vyloučení, na které by se dalo zapomenout: pole přidané do modelu na webu chybí, dokud ho někdo nepojmenuje. Test ověřuje, že tam není klíč mimo allowlist, žádné tělo, žádný kořen fixture ani dočasná cesta; scripts/generate-site-data artefakt odmítne ještě jednou, než z něj cokoli vykreslí.

Co to znamená

site/data/registry/product.json není serializovaný produktový model. Je to kopie pole po poli přes povolený seznam, takže Markdown tělo funkce, absolutní cesta, lokální uživatelské jméno ani pole, které nikdo nejmenoval, se nemůže dostat na publikovanou stránku. Pole přidané do modelu na webu chybí, dokud ho někdo nepřidá do onoho seznamu.

Princip

PUBLIC_FEATURE_FIELDS v apps/majordomus-cli/src/site.rs jmenuje každé pole, které veřejná funkce smí nést, a generátor kopíruje podle jména, ne vylučuje podle atributu: náhodné vyloučení není hranice a skip_serializing, na které někdo zapomene, je právě režim selhání, který tento tvar odstraňuje. body funkce záměrně chybí — próza, kterou web vykresluje, se čte z vlastního souboru funkce generátorem webu na cestě, kterou dataset jmenuje, a nepřenáší se přes dataset.

scripts/generate-site-data odmítne artefakt znovu dříve, než z něj cokoli vykreslí: datová sada, která není majordomus-site-product/v1, nevalidní, nese tělo funkce nebo strojovou cestu, shodí generování.

Jak to vidět

majordomus generate site
jq '.features[0] | keys' site/data/registry/product.json
grep -c '"body"' site/data/registry/product.json          # 0
cargo test -p majordomus-cli --test product

Test sestaví dataset nad fixture repozitářem, jehož kořenem je dočasný adresář, a ověří, že byl každý klíč povolen, že žádná funkce nenese tělo, že kořen fixture ani /tmp/ nikde nevystupují, že telemetrie se rovná vlastním počtům registru a indexu, že publikované schéma dokument validuje a že dva běhy jsou bajt po bajtu shodné.

Co nepokrývá

Allow-list rozhoduje, jaký tvar smí být publikován, ne zda je konkrétní hodnota citlivá. Pole uvedené v seznamu nese, cokoli do něj model vložil, takže pole, které by mohlo obsahovat tajemství, se nesmí přidat — což z seznamu činí bod revize.

Proč existuje

Veřejná stránka odvozená z vnitřností repozitáře je hranice projekce a hranice, která funguje vynecháváním, selže poprvé, když někdo přidá pole. Pojmenování toho, co smí přejít, obrací výchozí stav: bezpečný výsledek je to, co se stane, když na to nikdo nemyslí.

Detail vykreslený z docs/claims/product-projection-public-safe.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Datová sada, ze které se web vykresluje, nese jen pole, která jmenuje povolený seznam, takže próza funkce, strojová cesta nebo pole, které nikdo nepovolil, se nemůže dostat na publikovanou stránku

    Žádná funkce ani odpovědnost v README ji nepojmenovává; tato stránka je místo, kde je uvedena.

  2. 2 · kanonické tvrzení

    product-projection-public-safedeklarovaný stav: zaručeno v docs/CLAIMS.yaml

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

  3. 3 · implementace

    apps/majordomus-cli/src/site.rs

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

    Test: apps/majordomus-cli/tests/product.rs

  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 apps/majordomus-cli/tests/product.rs

Související tvrzení stejná implementace

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