I2829 — Alfa se publikuje jako pre-release od začátku do konce a nikde se nikdy nestane nejnovějším release
Nechat pre-release tag (vX.Y.Z-alpha.N, -beta.N, -rc.N) projít release pipeline: publish job publikuje jeho soubor tagu a latest.json nechá být, release smoke čeká na tento soubor, nainstaluje ho připnutý a vyžaduje, aby latest.json jmenoval jiný release, release-check drží publikovaný pre-release u jeho záznamu a řadí verze podle precedence sémantického verzování a instalátor instaluje pre-release pouze podle názvu.
HOTOVO vlna 0 · p0 · profil implementation · běží samostatně
Cíl
Nechat pre-release tag (vX.Y.Z-alpha.N, -beta.N, -rc.N) projít release pipeline: publish job publikuje jeho soubor tagu a latest.json nechá být, release smoke čeká na tento soubor, nainstaluje ho připnutý a vyžaduje, aby latest.json jmenoval jiný release, release-check drží publikovaný pre-release u jeho záznamu a řadí verze podle precedence sémantického verzování a instalátor instaluje pre-release pouze podle názvu.
Proč
Audit z 2026-10-17 před v1.0.0-alpha.1: jakmile #1313 udělá z latest_stable pouze stabilní, odvozený latest.json dál jmenuje stabilní release, takže scripts/site-deploy --release-metadata (publish job v release.yml) alfu odmítl, návrh záznamu po něm se nikdy nespustil, smoke čekal 15 minut, až latest.json pojmenuje alfu, a selhal, a install-check --expect vyžadoval totéž. Každé selhání bylo uzavřeno fail-closed; zřejmá oprava červeného běhu alfy byla nechat latest.json jmenovat alfu. release-check ignoroval tagy s příponou (nezaznamenaná alfa zůstala nehlášena) a jeho sort -t. řadil 1.0.0-alpha.1 nad 1.0.0. Instalátor vyhodnotil cokoli, co latest.json jmenoval.
Aktuální stav
Pre-release tag nelze publikovat: job publikace a smoke vyžadují, aby ho latest.json jmenoval.
Cílový stav
Pre-release se publikuje vedle nejnovějšího releasu a lze ho instalovat jménem; latest.json jmenující pre-release odmítají site-deploy, smoke, install-check i instalátor.
Rozsah
- scripts/site-deploy
- scripts/ci/install-check
- scripts/ci/release-check
- share/install/install.sh.in
- site/static/install.sh
- .github/workflows/release.yml
- test/cases/3222_an_alpha_publishes_beside_the_latest_release.sh
- test/cases/3223_the_release_smoke_installs_an_alpha_pinned.sh
- test/cases/3224_a_published_alpha_owes_its_record.sh
- test/cases/3225_the_installer_takes_an_alpha_only_by_name.sh
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- site-deploy --release-metadata u pre-release mění na gh-pages jen jeho soubor tagu a odmítne latest.json, který jej jmenuje
- install-check --expect pre-release přečte jeho soubor značky, nainstaluje jej připnutý a odmítne web, jehož nejnovější release je pre-release
- release-check hlásí publikovaný pre-release bez záznamu, ignoruje tag, jehož přípona není pre-release, a řadí 1.0.0 nad 1.0.0-alpha.1
- install.sh odmítne metadata, která se rozpoznají do pre-release, o nějž nebylo žádáno jménem, a pre-release, o nějž se žádá jménem, rozpozná
- smoke test release.yml čeká na soubor tagu předběžného releasu a selže, když ho latest.json jmenuje
Validace
- bash test/run.sh 3222_an_alpha_publishes_beside_the_latest_release 3223_the_release_smoke_installs_an_alpha_pinned 3224_a_published_alpha_owes_its_record 3225_the_installer_takes_an_alpha_only_by_name
- bash scripts/ci/shell-lint
Požadované důkazy
- prerelease_cases
- mutation_check
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| prerelease_cases | test | MJ_TEST_JOBS=4 bash test/run.sh 3222_an_alpha_publishes_beside_the_latest_release 3223_the_release_smoke_installs_an_alpha_pinned 3224_a_published_alpha_owes_its_record 3225_the_installer_takes_an_alpha_only_by_name 85_installer 86_installer_platform | tests: 6 passed, 0 failed (run 2026-10-17 ~18:35Z at 261c45caf74); regression 1041 3021 3029 97_install_gate 87 26 103 1087 green at 2d4131a4a99 | 261c45c |
| mutation_check | test | po aserci: zmutovat opravu, spustit její případ, obnovit (scratchpad mutate.py) | 9 z 9 mutací zabito: site-deploy předběžná větev a odmítnutí latest (3222); install-check odmítnutí latest, příznak pin, řádek připnuté instalace (3223); release-check filtr tagů a precedence semver (3224); odmítnutí install.sh na 2d4131a4a99 a znovu na 261c45caf74 (3225). Smoke test release.yml není pokryt během: pouze actionlint a shell-lint čisté. | 261c45c |
Časová osa
- zahájeno
- 2026-10-17T18:38:11Z
- ověřeno
- 2026-10-17T18:38:18Z
- dokončeno
- 2026-10-17T18:38:30Z
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/I2829.yaml. Přečtěte ho zpět pomocí majordomus plan show I2829.