Skip to content

test: stabilize replay focus and opening motion, trace native failures - #1979

Merged
schlessera merged 4 commits into
mainfrom
test/1978-native-browser-lifecycle-3d746bc3
Oct 15, 2026
Merged

schlessera merged 4 commits into
mainfrom
test/1978-native-browser-lifecycle-3d746bc3

Conversation

@schlessera

@schlessera schlessera commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Closes #1982
Closes #1915
Refs #1978 and #1257

What changed

The destination-effects fixture captures and pauses real native opening animations at panel insertion, before activation returns. It retains those objects for the original 0/150/300 ms paint checks. A regression finishes the actual CSS animations, proves they leave the live animation set, and verifies the retained references still seek correctly. This supplies #1915's prepared observation-race correction without changing product motion or weakening navigation assertions.

The failed-tracker browser fixture keeps native opening, frame handling, React commits and DOM focus, while controlling the replay phase's clock. It retains the two chunks and 60 ms logical separation, verifies no Retry focus at 149 ms after the final chunk and native Retry focus at 150 ms, then restores complete global descriptors before the original eventual assertions. This repairs the scoped focus blocker from #1257 without changing product policy.

The native PDF fixture also retains bounded browser lifecycle probes on failure: launch/PID, page requests, public close/disconnect callers, disconnection, exit status and a stderr tail. Failure, teardown and late-exit snapshots use existing CI artifact collection. Failure-only synchronous writes preserve evidence from late native exit callbacks. No browser protocol command or delivery wait is added to the passing path.

Why this shape

The original focus fixture's requested 60 ms timeout did not bound the gap between committed chunks. A native control releases the final failure chunk only after the existing 150 ms quiet callback consumes the opening intent and focuses the composer. Retry then appears without another focus call, reproducing the exact mismatch. The historical hosted gap remains unknown. The correction controls that fixture boundary and proves the documented 150 ms policy and failure-action routing through actual registered callbacks. Product code and the five-second fallback remain unchanged.

The refreshed diagnostic qualification naturally hit #1915 on Files. Its retained artifact records both native animation ends before the later empty sample. That failure creates a qualification dependency between #1979 and the already-prepared #1975 correction; this combined delivery includes the reviewed fixture patch and needs one fresh complete proof. The actual hosted timeline establishes this occurrence's sampling race.

#1978's original Target.createTarget: Target closed receipt lacks a close/exit reason. Bounded native controls have not identified its responsible condition, so this PR supplies diagnostics under Refs. It selects no production transport/teardown correction; the causal criteria on #1978 remain unmet.

Proof

Current candidate b06ae980f7f65d4e74c1dd12249773c93d62eb95, based on b4609b961084268309287fff807b1dbd2687d607:

  • Complete pinned overlay file: 420 pass / zero fail across all three pointer projects, 30.09 s. Its fixture blob is exactly the reviewed test(ui-react): capture destination motion before activation returns #1975 output 5d0182da75b50c484a345eec2a8b781188e5bcbb. Earlier native timing/pause and late-live-lookup mutations fail all three projects at their named guards; source-matched receipts remain attributed in ui-react: hosted destination proof observes no opening animations #1915.
  • Combined bun run check:pr --base origin/main: 852 pass / zero fail / 5459 assertions across 43 files, plus required local gates.
  • Complete pinned native working-session file:201 pass / six existing pointer exclusions across three projects, 32.77s. The final fixture and unchanged ChatPage bytes match this candidate exactly.
  • Quiet-policy 149 ms, 151 ms and removed failure-action routing mutations each fail all three widths at their named temporal/focus assertions. Restoring product code returns three focused passes. These controls temporarily select that case, with 66 explicitly filtered cases; the only fixture-byte difference from the full-file source is the temporary selection marker. The source-bound scoped receipt retains the exact failure assertions and reproduction limits.
  • Guarded PDF file on exact archived Google Chrome 155.0.8059.39: 21 pass / zero fail / 129 assertions with controls restored. A late-exit control kills only the owned Chrome while page creation is pending, observes its native exit, and defers only the trace callback until after teardown. Both versions execute 20 passes and one expected TargetCloseError failure, 125 assertions. The old handler fails the external missing-exit-probe assertion; the corrected handler records SIGKILL after fixture-shutdown-finished. All injected controls are restored. This proves diagnostic persistence, not the historical killer.
  • Native controls retain their original 200efc8-based source identities. Main's intervening test(ci): reproduce index release with retained mount namespace #1977 changes native-index proof scripts/docs, not these fixture/product inputs; they are included in the refreshed base and require fresh selected hosted proof. No old run is relabelled as current qualification.

