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.

Webový povrch se objeví od svého producenta a nikdy se neregistruje dvakrát

Webový povrch se objeví od svého producenta a nikdy se neregistruje dvakrát

majordomus://rule/project.web-surface-topology@1aktivní webarchitekturaprojections

odkazuje na něj

Zdůvodnění

Před tímto pravidlem znal repozitář své webové povrchy na tolika místech, kolik měl konzumentů: čtyři prefixy pojmenované jednotlivě v routeru, jeden výstupní adresář v publikačním modelu, třídy cest v modelu kontrol a nic, co by pojmenovalo oba světy. Přicházely dva další povrchy a při přidání postaru by každý stál jednu routu, jednu výstupní cestu, jednu třídu cest, jeden krok kopírování, řádek v tabulce dokumentace a zmínku v nasazovacím workflow. Šest registrací pro jeden adresář HTML je definicí děravé abstrakce a sedmý povrch stojí totéž znovu.

Požadované chování

Statický povrch je adresář pod generovaným kořenem webu s surface.json vedle něj: producent zapíše obojí a tato deklarace je celá registrace. Mount je jediná věc, kterou nelze odvodit — adresář s HTML neříká, zda patří na /tests nebo na /reports/tests — takže jej deklaruje producent a vše ostatní plyne z objevování.

Nic jiného povrch neregistruje. Ne router, který se ptá rozřešené topologie, zda statický povrch vlastní cestu; ne publikace, která skládá podle připojení; ne model kontrol, dokumentace ani seznam kdekoli. Trasa, na kterou odpovídá samotný spustitelný soubor, je popsána v topologii, aby se zachytily kolize, a vyřizuje ji spustitelný soubor, protože tyto trasy se liší chováním, ne daty.

Vlastnictví route se validuje, nikdy se nenechává na pořadí, v němž byly routes přidány. Dva povrchy nesmějí nárokovat jeden mount; povrch nesmí sedět uvnitř podstromu jiného, s výjimkou kořenové aplikace, protože odpovídat na to, co nikdo jiný nenárokuje, je celá její práce; adresář statického povrchu žije pod generovaným kořenem; a požadavek nesmí opustit adresář, z něhož se servíruje.

Generovaný webový kořen je odvozený stav: reprodukovatelný, zahoditelný, nikdy nesledovaný a nikdy nečtený jako zdroj.

Chování při selhání

majordomus web validate hlásí každý nález s povrchem, hodnotou, odkud hodnota pochází, a opravou a při jakékoli chybě skončí kódem 10; kontrola web-topology ji spouští v CI a změna, po níž nelze topologii rozřešit, se nesloučí. Povrch s chybějícím adresářem je nález pod --artifacts, což potřebuje obsluha a publikování, a ne před během producenta, což může validace před sestavením poctivě říci.

Žádný příkaz nerozhoduje, zda povrch má existovat nebo kam patří: to je záměr, člověk jej uvede v producentovi a toto pravidlo jen drží repozitář v tom, aby jej uvedl jednou.

Ověření

test/cases/84_web_surfaces.sh to dokazuje povrchem, pro který nikdo nepsal kód: adresář s deklarací je vypsán, vysvětlen s provenance, validován, volitelný podle deklarovaného id, složen do publikace pod svým mountem a poskytován běžícím spustitelným souborem — a jeho odstranění nezanechá nic. Odmítnutí se dokazují mutací: mount nárokovaný dvakrát, povrch vnořený do podstromu jiného, deklarace s klíčem, který kontrakt nemá. Unit testy apps/majordomus-cli/src/web/ drží model, kompozici a hranici poskytování. ADR 0013 zaznamenává rozhodnutí a co zamítlo.

Odkud to pochází

kanonický soubor
.ai/repo/rules/project/web-surface-topology.v1.md
identity
project.web-surface-topology@1
dostupné také jako
Zdroj MCP majordomus://rule/project.web-surface-topology@1 · majordomus entity show rule/project-web-surface-topology-1 · GET /api/v1/entity?uri=majordomus://rule/project.web-surface-topology@1
v Cockpitu
/cockpit/objects/rule/project-web-surface-topology-1

Tato stránka je generována z výše uvedeného souboru pomocí scripts/generate-site-data; úprava stránky nic nemění, úprava souboru změní všechna rozhraní. Výše uvedené vztahy jsou hrany docs/generated/graph.json, které spustitelný program zapisuje ze stejného indexu.

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