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.

I2303 — Release publikuje svá metadata na web dřív, než dorazí jeho záznam, a web se nikdy nevrací o release zpět

Zajistit, aby majordomus.dev servíroval releases/latest.json a releases/<tag>.json daného release přímo z běhu release, minuty po zveřejnění archivů, a ne až poté, co pull request s jeho záznamem projde CI, a aby se web nikdy nevrátil k dřívějšímu release.

HOTOVO vlna 0 · p0 · profil implementation · bezpečné souběžně

Součást test-evidence — Každé ověřitelné tvrzení a widget se na každém povrchu převádí na testovací důkaz vázaný na revizi.

Cíl

Zajistit, aby majordomus.dev servíroval releases/latest.json a releases/<tag>.json daného release přímo z běhu release, minuty po zveřejnění archivů, a ne až poté, co pull request s jeho záznamem projde CI, a aby se web nikdy nevrátil k dřívějšímu release.

Proč

Dne 2026-10-10 byla v0.20.0 publikována na GitHubu v 16:38Z a web ji obsluhoval v 17:42Z, až poté, co byl její záznam sloučen ručně bez čekání na ci; v0.19.1 byla publikována v 01:46Z a obsluhována po 07:09Z, přičemž ci jejího záznamu běželo 106 minut. Vlastník stanovil mez 15 minut od tagu k obsluhovanému releasu a téhož dne na dotaz zvolil, že release běh publikuje svá metadata sám dříve, než záznam přistane.

Aktuální stav

publikační úloha release.yml odvodí záznam a jeho projekce, navrhne je jako release/record-<tag> a spustí pages.yml na výchozí větvi; web release poskytuje, až když je pull request záznamu sloučen a master nasazen. scripts/site-deploy nahradí gh-pages celý buildem.

Cílový stav

Job publikace spouští `scripts/site-deploy --release-metadata <tag>` poté, co `scripts/derive-check` posoudil strom: na gh-pages se mění přesně releases/<tag>.json a releases/latest.json, build.json stále jmenuje commit masteru. Odmítne chybějící nebo neshodný soubor značky, latest.json, který se od něj liší, a release starší než ten poskytovaný. Běžné nasazení ponechá latest.json z gh-pages a soubor značky, který jmenuje, pokud jmenují novější release než build, a řekne to. ADR 0131 rozhodnutí zaznamenává.

Rozsah

  • scripts/site-deploy
  • .github/workflows/release.yml
  • docs/DISTRIBUTION.md
  • .ai/repo/adrs/0131-a-release-publishes-its-metadata-before-its-record-lands.md
  • .ai/repo/project/issues/I2303.yaml
  • test/cases/1041_a_release_publishes_its_metadata.sh
  • test/cases/87_release_pipeline.sh
  • docs/generated
  • docs/PLAN_STATUS.md
  • docs/PAGES_STATUS.md
  • site/content
  • site/data

Mimo rozsah

  • Zkrácení sestavení a publikační úlohy, které potřebuje i mez 15 minut: krok balíčku macOS x86_64, druhé odvození a znovu sestavený spustitelný soubor publikační úlohy.
  • Řádka stagingu, na které publikační krok release.yml selhává, protože /dist/ je ignorováno: I2302.

Závislosti

Žádné. Tento úkol je kořenem grafu.

Kritéria přijetí

  • `scripts/site-deploy --release-metadata <tag>` mění přesně releases/<tag>.json a releases/latest.json na gh-pages a ponechává build.json jmenující commit masteru, dokázáno proti lokálnímu bare remote
  • Odmítne, aniž by cokoli pushnul, chybějící soubor značky, latest.json jmenující jinou značku, latest.json, který se liší od souboru značky, a release starší než ten, který se poskytuje
  • Běžné nasazení sestavení, které jmenuje starší release, ponechá servírovaný latest.json a jeho soubor tagu a řekne to; sestavení jmenující stejný nebo novější release je nahradí
  • publish job v release.yml spouští režim po scripts/derive-check a před navržením záznamu a smoke job čeká na obsluhovaná metadata, ne na to, až bude záznam na výchozí větvi
  • Případ selže proti předchozímu scripts/site-deploy a proti verzi bez pravidla keep

Validace

  • bash test/run.sh 1041_a_release_publishes_its_metadata
  • MJ_TEST_JOBS=3 bash test/run.sh 87_release_pipeline 26_ci_wiring 996_the_record_pull_request_gets_its_verdict
  • bin/majordomus plan validate

Požadované důkazy

  • release_metadata_published_ahead_of_record_case
  • decision_recorded

Důkazy

pokrývátypcommandvýsledeku commitu
release_metadata_published_ahead_of_record_casetestMJ_TEST_JOBS=2 bash test/run.sh 1041_a_release_publishes_its_metadatatesty: 1 prošel, 0 selhalo, 0 přeskočeno (běh 2026-10-14 mezi 07:40Z a 07:58Z na masteru ce5959db59)ce5959d
decision_recordedartifactADR 0131, stav proposed, na master ce5959db59ce5959d

Časová osa

zahájeno
2026-10-14T08:00:25Z
ověřeno
—
dokončeno
2026-10-14T08:00:34Z

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/I2303.yaml. Přečtěte jej zpět pomocí majordomus plan show I2303.

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