Document Phase 3 delivery and remaining paint regression
This commit is contained in:
42
plans/phase3-report.md
Normal file
42
plans/phase3-report.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# Phase 3 report
|
||||||
|
|
||||||
|
Shipped on `codex/phase3`: plan `895f20a`; contract synchronization `f804a23`;
|
||||||
|
pinned loader `4853c2c`; server embedding `d98d444`; integration `5d6a154`;
|
||||||
|
review fixes `ccfb7d9` through `fab444b`; browser verification/results `b840505`.
|
||||||
|
|
||||||
|
The CSP-safe external head loader reads saved appearance before body creation.
|
||||||
|
Modern clients block core plus their active layout/dependencies; Settings loads before switching
|
||||||
|
and saves immediately. Imported settings also report their layout. Shared markup
|
||||||
|
visibility remains eager. Rare features, stats/export and layout scripts load on
|
||||||
|
intent; playlist/settings/service mode/lyrics editor remain in RAM. Idle warming
|
||||||
|
honours Save-Data and shares one six-download pool across tabs. Legacy migration
|
||||||
|
blocks all layouts because old pages cannot report selection. P2P/direct preserve
|
||||||
|
eight-second startup; EQ metadata/DeviceDB stay eager.
|
||||||
|
|
||||||
|
Accepted decision: executing groups stay pinned until a playback-guarded user
|
||||||
|
reload. Unexecuted groups use newer cached URLs only with matching core/dependency
|
||||||
|
contracts; otherwise retain N-1, mark reload-required and request the existing
|
||||||
|
Refresh UI banner. Changed contracts block activation. Phase 4 must supply
|
||||||
|
state disposal/handoff before live replacement; app.js splitting remains there.
|
||||||
|
|
||||||
|
Verification: 190 frontend/183 server tests, no skips. Chromium/WebKit pass warmed
|
||||||
|
feature first-use with zero network, offline layouts, pre-body selection,
|
||||||
|
Settings search/extensions, Car controls, imported appearance, stale fallback,
|
||||||
|
contract/pinning guards and playback protection. Actual b77938a migration passes
|
||||||
|
both proxy profiles: one user-initiated reload/banner, N-1 tab and offline boot.
|
||||||
|
Both rollback flags pass offline checks.
|
||||||
|
|
||||||
|
Reduced one-run LTE, Chromium/WebKit (`phase3-final-2026-10-08.json`): initial compressed JS/CSS
|
||||||
|
221,307/274,813 bytes versus reconstructed Phase 0 276,414/338,940 (−19.9%/−18.9%).
|
||||||
|
Historical Phase 0 boot 10,480/3,290 ms becomes 7,193/3,293; warm 419/81;
|
||||||
|
offline 166/84. FCP 1,356/2,467 versus 1,572/1,100: WebKit first paint regresses,
|
||||||
|
so the paint target remains unmet despite bootstrap/preload reordering. Core JS
|
||||||
|
updates transfer 159,905/194,026 bytes; inactive CSS readiness 29,724/28,082,
|
||||||
|
with that CSS downloaded after activation. Warm counters include idle downloads.
|
||||||
|
WebKit still duplicates cold app transfer; repeated medians await Phase 5.
|
||||||
|
|
||||||
|
Workers/importScripts/WASM, piano engine and F7 now use hashed URLs; fonts/icons/
|
||||||
|
webmanifest remain plain and cached (exact matrix in perf/README.md). External
|
||||||
|
piano model downloads remain on request. Owner iPhone checks: installed/offline
|
||||||
|
layouts, feature first-use, update guard/override, locked playback 30 minutes,
|
||||||
|
OPFS/quota coexistence. No deployment.
|
||||||
Reference in New Issue
Block a user