I2495 — Cockpit je publikován jako snapshot na /cockpit a odkazy na důkazy v UI vedou na něj
Publikovat Cockpit na veřejném webu jako snímek přečtený při publikovaném commitu, exportérem, který už čte UI, aby /cockpit/ byl ověřeným povrchem produktu a schopnost, kterou UI cituje, byla stránkou, kterou čtenář může otevřít.
HOTOVO vlna 3 · p0 · profil implementation · běží samostatně
Součást development-runtime — The runtime has a development surface.
Cíl
Publikovat Cockpit na veřejném webu jako snímek přečtený při publikovaném commitu, exportérem, který už čte UI, aby /cockpit/ byl ověřeným povrchem produktu a schopnost, kterou UI cituje, byla stránkou, kterou čtenář může otevřít.
Proč
Vlastníkova mise Unified Product Experience (2026-10-12) jmenuje domovskou stránku, /ui a /cockpit jako povrchy produktu a žádá, aby byl ověřen veřejný /cockpit. https://majordomus.dev/cockpit/ odpovídal stránkou webu pro nenalezeno. Každý zdrojový řádek UI odkazuje na stránku schopnosti v Cockpitu (ADR 0135) a v publikovaném snapshotu UI každý z těch odkazů vedl na stránku, která říká jen to, že odpovídá až proces: 187 odkazů na šestnácti obrazovkách tohoto repozitáře. ADR 0147 zaznamenává rozhodnutí.
Aktuální stav
Exportér z ADR 0141 (web/report/snapshot.rs) jmenuje ve svém kódu mount UI, aktiva, obrazovky a skript. Žádný příkaz nezapisuje snapshot Cockpitu, model publikace deklaruje jeden snapshot a žádná sonda se nedotazuje veřejného webu na /cockpit/.
Cílový stav
Exportér bere Subject (identita, producent, obsluhovaný povrch, mount, assety, klíč fragmentu, zda stránky ponechávají skripty, zadržené routes), handler povrchu a stránky ke čtení jako první. `majordomus web report cockpit-snapshot` zapíše target/web/cockpit-snapshot: každou statickou route kromě /cockpit/continuity, poté stránky Cockpitu, na které chtěl snapshot UI odkazovat, poté to, na co odkazují, omezeně; žádná stránka nenese skript; každá stránka je opatřena commitem, časem a executable. Stránku, která čte .ai/local/, zadržuje samotný subject, takže se k ní žádný odkaz nedostane. Odkaz do povrchu jiného snapshotu vede na stránku, když ji záznam onoho snapshotu uvádí, a jinak na živou stránku, a snapshot zapsaný jako druhý opraví soubory prvního. deploy.snapshots deklaruje oba; workflow pages čte Cockpit po UI, nahraje oba, umístí každý na jeho mount z modelu a po nasazení se veřejného webu zeptá na Cockpit; pages-check drží každý deklarovaný snapshot.
Rozsah
- apps/majordomus-cli/src/web/report/snapshot.rs
- apps/majordomus-cli/src/commands/web.rs
- apps/majordomus-cli/src/cli.rs
- apps/majordomus-cli/src/cockpit/mod.rs
- apps/majordomus-cli/src/web/discover.rs
- scripts/pages
- scripts/ci/pages-check
- .ai/repo/ci/pages.yaml
- .github/workflows/pages.yml
- docs/COCKPIT.md
- docs/MAJORDOMUS_UI.md
- docs/GITHUB_PAGES_ARCHITECTURE.md
- test/cases/2981_the_cockpit_snapshot_holds_its_routes.sh
- test/cases/2982_two_snapshots_link_what_the_other_holds.sh
- .ai/repo/adrs/0147-the-cockpit-is-published-as-a-snapshot-by-the-exporter-that-reads-the-ui.md
- .ai/repo/project/issues/I2495.yaml
Závislosti
Kritéria přijetí
- `majordomus web report cockpit-snapshot` zapíše přehled a výpis schopností, každý relativní odkaz každé stránky jmenuje soubor, který snapshot drží, a žádná stránka nenechává absolutní odkaz do /cockpit
- Žádná stránka snímku Cockpitu nenese skript a každá uvádí commit, na kterém byla přečtena
- /cockpit/continuity není v žádném snapshotu, ať na něj odkazuje cokoli, a odkaz na ni vede na stránku o živém Cockpitu
- Po zápisu snapshotu Cockpitu každý odkaz ze snapshotu UI do /cockpit jmenuje stránku, kterou snapshot Cockpitu drží, a schopnosti, které UI cituje, jsou mezi jeho stránkami
- Topologie drží cockpit-snapshot na /cockpit vedle servírovaného Cockpitu bez konfliktu
- Model publikace deklaruje oba snapshoty a workflow pro pages se po nasazení ptá veřejného webu na Cockpit
- https://majordomus.dev/cockpit/ odpovídá kódem 200 a stránkou, která uvádí publikovaný commit
Validace
- bin/majordomus plan validate
- cargo test --lib web::report::snapshot
- MJ_TEST_JOBS=2 bash test/run.sh 2981_the_cockpit_snapshot_holds_its_routes 2982_two_snapshots_link_what_the_other_holds
- scripts/pages verify-ui --surface cockpit
Požadované důkazy
- cockpit_snapshot_unit_tests
- cockpit_snapshot_cases_2981_2982
- public_cockpit_verified
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| cockpit_snapshot_unit_tests | test | cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib web::report::snapshot | test result: ok. 7 passed; 0 failed, on a tree equal to master 3442ce68c5; three of them are the Cockpit subject's | 3442ce6 |
| cockpit_snapshot_cases_2981_2982 | test | bash test/run.sh 2981_the_cockpit_snapshot_holds_its_routes 2982_two_snapshots_link_what_the_other_holds | ok 2981_the_cockpit_snapshot_holds_its_routes, ok 2982_two_snapshots_link_what_the_other_holds, na stromu shodném s masterem 3442ce68c5 | 3442ce6 |
| public_cockpit_verified | ruční | scripts/pages verify-ui --surface cockpit --url https://majordomus.dev --commit 3442ce68c56cb360117df24da8268006aa9814c7 --timeout 0 | exit 0 at 2026-10-13T12:26Z, after pages run 38395021350: https://majordomus.dev/cockpit/ serves the Cockpit read at 3442ce68c56c: 256 of 1500 page(s) snapshot.json lists were asked for and 0 did not answer, 1244 not asked (--max-pages 256); the snapshot left out 1628 page(s), stopped by limit. The route answered 404 before that run | 3442ce6 |
Časová osa
- zahájeno
- 2026-10-13T12:51:02Z
- ověřeno
- 2026-10-13T12:51:17Z
- dokončeno
- 2026-10-13T12:52:11Z
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/I2495.yaml. Přečtěte jej zpět pomocí majordomus plan show I2495.