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.

Pull requesty se integrují po jednom, každý se posuzuje proti aktuálnímu masteru, nikdy v obcházení ochrany větve

Pull requesty se integrují po jednom, každý se posuzuje proti aktuálnímu masteru, nikdy v obcházení ochrany větve

majordomus://rule/project.integration-follows-the-current-master@3aktivní integracegitgithubbezpečnostgovernanceevidence

odkazuje na něj

Zdůvodnění

Dne 2026-09-30 bylo otevřeno sedmdesát pull requestů a repozitář měl tři soupeřící odpovědi na „co může přistát“: příznak mergeable forge, který neumí spustit ovladač odvozených souborů a mýlí se oběma směry; scripts/land, který sloučil každý čistý pull request na jednu branch ze seznamu, jejž jeho vlastní první merge zestárl; a ručně sestavené dávky, jejichž regrese nikdo nedokázal připsat. ADR 0101 všechny tři nahrazuje jedním typovaným podsystémem. Toto pravidlo je to, co ho brání před návratem.

Požadované chování

  • Pull request je ready jen tehdy, když míří na bázi, není draft, nenese blokující label, obsahuje aktuální master, má přistálé deklarované závislosti, splňuje politiku review a má na svém aktuálním headu prošlou každou požadovanou kontrolu. Pending, chybějící, přeskočené a nečitelné neprošly a kontrolu, kterou báze váže na aplikaci, splní jen běh té aplikace: běh téhož jména od jiného zapisovatele to není a běh, jehož zapisovatel nebyl přečten, je neznámý.
  • Executor pozoruje forge před rozhodnutím a znovu před jednáním a merguje, jen když obě rozhodnutí jmenují stejný master a head. Přes merge nedrží žádný plán.
  • Žádný integrační kód nepředává --admin, neforce-pushuje ani nepřepisuje větev. Přenesení masteru do větve je merge commit pushnutý jako prostý fast-forward.
  • Uzavření vyžaduje explicitní --apply a jeden ze čtyř důvodů: head je předkem masteru; merge nemění žádný soubor; každý commit, který head má a master nemá, je na masteru jako stejný patch; nebo následníka pro něj deklaroval vlastník, člen či spolupracovník v pull requestu tohoto repozitáře — ve vlastním těle nebo v těle následníka — a git najde head nebo merge commit toho následníka v masteru. Slovo forge, že pull request byl sloučen, zde nic nedokazuje. Následník, kterého forge nenazývá sloučeným, se počítá jen tehdy, když jeho head žije v tomto repozitáři: head forku, uzavřený nesloučený, nedokazuje nic, ať míří kamkoli, a stejně tak následník, který nemění žádný soubor.
  • Oprávněná deklarace drží pull request, který nahrazuje, dokud je nástupce otevřen, a uvolní jej, když je nástupce uzavřen bez přistání. Deklarace od kohokoli jiného nebo z forku se hlásí jako possible_supersession a nic nedrží ani neuzavírá.
  • Pull request, jehož křížové odkazy nebyly přečteny celé, se drží, dokud nebudou: nepřečtená deklarace se nikdy nebere za žádnou a zbytek fronty pokračuje. Čtení deklarací, na které forge neodpoví, není držení: obnovení selže a pozorování zaznamenané před ním se nenahradí. Pull request, který se liší jen v odvozeném výstupu, se nechává člověku.
  • Prohlášením o nahrazení je jen to, co autor těla uvede: značka na citovaném řádku, v ohraničeném bloku kódu nebo v HTML komentáři nedeklaruje nic.
  • Mutace drží integration lease základní větve. Pozorovatelé ne.
  • Každý výběr, zastaralé rozhodnutí, merge, odmítnutí, obnovení a uzavření se připojí do auditní stopy dřív, než je provedeno, do jedné stopy na repozitář pod společným adresářem gitu; čin, který stopa nemůže zaznamenat, se neprovede.
  • Lease je exkluzivní flock držený po celý život executoru a převzatý pro základ, který pozoroval. Živý držitel se nikdy nepřebírá; držitel, který skončí, i pádem, jej uvolní hned. Lease, který nelze obnovit, ukončí běh, místo aby se jednalo bez něj.
  • Merge je úplný, jen když je dokázán tam, kam přistál: master obsahuje rozhodnutý master a rodiče merge commitu jsou tento master a rozhodnutý head na linii prvních rodičů masteru. Merge, který nelze dokázat, zastaví každé vyprázdnění fronty, dokud člověk nespustí prs drain --resume-after-failure.
  • Selhání se zaznamenává i s třídou. Vlastní selhání kandidáta (zastaralý, konflikt, nová selhávající kontrola, odvolané review, odmítnutí politikou) kandidáta zadrží a vyprazdňování pokračuje; neověřený merge nebo nečitelný forge ho zastaví. Znovu se zkouší jen výpadek, omezeně mnohokrát; merge se nikdy neopakuje.
  • Průběžný drain běží sám, před každou akcí se obnoví, mezi cykly čeká omezený interval a na signál se čistě zastaví. Je to poslední fáze rolloutu a je odmítnut, dokud stopa neobsahuje ROLLOUT_MERGES_BEFORE_CONTINUOUS ověřených merge od posledního merge, který nešlo ověřit (ADR 0101 §13).