Current selected hosted qualification: run 38778870365, attempt 1, passes all 14 selected jobs and the aggregate on current head b06ae980f7f65d4e74c1dd12249773c93d62eb95, tested base b4609b961084268309287fff807b1dbd2687d607. All 14 actual checkout logs agree on 4367ac811e0fd2a7cdd4c7d653f65421fa4872a1, whose immutable parents are that base/head and tree is fc1460e926c0d5521a949e71473bc5b4adf95194; API and local Git agree. Strict types, packaging, native runtime and captures pass. Browser shards pass 4580 / 4228 cases, retaining four / six existing pointer exclusions. Layout shards pass 622 / 428 cases. Unit shards pass 3032 / 3176 / 3437 / 3654, with their existing source-bound conditional exclusions retained; the native PDF case passes in 76.87 ms. Current-head contract checks also pass. Main's #1986 optimizer inputs are included in this fresh proof. No previous run is relabelled.

Completed opening-motion qualification before optimizer refresh

Run 38775257762, attempt 1, passes all 14 selected jobs and aggregate on head 0d8881d577667802a9530a107021ad2ef1b50771, based on 9274b8a06db43932e17b5d401fcfb900306e97cd. All 14 actual checkout logs agree on 556f251488f383bf8febe4fd0cdea4aba19c4cf1, whose parents are that base/head and tree is 758424b6e951baa5305ab943002add6ef1e3d357; immutable API and Git agree. Browser shards pass 4580 / 4228 cases with four / six existing exclusions; layouts pass 622 / 428. Unit shards pass 3032 / 3176 / 3437 / 3654; the native PDF case passes in 61.70 ms. Main advanced with #1986 while this run executed, changing shared browser optimizer inputs. The entire run completed before refresh; this success is retained at its actual base, not relabelled as the newer combined tree.

Preserved refreshed qualification failure

Run 38771607452, attempt 1, tests older head 1df4c01d8694344216c9b7e2ed5c65b41623fef1 on base 9274b8a06db43932e17b5d401fcfb900306e97cd. Actual selected checkout 12dbfa4c1977daac8056f2444f20550d5aa76fba has those parents and tree d50ccf915878a1fd84c7b6411cf8b7d71680f5b4; API/Git and inspected job logs agree. Browser 2 fails the known #1915 Files late-animation sample: 4225 pass / one fail / six existing exclusions, 534.70 s. Focus repair passes. Artifact 11992338169 retains actual end/sample timestamps. Unit 4 passes 3654 cases / 26744 assertions, including the native PDF case in 84.77 ms. This failed candidate contains no opening-animation correction and is never relabelled green or retried unchanged. The complete run finished before this push: all 14 actual job checkout logs agree. Every other selected job passes; the aggregate fails solely on that browser failure.

Completed prior qualification

Run 38742810096, attempt 1, passes all 14 selected jobs and the aggregate at head 6f991b87a759420f2badfaf5860b94f505cf617b, tested base 82c1f211ee2ebabf44ed819e4a6bae47c93fca51. All 14 actual checkout logs agree on b75668cc2721a6543889af60df418d510ac5042f, whose immutable parents are that base and head and tree is c12f4eb0a2ec4b13ac22df71e3e2cb225036dae6; API and local Git agree. Browser 2 passes 4226 tests with six existing exclusions, including the repaired focus case. Unit 4 passes 3248 tests / 19266 assertions; the native PDF case passes in 64.57 ms. The separate head-only contract run 38742795719 passes. This successful run is not qualification of the newer combined tree.

Preserved earlier failed qualification

