Okamžik
Úloha trvala dlouho, relace skončila a další začíná stejným odstavcem, který jste včera psali: které soubory záleží, co se rozhodlo, co zůstává otevřené. O patnáct minut později je worker tam, kde byl ten předchozí — pokud jste si vzpomněli na všechno.
Proč k tomu dochází
Konverzace byla databáze. Vše, co worker zjistil, žilo v přepisu, který další relace nemůže číst, takže jediný způsob přenosu je znovu ho předat, ručně, z paměti. Dlouhé přepisy to zhoršují: stav tam někde je, zředěný vším, na čem nezáleželo.
Prostředí, z nichž byl tento nástroj destilován, měla adresář poznámek z relací, který vyrostl na deset gigabajtů, a ručně psaný runbook pro obnovení pracovního stavu po skončení relace. Poznámky měly v názvech souborů data, která nesouhlasila s obsahem, a nic neověřovalo ani jedno proti gitu.
Proč to lepší model nevyřeší
Model s větším oknem stále začíná prázdný. Limitem není, kolik unese, ale zda existuje cokoli trvalého, co mu podat: relace, která začíná bez stavu, nemá co načíst, ať by toho načíst uměla kolik chce. Lepší modely činí opětovné vysvětlování rychlejším k napsání a o nic méně nutným.
Co to stojí
Patnáct až čtyřicet minut na začátku každé relace, které platí nejdražší člověk na projektu ve chvíli, kdy na to má nejméně trpělivosti. Druhá cena je horší: opětovné předání je z paměti, tedy ztrátové, a vypadnou části, na které nikdo nepomyslel jako na omezení — a přesně tak vzniká další závada.
Co Majordomus dělá
Trvalá fakta úlohy žijí mimo každou konverzaci v hrstce typovaných souborů. Když relace skončí, majordomus handover zapíše záznam jen k připojování, jehož identitní pole — větev, head, pracovní strom, změněné soubory — se počítají z gitu, nikdy je nepíše worker. Tělo musí nést # Objective, # Current State a # Next Action, každé neprázdné, jinak je záznam odmítnut.
Další relace spustí majordomus handover --resolve. Vybere nejrelevantnější záznam pro tento worktree a větev, nikdy ne „nejnovější poznámku“ celého repozitáře, a označí, jak daleko se git od té doby posunul: exact, advanced, diverged nebo different_context. Zastaralý stav se pojmenuje, nedůvěřuje se mu tiše. majordomus check --explain vytiskne efektivní politiku a profil, aby worker načetl to, co úloha potřebuje, a nic víc.
Před a po
before session 2: "so, this repository is an umbrella of ..." (15 min, from memory)
after session 1: majordomus handover # Objective / Current State / Next Action
session 2: majordomus handover --resolve
resolved t-20260903193012-a4f1 advanced (+3 commits)Jak to ověřit
Ukončete relaci předávkou a začněte další na téže větvi. Záznam se vrátí s označením divergence vypočteným z gitu, ne tvrzeným; posuňte větev a označení se změní, aniž by někdo upravil záznam.
Co nedělá
Nesumarizuje přepisy a odmítá je ukládat. Nerozhoduje, co stojí za zapamatování; worker píše tři povinné sekce. Nezapojuje se do runtime workera: worker spouští handover, protože mu to říkají jeho generované instrukce.