Merge train BM14b #891
Closed
kayg
wants to merge 125 commits from
train/2026-11-03-bm14b into dev
pull from: train/2026-11-03-bm14b
merge into: kayg:dev
kayg:main
kayg:feat/style-sheet-fixes
kayg:storage/wal-checkpoint-off-save-1051
kayg:t3/paged-search-reconcile-final
kayg:feat/pass8
kayg:review/calendar-2
kayg:fix/shared-row-swipes
kayg:feat/contrast
kayg:dev
kayg:feat/collections-db
kayg:fix/instant-keys-1056
kayg:feat/money-round
kayg:perf/stalls-1054
kayg:wip/tiering-v3-cold4
kayg:wip/tiering-v3-cold5
kayg:port/rows-actions
kayg:port/rows-drop
kayg:port/hidden-blocks
kayg:port/rows
kayg:port/port-tables
kayg:port/port-tables-2
kayg:t3/mail-1011-liveness
kayg:port/devices
kayg:port/port-attachments
kayg:port/port-attachments-2
kayg:port/port-attachments-3
kayg:docs/design-consistency
kayg:docs/engineering-standards
kayg:fix/rusqlite-0.41-rustsec-2026-0459
kayg:feat/iphone-fixes
kayg:shared/restore-and-stale-918-919
kayg:fix/phone-top-band-contrast
kayg:feat/notes-approve
kayg:perf/soak-max-gate
kayg:feat/files-s1-identity
kayg:fix/lifecycle-event-id
kayg:feat/quickfix
kayg:wip/tiering-v3-cold
kayg:perf/web-mockup-frame-fixes
kayg:port/contacts-merge
kayg:port/contacts-edit
kayg:test/shared-room-no-deleted-text
kayg:perf/first-paint-credits
kayg:fix/shared-history-after-grant
kayg:fix/phone-swipe-regressions
kayg:feat/contrast-r1
kayg:review/sharing-pr3-review
kayg:feat/tiering-v3-s2-tags
kayg:feat/folder-drop
kayg:fix/deskpills-lazy-share
kayg:feat/sharing-s1-pr3
kayg:tmp/money-round-before
kayg:fix/phone-pane-backdrop-roots
kayg:fix/palette-preload-chips
kayg:fix/invite-defaults
kayg:port/tasks-matrix
kayg:fix/restore-green-gates
kayg:fix/sharing-fast-path-hardening
kayg:t3/photos-s1
kayg:feat/tiering-v3-s1-namespace
kayg:notes-archive-hide
kayg:feat/tasks-actions
kayg:t3/photos-plan-slice-one
kayg:feat/whiteboard-s1
kayg:t3/paged-search-reconcile
kayg:t3/smooth-pane-transitions
kayg:t3/index-position-startup-scan
kayg:fix/private-staging-759b-r2
kayg:feat/dav-transport
kayg:feat/imap-notes-fetch
kayg:feat/imap-notes-projection
kayg:feat/imap-notes-readonly
kayg:feat/imap-notes-auth
kayg:feat/imap-notes-server-foundation
kayg:docs/undo-block-ids-plan
kayg:fix/undo-768
kayg:proto/block-identity-v7d
kayg:issue/carddav-read-perf-fix-r2
kayg:issue/carddav-read-r2
kayg:docs/imap-766-plan-v2
kayg:docs/imap-notes-plan
kayg:docs/quota-plan-2
kayg:fix/parallel-test-flakes
kayg:feat/contacts-companion-pure
kayg:docs/calendar-backend-v2-plan
kayg:feat/calendar-ical-converter
kayg:docs/tasks-writes-v2-plan
kayg:docs/carddav-writes-v2-plan
kayg:docs/contacts-import-v2-plan
kayg:issue/610-pm-midnight
kayg:feat/calendar-v2-s1-containment
kayg:docs/dav-recorder-v2-plan
kayg:plan/previews-865
kayg:plan/save-log-durable-entry
kayg:fix/e2e-data-on-ram
kayg:feat/appwindow3
kayg:feat/appwindow2
kayg:feat/appwindow
kayg:feat/money-p1
kayg:feat/keys-sheet
kayg:review/calendar-2-themes
kayg:feat/smooth-cursor
kayg:fix/float-style
kayg:review/calendar-2-float
kayg:release/2026-11-06-hotfix
kayg:archive/port/rows-drop-code
kayg:archive/port/rows-actions
kayg:archive/port/rows
kayg:scratch/tasks-894-ui-gates
kayg:review/calendar-2-night-wip
kayg:release/2026-11-05
kayg:archive/feat/tiering-v3-s1-namespace
kayg:archive/flaky/rows-drop-fixed
kayg:archive/flaky/rows-actions
kayg:archive/feat/tiering-v3-reader
kayg:archive/feat/tiering-v3-roots
kayg:archive/flaky/rows
kayg:sim/bm15-final
kayg:sim/bm15-fix
kayg:sim/bm15-bis-932
kayg:sim/bm15-bis-909
kayg:sim/bm15
kayg:sim/bm15-bis-887
kayg:perf/tiering-option-b
kayg:port/style-3
kayg:port/style-2
kayg:port/style
kayg:fix/sw-lazy-precache
kayg:fix/vim-w-waits-for-save
kayg:fix/signout-test-races
kayg:fp-scratch/all
kayg:sim/bm15-first-paint
kayg:archive/bm15/rows-drop
kayg:archive/bm15/rows-actions
kayg:fix/palette-snippet-contrast
kayg:archive/bm15/rows
kayg:archive/bm15/hidden
kayg:archive/plan/save-log-durable-entry
kayg:mock/money-fix2
kayg:archive/fix/e2e-data-on-ram
kayg:mock/appearance-all
kayg:mock/pill-press
kayg:archive/docs/design-consistency
kayg:mock/auto-swipes
kayg:mock/mail-actions
kayg:archive/feat/mail-p1
kayg:mock/money-static
kayg:archive/review/standards-917
kayg:archive/docs/engineering-standards
kayg:perf/tiering-761-fix
kayg:mock/type-audit
kayg:mock/third-pane
kayg:feat/contacts-import-v2-s1
kayg:perf/executor-hot-path
kayg:archive/port/hidden-blocks
kayg:archive/port/devices
kayg:scratch/executor-on-894
kayg:scratch/executor-spans2
kayg:scratch/executor-spans
kayg:train/2026-11-03-bm14c
kayg:archive/port/rows-drop
kayg:feat/tiering-761-d-scale
kayg:feat/tiering-761-c-index
kayg:feat/tiering-761-b-reader
kayg:archive/review/sharing-pr3-review-9fec3d1f
kayg:perf/ports-lazy-budgets
kayg:feat/tiering-761-a-migration
kayg:train/2026-11-03-bm14
kayg:train/2026-11-03-bm12
kayg:archive/review/sharing-pr3-review
kayg:archive/feat/sharing-s1-pr3
kayg:train/2026-11-03-bm11
kayg:archive/feat/imap-notes-fetch
kayg:train/2026-11-03-bm10
kayg:archive/review/sharing-pr3-review-code
kayg:archive/plan/previews-865
kayg:train/2026-11-02-bm9
kayg:archive/port/port-attachments-3
kayg:archive/port/contacts-merge
kayg:fix/motion-audit-859
kayg:train/2026-11-02-bm8
kayg:archive/scratch/bm8-prep
kayg:archive/port/port-pickers
kayg:archive/port/port-tables-2
kayg:archive/port/port-tables
kayg:archive/feat/sharing-s1-pr3-code
kayg:archive/scratch/bm7-fixed
kayg:train/2026-11-02-bm7
kayg:archive/fix/parallel-test-flakes-code-minipc01
kayg:train/2026-11-02-bm6
kayg:docs/imap-766-readonly-slice
kayg:feat/dav-recorder-v3
kayg:research/788-diagnosis
kayg:archive/fix/parallel-test-flakes
kayg:archive/perf/pr792-cold-index-edit
kayg:docs/sharing-slice-1
kayg:archive/docs/imap-766-plan-v2
kayg:feat/dav-recorder-v2
kayg:archive/docs/dav-recorder-v2-plan
kayg:spike/imap-766-s0-cases
kayg:archive/fix/undo-768
kayg:feat/dav-recorder
kayg:archive/docs/contacts-import-v2-plan
kayg:archive/feat/calendar-ical-converter
kayg:feat/contacts-import
kayg:perf/cold-growth-on-764
kayg:perf/cold-growth-on-tiering
kayg:archive/docs/tasks-writes-v2-plan
kayg:archive/docs/calendar-backend-v2-plan
kayg:archive/feat/contacts-companion-pure
kayg:feat/tasks-set-status
kayg:feat/tasks-move-reorder
kayg:archive/docs/carddav-writes-v2-plan
kayg:archive/feat/calendar-v2-s1-containment
kayg:feat/tasks-delete-promote-duplicate
kayg:archive/feat/dav-transport
kayg:archive/fix/carddav-rebuild-r1
kayg:archive/fix/carddav-retention-r1
kayg:feat/carddav-writes
kayg:perf/quota-on-tiering
kayg:perf/quota-simple
kayg:perf/cold-growth-on-quota-stack
kayg:feat/calendar-identity
kayg:feat/calendar-event-parser
kayg:feat/calendar-props-maps
kayg:port/glass-when-ring
kayg:feat/tiering-761-s1
kayg:wip/10by32-01-impl-759b-scratch-20261030
kayg:wip/6by32-01-bm3-webkit-pause-20261030
kayg:wip/10by32-01-bm3-chromium-pause-20261030
kayg:wip/6by32-01-tier-761-s1-pause-20261030
kayg:spike/imap-766-s0
kayg:wip/6by32-02-calternal-pause-20261030
kayg:wip/8by64-01-review-688-pause-20261030
kayg:wip/6by32-01-verify-744-pause-20261030
kayg:wip/6by32-01-verify-742-pause-20261030
kayg:fix/private-staging-759b
kayg:wip/6by32-01-review-748-pause-20261030
kayg:wip/6by32-01-review-733c-pause-20261030
kayg:wip/6by32-01-review-733b-pause-20261030
kayg:wip/6by32-01-perf-idle-8-pause-20261030
kayg:wip/6by32-01-perf767-base-pause-20261030
kayg:wip/6by32-01-perf767b-767-pause-20261030
kayg:wip/6by32-01-perf767b-764-pause-20261030
kayg:wip/6by32-01-perf767-767-pause-20261030
kayg:wip/6by32-01-perf767-764-pause-20261030
kayg:wip/6by32-01-lists-b-pause-20261030
kayg:wip/6by32-01-ids-verify5-pause-20261030
kayg:wip/6by32-01-ids-verify4-pause-20261030
kayg:review/calendar-month
kayg:wip/10by32-02-undo-768-20261030
kayg:test/ids-verify3
kayg:wip/10by32-02-bm3-chromium-20261030
kayg:wip/10by32-01-review-753-20261030
kayg:wip/10by32-01-perf-idle-2-20261030
kayg:wip/10by32-01-bm2-webkit2-20261030
kayg:plan/759b-staging
kayg:train/2026-10-30-bm2
kayg:review/758b-tests
kayg:review/758-tests
kayg:review/764d-tests
kayg:review/767b-tests
kayg:review/preview-2026-10-29
kayg:review/767-tests
kayg:docs/tiering-731-plan
kayg:wip/c6b02-when2
kayg:wip/c6b02-tasks-create-fix5
kayg:wip/c6b02-settings-frost-mock
kayg:wip/c6b02-settings-frost-base
kayg:wip/c6b02-settings-frost
kayg:wip/c6b02-ring
kayg:wip/c6b02-review-733d
kayg:wip/c6b02-bm1-full-a
kayg:wip/compute02-when-field
kayg:wip/compute02-webkit-lists-repro
kayg:wip/compute02-train-bl2-dev
kayg:wip/compute02-dev-green-pw164
kayg:docs/deploy-plan
kayg:review/764c-tests
kayg:review/764b-tests
kayg:review/748g-tests
kayg:review/764-tests
kayg:review/759b-tests
kayg:fix/storage-owner-liveness-642
kayg:fix/storage-fix-7
kayg:wip/compute02-storage-fix-7
kayg:review/759-tests
kayg:feat/tiering-731
kayg:wip/tiering-731-first-attempt
kayg:wip/compute02-storage-fix-1
kayg:review/754g-tests
kayg:perf/idle-honest-2
kayg:review/754f-tests
kayg:review/754e-tests
kayg:review/755-tests
kayg:review/754d-tests
kayg:review/754c-tests
kayg:review/754b-tests
kayg:review/754-tests
kayg:fix/storage-private-tmp-642-dev
kayg:wip/compute02-verify-750
kayg:test/ids-verify5
kayg:test/ids-verify4
kayg:fix/storage-exact-file-quarantine-642
kayg:wip/compute02-verify-740
kayg:perf/one-flush-save
kayg:review/calendar-static
kayg:wip/compute02-verify-737
kayg:review/indexing-ring
kayg:review/when-field-2
kayg:wip/compute02-review-733
kayg:proto/block-identity-2-review
kayg:proto/block-identity-review
kayg:wip/c6b02-tc-design
kayg:review/when-field
kayg:issue/tasks-create-ids
kayg:issue/tasks-create
kayg:review/combined
kayg:wip/compute02-review-combined
kayg:review/task-polish
kayg:review/top-buttons
kayg:review/q1-q5
kayg:train/2026-10-26-bl2
kayg:archive/wt-398h
kayg:archive/train-bm-proptest-seed
kayg:archive/integ325-293
kayg:archive/integ325-ci
kayg:archive/client-auth-review-baseline
kayg:archive/wt-sim-4853
kayg:archive/wt-sim-4811
kayg:archive/wt-448m
kayg:archive/wt-398a-allocator
kayg:issue/calendar-adr
kayg:archive/old/train/2026-10-23bk2
kayg:archive/old/train/2026-10-23bk
kayg:issue/469-mockup-9a
kayg:issue/smart-tasks-mockup
kayg:issue/469-menus
kayg:issue/652-signout-flake
kayg:issue/652-history-fix7
kayg:issue/652-history-fix6
kayg:archive/old/issue/spring-check-perf
kayg:issue/spring-check-perf
kayg:issue/659-rename-fast
kayg:archive/old/train/2026-10-21ar
kayg:issue/search-hardening-3
kayg:issue/652-history-fix5
kayg:issue/660-port-sheets-glass
kayg:issue/652-history-fix4
kayg:issue/652-history-fix3
kayg:issue/652-history-fix2
kayg:issue/652-history-flake
kayg:train/2026-10-21an
kayg:issue/settings-admin-port
kayg:issue/search-port
kayg:train/2026-10-20am
kayg:issue/storage-split-fix2
kayg:issue/storage-split
kayg:archive/old/issue/folder-ids-fix
kayg:train/2026-10-20al
kayg:archive/old/issue/folder-ids
kayg:train/2026-10-20ak
kayg:issue/tables-mockup
kayg:train/2026-10-19aj
kayg:train/2026-10-19ai
kayg:issue/469-merge-fixes
kayg:issue/sidebar-band
kayg:archive/old/issue/608-settings-spec
kayg:train/2026-10-19ah
kayg:issue/swipe-offscreen
kayg:train/2026-10-19ag
kayg:archive/old/issue/590-nlp-adr
kayg:archive/old/issue/587-event-after-write-2
kayg:train/2026-10-19af
kayg:archive/old/issue/587-event-after-write
kayg:issue/469-pill-room-c
kayg:issue/469-pill-room
kayg:train/2026-10-19ae
kayg:issue/469-narrow-handle
kayg:issue/397-ios-swipe-2
kayg:archive/old/issue/adrs-photos-files-tasks
kayg:issue/469-desk-fixes
kayg:archive/old/issue/auto-update-adr
kayg:issue/469-filter-gap
kayg:issue/469-port-1b
kayg:issue/442-opacity-flake
kayg:archive/397-ios-swipe-2
kayg:issue/327-web-fast-3
kayg:archive/old/issue/469-port-1
kayg:issue/469-port-1
kayg:issue/327-web-fast-2
kayg:archive/old/issue/327-web-fast
kayg:archive/old/issue/425-stt-bench-vq1
kayg:archive/old/issue/445-no-bleed
kayg:archive/old/issue/400-swipe-mockup-2
kayg:issue/426-client-review
kayg:issue/426-client-2
kayg:issue/426-client
kayg:archive/old/issue/476-safe-area-lab
kayg:archive/445-top-light-2
kayg:archive/old/issue/445-top-light
kayg:issue/471-blocks-mockup
kayg:archive/old/issue/448-links-app-2
kayg:archive/old/issue/448-links-app
kayg:archive/old/issue/398-cold-links
kayg:issue/434-442-small-2
kayg:issue/434-442-small
kayg:archive/old/issue/398-unload
kayg:archive/old/issue/445-bottom-band
kayg:issue/445-bottom-band
kayg:issue/351-rem-3
kayg:archive/312-views-mockup
kayg:issue/351-rem-2
kayg:issue/351-rem
kayg:archive/old/issue/327-first-note
kayg:issue/395-width-phone
kayg:archive/old/issue/327-typing
kayg:issue/396-ios-edges
kayg:issue/397-ios-swipe
kayg:archive/398-allocator
kayg:archive/old/issue/327-notes-index
kayg:issue/345-347-contrast-empty-2
kayg:archive/old/issue/44-arenas
kayg:issue/44-arenas
kayg:archive/integ325
kayg:archive/old/issue/327-perf-harness
kayg:archive/old/issue/44-thp
kayg:issue/44-thp
kayg:archive/old/issue/285-sticky-pills
kayg:archive/old/issue/44-trim-3
kayg:issue/44-trim-3
kayg:archive/old/issue/165-cards
kayg:archive/old/issue/165-picker-2
kayg:archive/old/issue/212-multi-select
No reviewers
Labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
kayg/calternal!891
Loading…
Reference in a new issue
No description provided.
Delete branch "train/2026-11-03-bm14b"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
BM14b, based on origin/dev
41f2efa387b74175971a838f602535089d0d5fb4. Head6a1749a4251539f877515d4265c9b732b4965b76. Do not merge.1812cc5e1080934507d208b6d9adc897d790f6923755691ddcExcluded #842/#876 as requested. Mechanical #852 conflict resolution retains dev pull hint and expects 25 lazy imports, matching BM14. First-run gates and full split browser matrix pending, CI=1, workers=1, retries=0. No fixes will be made. Known candidates: vim.spec.ts:341/:380; sidebar-edge.spec.ts:8; webkit-1440 editor.spec.ts:173; webkit-390 missing-links.spec.ts:245. A candidate is exempt only if reproduced in its single baseline comparison. Results will be posted in comments. Artifacts stay outside the repo.
41f2efa3' into feat/sharing-s1-pr2 d95b705c0cAssembly complete at
6a1749a4251539f877515d4265c9b732b4965b76, base41f2efa387b74175971a838f602535089d0d5fb4. All five current heads in the description were fetched before assembly and merged with--no-ffin the requested order. #842/#876 excluded. Only mechanical resolution: #852 lazy import count 25, preserving dev PullHint and the style stack, as in BM14.Train locks are held by live owner shells on both VMs with EXIT cleanup,
SLOT_TRAIN=1,CI=1, disk TMPDIR$HOME/bm14b-tmp. Existing slot jobs are draining before gates. Initial free space: dev-01 252 GiB, dev-02 319 GiB; each gate checks the 50 GiB floor. Playwright starts directly with the corrected external.mtswrapper and explicittestDir/webServer.cwd. Chromium half on dev-01, WebKit half on dev-02, including admin-setup on each VM, preserving dependencies within each half. Workers 1, retries 0. No train case will be retried, and failures receive one origin/dev comparison. No product fixes or merge.First-run WebKit startup gate FAILED before test discovery/attempts. Exact command, in Nix from
apps/webon dev-02:First error:
Reporter has empty suites and zero test attempts. Prior output contains Vite's extensionless-import warnings, no earlier error. This is not an exempt known flake and remains a failed gate. A single origin/dev startup comparison is pending. To fulfill the full matrix, the still-unattempted cases are receiving their first attempts in a separate invocation, with
DEBUG=pw:webserver, the unchanged.mtswrapper and unchanged product sources. No failed case is retried and the startup failure is not erased. This follows BM14's separate accounting for startup failure versus unattempted cases.Completed first-run gates so far: frozen install PASS on both VMs; fmt PASS; clippy PASS; dev-02 Rust build PASS and web build PASS. Workspace tests still running on dev-01.
BM14b full first run: RED. Do not merge. Head
6a1749a4251539f877515d4265c9b732b4965b76, base origin/dev41f2efa387b74175971a838f602535089d0d5fb4. Rerun from scratch by the test sub-agent after the earlier Codex run stopped on a usage limit (its twobm14b-ownerunits were stopped and stale locks removed; the Codex run's WebKit start-up timeout is not counted). Merged--no-ffin order: #8501812cc5e, #85180934507, #85208b6d9ad, #82997d790f6, #8353755691d(all current heads). #842 and #876 excluded.CI=1,SLOT_TRAIN=1, on-disk TMPDIR,--workers=1 --retries=0, no case retried. Disk checked before every step (dev-01 at least 252 GiB free, dev-02 at least 317 GiB).Gates
bun install --frozen-lockfilecargo fmt --all --checkcargo clippy --workspace --all-targets --locked -j4 -- -D warningscargo test --workspace -j4cargo build -j4cd apps/web && bun run buildPERF_DIST=$PWD/apps/web/dist perf/web.sh --bundle-only --gatenode ci/check-case-paths.mjsnode ci/check-no-evidence.mjsPlaywright matrix (every project, one attempt each, retry index 0, no reporter errors)
Command, from
apps/webinnix develop:SLOT_TRAIN=1 CI=1 CALTERNAL_BIN=… E2E_DIST=… bunx playwright test --config=<.mts wrapper> --workers=1 --retries=0 --reporter=line,json. Chromium half on dev-01, WebKit half on dev-02, admin-setup on each.* Both throttled projects depend on the chromium projects, which had failures, so Playwright did not run them (8 "did not run"). Their first attempts were made right after, in one separate invocation on the unchanged train binary and dist with dependencies removed. Those results are the ones in the table.
Failures (first error), each with one origin/dev comparison
Baseline
41f2efa3, built and run the same way, exact cases only, one attempt. Every case below passed on the baseline, so none reproduces there.glass.spec.ts:76flashes.framesexpected > 20, received 13 (line 259)vim.spec.ts:341(on the known-flake list).cm-searchMatchcount expected 0, received 3note-bars.spec.ts:100(Attach, Divider)attach, receivedtoolsafter the tap (line 109)touch-select.spec.ts:312editor.spec.ts:57(cpu x6)editor.spec.ts:57(cpu x6)helpers.ts:123note-bars-motion.spec.ts:71(Style sheet)note-bars-motion.spec.ts:71(Attach menu)lazy-ui.spec.ts:70performance.timeOriginexpected 1793689770041, received ...042 (line 91)links.spec.ts:101not.toHaveURL(/chg-n7hesu/)still on the note URL after Try again (line 121)Known flakes that did not occur:
vim.spec.ts:380,sidebar-edge.spec.ts:8, webkit-1440editor.spec.ts:173, webkit-390missing-links.spec.ts:245. webkit-390 had no failures this time. No product fixes were made.BM14b: repeat-each study of the 10 red cases
Every case run
--repeat-each=20 --workers=1 --retries=0 CI=1,--no-deps, train head6a1749a4and origin/dev41f2efa3side by side on the same VM (Chromium on dev-01, WebKit on dev-02), each run with its own--output. "plain" = the two side by side; "load" = plus one ordinary~/bin/slotPlaywright job (editor+links specs) for the whole phase. Host load average from other agents was 4–24 during these runs (the editor cases hit the 30 s limit only when it was high). My own first plain pass on dev-01 was contaminated by my probe runs sharingtest-results; those cases were rerun clean and only the clean numbers are below.Pass counts, passed/20 (plain, load):
glass.spec.ts:76dee3e961(#850) swapped the fixed450×4 mswaits forstill(). A settled page draws no frames (the caret blink gave most of the old ones): the screencast holds 15–19 frames, the old test 40+, andframes > 20fails every time.vim.spec.ts:341?cherremoves the marks and puts the earlier 3 back ~60 ms later (probe0,3,3,…);:nohsent in that gap clears nothing. Rate: 4/20 and 2/20 on dev, 1/20 and 1/20 on head.note-bars.spec.ts:100touch-select.spec.ts:312editor.spec.ts:57editor.spec.ts:57note-bars-motion.spec.ts:71Style sheetlazy-ui.spec.ts:70(3 chunks)performance.timeOriginmoved 1 ms with no reload; fix by analysis (below).links.spec.ts:101The
pkill -u cua -f ms-playwrighton dev-02 (08:00 UTC / 09:00 CET) does not explain the two WebKit failures. They happened at 07:09:29Z and 07:10:43Z, about 50 minutes earlier, and are assertion failures with the browser alive. None of my dev-02 runs overlap it (first start 09:04Z) and none of my logs have a closed-browser signature.Why
dee3e961did not hold foreditor.spec.ts:57It made
toggleSourcewait for the dialog and the mode (correct, not faster). The test still spends ~18 s of its 30 s at 6x, so any host load above ~1.7× runs out of time, and the "page closed inhelpers.ts:123" is just the step that was running at the 30 s mark. The same commit is what brokeglass.spec.ts:76.Fixes (nothing loosened: no timeout, threshold or retry changed)
On #850 (
port/style, pushedd252a902)3744b595glass: wait for the screencast to hold >24 frames (state) after the caret step, threshold> 20untouched.d252a902editor: the throttled test is split into "loading and typing" and "switching modes" (×1 and ×6), each a fresh page; shift check unchanged.New PR #895
fix/suite-stability-bm14b→ dev (3c1d8deb): vim waits for the marks to return and the field to hold focus; lazy-ui marks the window instead oftimeOrigin; links waits for the server job before the URL check.After the fixes, passed/20 (plain, load):
Open
note-bars-motion.spec.ts:71Style sheet is not fixed. A first attempt (wait for idle warming before tracing) made it worse (6/40 failed plain) and is reverted, not pushed. The traces say the Style sheet mounts in one click/frame task of ~150–260 ms at 6x against the 250 ms budget, so it is passable only by luck on a shared host. It needs the sheet to mount in smaller pieces (an app change in #850's area), or a decision about the budget; I did not touch either.note-bars.spec.ts:100andtouch-select.spec.ts:312could not be reproduced (0 failures in 80 and 160 runs); no change made. A single full-suite run is the only place they have shown up.~/sf-res; nothing is committed.Style sheet open: task timings before / after (6x CPU, throttled-390, dev-01)
Cause (trace of
note-bars-motion.spec.ts:71): the tap opened the sheet in one task of 150–300 ms: Svelte mounted the whole sheet (strip + Page tab) in the tap's frame,Selectoraskeddocument.fonts.ready(a getter that forces a style recalc, ~39 ms at 6x),scrollLeft = index * clientWidthforced a layout, and the first pointer press of a page flippeddata-last-input, which a*selector depends on (whole-page restyle, ~70 ms at 6x, in the pointerdown listener).Fix (#850, commits
fdddc714,e2146619,3764d0b9,bcd5ef36,af6fb861):Selectorasksfonts.readyonly while a font is still loading.data-last-inputis written only when entering or leaving "keyboard" (the only value CSS reads), so the first tap costs no restyle.Longest main-thread task,
rest to Style sheet(there), spec's own trace:d252a902)--repeat-each=20e2146619only)Probe of one open at 6x (task, ms): click task 239–263 → 75–82; the Playwright pointerdown listener's forced recalc 71 → gone from the page's side; next tasks are the strip frame (~55) and the page frame (~60).
Host load average of other agents was 2–10 during these runs; the 263 outlier was one run with main-thread totals 2x its neighbours (host contention), but I cannot rule out a slow tail of ~1 in 40.
Look: frames at 1x (CDP screencast, 390 phone) before / after: the morph ends in the identical sheet; in the first 2–3 frames of the growth the capsule is empty for ~35–50 ms longer, then the strip and page fade in (no layout jump: the room is held).
Gates (dev-01,
~/bin/slot): bundle budgetsperf/web.sh --bundle-only --gateok (first JS 233.5 / 240 KB brotli);packages/ui test:primitives55 pass,apps/web test96 pass; 16 Style/bar/glass/sheet specs on chromium-390 (336 pass, 24 skipped), chromium-1440 (67 pass), throttled-390 (2 pass).apps/web checkfails onsrc/lib/actions.gen.ts is out of date with contracts/actions.json(not touched by this work; present on the base).Stack: #851 now has
994278bb(merge of the new #850 head; this stack mergesport/stylerather than rebasing) +d94771b6(held room measured for its taller Page tab: 362 / 451 px) and #852 has656b61bf(merge of #851; lazy-ui import count 25 = pull hint + covers).note-bars-motion.spec.tsStyle sheet on both: 6 / 6 pass (longest 75–100 and 83–184 ms).Closing: BM14b was a study train; BM14c (#897), BM14d (#907) and BM14e (#914) replaced it. Branch kept.
Pull request closed