Skip to content

perf: isolate layout in Logs virtual viewports - #24

Closed
smiggleworth wants to merge 1 commit into
mainfrom
fix/logs-layout-containment
Closed

smiggleworth wants to merge 1 commit into
mainfrom
fix/logs-layout-containment

Conversation

@smiggleworth

Copy link
Copy Markdown
Contributor

Draft checkpoint

Isolate layout in the two existing fixed-height Logs virtual scroll viewports. The necessary synchronous restoration reads remain in place; the proposed containment boundary may let those reads avoid laying out unrelated page content.

Product changes are two app class props and one contain: layout declaration. There are no package, public API, ref timing, scheduler, cache, state, observer, or performance-budget changes.

Evidence already qualified

  • npm run check passed: 53 unit tests, types, lint and build. This command does not include full browser acceptance.
  • Nine containment mechanism cases were RED on the unchanged baseline and GREEN on this candidate across Chromium, Firefox and WebKit. These assert the CSS mechanism, not a speed improvement.
  • 45 distinct native cases passed: nine final containment cases, 30 existing row/token cases, three existing mobile popup cases and three existing dense Chromium controls. Repeated setup runs are not added to this count.
  • Settled scoped geometry/style witnesses match the baseline except for containment, including retained viewport rectangles and window scroll. An unchanged WebKit repeat matches its baseline control.
  • The frozen patch passed independent source review. All 461 committed files match the qualified source manifest; 458 unrelated files are unchanged.
  • Published Core 0.4.3, UI 0.4.3 and Themes 0.4.2 remain pinned. All 2,126 target package files and the other 130 physical package pins match the baseline.

Optimization gate and limitations

Native source-bound traces identify getter-triggered style/layout work at the List and Table restoration reads. They establish request sites and observed cost; they do not prove the preceding invalidation owner, the historical failure cause, or any avoided cost from this candidate.

Legibility cost: one named app class shared by two existing roots and one CSS declaration. There is one runtime path. If a browser ignores the declaration, it retains the existing uncontained CSS path; equivalence in such an unsupported browser has not been tested.

Pending before adoption: measured native benefit, full acceptance with the unchanged <100ms maximum-action and maximum-long-task gates, canonical appearance checks, and complete optimization-gate qualification. Source approval covers this draft checkpoint only.

The existing CSS zoom 2 popup positioning defect is independently confirmed on the unchanged baseline and remains unresolved. The normal popup bounds control explicitly resets to zoom 1; containment does not claim to fix zoom 2 overflow.

This PR remains a draft at the user's requested stopping point. No merge, release, or publication is proposed yet.

@smiggleworth

Copy link
Copy Markdown
Contributor Author

Disposition: close without adopting this optimization.

The matched native runs on the exact baseline and candidate show no consistent benefit. Across the three complete enabled/disabled pairs, measured layout time was 37.561 vs 37.805 ms (desktop, -0.65%), 50.392 vs 48.208 ms (reverse-order desktop, +4.53%), and 48.712 vs 45.033 ms (mobile, +8.17%). Native layout counts and dirty/total object counts were equal within each pair. This does not establish a reliable reduction in work or a measured real-application bottleneck, as required by this repository's Optimization Gate.

The exact-head hosted Browser product flows check also remains failed: the unrelated workspace heap-retention case recorded a 121 ms maximum long task against the unchanged <100 ms gate. That result is not attributed to this CSS change, and the threshold is not being relaxed.

Closing the draft without adoption. The PR branch and local qualification evidence are being preserved for reconsideration if a repeatable real-application benefit is measured and full acceptance passes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant