I2664 — Běh, který už selhal, se sám zruší a červená na trunku se opraví dřív, než se připraví cokoli dalšího
Udělat z doby od červené k její opravě to, pro co je pipeline stavěna: běh přestane utrácet runnery v okamžiku, kdy už nemůže být zelený, a červená trunku má okamžitě jednoho nositele.
HOTOVO vlna 0 · p1 · 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
Udělat z doby od červené k její opravě to, pro co je pipeline stavěna: běh přestane utrácet runnery v okamžiku, kdy už nemůže být zelený, a červená trunku má okamžitě jednoho nositele.
Proč
Vlastník, 2026-10-13: „opravovat červené úlohy, jak se objeví, včas rušit předčasně selhávající pipeline, abychom byli efektivnější; udělat z toho ADR, znalost, pravidlo, vynucené přes .ai; nesmí se to opakovat; rychlost obratu je králem.“ Toho večera běh validate se dvěma selhanými úlohami nechal devět dalších úloh běžet dvacet minut, zatímco deployment a release čekaly na runnery, a jeho selhávající log nešlo přečíst, dokud neskončil.
Aktuální stav
Změřeno 2026-10-13 na validate 38470127001 (master a3a67a307e): úloha pages selhala ve 22:1x a rust (3) ve 22:20Z; devět úloh běželo dál, dokud nebyl běh ve 22:23Z ručně zrušen, a log selhané úlohy byl odmítnut, dokud běh probíhal. Selháním byl test crate (tests/skills.rs vyžaduje, aby každá aktivní dovednost byla jmenována ve své hlavičce) porušený pull requestem sloučeným s --admin, jehož přistávající spustil úlohu structure a žádnou dráhu rust. Klauzule 7 ADR 0155 dovoluje přistávajícímu zrušit pouze běh vlastní branche a nic neruší běh, který už nemůže projít.
Cílový stav
Workflow validate ukončí běh u prvního neúspěšného jobu, pokud běh není trunkový a nepožádal o dokončení kvůli diagnóze; log neúspěšného jobu se čte přes API jobů bez čekání na běh. Verdikt landera před --admin mergem zahrnuje testy cratu vždy, když změna přidá nebo změní záznam, který test cratu čte, a gate, který ví, které záznamy to jsou, je jmenuje. Červená na trunku se oznámí s jejím nositelem a žádné přistání se nad ní nepřipravuje, dokud není oprava mergnuta.
Rozsah
- .github/workflows/validate.yml
- scripts/ci-plan
- .ai/repo/rules/project/an-expedited-landing-is-the-owners-word.v1.md
- .ai/repo/adrs/0155-an-expedited-landing-is-the-owners-word.md
- docs/INTEGRATION.md
- docs/CI.md
- .ai/repo/project/issues/I2664.yaml
Mimo rozsah
- Nákup runnerů
- Publikace artefaktem, což je I2660, a mez runneru validace, což je I2662
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
Kritéria přijetí
- Běh validate na větvi workflow samo zruší, když jeden z jeho jobů selhal, a workflow k tomu drží případ
- Pravidlo urychlených přistání říká, které úlohy lander čte pro který druh změny, a jmenuje testy crate, které čtou záznamy repozitáře (dovednosti, pravidla, tvrzení), jako součást změny záznamu
- Přidání aktivní dovednosti bez jejího pojmenování tam, kde to test cratu vyžaduje, odmítne gate structure, ne až o hodinu později rust lane
Validace
- bin/majordomus plan validate
- scripts/ci/github-check
- scripts/ci-plan --check
Požadované důkazy
- a_failed_run_is_cancelled_case
- skill_named_by_crate_test_gate
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| a_failed_run_is_cancelled_case | test | MJ_TEST_JOBS=2 bash test/run.sh 3019_a_failed_branch_run_cancels_itself | testy: 1 prošel, 0 selhalo; šest mutací validate.yml bylo každá odmítnuta (běh 2026-10-14 12:54Z na masteru 2ca25bb9cf plus tato změna) | 2ca25bb |
| skill_named_by_crate_test_gate | test | MJ_TEST_JOBS=2 bash test/run.sh 3020_an_active_skill_is_named_where_the_crate_test_demands && scripts/ci/skill-naming-check | testy: 1 prošel, 0 selhalo; kontrola: 8 aktivních dovedností, každá jmenovaná (běh 2026-10-14 12:54Z na masteru 2ca25bb9cf plus tato změna) | 2ca25bb |
Časová osa
- zahájeno
- 2026-10-14T12:55:10Z
- ověřeno
- —
- dokončeno
- 2026-10-14T12:55:14Z
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/I2664.yaml. Přečtěte jej zpět pomocí majordomus plan show I2664.