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.

I2483 — UI se publikuje jako snímek: přečtené jednou na publikovaném commitu a neseno webem na /ui

Umožnit člověku, který repozitář neklonoval, otevřít majordomus ui na veřejném webu: vlastní odpovědi UI pro každou obrazovku a panel i pro inspektory, na které odkazují, až do meze, zapsané jako statické soubory u commitu, který web publikuje, přičemž každá stránka uvádí, že je snímkem, a žádná nevede nikam do prázdna.

HOTOVO vlna 2 · p1 · profil implementation · běží samostatně

Součást development-runtime — The runtime has a development surface.

Cíl

Umožnit člověku, který repozitář neklonoval, otevřít majordomus ui na veřejném webu: vlastní odpovědi UI pro každou obrazovku a panel i pro inspektory, na které odkazují, až do meze, zapsané jako statické soubory u commitu, který web publikuje, přičemž každá stránka uvádí, že je snímkem, a žádná nevede nikam do prázdna.

Proč

Vlastník 2026-10-12 požádal, aby majordomus ui byl na GitHub Pages, a zvolil statický snímek čtený na připnutém commitu místo pouhé dokumentace (ADR 0141). Dosud webová topologie deklarovala UI jako jen servírované, web ho nikdy nejmenoval a primární povrch produktu (ADR 0135) šlo vidět jen spuštěním serveru v checkoutu.

Aktuální stav

UI je nativní routa sdíleného serveru a ničeho jiného. gh-pages neobsahuje žádné /ui. Statická kopie vytvořená uložením stránek by si ponechala odkazy na routy a dotazy, na které souborový hosting neodpoví, a její skript by stránku četl znovu z hostu, který dotaz ignoruje.

Cílový stav

`majordomus web report ui-snapshot [--limit N] [--budget-seconds S]` se v procesu dotáže UI na každou obrazovku a panel a pak, po jedné stránce na rodinu postupně, dokud není dosažena mez stránek nebo časový rozpočet, na stránky, na které odkazují, a každou odpověď zapíše pod target/web/ui-snapshot: odkazy mezi stránkami relativní, dotaz inspektoru vlastní adresář, odkaz, na který odpovídá jen proces, vede na stránku snapshotu o živém UI s cestou, kterou měl na mysli, odkaz na publikovaný povrch zachován, aktiva zkopírována, tělo označeno data-snapshot, aby skript znovu nic nečetl, a každá stránka označena commitem, časem a spustitelným souborem. surface.json producenta jej deklaruje jako pouze publikovaný na /ui, sestavený z tohoto commitu, takže topologie jej drží vedle servírovaného UI bez kolize. Workflow Pages jej sestavuje ve vlastní úloze vedle rustdoc a úloha deploy jej po kontrolách webu umísťuje na /ui a odmítá snapshot jiného commitu. docs/MAJORDOMUS_UI.md a docs/GITHUB_PAGES_ARCHITECTURE.md říkají, co návštěvník vidí a co snapshot nemůže vědět.

Rozsah

  • apps/majordomus-cli/src/web/report/snapshot.rs
  • apps/majordomus-cli/src/web/report/mod.rs
  • apps/majordomus-cli/src/commands/web.rs
  • apps/majordomus-cli/src/cli.rs
  • share/ui/ui.js
  • .github/workflows/pages.yml
  • .ai/repo/adrs/0141-the-ui-is-published-as-a-snapshot-read-at-one-commit.md
  • .ai/repo/project/issues/I2483.yaml
  • docs/MAJORDOMUS_UI.md
  • docs/GITHUB_PAGES_ARCHITECTURE.md
  • test/cases/1092_the_ui_snapshot_holds_every_screen.sh
  • test/cases/1093_the_ui_snapshot_links_nothing_absent.sh

Závislosti

Co na tom čeká

Kritéria přijetí

  • snapshot drží každou obrazovku, kterou jmenuje jeho vlastní navigace, a druhý běh s menší mezí nezanechá žádnou stránku prvního
  • žádná stránka nedrží absolutní odkaz pod /ui a každý relativní odkaz jmenuje soubor, který snímek obsahuje
  • odkaz na Cockpit, API nebo formulář vede na stránku o živém UI a nese cestu, kterou myslel
  • každá stránka říká commit, na kterém byla přečtena, a skript nenačítá žádný panel a nic v snímku neobnovuje
  • deklarace je povrch pouze pro publikaci na /ui sestavený z tohoto commitu a topologie se s ním validuje vedle servírovaného UI
  • nasazení Pages umístí snapshot commitu, který publikuje, na /ui a odmítne snapshot jiného commitu

Validace

  • cargo test --lib web::report::snapshot
  • test/run.sh 1092_the_ui_snapshot_holds_every_screen
  • test/run.sh 1093_the_ui_snapshot_links_nothing_absent
  • test/run.sh 97_pages_fast_path
  • test/run.sh 26_ci_wiring

Požadované důkazy

  • ui_snapshot_unit_tests
  • ui_snapshot_case_1092
  • ui_snapshot_case_1093
  • ui_snapshot_on_pages

Důkazy

pokrývátypcommandvýsledeku commitu
ui_snapshot_unit_teststestcargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib web::report::snapshottest result: ok. 7 passed; 0 failed, on a tree equal to master 3442ce68c53442ce6
ui_snapshot_case_1092testbash test/run.sh 1092_the_ui_snapshot_holds_every_screenok 1092_the_ui_snapshot_holds_every_screen, na stromu shodném s master 3442ce68c53442ce6
ui_snapshot_case_1093testbash test/run.sh 1093_the_ui_snapshot_links_nothing_absentok 1093_the_ui_snapshot_links_nothing_absent, on a tree equal to master 3442ce68c53442ce6
ui_snapshot_on_pagesručníscripts/pages verify-ui --url https://majordomus.dev --commit 3442ce68c56cb360117df24da8268006aa9814c7 --timeout 0exit 0 v 2026-10-13T12:26Z: https://majordomus.dev/ui/ obsluhuje UI přečtené na 3442ce68c56c: 256 z 1226 stránek, které snapshot.json uvádí, bylo dotázáno a 0 neodpovědělo, 970 se nedotazovalo (--max-pages 256); snapshot vynechal 13527 stránek, zastaveno complete3442ce6

Časová osa

zahájeno
2026-10-13T12:47:49Z
ověřeno
2026-10-13T12:48:08Z
dokončeno
2026-10-13T12:49:21Z

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

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