Zdůvodnění
Kompilátor znalostí mění to, co repozitář už uvádí, na uzly a hrany: milník úkolu, specifikaci, implementaci a případ tvrzení, závislost pravidla, odkaz v dokumentu. Každé z těch tvrzení se může rozbít, aniž by se jich kdo dotkl — soubor se smaže, úkol se přečísluje, druhý soubor si nárokuje identitu — a graf, který se rozbije v tichosti, odpoví na dotaz nepřítomností, která se čte jako fakt.
Validace, která existuje dvakrát, se rozchází a druhá kopie je ta, která se přestane spouštět. Proto existuje jeden soudce. Kompilátor vydává každý nález při extrakci; majordomus knowledge validate je klasifikuje a doctor a watch dispatchují toto pravidlo, které se ptá téhož kompilu a téže klasifikace.
Požadované chování
Žádné dva zdroje si nenárokují jedno id uzlu. Každá hrana jmenuje oba konce a soubor, a pokud ho má, i pole nebo řádek, v němž byla pozorována. Každá hrana, kterou Majordomus odvodí ze strukturovaného pole, se vyřeší na uzel, každá cesta, kterou strukturované pole deklaruje, v repozitáři existuje, a každý zdroj, který git sleduje, existuje v pracovním stromu.
Který zlom je vlastní, rozhoduje to, kde byl vztah uveden. Vztah, který Majordomus definuje ze strukturovaného pole — milestone, depends_on, source tvrzení, implementation a test, závislost pravidla — je vlastní a jeho zlom je selhání. Odkaz, který autor napsal v próze, a hrana references z něj převzatá, patří autorovi: může záměrně mířit mimo repozitář, takže cíl, který se nikam nerozliší, se hlásí a nikdy neselže. Cíl v knize nebo gitu pojmenovaný záznamem znalostí je mimo graf a posuzuje jej majordomus.knowledge-integrity.
Žádný generovaný index se neukládá: každé čtení kompiluje checkout z indexu správy verzí, takže není index, který by zastaral, ani uložený hash, který by nesouhlasil, a příkaz to říká při každém běhu. Nic tu nic nepřestavuje ani neopravuje.
Chování při selhání
majordomus knowledge validate vypíše jeden nález na každé přerušení s jeho kódem, zda je vlastněno, sledovaným zdrojem, odkazem autora nebo mezerou v modelu, a příkazem k reprodukci majordomus knowledge validate; skončí 10, když je vlastněný odkaz rozbitý, a nic nezapisuje. Pod doctor je pravidlo doporučující, takže vlastněné přerušení je nález WARN knowledge a doctor také hlásí, zda lze graf v tomto checkoutu vůbec sestavit, přičemž jej zkompiluje do dočasného souboru, který odstraní. Pod watch je každé vlastněné přerušení a každý chybějící sledovaný zdroj DRIFT. Odkazy v próze jsou shrnuty v jednom řádku INFO pod oběma.
Ověření
Rozhoduje o tom mj_validate_knowledge_graph, dispatchovaný z doctor, watch. test/cases/3075_knowledge_validate_judges_the_graph.sh zavádí každou chybu zvlášť — duplicitní id, visící závislost, deklarovanou cestu, která neexistuje, sledovaný zdroj smazaný z pracovního stromu, hranu bez původu, rozbitý odkaz v próze — a dokazuje verdikt příkazu, úrovně doctor a watch, že doctor označí graf za sestavitelný, a že se nic nezapisuje. test/cases/74_knowledge_edges.sh dokazuje vlastní odmítnutí kompilátoru.