Zdůvodnění
Repozitář už ví, že zastavení pracovníka není rollback: přerušený pracovník zanechá pracovní strom, skutečnou práci v neznámém stavu, jejímž vlastníkem není nikdo. Toto pravidlo říká zachovat ji. Toto říká, co s ní další pracovník udělá, a odpovědí není „začít znovu“, protože začínat znovu je způsob, jak se z jednoho přerušení stanou dva problémy.
Přerušená operace má neznámou polohu na spektru a každý bod na něm je dosažitelný: mohla neudělat nic, udělat půlku, udělat všechno a zemřít, než to oznámila, nebo udělat všechno a úspěšně to nahlásit rodiči, který neposlouchal — přesně to způsobil výpadek terminálového fokusu 2026-09-10, kdy hotové výsledky ležely nespotřebované, zatímco rodič vypadal nečinně. Opakování, které předpokládá první případ, je ve zbylých třech špatně a špatně v nákladném směru: zdvojený commit, soubor zapsaný dvakrát, migrace aplikovaná na databázi, která ji už měla, identifikátor alokovaný podruhé. Vrátit duplikát je těžší než ho nevytvořit.
Právě tady také naivní oprava zaseknutí selže. Když si člověk všimne, že delegát vypadá nečinně, zjevným krokem je spustit ho znovu. Pokud delegát ve skutečnosti skončil, druhý běh je v nejlepším případě čistý odpad a v nejhorším konfliktní druhá kopie práce — a první výsledek tam pořád leží, stále nespotřebovaný, což byla skutečná vada.
Požadované chování
Zjistěte před opakováním. Než zopakujete přerušenou práci, hledejte její účinky: artefakt, který měla vytvořit, stav gitu, výstup buildu a testů, záznam úlohy nebo relace. Opakujte jen to, o čem lze ukázat, že neuspělo.
Nejdřív převezměte, pak spouštějte znovu. Když delegát nebo potomek vypadá nečinně, nejprve zjistěte, zda skončil a zda čeká nepřečtený výsledek ve frontě. Výsledek, který už existuje, se převezme; nepočítá se znovu. Opětovné spuštění přichází poté, co se prokáže, že práce skutečně selhala, ne když jen vypadá tiše.
Pokračuj od posledního deterministického stavu, ne od začátku. Dokončená práce se zachovává. Je to táž disciplína, jakou repozitář už uplatňuje u checkpoint commitu: kdo ho převezme, posoudí každou část a ponechá ji, opraví nebo zamítne, místo aby zahodil strom.
Dávejte přednost obnovitelným a idempotentním operacím už při uspořádání práce, aby otázka, kterou toto pravidlo klade, měla levnou odpověď. Operace, kterou lze bezpečně spustit dvakrát, nepotřebuje forenzní zkoumání; operace, kterou nelze, potřebuje značku, která říká, zda proběhla.
Chování při selhání
Rozhoduje revize a škoda. Nic mechanicky nezjistí, že opakování se chystalo zduplikovat vedlejší efekt; repozitář zjistí a zjišťuje následky — duplicitní identita v indexu je odmítnuta a project.destructive-sweeps-fail-closed řídí polovinu úklidu.
Ověření
Review a jedna spustitelná instance. majordomus recover je toto pravidlo zmechanizované pro úložiště záznamů: zjišťuje, co se už stalo, dříve než cokoli zopakuje — existující záznam epizody je normální výsledek opakovaného běhu i pádu mezi publikací a úklidem a ponechá ho, místo aby zapsal druhý — a test/cases/135_session_store_recovery.sh to dokazuje: spustí každý subjekt dvakrát a ověří, že druhý běh neprovede žádnou akci, a rekonstruuje přerušený běh (záznam zapsán, otevřený soubor stále tam), aby ověřil, že pokračování ponechá, co existuje.
Všude jinde je to posouzení. Důkazy, které má obnova konzultovat, jsou tytéž, jaké repozitář už uchovává: git status a vlastní historie větve, odvozené artefakty, záznamy relací a úloh pod .ai/.