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ě
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á | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| release_metadata_published_ahead_of_record_case | test | MJ_TEST_JOBS=2 bash test/run.sh 1041_a_release_publishes_its_metadata | testy: 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_recorded | artifact | ADR 0131, stav proposed, na master ce5959db59 | ce5959d |
Č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.