Repository navigation
fix(perf): commit transcript rows on motion frames - #33629
Conversation
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-b2f8bf910242d7b9370a
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-b2f8bf910242d7b9370a
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-d60a77e16a11b66e2ecf
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Gallery before/after for
States
Pick other states with a Shipped in:
|
|
Review (claude opus-5.5 medium, carried after formatting-only verification): SHIP at 9e3e834 Original independent review: SHIP at 5ecd071; original verdict follows below. Codex verified the complete intervening diff: only the empty line before the closing Visual verdict: unchanged by the formatting-only diff. The original nonblocking follow-ups remain; validation results are separate and are not claimed by this carry. diff --git a/webviews/test/transcript-fling.test.ts b/webviews/test/transcript-fling.test.ts
index 491095a559f..77c4186fb8c 100644
--- a/webviews/test/transcript-fling.test.ts
+++ b/webviews/test/transcript-fling.test.ts
@@ -212,5 +212,4 @@ await requireBrowserLane("transcript-fling.test.ts", async () => {
}
});
}
-
});Review (claude opus-5.5 medium): SHIP at 5ecd071 Visual verdict: no intended design change. The diff changes when scroll state is committed, not any UI. What I checked (from the supplied source only; nothing was run):
Follow-ups (none blocking):
Before landing: run |
|
A/B run41621761759 stopped before any product test: the fleet snapshot is shallow and the driver tried to resolve the candidate's third ancestor. The product diff is unchanged. The wrapper now explicitly supplies the two source commits, validates their exact file contents, and does not require unrelated Git history. One corrected run is dispatched at the same head9e3e8347a19dfe28cfe1cf6c93e337c9736f7d64; no performance conclusion follows from the failed setup. Review reconciliation: |
|
Nonblocking follow-ups from the independent review are filed as #33672 (motion listener rebinding after a scroller replacement) and #33673 (synchronous cancellation during settlement). Both include causal evidence, originating commits and focused reproducer steps, with area and severity labels. Neither is a demonstrated current product regression. The strict native-wheel painted-coverage regression remains part of this PR’s validation, not a deferred finding. |
First-motion ABBA timing follow-upRun 41627761171, candidate
Baseline fling p95 spans 112–184 ms; candidate 99–161 ms. Both variants show large variation, and baseline also produces an outlier larger than the prior candidate 174 ms. The prior sample does not isolate a candidate regression. These results establish no reliable speedup, and they remain far above the 8.3 ms target. No averaging of per-run p95s is presented as an aggregate p95. Receipt acceptance, fixed-source hashes, four log digests, and source restoration passed. Full web check/regression/coverage validation is reused from 41623659964 at the identical candidate tree. Gallery attribution remains unresolved and the PR stays held. |
|
Remaining guard red is inherited at head Base The PR stays held only for the pending same-worker native timing comparison. Existing review and product head are unchanged. |
Transcript motion currently writes
scrollTopin a frame callback, while the browser's scroll event arrives after that frame paints. This keeps virtualization one frame behind a fast motion and can leave the first viewport partially blank. The change routes the existing motion notification through the transcript's normal scroll handling synchronously before paint, cancels stale queued work, and preserves reader follow intent. Zero-duration jumps remain unchanged and no overscan or native logic changes.Leo: “i feel like the app is slow on scrolling thru stuff... claude desktop is 120hz or something and ours is wack + it has sometimes not even rendered stuff!?”
Performance
Same-worker source A/B: baseline
5dee1ab988ec69569df92ed636c5b971d43f152a, candidate9e3e8347a19dfe28cfe1cf6c93e337c9736f7d64, fixed tests and harness. Timing and painted-coverage passes are separate. Two rounds are listed in order.The coverage improvement is consistent; timing is mixed and does not demonstrate a speedup or native 120 Hz. The completed ABBA follow-up below reproduces large outliers in both variants. Native presentation remains a separate fleet measurement.
Validation at this head: full web check passes; the baseline fails the named first-motion assertion and the candidate passes it, the real six-viewport wheel test and existing regressions. The source and fixed-harness hashes, restored source and all expected stages are verified in the run receipt. Earlier wrapper failures are superseded and provide no product evidence.
Nonblocking review follow-ups: #33672 covers listener rebinding if the read-only scroller is replaced; #33673 covers the existing motion cancellation latch. Neither is a demonstrated current-flow regression.
First-motion ABBA timing follow-up
Run 41627761171, candidate
9e3e8347a19dfe28cfe1cf6c93e337c9736f7d64, baseline5dee1ab988ec69569df92ed636c5b971d43f152a. Same worker and fixed 3000-row WebKit harness; order A/B/B/A. Each cell lists rounds 0/1. This pass measures timing only; the zero-blank coverage evidence remains the separate run 41623659964.Baseline fling p95 spans 112–184 ms; candidate 99–161 ms. Both variants show large variation, and baseline also produces an outlier larger than the prior candidate 174 ms. The prior sample does not isolate a candidate regression. These results establish no reliable speedup, and they remain far above the 8.3 ms target. No averaging of per-run p95s is presented as an aggregate p95.
Receipt acceptance, fixed-source hashes, four log digests, and source restoration passed. Full web check/regression/coverage validation is reused from 41623659964 at the identical candidate tree. The native comparison is complete; the timing result is mixed and does not establish a uniform speedup.
Native pair: one run per arm on the same fleet worker with
--app-cache --config=bench --vdisplay=120 --suite=budgets --only=acp --raw=acp. The native result is structural memory and first-content improvement, with mixed interaction timing; the own-mode next-chat value is a single sample and remains an unresolved follow-up rather than a claimed regression or speedup.Native evidence: base step
1825c9e956d52749d471c17cat5dee1ab988ec69569df92ed636c5b971d43f152a; candidate step311f1ae7at9e3e8347a19dfe28cfe1cf6c93e337c9736f7d64; both ran once on the same fleet worker with identical arguments.Gallery failures are tracked under #33516, which already records the same isolated Git-action scene failing across unrelated PRs. Diagnostic run 41629680371 rebuilds the exact original merge and replay base: Git-action shift is 0.02984955 on both; composer worktree-search is 0.004427–0.004447 on both, within baseline. Source, loaded CSS/font hashes and sampled geometry match. Neither scene mounts the changed scroller. The original excess shifts do not reproduce from this patch; gallery is not the reason for this hold. This does not claim the shared gallery flake itself is fixed.
Independent review: Opus 5.5 medium SHIP at 5ecd071; formatting-only test delta is carried to this head verified independently; review receipt.
🤖 Generated with Codex
Agent session: agent session