Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Běh CI se dostane do sledovaného ledgeru přes zaznamenávací větev, nikdy přes běh, který jej vytvořil

Běh CI se dostane do sledovaného ledgeru přes zaznamenávací větev, nikdy přes běh, který jej vytvořil

majordomus://adr/adr-0080navrženo evidencetvrzeníciověření

odkazuje na

odkazuje na něj

Nic ve vrstvě to nejmenuje. Zpětné odkazy se odvozují, takže prázdný seznam je odpověď, ne opomenutí.

80. Běh CI se dostane do sledovaného ledgeru přes záznamovou větev, nikdy přes běh, který jej vytvořil

Kontext

Evidence fabric (ADR 0041) rozhodl, že důkazem tvrzení je zaznamenané provedení. Účetní kniha v .ai/repo/evidence/ledger.json je sledována, majordomus evidence show ji při každém čtení spojuje s docs/CLAIMS.yaml a scripts/evidence-check ratchetuje odpověď.

Změřeno na master na 8d37d011ef: matice drží 176 tvrzení, z nich 161 zaručených. Vazba od tvrzení k testu je úplná — scripts/ci/claim-proof-check --strict prochází, každé zaručené tvrzení jmenuje cestu, kterou běh spouští, a id tvrzení je jmenováno zpět uvnitř testu. Vazba od tvrzení k zaznamenanému provedení úplná není: kniha drží 6 provedení, všechna origin: local, nejnovější z 2026-09-12, a žádné tvrzení v tomto repozitáři není proven. 147 zaručených tvrzení čte not_run a 14 čte stale.

Kontrola je nad tím zelená, protože její ratchet počítá stale jako podporu a nový dluh hlásí, místo aby ho odmítl — obojí záměrně, obojí zdokumentováno v samotném scripts/evidence-check. Zelená je poctivá v tom, co měří, a říká mnohem méně, než za ni čtenář bere.

CI spouští celou sadu při každém mergi do masteru. Vyrábí přesně artefakt, který majordomus evidence record spotřebovává — TSV pod MJ_TEST_REPORT a výstup cargo test — a poté původ zahodí. Nic na masteru ani na žádné otevřené větvi nenese mechanismus, kterým by se provedení původu ci dostalo do sledované knihy. Záznam, který dnes existuje, je člověk, který sadu spustí lokálně a výsledek commitne, což nepřežije pozornost svého autora a při dalším mergi znovu zastará.

Toto rozhodnutí se týká oné jedné chybějící hrany. Záměrně se netýká toho, co znamená proven, což ADR 0041 vyřešil, ani publikace důkazů běhu jako stránky, o čemž se rozhoduje jinde a je to jiný povrch s jinou životností.

Rozhodnutí

Běh zaznamenává; samostatná, minimální změna záznam přistává. Běh nikdy necommituje.

  1. Workflow na trunku — po mergi a podle plánu, aby i klidný týden vytvořil aktuální ledger — spouští sadu a testy cratu přesně jako validační workflow a pak majordomus evidence record --origin ci proti commitu, který spustila.

  2. Jediný výstup toho jobu do repozitáře je .ai/repo/evidence/ledger.json. Otevře pull request z větve pojmenované podle commitu, který zaznamenal, jehož diff je ten jeden soubor, jehož název říká, který commit byl měřen, a jehož tělo nese URL vlastního běhu. Nepushuje do kmene a necommituje uvnitř validačního běhu cizího pull requestu.

  3. Tento pull request podléhá stejným povinným kontrolám jako každý jiný. Nic ohledně důkazů nedostává výjimku z pravidel merge, protože účetní kniha, kterou může zapsat job, který nikdo nerevidoval, je kniha, v níž "outcome": "pass" nestojí nic.

  4. --origin ci je to, co ho odlišuje. Model je už nezávislý na poskytovateli, pokud jde o to, kde běh proběhl, a čtenář tak může odlišit záznam pořízený strojem, který spouští každý případ, od záznamu pořízeného člověkem na notebooku.

  5. Slovo, které runner zapisuje, nese váhu a toto rozhodnutí závisí na tvrzení a-skipped-case-is-not-a-proof: případ, který odmítl běžet, se zaznamenává jako skip a nikdy jako ok. Automatizace záznamu bez této opravy by industrializovala vadu — každý případ závislý na prostředí, který na runneru nemůže běžet, by vstoupil do ledgeru jako důkaz, v kadenci každého merge.

Důsledky

