Skip to content

test: add margin to warm-switch performance gate - #195

Merged
wesbillman merged 1 commit into
mainfrom
carl/warm-switch-diagnostics
Sep 24, 2026
Merged

wesbillman merged 1 commit into
mainfrom
carl/warm-switch-diagnostics

Conversation

@wesbillman

Copy link
Copy Markdown
Collaborator

Outcome

Keep the warm-switch <100ms target, with an owner-requested provisional <200ms per-sample hard ceiling. Record all four timings and finish the existing correctness checks before enforcing the ceiling. Target misses produce performance annotations in the downloadable Playwright JSON; raw frame/first-visible diagnostics remain in evidence.json.

No production changes, retries, extra samples, timing-boundary changes, timeout increases or browser-selection changes. The 1s completion watchdog, correct-channel row/composer checks, held-label cold-open proof, no-extra-head-read check and profile/relay assertions remain intact. Existing Linux WebKit exclusion remains historical/awaiting revalidation, not an active 100ms gate.

Why this policy

The same single-sample assertion failed on main at 118ms, #182 at 111ms, and #185 at 120.5ms. These are intermittent observations, not proof of contention or absence of PR-specific cost. 200ms is an explicit margin choice with roughly 80ms above the largest observed miss, not a proven flake-free bound. 100–199ms regressions now need performance review; >=200ms still fails. Severe runner stalls can still fail.

Validation

  • Clean commit 96338eadd06b9cf295b1ea99ed4fe999ec0aba61: complete channel-opening.spec.mjs passed 4/4 across serial Chromium 153.0.8010.12 and WebKit 26.6 on macOS ARM64, Node 24.18.0. Command: bin/pnpm exec playwright test --config tests/browser/playwright.config.mjs tests/browser/channel-opening.spec.mjs --project '*-measurements' --no-deps --workers=1 --reporter=list,json.
  • Transient local copies of the full test file (not shipped), both engines: adding 125ms inside the measured interval failed the old gate at 164/184ms, but passed the new gate at 149–189ms with four annotations and complete relay/profile checks. Adding 250ms failed every measured 275–303ms switch at the ceiling, after all four samples and functional checks. Suppressing warm navigation failed the 1s watchdog. An actual additional fixture HTTP head query failed the request-count assertion. These probes validate gate behavior, not real runner contention or hosted stability.
  • Independent source review found no blockers; documentation clarified annotations are in the report artifact, not the GitHub job-summary table. Mandatory commit/push hooks passed; their selectors correctly skipped unrelated unit/design work. No hooks bypassed. No new or removed browser cases; the existing browser-only layout/paint and production-broker contract is retained.

Local cost comparison

  • fe897a10: 4 passed; elapsed 14.31s, summed execution 10.19s; compiled setup Chromium 647ms / WebKit 696ms.
  • 96338ead: 4 passed; elapsed 11.84s, summed execution 9.45s; compiled setup Chromium 580ms / WebKit 614ms.

One local run per snapshot is a cost sanity check, not a distribution or Linux result. Hosted full-suite CI and reviewer/code-owner approval remain pending. This PR does not approve #185 or automatically merge anything.

Implemented by Carl, an automated agent, via Wes’s GitHub account. Source conversation: Buzz channel 3428ec3f-a58b-429b-afbc-dc6a77918ce8, thread bf84443949508192684e6cb0049d775dea51ef08d82c6f93d122c639330d0251.

Signed-off-by: Carl <32a2e2c9d428ee08902cab75d956da2c1d235a22d4766b0dd4138bf6e2e5db1d@buzz.block.builderlab.xyz>
@wesbillman
wesbillman requested review from a team and comp615 as code owners September 24, 2026 01:52
@wesbillman
wesbillman merged commit 96a641a into main Sep 24, 2026
12 checks passed
@wesbillman
wesbillman deleted the carl/warm-switch-diagnostics branch September 24, 2026 02:03
morgmart pushed a commit that referenced this pull request Sep 24, 2026
* origin/main:
  Add complete reaction toggles to the message menu (#185)
  feat: add persistent community navigation rail (#191)
  test: add margin to warm-switch performance gate (#195)

Signed-off-by: Carl <c217fe6b9d958f41c3a5e030dccc7f626775a923089cb6491305eade75ea1f1b@buzz.block.builderlab.xyz>
zrmarley added a commit that referenced this pull request Sep 24, 2026
…o-player-polish

* origin/main: (38 commits)
  Fix diff content fallback, keyboard scrolling and edit selection (#205)
  Standardize form controls and field feedback across Buzz (#174)
  Keep image review downloads and external opens distinct (#144)
  Verify media review comments (#166)
  Follow system appearance (#210)
  Add rich composer formatting and spoiler rendering (#203)
  feat: show roster-backed channels and managed instances in profiles (#188)
  Add new direct message flow (#156)
  Remove Home, start in Messages, and keep Channels enabled (#194)
  fix: restore avatar presence controls and active-input sensing (#198)
  Add legacy diff messages with inline and expanded viewing (#202)
  Edit the latest own message with Up in the existing composer (#192)
  Add complete reaction toggles to the message menu (#185)
  feat: add persistent community navigation rail (#191)
  test: add margin to warm-switch performance gate (#195)
  Add composer attachments and compatible media preparation (#183)
  Add reply and copying to the shared message menu (#182)
  fix: avoid idle workspace re-renders from activity and label churn (#186)
  feat: add devtools trace capture to web profiling (#180)
  Add optional channel templates, teams and personal group defaults (#181)
  ...

Signed-off-by: Zach Marley <zmarley@squareup.com>
zrmarley added a commit that referenced this pull request Sep 24, 2026
…-content-compat

* origin/main: (38 commits)
  Fix diff content fallback, keyboard scrolling and edit selection (#205)
  Standardize form controls and field feedback across Buzz (#174)
  Keep image review downloads and external opens distinct (#144)
  Verify media review comments (#166)
  Follow system appearance (#210)
  Add rich composer formatting and spoiler rendering (#203)
  feat: show roster-backed channels and managed instances in profiles (#188)
  Add new direct message flow (#156)
  Remove Home, start in Messages, and keep Channels enabled (#194)
  fix: restore avatar presence controls and active-input sensing (#198)
  Add legacy diff messages with inline and expanded viewing (#202)
  Edit the latest own message with Up in the existing composer (#192)
  Add complete reaction toggles to the message menu (#185)
  feat: add persistent community navigation rail (#191)
  test: add margin to warm-switch performance gate (#195)
  Add composer attachments and compatible media preparation (#183)
  Add reply and copying to the shared message menu (#182)
  fix: avoid idle workspace re-renders from activity and label churn (#186)
  feat: add devtools trace capture to web profiling (#180)
  Add optional channel templates, teams and personal group defaults (#181)
  ...

Signed-off-by: Zach Marley <zmarley@squareup.com>

# Conflicts:
#	docs/channels.md
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