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.

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átypcommandvýsledeku commitu
complete_without_javascripttestcargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --test cockpitvý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_coveredtestcargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --test cockpittest 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.

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