# 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.