Repository navigation
cmux NEXT: wait for agent page paint before scene capture - #27160
Conversation
… final engine On a cold launch the agent page is to show in Chromium but Chromium has not attached; its hidden backing WKWebView is already in the window and loaded, so the scene settled with no page on screen and the snapshot answered "agent page was not composited" with 0 web views and 0 Chromium pages. The settle predicate now refuses a page whose Chromium is still starting, a Chromium page the snapshot cannot draw, and a page before its first paint. The settle deadline grows to 20 s so a cold Chromium start, or its 8 s fallback to WebKit, fits inside the route's 30 s deadline. The not-settled error names each agent page's state. Fixes #26468 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
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)
web and size checks: green Shipped in:
|
|
Found 1 test failure on Blacksmith runners: Failure
|
|
Bead |
|
Review (codex gpt-6-astra high fast, drain lane): SHIP at 5b6fcc3 No blocking findings. |
…ext-26468-scene-render-wait
The loading cover can mark the pane painted at its give-up deadline even when Chromium has not painted. Require the shared page paint probe and pane content signal together, retaining the legacy WebKit pane signal. Verification: scoped syntax, default verification and prepush checks pass. The prior regression commit preserves the failing case; fleet red/green execution follows the plain push.
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
Review (Codex correctness): SHIP at 450663d Independent read-only review found no concrete correctness defects in the exact integrated diff. Reviewed engine startup/fallback, document and pane paint signals, snapshot visibility, both capture readiness call sites, and regression dependencies. The previously failing checks job now passes on this head: https://github.com/manaflow-ai/cmux/actions/runs/41148783034/job/124380054462. Its old failure was an undeclared |
|
The remaining
Both fail |
…ext-26468-scene-render-wait
Move the readiness value and its behavioral tests out of the app composition target. Both scene paths keep the same paint, engine startup and snapshot eligibility conditions. Validation: Swift syntax, localization defaults, feature flags, and scoped package conventions pass. Prior focused fleet regression is red at 1345c73 and green at 450663d; rerun the three focused suites on this head after push. Workspace package grouping differs on the fetched base and is unrelated to these six Swift files.
|
Review (Codex correctness): SHIP at a99f645 Independent read-only review of the complete diff against integrated base 8b3fa55 found no concrete correctness defects. Reviewed both scene consumers, the document/content paint conjunction, Chromium startup and fallback, snapshot eligibility, and the 20-second settle budget within the 30-second route. The base merged without conflicts. Capture readiness and its four behavioral tests now belong to the agent-pane module; the app target shrinks by seven lines and the current prepush architecture gate passes. Remote focused tests and the exact-head tagged runtime verification are running separately; this review itself did not compile or launch the app. |
|
Current-head CI classification at a99f645: the cmux-next checks failure is inherited from the base, not from the six-file capture diff. The PR job fails only The local workspace grouping check also reports a missing |
|
The The signing-hook guard is likewise red on the base. The only current non-green source checks are these inherited guards and the already classified Tier routing failure. |
|
Visual review (Codex): PASS at a99f645 Independent review inspected the real light and dark captures from fleet job |
…ext-26468-scene-render-wait
|
Review (Codex correctness): SHIP at 7527bc7 Fresh independent read-only review found no concrete defects in the full six-file diff or the incoming page-parking, Chromium, window-snapshot, and agent-tab startup changes. Parked pages remain excluded from capture readiness and composition. Whitespace check passed; the reviewer ran no builds or tests. The parent is repeating exact-head fleet verification after the bot base merge. |
|
Visual review (Codex): PASS at 7527bc7 Independent review opened both current-head captures. Both themes show the readable agent transcript, edited-files card, and composer without a blank page or loading cover. The single first-call Exact-head evidence: all 10 focused tests passed on a Mac in fleet job |
|
Swift CI follow-up at The latest completed base Swift suite, at |
…ext-26468-scene-render-wait
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
Review (Codex correctness): SHIP at 0c67d53 Independent correctness-first review found no defects in the six-file diff against |
|
At head The remaining |
|
Visual review (Codex): PASS at 0c67d53 Independent review opened both real-app captures. Both themes show the readable agent transcript, edited-files card, and composer without a blank page or loading cover. The single first-call Scope: the captured cold-launch |
|
The repository's full base-red classifier also excuses the current notary failure against the newest completed base verdict: python3 scripts/ci/base_red_excuse.py --repo manaflow-ai/cmux \
--base feat-cmux-next --sha 0c67d531b27345a6d81b491be4baa94ff90a3db9 \
--check 'nightly-guards / workflow-guard-tests / release-notary'Observed: exit 0, matching base run 41206037511 at Autoland's report started at 13:32 UTC still marks that failure as PR-owned. The required fast-gate workflow is being refreshed on this same head because the base changed its guard workflow after the previous gate run. |
|
Exact-head fleet verification completed at
The current-head Release compile, tagged app build, single cold first-call capture, correctness SHIP, and visual PASS are also complete and recorded in the updated description. No source change or new head was needed after review. The repository's full base-red classifier excuses the remaining notary red; waiting for autoland's next evaluation and the same-head fast-gate refresh. |
…ext-26468-scene-render-wait
|
Review (Codex correctness): SHIP at 9339145 Fresh independent correctness-first review found no defects in the six-file diff against merged base The base, including the signing-hook catalog fix #29332, was integrated with a normal merge and plain push. The task diff remains unchanged. This is source review; new exact-head fleet tests, Release compile, tagged build, and cold first-call capture are in progress before refreshing |
|
Visual review (Codex): PASS at 9339145 Independent review opened both real-app captures and found the transcript, edited-files card, and composer drawn in both themes. The single first Scope: after-only cold-launch |
|
Verification (Codex): SHIP at 9339145 The final focused fleet run completed: all 22 tests passed across AgentPaneCapturePaintTests (3), AgentPaneCaptureReadinessTests (4), CaptureScenePageCompositedTests (3), and MaskedScreenshotTests (12). Job I independently checked the diff, exact-head review receipts, Release and tagged-build receipts, and both real captures. The cold launch succeeded on its single first scene-render call in 1,371.6 ms. The reported cmux-next checks blocker passes. The description now contains the completed test result and the tagged build link. GitHub confirms this reviewed head merged as |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
The first
debug.scene.renderafter a cold launch could time out or capture before the agent chat appeared. Scene capture now waits for the final engine to attach, the document and agent content to paint, and the Chromium page to become drawable by the window snapshot. A loading-cover timeout no longer counts as document paint. Both scene consumers use the same readiness state, with a 20-second settle budget inside the route's 30-second deadline.Fixes #26468. Base
85992aac4598f51dd20c415d4a0ab975c5a43faf, including the signing-hook catalog fix #29332, was merged normally and pushed without rewriting history. The six-file task diff remains unchanged; the app target shrinks by seven lines.Changelog
Fixed: Debug scene captures wait for the agent page after a cold launch.
Validation
Focused current-head command, run remotely:
1345c73637a29baafdf178246d53320434be760baLoadingCoverGivingUpDoesNotCountAsDocumentPaint; other nine tests passed.fb40246dad2f15a7d96e142c450663d12529027574c01ea03d05e23aeed56e5ae46aba36816d4ab83fa4d8bb93391456dea0de54314f8d9fc74e36fd28eb32ce4ec72a05e0ecaa44254940a4For the original red/green proof, the suite argument was
--arg=AgentPaneCapturePaintTests,CaptureScenePageCompositedTests, without--display. The readiness tests were subsequently extracted from the composition suite; the current command also selects them and the adjacent snapshot fixture.Observed / Not run
At
93391456dea0de54314f8d9fc74e36fd28eb32ce:57fb78a86c91e3d21a5bab03: app 105 seconds and bundled CLI 24 seconds; workspace reset confirmed.e2bdae04b12e78f372587138passed on the supported Linux pool; workspace reset confirmed. Tag:issue-26468-scene-render-ready; artifact SHA-256:8b05a184b567b8ca83cdd76a8c0a4a2213f138d8da15848a48a9f3f213258bab. Open the tagged build. Publication verified the actual bundle tag and read back the artifact digest; Tag Opener health checked without launching it.--showcasesucceeded on its single firstdebug.scene.rendercall:settled_ms=1371.6, one Chromium page composited, three transcript rows, and a visible composer. No retry, errors, gaps, or privacy findings. The remote capture slot was released.cmux-next checksblocker andrelease-notaryboth pass on this head. The required local pre-push gate passes.verify-local.pypasses Swift syntax, localization defaults, and feature flags; its package-grouping check finds the base's missingCmuxDeviceHubworkspace entry. This PR changes neither the workspace nor that checker.Not run: an independent entire-package suite or macOS 14/15 runtime checks. Builds and native tests run remotely. Desktop capture used a local backend; no Cloud behavior is claimed. Earlier task tags have no running local app. Stopping the previous tag's backend reported no local backend state; its registration was retained.
To repeat the cold-launch check, use a capture state with
launch_args: ["--showcase"]and exactly one recordeddebug.scene.render {"scene":"main-showcase"}step. RunCMUX_AGENT_ID=your-agent-id cmux-ci capture 93391456dea0de54314f8d9fc74e36fd28eb32ce --job e2bdae04b12e78f372587138 --state STATE.json. Expect success on the first call, a readable transcript and composer, and no retry entry inresult.json.Viewed after image: yes
Visual verdict: Accept — the first render shows a readable transcript and composer in both themes, without a blank page or loading cover.
Capture
steps-592ac6381fat93391456dea0(fleet build, capture mini, text checked for private data)