Zapsat záznam pokračování jen pro připisování.
Rozlišení záznamu — výběr, který dřívější záznam se týká práce probíhající zde — je stejné pravidlo pro předávky, checkpointy i context: stejný worktree a větev, jinak stejná větev, jinak nic.
Vstup: sepsané tělo na stdin. Povinné sekce jsou handover.required_sections politiky jako nadpisy první úrovně, každá s neprázdným obsahem; zástupné znaky šablony ve špičatých závorkách se počítají jako prázdné. Volitelné: # Completed, # Decisions, # Verification, # Risks, # Open Work.
--derive sestaví tělo místo čtení ze stdin, a to ze záznamu úlohy, ledgeru, gitu, otevřených otázek a nejnovějšího checkpointu — každý z nich je již zapsaný, zvalidovaný a ověřený na identitu. Nevolá žádný model ani nedělá síťový požadavek, a proto ho může bezpečně spouštět hook poskytovatele: odvozené tělo může být chybné jen tehdy, je-li chybný některý záznam, který čte, a každý z nich má vlastní kontrolu. Povinné sekce politiky se vypisují v pořadí politiky; povinnou sekci, kterou tento generátor nedokáže naplnit, odmítne podle jména, místo aby ji zapsal prázdnou, protože prázdná sekce projde kontrolou sekcí a dalšímu workerovi nic neřekne. Ručně napsané tělo stále řekne víc než odvozené a --derive existuje proto, aby nepřítomnost někoho, kdo chce psát, už neznamenala nepřítomnost záznamu.
Zapisuje: jeden nový soubor state/handovers/<utc-ts>--<branch-key>--<short-head>--<rand>.md, režim 0600, vytvořený atomicky (dočasný soubor, pak pevný odkaz; při kolizi opakování s novou náhodnou příponou). Front matter se počítá z gitu a z current.yaml; tělo, které se pokouší nastavit pole identity, se odmítne.
Nikdy nestaguje, necommituje ani neupravuje žádný jiný soubor než checkpoint_at záznamu úlohy. Připojí task.handed_over do ledgeru. Vypíše cestu.
--close navíc nastaví výsledek úlohy na handed_over, aby mohla v tomto checkoutu start nová úloha; starý záznam se tím start archivuje. Bez --close zůstává úloha aktivní, aby v ní pokračovala další relace.
Událost SessionEnd poskytovatele spustí --derive --close, nebo --derive --no-task, když záznam úlohy neexistuje, aby epizoda, která skončí, zanechala záznam pokračování, a ne jen obálku toho, co vytvořila. Oba odpovídají na různé otázky: záznam relace indexuje epizodu a předávka je to, z čeho další worker pokračuje. Neptá se, zda je úloha aktivní — do ADR 0052 se ptala a repozitář, jehož poslední úloha byla předána, přestal na šest dní zapisovat jediný záznam, z něhož by budoucí worker pokračoval, zatímco všechny kontroly zdraví procházely.
Odmítne (10), pokud povinná sekce chybí nebo je prázdná, nebo pokud tělo obsahuje pole identity. Odmítne (12) bez aktivní úlohy, pokud není --no-task.
Resolve: majordomus handover --resolve najde nejrelevantnější dřívější předávku pro aktuální worktree a branch: nejprve stejný worktree a branch, pak stejná branch, nikdy záloha v rámci celého repozitáře. Vypíše štítek stavu gitu a tělo. Žádný kandidát je běžný výsledek a skončí s kódem 0 s No relevant handover. --path vypíše jen cestu, pro skriptování; --no-task rozřeší i bez aktivní úlohy.