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.

Program, který zapisuje do checkoutu, říká, co zapsal, a kdo měří strom, čte to

Program, který zapisuje do checkoutu, říká, co zapsal, a kdo měří strom, čte to

majordomus://rule/project.a-producer-declares-what-it-writes@1aktivní evidenceciworking-treeměř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í.

Zdůvodnění

CI zaznamenává důkazy spolu se stromem, ve kterém byly změřeny, a důkaz ze špinavého stromu o commitu nic nedokazuje (ADR 0087). Job rust změřil svůj strom poté, co proběhl scripts/rust-check, s vyloučením dvou výstupů, které tento běh jmenuje: souboru časování a adresáře artefaktů. Měřicí krok obě cesty zapsal sám, pod adresář crate, s úvahou, že skript přechází do crate dřív, než zapisuje.

Dělá, pro adresář artefaktů. Soubor s časováním řeší dříve, vůči adresáři, v němž volající stál, takže soubor skončí v kořeni checkoutu. Krok vyloučil cestu, kde nic nebylo, započítal vlastní časování běhu jako špínu a každá větev každého běhu měřila dirty — na masteru, na každém pull requestu, po celý týden, se všemi joby zelenými. Web nemohl publikovat žádné důkazy jako aktuální a úkol, který žádal o čisté změřené stromy, nemohl být uzavřen.

Nikdo nenapsal nic nedbale. Dvě místa každé vědělo, kam jeden program zapisuje, a jedno z nich se mýlilo o řádku, který se mezitím posunul. Seznam vedený vedle svého čtenáře zastarává stejně jako číslo vedené vedle svého zdroje, což je selhání, které pojmenovává project.derived-once.

Požadované chování

  • Program, který během měřeného běhu zapisuje uvnitř checkoutu, tyto cesty deklaruje sám, v místě, kde je rozlišuje, relativně ke kořeni checkoutu, jednu na řádek. scripts/rust-check to dělá do souboru, který pojmenovává MJ_RUST_OUTPUTS, dřív než cokoli jiného běží, takže běh, který selže, přesto řekl, co po sobě mohl zanechat.
  • Deklarace je zapsána mimo checkout. Seznam uvnitř stromu by byl další cestou k vyloučení.
  • Krok, který měří strom, sestaví své výjimky z této deklarace a z ničeho jiného a stejné cesty zaznamená jako excluded v měření, které předá dál.
  • Cesta, kterou producent rozliší mimo checkout, není deklarována: nic tam nemůže strom zašpinit.
  • Běh, který nezanechal deklaraci, nevylučuje nic. Cokoli zapsal, je pak špína, což je konzervativní čtení.

Chování při selhání

test/cases/357_ci_records_evidence.sh selže, když měřicí krok jobu rust nese vlastní vyloučení, když krok, který spouští scripts/rust-check, nezapíše deklaraci, kterou měřicí krok čte, když skript jmenuje pro vlastní argumenty workflow cokoli jiného než své dva výstupy a když krok, spuštěný doopravdy ve fixture checkoutu, který drží přesně tyto výstupy, naměří cokoli jiného než clean. Tentýž případ vyžaduje, aby jeden další soubor měřil dirty a aby seznam, který krok dříve nesl, měřil dirty — takže případ selže, jakmile měření přestane odlišovat vlastní výstup běhu od nečistoty.

Co nezachytí, řečeno výslovně, nikoli naznačeno: producent, který zapíše cestu, již nedeklaruje, měří dirty, což je správně a hlásí to běh, ne tento případ; a job sady stále jmenuje svůj jediný výstup, report, v kroku, který jej vylučuje, protože jméno je hodnotou prostředí téhož jobu a nikde jinde se nerozřeší.

Ověření

bash test/run.sh 357_ci_records_evidence

V běhu validate pull requestu nese manifest artefaktu evidence záznam "working_tree": "clean" pro producenta crate, kde excluded jmenuje timings.tsv a apps/majordomus-cli/dist.

Odkud to pochází

kanonický soubor
.ai/repo/rules/project/a-producer-declares-what-it-writes.v1.md
identity
project.a-producer-declares-what-it-writes@1
dostupné také jako
Zdroj MCP majordomus://rule/project.a-producer-declares-what-it-writes@1 · majordomus entity show rule/project-a-producer-declares-what-it-writes-1 · GET /api/v1/entity?uri=majordomus://rule/project.a-producer-declares-what-it-writes@1
v Cockpitu
/cockpit/objects/rule/project-a-producer-declares-what-it-writes-1

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.