Zdůvodnění
Epizoda zaznamenává rozhodnutí, řeší otázky a dokončuje úlohy a každé z toho je typovaný řádek v hlavní knize jednoho stroje. Hlavní kniha má omezenou retenci a je lokální; úložiště rozhodnutí je lokální; poznámka, kterou zanechá zablokovaná úloha, je lokální. Každé z toho je důkaz o něčem pravdivém o repozitáři a každé z toho je nedosažitelné ze sledovaného stromu, z každého jiného checkoutu a z každého povrchu, který registr živí. Druh knowledge existuje právě proto, aby to držel, a do tohoto pravidla do něj nic nezapisovalo v okamžiku, kdy měly důkazy přestat být dosažitelné.
Zapisovač, který existuje, není zapisovač, který běží. majordomus.lifecycle-observed bylo napsáno po týdnu, kdy procházela každá kontrola zdraví, zatímco se nezapisoval žádný kontrolní bod ani předávka, protože dosažitelnost byla otázka, kterou kladla každá kontrola, a běh otázka, kterou nekladla žádná. Stejný tvar platí zde s jedním dalším způsobem selhání: odvození je krok uvnitř uzavření a cesta uzavření, která jej přeskočí, nebo přepínač politiky, o jehož vypnutí nikdo nevěděl, produkuje uzavřené epizody a žádné znalosti, navždy, s dokonale utvořenými záznamy.
Úsudek se dělá ze dvou faktů, která nevlastnila žádná jednotlivá kontrola: že se epizody uzavírají a že za nimi následují odvození. Řádek session.closed, jehož epizodu nejmenuje žádný řádek knowledge.derived, je tvar tohoto výpadku v ledgeru a odlišit ho od repozitáře, který je jen nečinný, lze až tehdy, když je uzavření starší než práh čerstvosti, podle něhož se už předávka posuzuje.
Požadované chování
Dokud se epizody uzavírají, musí po každé uzavřené epizodě následovat odvození znalostí. Nejnovější řádek session.closed musí pojmenovat epizodu, kterou pojmenovává řádek knowledge.derived, nebo být mladší než session.freshness.stale_minutes; a dokud je session.knowledge_on_end zapnuto, zdroj životního cyklu, který epizodu uzavírá, musí volat deriver, což validátor čte ze zdroje tak, jako se čte zapojení doktríny.
Práh je session.freshness.stale_minutes v politice a čte se, nikdy neopakuje. Checkout, v jehož účetní knize nevzniká žádný řádek knowledge.derived, se neposuzuje a validátor to hlásí jako přeskočení: v den příchodu deriveru má každý checkout uzavřené epizody a žádný odvozené a nález, který je všude červený najednou, je nález, který nikdo nečte. První odvození na checkoutu přeskočení ukončí. Repozitář bez řádku session.closed nemá žádné epizody k posouzení a projde. session.knowledge_on_end: false je záměrná volba a hlásí se jako přeskočení, ne jako selhání.
Validátor pojmenovává epizodu; neodvozuje. Náprava následuje fix: v nálezu a je to příkaz, který člověk spustí: majordomus knowledge derive --episode <id>.
Chování při selhání
Porušení je nález FAIL v kategorii knowledge a příkaz, který jej našel, skončí kódem 10. Pod watch se totéž porušení hlásí jako drift a příkaz skončí kódem 11. Reprodukce nálezu je jen pro čtení: majordomus history --event session.closed a majordomus history --event knowledge.derived ukazují dva fakty, které úsudek porovnával.
Ověření
mj_validate_knowledge_lifecycle to rozhoduje, dispatchováno z doctor, watch. Behaviorální případy test/cases/563_knowledge_is_derived_at_the_boundary.sh, test/cases/565_knowledge_switch_and_failure_leave_evidence.sh a test/cases/708_health_sees_a_stopped_knowledge_writer.sh to dokazují — první, že události konce a compaction providera derivují, ať je úloha aktivní, nebo ne, druhý, že vypnutý přepínač i selhávající derivace nechají důkaz a providera nikdy neblokují, třetí, že zdraví zčervená, když zapisovatel přestane, a vyčistí se, když je derivace zapsána, a že zdroj životního cyklu s odstraněným voláním je jmenován — a CI spouští všechny tři.