155. Urychlené přistání je slovo vlastníka, posuzované na mergnutém stromu, a nikdy nedosáhne tagu
Kontext
ADR 0101 udělalo z integrace jeden typovaný subsystém a mezi zamítnutými alternativami uvedlo „merge s --admin“: odmítnutí ochrany větve je odpověď, ne překážka. Pravidlo project.integration-follows-the-current-master nese tu větu.
Dne 2026-10-12 trvala povinná kontrola na hostovaných runnerech zhruba hodinu a pool posuzoval vždy jeden pull request. Pull request se záznamem v0.21.0, který měnil jeden soubor, čekal dvě a půl hodiny; web mezitím uváděl v0.20.0. Vlastník napsal „almost 24h with no release on gh pages + binaries, this is tragic“, zvolil jednorázový admin merge toho pull requestu a poté vydal trvalý příkaz. Jeho slova tak, jak je napsal relacím:
- 2026-10-12: „deploy using --admin, bump, deploy, verify, rinse and repeat“ a „proceed use --admin“.
- 2026-10-12, na otázku, jak to souhlasí s „nikdy neobcházet selhávající požadované kontroly“: „--admin po lokálních kontrolách“, přičemž tag stále vyžaduje zelený
ci. - 2026-10-13: „use --admin mode, merge and deploy asap, review and cancel staled jobs, be agressively efficient in delivery, you have my max clearance and this should be .ai rule / adr / knowledge base / article / post, enforced and used asap“.
Mezi oběma daty přistálo tímto způsobem asi dvacet přistání, od několika relací. To, co se v nich pokazilo, jsou důkazy, z nichž je toto rozhodnutí napsáno:
| co se stalo | kolik to stálo |
|---|---|
| větve zelené na vlastním headu přistály na masteru, který se mezitím posunul | sedm červených na master za jeden večer |
| dvě relace zmergovaly během několika minut po sobě | lokální kontroly každého posuzovaly strom, který už neexistoval |
| přistání proběhlo s nedokončenou úlohou structure | shell-lint a finding-reproduce červené na masteru |
| běh sloučené větve pokračoval dál | běh trunku sloučeného commitu se zařadil za něj |
| dvě relace nesly stejnou opravu červené, dvakrát | druhý studený build srazil disk na 1 GiB volného místa |
| mezi tagem a jeho záznamovým pull requestem přistály další změny | záznam potřeboval merge masteru a odvození; web jmenoval předchozí release 2,5 hodiny |
| byl sloučen odkaz uvnitř dokumentace na soukromou položku | publikace selhala a produkce zůstala na starém commitu celé hodiny |
V release se nic nepokazilo: každý tag v daném období byl vytvořen na commitu, jehož ci skončil úspěchem, protože release workflow se ptá scripts/ci/release-verdict a odmítá.
Rozhodnutí
Ochranu větve smí využít vlastník a jen vlastník. Oprávněním jsou vlastníkova vlastní slova, citovaná s datem v rozhodnutí tohoto repozitáře — tohoto, dokud je nenahradí pozdější. Relace si ho nedomýšlí, nenese ho do jiného repozitáře a nejedná podle cizího popisu relace.
Urychlené přistání je činem jmenovaného přistávajícího, nikdy exekutoru. majordomus prs nadále slučuje jen to, co ochrana větve dovolí, a žádný integrační kód nepředává --admin. Zamítnutí z ADR 0101 pro tento kód platí dál.
Lander posuzuje sloučený strom a říká, co posoudil. Drží výlučný nárok na přistání, mergne aktuální master do větve, commitne merge, odvodí a spustí celou strukturální úlohu, knihovní testy, build rustdocu, když se crate změnil, a případy, kterých se změna dotýká. Jmenuje commit, na němž každé běželo, a jmenuje, co neběželo. Merge je připnut: gh pr merge --admin --merge --match-head-commit <head>.
To, co čte lander, následuje to, čeho se změna dotýká (doplněno 2026-10-14, I2664). Záznam, který čte test crate — dovednost, pravidlo, tvrzení, základní linie kvality, záznam plánu — je změnou crate pro testy, které otevírají samotný repozitář (tests/skills.rs, tests/quality.rs a jejich sourozenci) a pro kontrolu intent-check, ačkoli se žádný Rust nepohnul, a ty běží jen v rust drahách. 2026-10-13 přistála aktivní dovednost nejmenovaná ani tests/skills.rs, ani případem 391 se zelenou úlohou structure a o hodinu později zčervenala rust dráha trunku; úloha structure nyní tuto absenci sama odmítá (kontrola skill-naming) a klauzule 4 pravidla uvádí, co každý druh změny dluží.
Každé přistání je nasazení a ověřuje se jako nasazení, jak už project.land-and-publish vyžaduje od každého merge.
Běh, který nikdo nepřečte, se zruší. Zastaralý znamená: pull request je sloučen nebo uzavřen, hlava už není hlavou větve, nebo jiný běh téhož workflow posuzuje stejný commit. Jediný běh commitu na trunku, probíhající nasazení, release běh a běh jiné relace na aktuální hlavě nejsou zastaralé a neruší se. Běh větve, který selhal v jobu, nemůže být zelený a validační workflow ho ruší z posledního kroku selhavšího jobu; běh trunku, plánovaný a dispatch se nechají doběhnout (I2664, případ 3019).
Červený kmen má jednoho nositele, jmenovaného integrátorem.
Mezi tagem a jeho záznamem nepřistane nic jiného. Pull request se záznamem nese soubory odvozené proti masteru té minuty a mergne se první.
Release se nikdy neurychluje. Tag jde na commit, jehož kontrola ci skončila úspěchem. Žádná kontrola, hook ani check se nevypíná, nepřeskakuje ani neupravuje, aby se k němu dospělo.
Pravidlo je project.an-expedited-landing-is-the-owners-word. Jeho mechanická polovina je případ 2999 s případy 362, 720 a 97. Jeho druhá polovina je záznam: claim na přistání v meshi, kontroly, které pull request jmenuje, nástěnka.
Zamítnuté alternativy
Ponechat „nikdy --admin“ a zrychlit povinnou kontrolu natolik, aby stačila. To je správný cílový stav a práce na něm probíhá: záznam release plánuje lehkou validaci, článek zásobníku se posuzuje proti masteru, derive přeskakuje to, co se nezměnilo. Dnes neexistuje a vlastník se rozhodl na něj nečekat.
Nechat executor předat --admin, když to říká pole politiky. Pak by hodnota konfigurace utrácela ochranu větve strojovou rychlostí pro každý pull request, který fronta označí za připravený. Výjimka je rozhodnutí člověka o konkrétním dni; zůstává slovem člověka a úkonem landeru.
Odebrat požadovanou kontrolu z ochrany větve. Pak nic nerozlišuje urychlené přistání od běžného a verdikt release nemá kontrolu, kterou by četl.
Urychlit i tag. v0.3.1, v0.5.0, v0.6.0 a v0.7.0 byly publikovány z červených commitů, než release-verdict existovalo. Merge se opraví dalším mergem; publikované spustitelné soubory se instalují.
Důsledky
- Znění
project.integration-follows-the-current-master@3říká „nikdy nemergeovat s --admin“. Platí to pro executor a je to příliš široké pro lander podle tohoto rozhodnutí. Verze 4 tohoto pravidla, která jmenuje tuto výjimku, je dlužná; než přistane, je výjimka zapsána v tomto rozhodnutí a jeho pravidle a obě jmenují starší pravidlo. - Revize a rušení zastaralých běhů je dnes úsudek činěný ručně. Schopnost, která vypíše běhy, jež toto rozhodnutí nazývá zastaralými, a na požádání je zruší, je dalším krokem a činí z článku 7 pravidla mechanismus.
- Cena povinné kontroly je nyní viditelná jako číslo, na něž byl příkaz vlastníka reakcí. Latence od merge k nasazení patří mezi odvozená měření.
- Toto rozhodnutí je
proposed. Vlastník nařídil praxi i její sepsání; přijetí textu je aktem vlastníka. Bude-li zamítnuto, pravidlo je s ním staženo aproject.integration-follows-the-current-masteropět stojí samo.