Po mergi do trunku následuje malý, přezkoumatelný pull request, který přesouvá tvrdí z not_run do proven. Repozitář pak může poprvé říct, že pojmenovaná záruka je podpořena pojmenovaným provedením proti pojmenovanému commitu — což je věta, kterou celý subsystém existuje, aby zpřístupnil.

Konečný stav, který docs/EVIDENCE.md už jmenuje, se stane dosažitelným: jakmile je nepodporovaná polovina baseline prázdná, scripts/evidence-check běží s --strict v .ai/repo/ci/gates.yaml a nepodporovaná záruka se odmítne místo hlášení. Do té doby ratchet drží to, co bylo získáno.

Kniha se stává souborem s pravidelným zapisovačem, takže její historie je záznam toho, co tento repozitář dokázal prokázat v čase, a tvrzení, které přestane být prokazováno, je vidět jako diff, ne jako absence.

Stojí to jeden úplný běh sady na každý záznam. To je skutečný reálný čas — poslední plný validační běh na masteru trval asi dvě a půl hodiny — proto je kadence rozhodnutí, které se činí záměrně, a ne „při každém pushi“, a proto je úloha oddělena od té, která rozhoduje, zda se pull request smí sloučit.

Přidává provoz pull requestů do repozitáře, který byl přesně tím už omezován. Zmírněním je, že existuje nejvýše jedna větev záznamu najednou: novější záznam nahrazuje otevřený místo řazení za něj.

Zamítnuté alternativy

Validační běh sám commituje ledger. To je nasnadě ležící tvar a je odmítnut z důvodu, který subsystém důkazů už uvádí: běh pull requestu nemá co zapisovat do repozitáře, který posuzuje, a úloha, která smí commitovat do trunku bez review, je díra pod každou kontrolou, která ho chrání.

Důkazy CI zůstávají artefaktem a publikovanou stránkou a nikdy nevstoupí do ledgeru. To je soudržný postoj — důkaz běhu je artefaktem běhu — a pro čtenáře na webu stačí. Nepřesune ale jediné tvrzení z not_run v evidence show ani v kontrole, takže pod ním se „každé tvrzení je dokázáno“ nikdy nemůže stát trvalou vlastností repozitáře. Toto ADR publikování nepopírá; přidává sledovanou polovinu, kterou publikování neposkytuje.

Člověk zaznamenává lokálně a commituje, jako dnes. Funguje to, vyprodukovalo to šest existujících provedení a před osmi dny to přestalo. Vlastnost, která závisí na tom, že si někdo vzpomene, není vlastnost.

Zaznamenávání po úlohách místo po spuštěních. Rozdělení účetní knihy po úlohách by umožnilo rychlejší přistání částečného spuštění, za cenu knihy složené z provedení proti různým commitům. Zapisovač už částečný report zpracuje správně — nahradí jen testy, které report jmenuje — ale záznam, jehož řádky se neshodují v tom, který strom byl měřen, činí proven bezvýznamným a proven je zde celý produkt.

Migrace

První záznam workflow nepotřebuje a neměl by na něj čekat: plný lokální běh, zaznamenaný a commitnutý, je nejmenší změna, díky níž může tento repozitář o čemkoli říct, že je doloženo, a je dnes na trunku k dispozici. Workflow pak nahradí zvyk, ne ho založí.

scripts/evidence-check --baseline následuje po každém přistání ve vlastním commitu s jeho důvodem, takže ratchet zaznamená novou podporovanou množinu a může odmítnout její ztrátu. Až bude nepodporovaná polovina prázdná, kontrola přejde na --strict a nestriktní report přestane počítat stale jako podporu, aby jeho zelená nikdy neznamenala méně, než říká.

Odkud to pochází

kanonický soubor
.ai/repo/adrs/0080-a-recorded-run-reaches-the-tracked-ledger-through-a-recording-branch.md
identity
adr-0080
dostupné také jako
Zdroj MCP majordomus://adr/adr-0080 · majordomus entity show adr/adr-0080 · GET /api/v1/entity?uri=majordomus://adr/adr-0080
v Cockpitu
/cockpit/objects/adr/adr-0080

Tato stránka je generována z výše uvedeného souboru pomocí scripts/generate-site-data; úprava stránky nic nemění, úprava souboru změní všechna rozhraní. Výše uvedené vztahy jsou hrany docs/generated/graph.json, které spustitelný program zapisuje ze stejného indexu.

Prohledává názvy a popisy všech stránek, které tento web publikuje.