Zdůvodnění
Záznam znalosti je tvrzení o repozitáři s důkazy, o které se opírá. Víc než věta v dokumentu ho činí to, že důkazy jsou typovaná reference, kterou lze něčím rozřešit: relace, kterou vrstva drží, úloha, kterou ledger viděl, commit, který git má, soubor, který strom obsahuje. Záznam, jehož reference se nerozřeší na nic, je tvrzení v převleku citace a čtenář o měsíce později ho nerozezná od pravdivého.
Úložiště má dva adresáře a jedno stavové pole a právě pole je odděluje. Kandidát je to, co deriver napsal z ledgeru a gitu; verified je to, co člověk napsal po přečtení důkazů. Kandidát, který si nárokuje verified, přeskočil akt, který tomu slovu dává smysl, a ověřený záznam bez provenience si ponechal slovo a zahodil důkazy. Obojí se odmítá, protože akt povýšení je celý smysl dvou stavů.
Záznam není nikdy konverzace. Nejstarší pravidlo vrstvy je, že přepis není stav, a záznam znalostí je místo, kde je nejlákavější toto pravidlo porušit: shrnutí řečeného se snadno píše a čte se jako znalost. Kontrola, která drží project.never-store-transcripts, se vztahuje na název, popis a tělo záznamu, takže se pravidlo dodržuje mechanicky, ne z paměti.
Požadované chování
Každý záznam znalostí pod candidates/ a curated/ je platný proti knowledge/v1 bez neznámého klíče; id jsou jedinečná napříč oběma adresáři a rovnají se názvu souboru; verified nese provenienci a původ extracted jmenuje důkazy; každý cíl derived_from a relations se vyřeší; superseded jmenuje superseded_by nebo zaznamená své odmítnutí pod # Rejected; žádný záznam pod candidates/ netvrdí verified; žádný titulek, popis ani tělo nenese konverzaci.
Reference se rozřeší tam, kde podle svého typu žije cíl: soubor nebo test ve stromu, relace v úložišti relací nebo ledgeru, úloha či rozhodnutí v ledgeru nebo adresáři stavu, commit v gitu, úkol v sekci projektu, záznam znalosti v kterémkoli adresáři, pravidlo nebo záznam rozhodnutí ve vrstvě. decision:none a task:none se nerozřeší na nic a jsou odmítnuty. Validátor přečte oba adresáře jednou a rozřeší každou referenci jedním průchodem ledgerem a jedním dávkovým dotazem na git; jeho cena roste s úložištěm, ne se součinem záznamů a referencí. Adresář, který neexistuje, nemá žádné záznamy a projde.
majordomus knowledge check je stejná kontrola jako příkaz, takže ji člověk může spustit dřív, než ji spustí check nebo doctor.
Chování při selhání
Porušení je nález FAIL v kategorii knowledge, jeden na každý selhávající záznam s uvedením jeho cesty a toho, co je špatně, a příkaz, který jej našel, skončí s kódem 10. Reprodukce je majordomus knowledge check.
Ověření
Rozhoduje o tom mj_validate_knowledge_integrity, odesílaný z check, doctor. Dokazují to behaviorální případy test/cases/707_knowledge_check_refuses_malformed_records.sh a test/cases/709_knowledge_promotion_is_an_act.sh — první, že kandidát s nárokem na verified, visící odkaz, duplicitní id, neznámý klíč, řádek přepisu a nahrazený záznam bez důvodu jsou každý odmítnuty, druhý, že verified zapisuje pouze akt povýšení s důkazy a že zamítnutí nahrazuje s důvodem — a CI spouští oba.