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í.