I1015 — Povrch bez serveru za sebou se nenabízí, jako by ho měl
Zařídit, aby zpřístupnění povrchů jen pro backend — konzole API, živý stav, čtení za běhu — vyplývalo z metadat dostupnosti, a prokázat, že se obě projekce chovají správně.
HOTOVO vlna 2 · p0 · profil implementation · bezpečné paralelně
Cíl
Zařídit, aby zpřístupnění povrchů jen pro backend — konzole API, živý stav, čtení za běhu — vyplývalo z metadat dostupnosti, a prokázat, že se obě projekce chovají správně.
Proč
Publikovaný web nemá server. Odkaz na runtime konzoli na něm je porušený slib a obvyklou opravou je kontrola vlastní adresy stránky, což je pravidlo skryté tam, kde ho nikdo nenajde.
Aktuální stav
web::Availability je ServedOnly, PublishedOnly nebo Both a ProjectionRoute::linkable() odpovídá jen z něj. Stranu běžícího serveru prověřují test/cases/89_web_surface.sh a apps/majordomus-cli/tests/projections.rs. Statická strana, která při měření 2026-09-10 chyběla, je kontrola 18 ve scripts/site-check: čte z vygenerovaného OpenAPI každou trasu, kterou projekce deklaruje jako pouze servírovanou, odmítne publikovanou stránku, která na některou odkazuje, a vyžaduje, aby každá byla na /docs/api/ uvedena jako vyžadující server. Úloha site ji spouští při každém sestavení. Změřeno na master b4a781c668, 2026-10-07.
Cílový stav
Vystavení vyplývá výhradně z metadat dostupnosti a pro každou projekci existuje test, který to tak udržuje.
Rozsah
- apps/majordomus-cli/src/http/swagger.rs
Mimo rozsah
- Jakékoli rozhodnutí učiněné podle hostname, adresy nebo build příznaku uvnitř stránky
- Vykreslení mrtvého cíle, jako by byl živý
Závislosti
Co na tom čeká
- I1018BLOKOVÁNO Pravidla povrchu existují jako kontroly, doložené tím, že je lze přimět selhat
- I1021BLOKOVÁNO Prohlížeč dokládá rozhraní při šířkách, které lidé používají
Kritéria přijetí
- Povrch jen pro backend se nabízí jako použitelný pouze tam, kde je backend k dispozici, rozhodnuto z metadat
- Statický build neobsahuje žádný aktivní odkaz na povrch dostupný jen za běhu
- Kde je užitečné zmínit nedostupný povrch, ukáže se jako nedostupný, ne tiše vynechaný ani odkazovaný
- Oba případy se testují — statický build a běžící server s přítomným API
Validace
- bash test/run.sh
- scripts/cockpit-probe
Požadované důkazy
- availability_drives_exposure
- both_projections_tested
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| availability_drives_exposure | ci | scripts/site-check (kontrola 18), job site běhu validate na masteru | OK plocha: každá trasa, která se pouze servíruje, je pojmenována na /docs/api/ a odnikud na ni nevede odkaz: /api/v1 /swagger /mcp /events /cockpit; site-check: 0 selhání, na b4a781c668 | b4a781c |
| both_projections_tested | ci | bash test/run.sh 89_web_surface (suite-shard 2) a scripts/site-check (job site), běh validate na masteru | ok 89_web_surface for the running server; OK surface for the static build; both at b4a781c668 in one run | b4a781c |
Riziko
Toto je kontrola, která tiše hnije, protože rozbitý odkaz na publikované stránce nic neselže. Test pro ni musí běžet při každém sestavení.
Časová osa
- zahájeno
- 2026-09-06T17:35:07Z
- ověřeno
- 2026-10-07T13:30:01Z
- dokončeno
- 2026-10-07T13:30:04Z
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/I1015.yaml. Zpětně ho přečtete pomocí majordomus plan show I1015.