Co to znamená
Když se člověk na konci relace ptá, zda je vše hotovo, zda nebyl přidán dluh a zda není víc větví, worktrees a pull requestů než na začátku, odpovědí je čtení, které nástroj provede. Worker hlásí toto čtení. Neodpovídá z toho, co si pamatuje, že dělal, a otázka, kterou nic nemohlo přečíst, je unknown.
Princip
Invariant hotovo (apps/majordomus-cli/src/gates/done.rs) nese tři závěrečné otázky a apps/majordomus-cli/src/gates/closing.rs pro každou bere jedno čtení, měřené od místa, kde úloha začala:
no-new-debtpočítá záznamy každého.ai/repo/*-baseline.txtna commitu, kde úloha začala, a v pracovním stromu. Základní stav, který získal záznam, činí otázkufail, commitnutý či nikoli; ten, který se objeví poprvé, je jmenován a není růstem.nothing-accumulatedčte první řádek reflogu každé lokální větve a refloguHEADkaždého propojeného worktree, což je okamžik, kdy to git vytvořil. Co bylo vytvořeno od začátku úlohy a stále existuje, činí otázkuqueueda je jmenováno.backlog-not-grownčte zaznamenané pozorování forge a očísluje pull requesty otevřené od zahájení úlohy, které jsou stále otevřené.
Každé čtení je samostatný výsledek. Jedno, které selže, nestrhne ostatní a jeho otázka říká, proč je unknown.
Jak to vidět
majordomus check jmenuje každou otázku invariantu, která není zodpovězena, jako id=status na svém řádku done; důkazy za každou jsou v questions z gates.completion, stejně přes příkazový řádek, HTTP, MCP i Cockpit.
test/cases/1037_the_closing_question_is_measured.sh přidá položku do baseline a uvidí fail s čísly, vytvoří branch a worktree a uvidí je dlužné a pojmenované, dokud obojí nezmizí, a rozbije startovní commit úlohy, aby viděl unknown tam, kde by průchod byl lží.
Co nepokrývá
Neříká, že je méně větví, worktrees nebo pull requestů než na začátku: co se mezitím odstranilo, nezanechá záznam, takže údaje jmenují, co přibylo a co zůstává, s aktuálními součty. Neříká, kdo větev vytvořil, protože git to neví; údaje jsou údaji repozitáře. Nic neodstraňuje a neodmítá žádný finish. Údaj o backlogu je tak starý jako poslední majordomus prs refresh a říká, kdy to bylo.
Dvě měření jsou hrubší než otázka. Dluh se počítá v položkách, takže jedna odebraná a jedna přidaná položka se jeví jako beze změny; vidět je jen růst. A větev nebo worktree se datuje prvním řádkem, který jeho reflog ještě drží, takže ta, jejíž starší záznamy git už expiroval — třicet dní u commitů, které přepis nechal nedosažitelné — vypadá mladší, než je, a může být označena za vytvořenou od zahájení úlohy, ačkoli nebyla. Obojí chybuje směrem k novému dotazu, nikdy k průchodu, který nebyl zasloužen.
Proč existuje
Dne 2026-10-10 byla jedné relaci položena závěrečná otázka sedmkrát a sedmkrát odpověděla z paměti, pokaždé popisujíc jen to, čeho se sama dotkla. Změřeno při osmé, repozitář měl o tři otevřené pull requesty a dvacet jedna worktrees víc, než odpovědi naznačovaly. Paměť workera drží to, co worker udělal, a worker je jedinou stranou s důvodem zaokrouhlovat nahoru (project.a-closing-question-is-answered-by-measurement).