167. Práce se pohybuje přes role na mesh, přistává v kombinovaných topech a každý checkout je udržován aktuální
Kontext
ADR 0101 učinilo z integrace jeden typovaný subsystém, který přistává jeden pull request na jeden běh požadované kontroly, a mezi zamítnutými alternativami uvedlo dávky: „Zůstávají rozhodnutím člověka, ne exekutora.“ ADR 0155 zaznamenalo, že vlastník využil ochranu větve ve prospěch jmenovaného lander, přistávajícího po jednom, připnutého k posouzenému head.
Do rána 2026-10-16 bylo otevřeno více než sto pull requestů (107 v 09:10Z), na repozitáři pracovalo najednou devět a více relací na jednom stroji a tři vady praxe byly změřeny, ne dokazovány:
| co se stalo | kolik to stálo |
|---|---|
| každé přistání znovu postavilo každou jinou otevřenou hlavu za master | merge masteru, derive a běh o délce zhruba hodiny na pull request, takže fronta rostla rychleji, než ji jeden lander dokázal vyprázdnit |
| primární checkout stál 779 commitů za master | jeho server odpověděl na plán z tohoto stromu a relace zrušila přehled čtrnácti úkolů poté, co zjistila, že třináct z nich je na master už hotových |
| releasy čekaly na milníky | publikovaný web a binárky jmenovaly verzi, kterou master dávno předběhl |
Vlastník odpověděl relacím toho rána. Slova tak, jak jim byla napsána, česky, s anglickým čtením vedle každého:
- „strasne rychle odbavovat milestones/issues/waves, deploy+bump+vv often, from now always, use majordomus mesh“ (odbavovat milníky, úkoly a vlny velmi rychle; deploy, bump a zbytek často, od teď vždy; používat Majordomus mesh).
- „rozdelte si to, spolupracujte a at to odsejpa“ (rozdělte si práci, spolupracujte a ať to odsýpá).
- Na otázku, zda přistávat kombinované tops, nebo po jednom pull requestu: kombinované tops; a trvalé schválení pro připnuté admin merge,
gh pr merge <n> --admin --merge --match-head-commit <sha>, jen kdyžcipřesně té hlavy skončil success a hlava obsahuje aktuálníorigin/master. - „moje rozhodnuti je vzdy vse updatovat, rebasovat, force-forward, whatever helps, document it, describe it (gh pages / official pages / ui) a pokracuj s puvodnim planem“
- „vse derived, inferred, generic, generated, dynamic, enforced for future“ (všechno odvozené, inferované, generické, generované, dynamické a od nynějška vynucované).
Rozhodnutí
Platná praxe je pravidlo project.the-cooperation-model-is-the-owners-word. Je to jediný její záznam: dokumenty o integraci, meshi a release na pravidlo odkazují, místo aby je opakovaly, web vykresluje pravidlo a toto rozhodnutí z těchto souborů a obrazovka Mesh v UI (/ui/mesh) kreslí, kdo drží kterou roli, z živých tvrzení meshe, nikdy ze seznamu jmen.
- Role jsou claimy v mesh. Roli drží ten, kdo drží její exkluzivní claim na mesh, a nic jiného z relace roli nedělá. Role přistání drží
campaign/<campaign>/landing, dokud přistává; role release držírelease/seat; repair lane držírefs/heads/<branch>pro každou větev, kterou aktualizuje; worker drží cesty svého jediného úkolu. Protože role je claim, přesouvá se, když se přesouvá claim, role zhavarovaného držitele vyprší s jeho heartbeatem a UI ji čte zmesh.state, ne z ničí paměti. - Kombinované tops. Role přistání smí přistát mnoho pull requestů v jednom běhu požadované kontroly: master plus hlavy pull requestů, které v autorských cestách s ničím nekolidují (rozhoduje řetězec
git merge-tree), odvozené soubory jednou regenerované po merge commitu, jeden validační běh posuzující každého člena, červený člen vyřazený a opravený na vlastní větvi a jeden připnutý merge, který top přistane, po čemž forge označí každý obsažený pull request za sloučený. Zvýšení verze release se může svézt uvnitř topu. - Vždy aktuální. Zastaralý checkout nebo větev se aktualizuje, aniž by se někoho ptalo, poté co se uchová, co obsahuje:
git stash createagit update-ref refs/rescue/<name>pro necommitnutou práci, patch pod<repository>-rescue/pro cokoli jiného. Checkout nebo větev, kterou nikdo jiný nefetchnul, lze resetovat, rebasovat nebo fast-forwardovat; pushnutá větev se aktualizuje sloučením masteru do ní a pushem fast-forward. - Vydávejte často. Role vydávající release vydá release vždy, když master obsahuje přistálou práci za posledním tagem, ne jednou za milník, a poté ověří, co web servíruje.
Co toto mění
Exekutor z ADR 0101 se nemění: majordomus prs drain stále přistává jeden připravený pull request najednou, nikdy nepřekročí --admin a během činnosti drží svou lease. Mění se vlastní akt přistávajícího. ADR 0101 nechal dávky na člověku; vlastník toto rozhodnutí učinil, takže kombinovaný top už není ručně sestavenou výjimkou, ale běžnou pracovní jednotkou role přistání. Klauzule ADR 0155 „jedno přistání najednou“ nyní zní: jedna role přistání najednou a přistání může nést celý top.
Co stále platí
- Každé rozhodnutí se činí proti aktuálnímu
origin/mastera head SHA, která uvádí, a jedná se podle něj, jen dokud stále platí;--match-head-commitodmítne head, který se posunul. --adminse předává jen připnuté na head, jehožciskončilo úspěchem a který obsahuje aktuální master: ochrana se utrácí na posouzený strom, nikdy ne na přeskočení kontroly.- Žádná kontrola, hook ani brána se kvůli přistání nevypíná, nepřeskakuje ani neupravuje;
--no-verifyse nikdy nepoužívá. - Release se nikdy neurychluje: tag se pushuje jen na commit, jehož
ciuspěla (scripts/ci/release-verdict). - Žádná odeslaná větev se nepřepisuje force-pushem. Vlastníkovo „force-forward“ se čte jako „posunout dopředu čímkoli, co pomůže“; na větvi, kterou čtou jiné relace i forge, pomůže merge, protože přepsaný vzdálený head nelze obnovit rescue refem relace, která ho přepsala.
- Pro každé rozhodnutí se zaznamenávají důkazy: master a head, z nichž byl top sestaven, jeho členové, běh, který ho posoudil, a commit, který produkce servíruje po něm.
Důsledky
Propustnost už není omezena jedním pull requestem na běh: top o dvaceti členech stojí jeden běh. Červeň topu se podle jeho úloh přisoudí členu, který se vyřadí a opraví na vlastní větvi, takže přisouzení, které ADR 0101 chránilo, přežije za cenu jednoho běhu navíc na každého červeného člena.
Kombinované tops stále skládá vlastní postup role přistání, ne schopnost exekutoru; typované prs compose, které by členy topu zaznamenalo jako manifest, nikdy nepřistálo. Dokud nepřistane, záznamem topu je jeho pull request: jeho tělo jmenuje členy a jejich heady a rodiči jeho merge commitu jsou master a top.
Tři body vynucování nesou jiní pracovníci a pravidlo je jmenuje, jak přistávají: nový worktree vychází ze vzdáleného trunku, ne ze zastaralého lokálního masteru; start zajistí, že server checkoutu běží, než úloha začne; a checkout, který zaostal, je detekován a přiveden na aktuální stav.
Zamítnuté alternativy
- Ponechat jeden pull request na běh. Změřeno 2026-10-15 a 16: fronta mu přerostla.
- Pojmenovat role v dokumentu. Seznam relací zastará ve chvíli, kdy se jedna znovu připojí; claim je už fakt, takže UI čte claim.
- Force-pushnout zastaralé větve. Pro relaci, která to dělá, je to rychlé, a ničí to práci, kterou mezitím pushla jiná relace; sloučení masteru stojí jeden commit.
Amendment, 2026-10-20: a worker lands its own green head
At about 23:13 UTC on 2026-10-20 the owner relaxed the model: "hlavne prosim tebe reflektuj
zmekceni pravidel, vse updatuj, vsem dej vedet" ("above all, reflect the relaxation of the
rules, update everything, let everyone know"), choosing every relaxation offered (build and disk
limits, landing and merge, the sessions' permissions, coordination formalities). The seats read
it as: a worker lands its own green pull request through the guarded lander's queue, pinned
exactly as a top is pinned; at most five builders on one machine and none below 35 GiB free;
cleanup that loses nothing is done without asking and announced; ids, paths and seats are still
claimed first. Rule project.the-cooperation-model-is-the-owners-word version 2 records it
(I3824); the landing seat keeps combined tops for heads that must ship together. What may reach
master is unchanged: a head whose ci succeeded and which contains the current master.