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.

Urychlené přistání je slovo vlastníka, posuzované na sloučeném stromu, a nikdy nedosáhne tagu

Urychlené přistání je slovo vlastníka, posuzované na sloučeném stromu, a nikdy nedosáhne tagu

majordomus://rule/project.an-expedited-landing-is-the-owners-word@1aktivní procesintegracenasazenígovernanceevidence

Zdůvodnění

Dne 2026-10-12 publikovaný web většinu dne jmenoval release o dvě verze zaostávající za kódem a majitel napsal „almost 24h with no release on gh pages + binaries, this is tragic“. Nic v práci nebylo rozbité. Požadovaná kontrola trvá na hostovaných runnerech asi hodinu, fond posuzuje vždy jeden pull request a pull request se záznamem, který změnil jeden soubor, čekal dvě a půl hodiny za běhy, které nikdo nehodlal číst. Majitel pak vydal trvalý příkaz, těmito slovy, 2026-10-12 a znovu 2026-10-13: „deploy using --admin, bump, deploy, verify, rinse and repeat“ a „use --admin mode, merge and deploy asap, review and cancel staled jobs, be agressively efficient in delivery“.

project.integration-follows-the-current-master říká, že pull request se nikdy nemerguje s --admin, a pro integrační exekutor to platí dál: žádný kód tohoto repozitáře to nepředá. Co pravidlo nemělo, je případ, kdy se ten, kdo vlastní ochranu větve, rozhodne ji využít. Jednadvacet hodin přistání pod tímto příkazem ukázalo, co to dělá bezpečným a co ne, každé změřeno, ne dokazováno:

  • Head posuzovaný samostatně není strom, který přistane. Větev, jejíž vlastní kontroly byly zelené, shodila master do červena sedmkrát za jeden večer, protože se master pod ní pohnul. Posuzovat se musí head s aktuálním masterem zamergovaným dovnitř.
  • Dva landery najednou ruší úsudek toho druhého. Merge mezi kontrolami jiného landeru a jeho merge z těchto kontrol dělá verdikt o stromu, který už neexistuje.
  • Kontrola, kterou nikdo nespustil, se čte jako kontrola, která prošla. Přistání proběhlo s nedokončenou strukturní úlohou a její dvě červené se dostaly na master. Říct, které kontroly běžely a na kterém commitu, umožní příštímu čtenáři vědět, co je neznámé.
  • Běh, který nikdo nepřečte, stále drží runner. Běh větve pokračoval i poté, co byl její pull request sloučen, a běh sloučeného commitu na hlavní větvi čekal za ním.
  • Dva nositelé jedné červené stály jeden disk. Během jedné noci dvakrát dvě relace postavily stejnou opravu; druhý build srazil stroj na jeden gibibajt volného místa.
  • Přistání mezi tagem a jeho záznamem zdrží release, který následuje. Záznam v0.21.0 čekal dvě a půl hodiny za přistáními, která pod ním pohnula odvozenými soubory, a web po celou dobu uváděl v0.20.0.
  • Release je jediná věc, kterou nelze vzít zpět. Merge se opraví dalším mergem. Tag publikuje binárky, které lidé instalují.

