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.

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ě

Součást safe-self-update — Každý uzel mesh sleduje publikovaný release sám, verze se potkávají bezpečně a původ release lze ověřit.

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átypcommandvýsledeku commitu
prerelease_casestestMJ_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_platformtests: 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 2d4131a4a99261c45c
mutation_checktestpo 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.

Prohledává názvy a popisy všech stránek, které tento web publikuje.