Zdůvodnění
Prismatic je dřívější řešení, ne infrastruktura. project.clean-room drží svůj slovník mimo to, co se zde píše; toto pravidlo drží jeho kód, služby a topologii mimo to, co běží. Nástroj, který dohlíží na jiné repozitáře, nemůže potřebovat jeden konkrétní z nich k sestavení, spuštění či nasazení a závislost, která existuje jen na autorově stroji, objeví první člověk, který ji nemá.
Požadované chování
Majordomus nikdy nezávisí na Prismatic při kompilaci, za běhu, při nasazení ani provozně. Nic z toho není dovoleno:
- import z modulu nebo aplikace Prismatic,
- závislost na balíčku, repozitáři nebo cestě na projekt Prismatic,
- git submodul ukazující na jeden,
- úložiště nebo stav runtime sdílený s jedním z nich,
- volání vnitřního nebo nezdokumentovaného rozhraní Prismatic,
- požadavek, aby běžela služba Prismatic,
- topologie nasazení, která předpokládá, že Prismatic existuje.
Prismatic nápad tu může být stále užitečný — vzor, algoritmus, stavový model, poučení. Vstupuje portováním, v tomto pořadí:
- pojmenovat požadavek Majordomus, na který odpovídá,
- pojmenujte invariantu, kterou originál zachovával,
- oddělit tento invariant od předpokladů prostředí, z něhož pochází,
- rozhodnout, zda to vůbec patří do Majordomus,
- navrhnout pro něj rozhraní nativní pro Majordomus,
- přenést nebo znovu implementovat minimum, které potřebuje,
- doložit to testy v tomto repozitáři,
- zdokumentujte to v tomto repozitáři,
- potvrďte, že nezůstal žádný odkaz zpět,
- se výsledek vlastní jako jakýkoli jiný kód zde.
Návrhový dokument smí zaznamenat původ — „inspirováno modelem relací Prismatic, implementováno nezávisle“ — protože původ je historie, ne závislost.
Chování při selhání
Změna, která zavádí závislost, je odmítnuta. scripts/ci/prismatic-independence-check skončí s kódem 10 a jmenuje soubor a řádek; kontrola prismatic-independence ho spouští v každém plánu CI.
Ověření
scripts/ci/prismatic-independence-check rozhoduje tu část tohoto pravidla, kterou strom dokáže ukázat: žádný záznam .gitmodules a žádný gitlink jmenující projekt Prismatic a žádný odkaz na něj na površích, které nástroj sestavují, spouštějí nebo nasazují — bin/, lib/, share/, apps/, scripts/, hooky, workflow, manifesty závislostí a lock soubory a konfigurace klientů a nasazení. Vlastní název projektu, Prismatic Majordomus v jakékoli podobě zápisu, odkazem není. test/cases/569_independent_of_prismatic.sh dokazuje kontrolu mutací.
Kontrola je záměrně částečná a říká to. Nevidí službu dosaženou přes hostname, který nic nejmenuje, dokument, který člověku říká, aby ji spustil, ani port, který zkopíroval kód bez přepracování. Výstupní test pro ně je čtenářův: někdo bez přístupu k Prismatic dokáže sestavit Majordomus, spustit jeho testy, pochopit jeho kontrakty z jeho vlastních dokumentů, provozovat funkci a změnit ji bez konzultace s Prismatic.