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.

Žádné razítko plánu bez své události

Žádné razítko plánu bez své události

majordomus://rule/project.no-plan-stamp-without-its-event@1aktivní planživotní cykluseventsintegrita

odkazuje na něj

Zdůvodnění

Plán odvozuje stav úkolu z jeho záznamu: started_at, verified_at, completed_at a položek důkazů. plan.transition a majordomus plan start|verify|done jsou střežená hranice — READY před startem, started před done, žádná otevřená závislost, úplné důkazy — a každý připojí do ledgeru událost plan_start, plan_verify nebo plan_done. Do tohoto pravidla nic nevázalo razítko na událost. Worker, který do YAML napsal completed_at a položku důkazů, dostal úkol DONE bez přechodu, bez ochrany a bez události, plan validate skončil s 0 a každý povrch — množina připravených, plán rozvoje, projekce GitHub, web — ho hlásil jako dokončený.

Kniha záznamů nemůže být důkazem, který kontrola čte: .ai/local/state/ledger.jsonl je lokální pro checkout a nikdy se nesleduje, takže klon, druhý worktree i CI začínají bez ní. Důkaz musí cestovat se záznamem. ADR 0097 tuto volbu zaznamenává: přechod zapíše pečeť — sha256 události, úkolu a razítka — do záznamu v tomtéž zápisu jako razítko a oba enginy odmítnou razítko, jehož pečeť chybí nebo nesouhlasí.

Požadované chování

  • Razítko zapisuje jen přechod, který zapíše razítko, jeho pečeť (started_event, verified_event, completed_event) a updated_at a pak připojí událost. Shellový engine a engine v Rustu zapisují stejné bajty.
  • Razítko bez odpovídající pečeti nemá žádný vliv na odvozený stav a hlásí se jako stamp_without_event, FAIL pojmenovávající úkol, razítko a chybějící událost. majordomus plan validate na něj skončí kódem 10 a scripts/ci/core-check, který běží v každém plánu CI, spouští plan validate.
  • done se odmítne, pokud úkol není ACTIVE nebo VERIFY: úkol READY, BLOCKED, CANCELLED nebo DONE nelze přechodem dokončit také.
  • unsealed_stamps v záznamu úkolu jmenuje razítka tohoto záznamu zapsaná dříve, než pečetě existovaly (<field> <stamp>). Smí se zmenšovat a nikdy se do něj nepřidává. Položka omlouvá jen přesné razítko, které jmenuje, a jen takové, které je starší než SEALED_FROM; razítko zapsané v tomto okamžiku nebo po něm potřebuje svou pečeť, ať seznam říká cokoli.

Chování při selhání

plan validate vypíše jedno FAIL pro každé nedoložené razítko a skončí s 10; odvozený stav razítko ignoruje, takže padělané DONE se čte jako cokoli říkají jeho doložená razítka. Nápravou je přechod: majordomus plan start <id> na úkolu, který padělané started_at nechalo READY, přepíše razítko s jeho pečetí. Padělané completed_at se odstraní, ručně se nepečetí.

Omezení

Pečeť je otisk veřejných hodnot, ne podpis. Mění „razítko, které nikdo nepřevedl“ z neviditelného na pojmenované selhání a falšování se stává záměrným aktem — výpočtem otisku — který je v diffu vidět jako řádek pečeti, který nezapsal žádný přechod. Nedokazuje, a bez klíče nemůže, že ji spočítal nástroj.

Ověření

bash test/run.sh 581_no_plan_stamp_without_its_event
bash test/run.sh 582_the_done_guard_holds_in_both_engines
majordomus plan validate

Odkud to pochází

kanonický soubor
.ai/repo/rules/project/no-plan-stamp-without-its-event.v1.md
identity
project.no-plan-stamp-without-its-event@1
dostupné také jako
Zdroj MCP majordomus://rule/project.no-plan-stamp-without-its-event@1 · majordomus entity show rule/project-no-plan-stamp-without-its-event-1 · GET /api/v1/entity?uri=majordomus://rule/project.no-plan-stamp-without-its-event@1
v Cockpitu
/cockpit/objects/rule/project-no-plan-stamp-without-its-event-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.