Problem
The Playwright GPU workflow has been red across multiple changes, but the failures were harness drift rather than performance regressions. In run 29039513862, all eight cases timed out on #/launcher and never executed a benchmark.
Repairing the harness exposed a separate, real performance problem: synchronous 50K-point edits are reasonably fast, while the rendered scene frame is not.
Local measurements on 2026-07-09:
| Operation |
p95 |
| 50K-point draft mutation |
15.1 ms |
| 50K-point rendered translation frame |
291.3 ms |
| 50K-point rendered pan frame |
178.4 ms |
| settled undo |
approximately 470 ms |
| settled redo |
approximately 480 ms |
An earlier local run reached 448 ms p95 for rendered translation, so this path is also variable enough that CI should retain raw reports.
Why the suite drifted
- The fixtures sent the removed
external:open-font IPC event.
- Opening a font now creates a workspace window; fixtures retained the launcher page.
- The E2E build omitted the workspace utility entry point.
- Packaged/E2E renderers use an opaque
file: origin, but port handoff required exact origin equality.
- Performance code used
window as any and called deleted editor APIs, so typecheck could not detect drift.
- Tests shared development
userData; force-exited dirty 50K edits could be recovered by later cases.
- Several samples measured synchronous setters while claiming to include rendering and GPU compositing.
- The PR path filter did not cover several bootstrap/workspace files that can break E2E.
Durable benchmark contract
Rendering follow-up
Problem
The Playwright GPU workflow has been red across multiple changes, but the failures were harness drift rather than performance regressions. In run 29039513862, all eight cases timed out on
#/launcherand never executed a benchmark.Repairing the harness exposed a separate, real performance problem: synchronous 50K-point edits are reasonably fast, while the rendered scene frame is not.
Local measurements on 2026-07-09:
An earlier local run reached 448 ms p95 for rendered translation, so this path is also variable enough that CI should retain raw reports.
Why the suite drifted
external:open-fontIPC event.file:origin, but port handoff required exact origin equality.window as anyand called deleted editor APIs, so typecheck could not detect drift.userData; force-exited dirty 50K edits could be recovered by later cases.Durable benchmark contract
anyescape hatch.Rendering follow-up