Verify six app seams and record Phase 4 performance measurements

This commit is contained in:
Jonathan Sykes
2026-10-08 05:03:55 +08:00
parent 2c5003575c
commit a7473cbca2
15 changed files with 4263 additions and 12 deletions

View File

@@ -271,3 +271,43 @@ Legacy pages cannot report their selected layout. Their one-time migration block
all layouts to preserve immediate offline selection; modern pages block only the
reported layout and its shared controls. Executing groups never re-evaluate live.
See plans/phase3-staged-apply-decision.md: Phase 4 must add disposal/state handoff.
## Phase 4 seams and verification
The dependency inventory in `plans/phase4-seams.md` records Phase 3 declarations,
resolved outside references and byte/coupling rankings. Reproduce its source using
`npm install --prefix perf/.tmp/analysis --no-audit --no-fund acorn@8 eslint-scope@8`
and `node perf/analyze-app.cjs cd4a25a` (development scratch dependencies only).
Shell/shared view/Settings/section-rail definitions remain eager before app.js.
Presenter, Remote client, Watch party, Share/External and Stats view register
classic singletons on `window.YT`; synchronous playback hooks remain facades.
Executing chunks remain pinned: disposal/state handoff is still required before
any live replacement can be enabled.
```bash
node --test frontend/*.test.js
(cd server && bun install && bun run test)
node perf/hidden-timers.mjs
node perf/seams.mjs --browser all
node perf/lazy.mjs --browser all
node perf/migration.mjs --browser all --profile lossy \
--out perf/results/phase4-migration-lossy-2026-10-08.json
node perf/migration.mjs --browser all --profile unthrottled \
--out perf/results/phase4-migration-unthrottled-2026-10-08.json
node perf/baseline.mjs --runs 1 --browser all --profile lte --scenario all \
--out perf/results/phase4-final-2026-10-08.json \
--compare perf/results/after-phase0-2026-10-07.json
node perf/baseline.mjs --runs 3 --browser chromium --profile lte --scenario cold \
--out perf/results/phase4-cold-isolated-2026-10-08.json
```
`update-feature` appends one comment to presenter.js in scratch, installs the worker,
explicitly activates, then waits for the changed background chunk to be verified
in CacheStorage. It asserts that no other application JS/CSS/font/icon payload
transfers; derived index/manifest and worker script checks are included in totals.
`all` includes this scenario when the source contains presenter.js. Cold records
now include individual long-task timing without changing the aggregate metric,
plus the source frontend build tag. WebKit does not expose the long-task API.
Migration supports `--out` to preserve earlier phase evidence. Existing lazy
harness results are copied to `phase4-lazy-2026-10-08.json` after each Phase 4 run
and the Phase 3 result is restored. No production requests or deploys are needed.