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.

Checkout servíruje aktuální trunk a říká, jak daleko od něj je

Checkout servíruje aktuální trunk a říká, jak daleko od něj je

majordomus://rule/project.a-checkout-serves-the-current-trunk@1aktivní gitworktreekoordinaceserverčerstvostagenti

odkazuje na

odkazuje na něj

Nic ve vrstvě to nejmenuje. Zpětné odkazy se odvozují, takže prázdný seznam je odpověď, ne opomenutí.

Zdůvodnění

Dne 2026-10-16 byl primární checkout tohoto repozitáře o 779 commitů za origin/master a obsahovalo necommitnuté změny, které nikdo nedokázal přiřadit. Jeho sdílený server — ten, ke kterému se přes MCP připojuje každá relace připojená k primáru — odpovídal na dotazy k plánu z tohoto stromu, takže přehled čtrnácti „otevřených“ úkolů byl naplánován proti plánu, v němž už bylo třináct z nich hotových. Lokální master, který worktree create poté použil jako základ každé nové větve, byl zpožděn úplně stejně. Každý povrch byl připraven, každá kontrola zelená a nic nikde neříkalo „tento strom není trunk“.

Server, který poskytuje zastaralý strom, není zastaralý server: jeho verze je aktuální, jeho lease platný, jeho peery připojené. Zastaralost je fakt o checkoutu a nebyla v žádném údaji. To je vada, kterou toto pravidlo uzavírá: vzdálenost se měří, uvádí všude, kde se odpověď poskytuje, a posuzuje se proti deklarovanému číslu.

Model spolupráce, který vlastník stanovil 2026-10-16 — vždy aktuální, záchrana před resetem, časté release — je zaznamenán jednou, v ADR 0167 a v pravidle, které jej nese, a ADR 0156 (navržené) jmenuje aktuálnost jako jeden z faktů, s nimiž se relace připojuje ke clusteru. Toto pravidlo není druhým vyjádřením ani jednoho z nich. Je to měření, o které se oba opírají, a kontrola, která znemožňuje přehlédnout zastaralý checkout.

Požadované chování

Vzdálenost se odvozuje, nikdy neuchovává. worktree::trunk::measure počítá pomocí rev-list --count commity vzdáleného trunku, které checkoutu HEAD chybějí (behind), a commity HEAD, které vzdálenému trunku chybějí (ahead), a totéž pro lokální branch trunku. Vzdálený trunk je nakonfigurovaný upstream trunku, jinak remote, jehož HEAD trunk jmenuje, jinak první remote nesoucí branch toho jména. Nic se nefetchuje a nic se nezapisuje: odpověď platí k poslednímu fetch a čas onoho fetch (FETCH_HEAD) je její součástí.

Posuzuje se podle politiky a jen podle politiky. checkout.trunk_distance deklaruje warn_behind a fail_behind. Na prvním prahu nebo za ním je checkout lagging; na druhém nebo za ním stale. Vzdálenost bez deklarovaného prahu je unjudged, trunk bez remote-tracking branche je unmeasured; ani jedno se nikdy nehlásí jako current a žádný čtenář nedodává číslo, které politika nenapsala.

Hlásí se všude, kde se strom servíruje. majordomus worktree trunk (worktree.trunk, majordomus_worktree_trunk) na ni odpoví samostatně a při zastarání skončí s exit 10; majordomus worktree status ji vytiskne a vrátí (trunk_distance); server.status (serve status, majordomus_server, /api/v1/server) ji nese jako trunk; instrukce MCP initialize uvádějí zaostávající, zastaralou nebo neposouzenou vzdálenost ve větě, kterou každý klient čte při každém připojení; doctor ji vykreslí pod clone/trunk.

Zastaralé selhává. Doctor selže na zastaralém checkoutu — a s ním commit hook, který doctor spouští — a varuje u zaostávajícího s příkazy, které ho zaktualizují. Probíhající merge počítá commity, které přináší, takže commit, který zastaralou branch zaktualizuje, se nikdy neodmítne kvůli stromu, který nahrazuje. Lokální trunk repozitáře linked worktree je k posunutí jiného checkoutu, takže se v linked worktree hlásí jako varování (clone/local-trunk) a nikdy nezpůsobí selhání commitů toho worktree.

Aktualizovat bez ztráty čehokoli. Špinavý checkout se před přesunem zachrání: git stash create vytvoří commit nepotvrzeného stavu bez doteku stromu, git update-ref refs/rescue/<checkout>-<timestamp> <sha> jej uchová a nesledované soubory se zkopírují vedle; teprve potom se checkout trunku posune fast-forwardem (nebo resetuje na vzdálený trunk) a feature větev sloučí vzdálený trunk místo přepsání toho, co bylo pushnuto. Typovaný majordomus worktree update, který to dělá a odmítá, dokud v checkoutu stojí proces, je další řez; dokud nepřistane, nápravou, kterou každé čtení jmenuje, je posloupnost, kterou člověk spouští.

Důkaz

  • test/cases/3176_a_checkout_serves_the_current_trunk.sh: fixture remote předběhl svůj klon; worktree status hlásí přesné vzdálenosti pro checkout a lokální trunk, posouzené stale a po fast-forwardu current; doctor hlásí FAIL clone/trunk, dokud je zastaralý, a projde, jakmile je aktuální; probíhající merge se počítá jako přítomný; klon bez remote je unmeasured.
  • Jednotkové testy apps/majordomus-cli/src/worktree/trunk.rs a doctesty judge, TrunkThresholds a CheckoutPolicy drží každou větev posouzení.

Odkud to pochází

kanonický soubor
.ai/repo/rules/project/a-checkout-serves-the-current-trunk.v1.md
identity
project.a-checkout-serves-the-current-trunk@1
dostupné také jako
Zdroj MCP majordomus://rule/project.a-checkout-serves-the-current-trunk@1 · majordomus entity show rule/project-a-checkout-serves-the-current-trunk-1 · GET /api/v1/entity?uri=majordomus://rule/project.a-checkout-serves-the-current-trunk@1
v Cockpitu
/cockpit/objects/rule/project-a-checkout-serves-the-current-trunk-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.