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.

Web nabízí release, který byl publikován, na všech površích najednou

Web nabízí release, který byl publikován, na všech površích najednou

majordomus://rule/project.the-site-offers-the-release-it-published@1aktivní releasepublikacewebdistribution

odkazuje na něj

Nic ve vrstvě to nejmenuje. Zpětné odkazy se odvozují, takže prázdný seznam je odpověď, ne opomenutí.

Zdůvodnění

Dne 2026-10-12 byla v 09:43Z otagována verze v0.21.0, release pipeline publikovala jejích šest archivů a v 10:23Z vložila na publikovaný web releases/latest.json jmenující 0.21.0, což je to, co rozlišuje instalátor. Domovská stránka vedle instalačního příkazu nadále nabízela 0.20.0 a odkazovala na jeho poznámky k vydání, dokud záznam release nedorazil do masteru — záznam přichází přes pull request, který release otevře po publikaci a který potřebuje vlastní plnou validaci, hodinu či dvě. Dva povrchy jednoho webu odpovídaly na otázku „který release je nejnovější“ ze dvou zdrojů a po každém release se na hodiny rozcházely. Nikdo si nevšiml, protože každá kontrola četla vždy jeden povrch: kontrola instalátoru četla latest.json, smoke test release čekal na latest.json, site-check držel stránky u záznamů stromu, z něhož byly sestaveny, a každá z nich byla pravdivá.

ADR 0131 už zařídilo, že metadata odcházejí před záznamem, a že je deploy masteru zachová. Neumožnilo však stránkám je následovat: vykreslovaly projekci záznamu (site/data/registry/distribution.json a pole release, které nesla data webu), takže publikace posunula jeden povrch a ostatní nechala být.

Požadované chování

  1. Jedno odvození. scripts/site-build odvozuje release, který web nabízí, jako novější ze dvou čtení jednoho faktu: nejnovějšího záznamu release stromu, který sestavuje (jeho projekce site/data/registry/distribution.json), a releases/latest.json, které publikovaná větev už servíruje, čteného z git refu (origin/gh-pages) a nikdy nestahovaného po síti při renderu. Výsledek, s tím, které čtení zvítězilo, a commitem publikované větve, který přečetlo, zapíše do build.json jako release; /build.json jej servíruje. Je-li novější publikovaný release, jeho dva dokumenty se zkopírují do sestavení, takže metadata, která sestavení servíruje, jsou release, který jeho stránky nabízejí.
  2. Čte ho každý povrch. Stránka, která jmenuje nejnovější release, čte offered (nastavené jednou v base.html z build.release) a nic jiného. Data webu nenesou žádný vlastní release: project.json uvádí verzi stromu, což je jiný fakt.
  3. Záznam zůstává archivní projekcí. Záznam releasu nese to, co je známo až po publikaci — digesty, atestace, čas publikace — takže nemůže přistát před tagem a tag na něj nečeká. Changelog a historie instalační příručky jsou jeho projekce a následují ho; uvádějí releasy, které existují, a nikdy žádný nenabízejí před ním.
  4. Odmítnuto před pushem. scripts/site-check odmítne build, jehož nabídka na homepage (data-release na pásu důvěry a na odznacích v navigaci a hero), /build.json a servírovaný /releases/latest.json jmenují různé releasy, a strom, jehož dvě commitnuté projekce posledního releasu — latest v distribution.json a site/static/releases/latest.json — si odporují: předsloučená polovina, rozhodnutelná ze stromu. Čtení záznamu je nejvyšší stabilní záznam, který není stažen (Releases::latest_stable); žádný povrch nevypisuje soubory záznamů, aby našel „nejnovější“.
  5. Měří se po nasazení. scripts/pages release-live čte nabídku živé domovské stránky, /build.json, /releases/latest.json a nejnovější release na GitHubu. Jedna verze je úspěch. Neshoda mladší než deploy.release_window (.ai/repo/ci/pages.yaml) po releasu na GitHubu je publikace v běhu a projde, s upozorněním; starší selže. Web nabízející verzi, kterou GitHub nepublikoval, selže ihned. Čtení, které nelze provést, je exit 12, nikdy úspěch.

Chování při selhání

  • scripts/site-build končí s 10, když publikovaná branch servíruje releases/latest.json, který není dokumentem release/v1 jmenujícím vlastní tag, nebo soubor tagu, který se od něj liší.
  • scripts/site-check selže (sekce 17b, release) při jakékoli neshodě v bodě 4.
  • scripts/pages release-live skončí kódem 10 po uplynutí okna nebo u nabídky předstihující GitHub, 12 když chybí údaj. V .github/workflows/pages.yml je to krok the release it offers, poté co web poskytuje nasazený commit; v scripts/ci/pages-check je to oddíl 5 kontroly pages-live, na kterou se ptá finish (at-finish) a naplánované běhy pages se ptají každých třicet minut a při selhání nasazují.
  • scripts/site-deploy varuje, když ponechává publikovaná metadata nad starším buildem: stránky onoho buildu nabízejí starší release až do dalšího buildu.

Ověření

test/cases/1087_the_site_offers_the_release_it_published.sh: odvození vybere publikovaný release před starším záznamem a záznam před starší nebo chybějící publikací, zkopíruje publikované dokumenty a odmítne vadný; každá šablona čte jedno odvození; scripts/pages release-live proti webu file:// a gh na PATH projde jeden release, projde čerstvou neshodu v rámci okna a selže, když každý ze tří povrchů postupně pojmenuje po jeho uplynutí jiný release, když web nabízí, co GitHub nepublikoval, a vrátí 12, když GitHub nelze přečíst. test/cases/352 drží nabídku u releasu, který existuje; test/cases/1041 drží cestu metadat z ADR 0131.

Odkud to pochází

kanonický soubor
.ai/repo/rules/project/the-site-offers-the-release-it-published.v1.md
identity
project.the-site-offers-the-release-it-published@1
dostupné také jako
Zdroj MCP majordomus://rule/project.the-site-offers-the-release-it-published@1 · majordomus entity show rule/project-the-site-offers-the-release-it-published-1 · GET /api/v1/entity?uri=majordomus://rule/project.the-site-offers-the-release-it-published@1
v Cockpitu
/cockpit/objects/rule/project-the-site-offers-the-release-it-published-1

Tato stránka je generována z výše uvedeného souboru pomocí scripts/generate-site-data; úprava stránky nic nemění, úprava souboru změní všechna rozhraní. Výše uvedené vztahy jsou hrany docs/generated/graph.json, které spustitelný program zapisuje ze stejného indexu.

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