Požadované chování

  1. Autorizace patří vlastníkovi a je zaznamenána. Příkaz je citován s datem v rozhodnutí, které toto pravidlo zavedlo, nebo v pozdějším záznamu rozhodnutí. Relace ho nedovozuje, nerozšiřuje na jiný repozitář a nepřebírá z relé jiné relace: předaný příkaz je tvrzení o tom, co vlastník řekl, a jedná se podle něj, jen když jsou ve záznamu vlastníkova vlastní slova.
  2. Jmenovaný lander, jeden po druhém, pod nárokem na přistání. Lander drží výhradní mesh nárok na přistání před merge a po něm jej uvolní. Dokud je nárok držen, nikdo jiný do trunku nemerguje.
  3. Head obsahuje aktuální master a je připnutý. Master se lokálně mergne do větve, merge se commitne a teprve potom se větev derivuje. Merge je gh pr merge --admin --merge --match-head-commit <head>, takže head, který se pohnul, se odmítne.
  4. Sloučený strom se posuzuje před merge a posouzení je pojmenováno. Minimálně celý job structure (scripts/ci/run-plan --job structure), testy knihovny, build rustdoc, když se crate změnil, a každý případ, kterého se změna dotýká, s odmítnutými přeskoky. Lander říká, na kterém commitu každý běžel. Kontrola, která neběžela, je pojmenována jako neběžela. Červená se nepřistává. Co změna dluží nad to, se čte z toho, čeho se dotýká, a scripts/ci-plan --files <list> jmenuje kontroly, které vybírá:
    • kód crate (apps/majordomus-cli/**): testy crate ve všech třech drahách jobu rust, nikoli jen knihovna;
    • záznam, který čte test crate — dovednost, pravidlo, tvrzení, schopnost, základní hodnota kvality, intent, milník nebo úkol: testy crate, které otevírají tento repozitář samotný — tests/skills.rs (jmenuje každou aktivní dovednost), tests/quality.rs (základní hodnota kvality), tests/mcp_prose.rs, tests/mcp_conformance.rs, tests/redaction.rs — a kontrola intent-check (majordomus intent validate) pro záznam plánu; změna záznamu je pro ně změnou crate, ačkoli se žádný Rust nepohnul, a běží jen v lane rustu, kterým job structure není;
    • workflow nebo skript pod scripts/ci/: celá strukturní úloha a každý případ, který soubor jmenuje (grep -rl <name> test/cases);
    • web, UI nebo Cockpit: build a sonda úlohy site a každý případ, který je jmenuje.
  5. Integrační executor nikdy nepředá --admin. majordomus prs merguje jen to, co ochrana větve dovolí. Toto pravidlo řídí vlastní čin přistávajícího a v onom kódu nic nemění.
  6. Každé přistání se ověřuje tam, kde to čte veřejnost. Po merge lander potvrdí commit, který produkce obsluhuje (scripts/pages verify), jak vyžaduje klauzule 5 project.land-and-publish.
  7. Běh, který nikdo nepřečte, se zruší. Běh je zastaralý, když je jeho pull request sloučen či uzavřen, když jeho hlava už není hlavou jeho větve, nebo když jiný běh téhož workflow už posuzuje týž commit. Lander po svém sloučení zruší běh vlastní větve. Nikdy se neruší: jediný běh commitu na kmeni, probíhající nasazení, běh release a běh jiné relace na hlavě, která je stále aktuální. Běh větve, který selhal v úloze, už nemůže být zelený a validační workflow jej ruší samo z posledního kroku selhavší úlohy; běh kmene se nechá doběhnout.
  8. Červená na trunku má jednoho nositele. Pojmenuje ho integrátor. Všichni ostatní pro tu červenou nic nesestavují, dokud nositel neustoupí nebo neuplyne jeho uvedený čas.
  9. Mezi tagem a jeho záznamem nepřistane nic jiného. Workflow release navrhne záznam o tom, co publikoval, jako pull request složený ze záznamu a z souborů z něj odvozených, vygenerovaných proti masteru té minuty. Přistání v tomto okně posune pod ním tyto odvozené soubory a stojí záznam merge a derive, zatímco web dál jmenuje předchozí release. Pull request se záznamem se merguje první, pinned, jakmile jsou přečteny jeho vlastní kontroly; pak je nárok zase otevřen.
  10. Release se nikdy nepospíchá. Tag se pushuje jen na commit, jehož povinná kontrola skončila úspěchem, a žádná kontrola, hook ani check se nevypíná, nepřeskakuje ani neupravuje, aby se tam došlo. scripts/ci/release-verdict je právě toto odmítnutí a release workflow je spouští před publikací.

Chování při selhání

test/cases/2999_delivery_is_expedited_only_where_the_rule_says.sh selže, když release workflow publikuje bez dotazu na scripts/ci/release-verdict, když tento skript přijme commit, jehož kontrola chybí, čeká nebo selhala, když by přistání na trunku mohlo zrušit probíhající běh trunku nebo probíhající nasazení, když kód integrace jmenuje --admin, nebo když zdokumentovaný příkaz merge ztratí pin na posuzovaný head. test/cases/3019_a_failed_branch_run_cancels_itself.sh selže, když kontrolní job validačního workflow nekončí běh neúspěšného pull requestu jako svůj poslední krok, nebo by mohl ukončit běh trunku, plánovaný běh či dispatch. Opomenutí z 2026-10-13 — aktivní dovednost, kterou tests/skills.rs a případ 391 nejmenují — je v strukturní úloze odmítnuto kontrolou skill-naming (scripts/ci/skill-naming-check) a test/cases/3020_an_active_skill_is_named_where_the_crate_test_demands.sh dokazuje, že ji odmítá.

Klauzule 1, 2, 4, 8 a 9 jsou akty relace a rozhoduje o nich záznam: nárok na přistání na mesh, kontroly pojmenované v pull requestu a nástěnka. Přistání, jehož pull request nepojmenovává posouzený commit, je nález revize.

Ověření

Případ 2999 čte samotné workflow, skript, toto pravidlo a docs/INTEGRATION.md, ne jejich kopii, nic nebuilduje a nesahá na síť. Byl dvakrát prokázán jako nevakuózní: s krokem verdiktu odebraným z release workflow selhal a jmenoval každý publikační krok, který už nebyl za verdiktem, a s cancel-in-progress: true v bloku concurrency validačního workflow selhal a jmenoval soubor.

Co verdikt rozhodne, jakmile je vyžádán, je test/cases/362_a_release_follows_the_ci_verdict.sh, proti náhradě za forge, která odpovídá chybějící, čekající, selhanou a úspěšnou kontrolou. test/cases/720_integration_follows_the_current_master.sh drží integrační kód, aby nikdy nejmenoval --admin, a test/cases/97_pages_fast_path.sh drží frontu publikace, aby nikdy nerušila probíhající nasazení.

Odkud to pochází

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