Zdůvodnění
Sekce, kterou toto pravidlo řídí, začala jako deset ručně psaných stránek s parserem v bashi za nimi a fungovala přesně tak dlouho, dokud bylo deset tím správným číslem. Režim selhání takového tvaru není v tom, že se rozbije; je v tom, že jedenáctý záznam stojí stránku, datový soubor, seznam šablon, položku navigace a zpětný odkaz jinde, takže jedenáctý záznam nikdo nenapíše. Katalog, který nikdo nerozšiřuje, je katalog, který přestává popisovat produkt.
Stejný argument, který dělá ze schopnosti jednu deklaraci s mnoha projekcemi (project.interfaces-are-projections), platí i zde ze stejného důvodu: okamžiky čte člověk na stránce, worker přes MCP, skript přes HTTP a generátor webu, a čtyři čtení jednoho souboru jsou čtyři příležitosti k nesouladu.
Požadované chování
Provozní moment, publikum a provozní oblast jsou každé jeden soubor Markdown pod sekcí why vrstvy, s front matter deklarujícím podporovanou verzi schema:. Front matter je strojový kontrakt: objevování, validace, členství, vztahy, filtrování, řazení, vyhledávání, příkazový řádek, trasy HTTP, dokument OpenAPI, MCP, odvozený graf, stránky webu i diagnóza se čtou z něj a žádná projekce neodvozuje strukturu z prózy.
Přidání platného souboru je celý akt přidání položky. Nic nesmí vyžadovat druhou úpravu: ani seznam v Rustu, konstantu v JavaScriptu, navigační soubor, seznam šablon, registr transportu, dokument schématu nebo generovaný index.
Členství a každá opačná relace se odvozují. Publikum nevypisuje své okamžiky, tvrzení nevypisuje okamžiky, které na něj odpovídají, a okamžik nenese vlastní trasu, cestu API, počet ani okamžiky, které ho jmenují. Odvozená hodnota zapsaná do zdrojového souboru je porušením tohoto pravidla, i když je v den zápisu správná.
Každý odkaz, který záznam činí, je typovaný a vyřeší se proti tomu, co jmenuje — samotný katalog, registr příkazů, registr schopností, tvrzení, efektivní sada pravidel, případy užití — a nevyřešený název je chyba s nabídnutým nejbližším kandidátem, nikdy odkaz na stránku, která neexistuje.
Chování při selhání
majordomus why validate skončí kódem 10 a pojmenuje každé zjištění s jeho souborem, klíčem front matteru a u nevyřešeného odkazu nejbližším kandidátem. Generátor webu odmítne vykreslit katalog, který neprojde validací, a scripts/site-check odmítne projekci, kterou okamžik nevytvořil nebo která neodkazuje zpět. Žádný příkaz nerozhoduje, zda nová projekce začala registrovat záznamy ručně; rozhoduje recenzent a níže uvedený behaviorální případ dokazuje invariant, který činí odpověď ověřitelnou.
Ověření
majordomus why validate a bash test/run.sh 98_why_catalogue, který přidá jeden soubor, najde ho v doménovém indexu, příkazovém řádku, HTTP API, MCP i projekci webu bez další změny, pak ho odstraní a zjistí, že ze všeho zmizel.