diff --git a/plans/phase4-report.md b/plans/phase4-report.md new file mode 100644 index 0000000..b624454 --- /dev/null +++ b/plans/phase4-report.md @@ -0,0 +1,48 @@ +# Phase 4 report + +Shipped on `codex/phase4`: plan cdd26b6; six seams 3c9a24a, 5fb9564, +8e7fa19, 94ea211, 0475a18, b335f95; failure handling 2c50035. +Scope-resolved dependency inventory and byte/coupling rankings are in +phase4-seams.md; commands, output excerpts and results in phase4-verification.md. + +Original source bytes moved: + +| Seam | Bytes | +|---|---:| +| Eager shell/shared views/Settings/rail | 98,378 | +| Presenter | 9,492 | +| Remote client | 30,421 | +| Watch party | 22,833 | +| Share/External | 13,334 | +| Stats view | 7,074 | + +`app.js`: **587,029 → 408,473 bytes, −30.42%** (178,556 net; 2,976 bytes +facade overhead). Shell definitions load before app; required eager features +stay in RAM. Lazy classic clients register on window.YT. Synchronous playback +hooks remain synchronous; configured/URL sessions resume. Stats tracking loads +without parsing its view. New chunks are manifested and retained in legacy SHELL. + +Player, queue, persistence, boot, Notes/editor, service mode, EQ/level, sleep/drift, +Gestures and remaining editor/export glue stay in app.js. Exact source fingerprints +protect playback/tracking bodies. Now-playing metadata mutations inside Player +remain there; markup, action paint and mini bar are eager. Stateful groups remain +pinned; live replacement stays disabled without disposal/state handoff. + +Actual LTE measurements, Chromium/WebKit: initial compressed JS/CSS +**210,419/255,200** versus Phase 3 221,307/274,813; matched Phase 0 +276,414/338,940. Isolated three-run Chromium median boot **7,010 ms**, long tasks +**275 ms** versus Phase 0 10,480/454 (Phase 3 7,193/287). +WebKit boot 2,977 ms; no long-task API. Presenter edit transfers only its chunk +(3,118/3,587 bytes), plus index/manifest/worker checks: total **33,408/41,364**. +Core updates: 125,795/147,259 bytes. Offline boot: 180/90 ms, zero network. + +Verification: **198 frontend/183 server tests**, no skips; both-engine cache smoke, +hidden timers, layouts/staged contracts/pinning/playback guard, b77938a migration +with/without stalls, and both rollback flags pass. Each seam had its own green +checks/commit. No deployment. + +Limits: WebKit FCP 2,401 versus Phase 0 1,100 ms still regresses. Concurrent-run +Chromium long tasks were 495 ms; isolated repeat is reported separately. Warm +counters include idle downloads; five-run comparisons await Phase 5. Owner must +check real-iPhone cached first-use/layouts, Remote/Party/Presenter, update guard, +30-minute locked audio/resume and OPFS quota coexistence.