Run 38736020887, attempt 1, completed at older head 91b46ef11f9ca1062f19252c233850d7d5aec7b8. All 14 selected checkout logs agree on 6c868785eb69ac87d099e956cb0fb697d61ca631, parents main 200efc8d4e5e2ef6bd7c5385440a9289bd14c774 / that head, tree 8976e08bbbaeaadf36bb9d229402f31b1acd1ead; API and Git agree.

All four unit shards, verification, packaging, both layouts, captures, native runtime and browser 1 pass. The PDF case passes in 88.67 ms in unit 4, whose total is 3248 pass / zero fail / 19266 assertions across 239 files. Browser 2 fails the scoped focus case now corrected here: 4225 pass / one fail / six existing exclusions; the aggregate fails. The complete failed run finished before returning this PR to draft or pushing further changes. Its verified recurrence/artifact is preserved; no failed job was rerun unchanged.

Checklist

Anything left open

The scoped failed-tracker fixture repair is #1982. Its broad parent #1257 remains open for other observations. #1978 remains open with needs: repro: a natural failing lifecycle and responsible causal condition are still missing. Passing controls, injected signals and diagnostic delivery do not complete its causal-fix criteria.

After the matching-head merge is verified on main, reconcile #1915 and explicitly supersede preserved draft #1975 with that delivery. #1978 remains open for its missing natural causal evidence. No retry, timeout widening, skipped runtime or guard weakening substitutes for required proof.

@schlessera schlessera added type: test Coverage, harness or proof work with no behaviour change. area: render render-template and the network-denied puppeteer renderer. area: ci CI workflows, the gates they run, release scripts, packaging. labels Oct 15, 2026
@schlessera
schlessera marked this pull request as ready for review October 15, 2026 12:37
@schlessera
schlessera marked this pull request as draft October 15, 2026 13:04
@schlessera schlessera added the area: ui-react React chat/files/voice components, stores, WebSocket transport. label Oct 15, 2026
@schlessera schlessera added this to the 0.44.0 milestone Oct 15, 2026
@schlessera schlessera changed the title test(render): retain native export browser lifecycle probes test: control replay focus and trace native export failures Oct 15, 2026
@schlessera
schlessera force-pushed the test/1978-native-browser-lifecycle-3d746bc3 branch from 81e3d6e to 6f991b8 Compare October 15, 2026 13:27
@schlessera
schlessera marked this pull request as ready for review October 15, 2026 13:27
@schlessera
schlessera marked this pull request as draft October 15, 2026 16:43
@schlessera
schlessera force-pushed the test/1978-native-browser-lifecycle-3d746bc3 branch from 6f991b8 to 1df4c01 Compare October 15, 2026 16:45
@schlessera
schlessera marked this pull request as ready for review October 15, 2026 16:45
@schlessera
schlessera marked this pull request as draft October 15, 2026 17:09
@schlessera schlessera changed the title test: control replay focus and trace native export failures test: stabilize replay focus and opening motion, trace native failures Oct 15, 2026
@schlessera
schlessera marked this pull request as ready for review October 15, 2026 17:11
@schlessera

Copy link
Copy Markdown
Owner Author

Separate post-merge main receipt: automatic run 38782602296, attempt 1, completes on actual squash cbf2bb87f8eee79f971099aa4858262888f087ae. All fourteen actual checkout logs agree. Twelve jobs pass, including both browser shards (4580 /4228, four /six existing exclusions), both layouts, native runtime and the reported PDF case. Unit 2 fails three unchanged parallel-session native cases and the aggregate fails; main is not green. Artifact 11997952104 and the exact initiating Playwright channel-object error plus later contamination are retained in #1993. No shared cause with #1915 or #1978 is established, no production correction is selected, and the failed run is not retried. The earlier all-green PR proof and verified matching squash remain separately attributed.

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

Labels

area: ci CI workflows, the gates they run, release scripts, packaging. area: render render-template and the network-denied puppeteer renderer. area: ui-react React chat/files/voice components, stores, WebSocket transport. type: test Coverage, harness or proof work with no behaviour change.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ui-react: control the failed-tracker replay before its focus intent expires ui-react: hosted destination proof observes no opening animations

1 participant