I1509 — Detailní stránka, která nic nestránkuje, přerostla důvod, proč nic nestránkuje
Sladit dvě věci, kterými se největší stránka Cockpitu snaží být — úplná dřív, než se načte jakýkoli JavaScript, a použitelná pro člověka — aniž by se vzdala první, a zařadit stránku pod testovací sweep, který pokrývá všechny ostatní.
HOTOVO vlna 0 · p1 · profil implementation · bezpečné souběžně
Součást development-runtime — The runtime has a development surface.
Cíl
Sladit dvě věci, kterými se největší stránka Cockpitu snaží být — úplná dřív, než se načte jakýkoli JavaScript, a použitelná pro člověka — aniž by se vzdala první, a zařadit stránku pod testovací sweep, který pokrývá všechny ostatní.
Proč
Změřeno na dnešním masteru z čerstvě sestaveného spustitelného souboru v tomto worktree: GET /cockpit/graphs/composed vrací 1 196 549 znaků a 4 729 řádků tabulek v jediném dokumentu, bez jakéhokoli ovládání stránkování. Není to chyba ve smyslu omylu; docs/COCKPIT.md výslovně uvádí, že detailní stránka nestránkuje nic, a dává důvod — uzly a hrany grafu se vypisují celé, protože kresba je jen vylepšení, čtenář bez JavaScriptu má pouze tyto seznamy a čtenář, který ověřuje, zda je cesta v manifestu, ji musí najít vyhledáváním přímo v prohlížeči. Kontrakt je správný a jeho cena mu přerostla přes hlavu: dokument o velikosti 1,2 MB nemůže prohledávat ani člověk. Druhá polovina zjištění je, že tato stránka není pokryta vůbec — testovací průchod v apps/majordomus-cli/tests/cockpit.rs jmenuje /cockpit/graphs, /cockpit/graphs/topology a /cockpit/graphs/registry, a ne /cockpit/graphs/composed, takže největší stránku, kterou Cockpit servíruje, nevykresluje žádný test.
Aktuální stav
1 196 549 znaků, 4 729 řádků <tr>, dvě tabulky, nula výskytů parametru stránkování, obslouženo za 60 ms. Není v průchodu PAGES. Chování se řídí dokumentovaným kontraktem, který nejmenuje žádnou velikost, od níž přestává platit.
Cílový stav
Čtenář bez JavaScriptu se stále dostane ke každému uzlu a hraně a čtenáři s prohlížečem se nepodává megabajt k procházení. Ať je zvoleno cokoli — postupné odkrývání bez skriptu, vstup po částech, jako ho už nabízejí výpisy, nebo výslovná velikost, za kterou se smlouva mění — zapíše se do docs/COCKPIT.md jako smlouva, nikoli ponechá jako chování. Stránka je součástí přehledu.
Rozsah
- apps/majordomus-cli/src/cockpit
- docs/COCKPIT.md
- apps/majordomus-cli/tests
Mimo rozsah
- Učinit uzly a hrany dosažitelnými jen JavaScriptem. To je jediný výsledek, kterému má stávající kontrakt zabránit, a zůstává zabráněno.
- Ostatní detailní stránky, pokud stejné měření neukáže, že jsou také nad limitem. Manifest artefaktů je pojmenován toutéž větou kontraktu a nebyl zde změřen.
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- Každý uzel a hrana složeného grafu zůstává dosažitelná s vypnutým JavaScriptem
- Stránka, kterou čtenář obdrží, není jediným dokumentem této velikosti, nebo docs/COCKPIT.md uvádí velikost, při níž se smlouva mění, a proč
- /cockpit/graphs/composed je vykreslováno průchodem stránek, který pokrývá ostatní stránky
Validace
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test cockpit
- bash test/run.sh
Požadované důkazy
- complete_without_javascript
- page_is_covered
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| complete_without_javascript | test | cargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --test cockpit | výsledek testu: ok. 17 prošlo; 0 selhalo; QUERY_PAGES drží /cockpit/graphs/composed?nodes=2&edges=2, dosažené prostými odkazy (běh 2026-10-14 11:14Z na masteru 981ad2c3ac plus tato změna) | 981ad2c |
| page_is_covered | test | cargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --test cockpit | test result: ok. 17 passed; 0 failed (běh 2026-10-14 11:14Z na master 981ad2c3ac plus tato změna) | 981ad2c |
Riziko
Nízké v mechanismu. Riziko je reflexní oprava: přidání ?page= na stránku detailu potichu rozbije záruku vyhledávání v prohlížeči, pro kterou byl kontrakt napsán, a rozbije ji způsobem, který dnes žádný test nepostřehne, protože žádný test tuto stránku nevykresluje.
Časová osa
- zahájeno
- 2026-10-14T11:14:41Z
- ověřeno
- —
- dokončeno
- 2026-10-14T11:14:49Z
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/I1509.yaml. Přečtěte jej zpět pomocí majordomus plan show I1509.