I3227 — A UI link a reader is about to follow is fetched ahead when the route is cheap and the connection allows it
First record from I3226's Server-Timing the document-fetch cost a prefetch would remove on a /ui navigation (documents are sent Cache-Control: no-cache, panels load as fragments) and the cockpit::csp directives a prefetch must satisfy; only if that cost is measured, prefetch on hover or focus the /ui links whose navigation carries it, skipping Save-Data and slow connections, with the prefetch list derived from the rendered links and the measurement, not kept. With no measured cost the issue closes as not needed and the criterion is withdrawn.
BLOKOVÁNO vlna 1 · p3 · profil implementation · bezpečné paralelně
Blocked. This issue cannot start until I3226 is done. The status is derived from that, not declared.
Cíl
First record from I3226's Server-Timing the document-fetch cost a prefetch would remove on a /ui navigation (documents are sent Cache-Control: no-cache, panels load as fragments) and the cockpit::csp directives a prefetch must satisfy; only if that cost is measured, prefetch on hover or focus the /ui links whose navigation carries it, skipping Save-Data and slow connections, with the prefetch list derived from the rendered links and the measurement, not kept. With no measured cost the issue closes as not needed and the criterion is withdrawn.
Proč
Owner, 2026-10-11: caching, preloading, URLs and a router. Prefetching a 50 s panel would harm, so it waits for I3226's measurement. Every system.http.ui.* screen is already under its 100 ms budget (I2489), so 'under its budget' alone separates nothing; ADR 0207 (proposed) keeps a mechanism without a measured problem open. Sources: chatgpt-majordomus:c223#2.
Aktuální stav
No prefetch in share/ui; panels already load as fragments after first paint.
Cílový stav
Either share/ui/ui.js prefetches only the links whose measured navigation cost a prefetch removes, proven by a browser case, or the issue is closed as not needed with the measurement recorded and the criterion withdrawn.
Rozsah
- share/ui/ui.js
- apps/majordomus-cli/src/ui/view.rs
- apps/majordomus-cli/src/ui/mod.rs
- .ai/repo/project/intents
- .ai/repo/benchmarks/rust/policy.yaml
- .ai/repo/benchmarks/rust/baseline.macos-aarch64-debug.json
- .ai/repo/project/issues
- apps/majordomus-cli/src/cockpit/mod.rs
Mimo rozsah
- Service workers
- Prefetch on the published site
- Prefetching /ui/panels fragments
Závislosti
Kritéria přijetí
- Repeat navigation to a prefetched screen is measured faster than without
- No prefetch is issued under Save-Data
- Before any prefetch code, the issue records I3226's Server-Timing measurement of the navigation cost a prefetch removes (a /ui document under Cache-Control: no-cache, panels excluded) and the cockpit::csp directives it must satisfy; if none is measured the issue closes as not needed and the criterion a-cheap-link-is-fetched-ahead is withdrawn from the intent
- The proof is a browser case under test/cases numbered by scripts/case-numbers next that observes hover, focus and Save-Data; the PR rewrites the criterion to `evidence: test` with that case's path
Validace
- majordomus bench --check
- scripts/ui audit
Požadované důkazy
- browser case under test/cases observing hover, focus and Save-Data
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
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.
Canonical record: .ai/repo/project/issues/I3227.yaml. Read it back with majordomus plan show I3227.