I2710 — Běh release nikdy nečeká za validacemi pull requestů na slot pro úlohu
Dát cestě release (workflow release, verdiktu pull requestu se záznamem a nasazení Pages, které release publikuje) přednost před validate větví ve sdíleném poolu runnerů, aby se publikovaný release dostal na majordomus.dev v rámci vlastní doby běhu.
HOTOVO vlna 0 · p0 · profil implementation · bezpečné souběžně
Součást M004 — Výkon je spustitelný důkaz a horká cesta nedělá žádnou kanonickou práci dvakrát.
Cíl
Dát cestě release (workflow release, verdiktu pull requestu se záznamem a nasazení Pages, které release publikuje) přednost před validate větví ve sdíleném poolu runnerů, aby se publikovaný release dostal na majordomus.dev v rámci vlastní doby běhu.
Proč
2026-10-14 19:07Z: v0.26.0 byla publikována, ale její záznamový PR #1147 byl BLOCKED: verdiktový běh 38620987044 a nasazení Pages 38620990702 stály ve frontě, protože validate pull requestů #897 a #946 držely všech 20 slotů úloh. majordomus.dev dál nabízel 0.25.0 a HOLD přistání nešlo zvednout; běh #897 byl zrušen ručně, aby se uvolnily sloty. Vlastník: \"tohle se nesmi stavat\".
Aktuální stav
Každý workflow soutěží o stejný pool runnerů, kdo dřív přijde, ten dřív mele. Nic nenutí validate pull requestu ustoupit, zatímco release, jeho verdikt záznamu nebo nasazení Pages čeká na slot.
Cílový stav
Zatímco běh release, verdikt pull requestu záznamu nebo nasazení Pages masteru čeká nebo běží, pull-request validate, který ještě neskončil, ustupuje: nespouští nové úlohy (nebo se zruší s důvodem jmenujícím běh release a po něm se znovu vyžádá) a cesta release nikdy nečeká na slot, který drží validate větve. Vlastní validate masteru se tím nikdy neruší.
Rozsah
- .github/workflows/validate.yml
- .github/workflows/release.yml
- scripts/ci
- docs/CI.md
- docs/RELEASE.md
- test/cases
Mimo rozsah
- Nákup runnerů nebo změna velikosti poolu
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- Když je ve frontě běh release nebo verdikt záznamu, validate pull requestu ustoupí do minuty a řekne, kterému běhu release ustoupil
- Ustoupivší validate se znovu vyžádá, jakmile je cesta release hotova, bez člověka
- Validate na master a samotná cesta release nejsou pravidlem nikdy rušeny
Validace
- bin/majordomus plan validate
Požadované důkazy
- release_path_has_priority_case
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| release_path_has_priority_case | test | MJ_TEST_JOBS=3 bash test/run.sh 3027_the_release_path_goes_first 3028_the_pages_job_waits_for_its_deployment 3029_a_tag_in_flight_is_pending 3021_a_tag_does_not_freeze_the_queue 3019_a_failed_branch_run_cancels_itself 103_release_projection 94_ci_plan | testy: 7 prošlo, 0 selhalo (běh 2026-10-14 ~22Z na masteru c0e3585dc836201089d6b5dd49f5a79fe8bff798 plus tato změna); případ 3027 řídí scripts/ci/release-path nad fixture seznamy běhů: validate PR dává (zrušit + štítek + komentář jmenující běh release), zatímco je release, verdikt záznamu nebo bot-dispatchovaný běh Pages zaneprázdněn, preempt zruší frontu validate PR při pushi tagu, resume je znovu spustí, jakmile je cesta volná, běhy a dispatche masteru se nikdy nedotknou | c0e3585 |
Časová osa
- zahájeno
- 2026-10-14T22:00:40Z
- ověřeno
- —
- dokončeno
- 2026-10-14T22:02:16Z
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Kanonický záznam: .ai/repo/project/issues/I2710.yaml. Přečtěte jej zpět pomocí majordomus plan show I2710.