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