Chování při selhání

test/cases/720_integration_follows_the_current_master.sh selže, když kód integrace jmenuje --admin nebo force push, když příkaz prs jen pro čtení dosáhne sítě nebo zapíše auditní stopu, když se vztah k masteru bere z mergeable forge, nebo když executor ztratí své opětovné pozorování před jednáním. Případ 850 selže, když drain po merge znovu neplánuje, 852 když dry run cokoli pohne, 855 a 856 když oba executory mergují, 857 a 858 když se požadovaná kontrola nebo review bere z toho, co je vidět, a ne z toho, co je požadováno, 925 když běh jiného zapisovatele projde kontrolou vázanou na aplikaci, 926 když projde běh, jehož zapisovatel nebyl přečten, 927 když se u báze, která nic neváže, ptá na zapisovatele, 742 když se znovu ptá cokoli jiného než výpadek, a 741 když souvislý drain běží bez svého záznamu, vedle jiného executoru nebo za signálem.

Nahrazení a uzavření: 861 a 928 selžou, když přistání oprávněného nástupce není vidět nebo se ztratí jeho držení, 929, 930 a 937, když deklarace, kterou nikdo oprávněný nepodal, něco drží nebo uzavírá, 931, když uzavřený nástupce stále drží, 932 a 939, když přistání, které git vidí, není započítáno, 933, 934 a 938, když částečné nebo selhané čtení deklarací uvolní nebo uzavře, 935, když je starší pozorování čteno jako toto, a 936, když toto pravidlo přestane jmenovat důvod, na jehož základě kód uzavírá.

tests/integration_trail.rs selže, když se akt provede bez předchozího zaznamenání, a tests/integration_rollout.rs když je kontinuální režim dosažitelný bez záznamu. Jednotkové testy modulu (cargo test --lib integration) drží dispozice, kdo smí deklarovat nahrazení, odmítnutí zastaralého rozhodnutí, nové plánování po každém merge a práh úklidu.

Ověření

bash test/run.sh 720_integration_follows_the_current_master, totéž pro každý výše jmenovaný případ, cargo test --test integration_trail --test integration_rollout a cargo test --lib integration.

Odkud to pochází

kanonický soubor
.ai/repo/rules/project/integration-follows-the-current-master.v3.md
identity
project.integration-follows-the-current-master@3
dostupné také jako
Zdroj MCP majordomus://rule/project.integration-follows-the-current-master@3 · majordomus entity show rule/project-integration-follows-the-current-master-3 · GET /api/v1/entity?uri=majordomus://rule/project.integration-follows-the-current-master@3
v Cockpitu
/cockpit/objects/rule/project-integration-follows-the-current-master-3

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.