Skip to content

test(ui-react): await completion before snapshot assertions - #1961

Merged
schlessera merged 10 commits into
mainfrom
test/1855-continuity-slot-completion
Oct 15, 2026
Merged

schlessera merged 10 commits into
mainfrom
test/1855-continuity-slot-completion

Conversation

@schlessera

@schlessera schlessera commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Refs #1855

#1915 is closed through merged #1979 (cbf2bb87). The integrated candidate has passed complete selected qualification; actual main verification is recorded separately.

What changed

Four snapshot preparation slices replace guessed delays with the actual old host-turn completion, current draft acknowledgement and held reconnect-read admission, newer-turn resync, and finite rendering after the original offline/status/banner checkpoints. They preserve streaming, retained nodes, focus/selection, draft text and no extra chat sends. Every scene window and the three original final snapshot 500 ms windows plus frame pairs remain.

The fifth selection/publication slice is withdrawn after the authorized complexity review. Commit 16792162caddaf6ba7de50d9ea5a009792aa5c37 removes 177 net test/fixture lines, including the 127-line observer, and restores the runtime test and fixture byte-for-byte to measured candidate d7b103937529f8880bac17fd894f6e3043c85c42. The guide explains the rejection; all five immutable study artifacts remain unchanged. No product, public seam, timer configuration or contract changes; no changeset is needed.

Why retain four slices and reject the fifth

At its recorded historical source, the old-slot boundary fixes a real setup race: the UI result precedes asynchronous host finalization. With a 2000 ms actual finalization hold, the original and omitted-boundary controls fail the original captured-old-turn assertion; the completion boundary passes. Draft/resync acknowledgements and finite-render preparation retain the existing product oracles and original final observations.

The rejected observer proved a stronger fixture-specific completion boundary, including native selected-context commit and its associated publication. Its publication/error omission controls failed added diagnostics before the original product assertions; cancellation failed the added readiness gate. Both original and candidate detected the exercised terminal-policy regressions. This does not demonstrate additional product regression detection from the observer. Its coupling to partition callbacks, context keys, fork counts, exact status.setState publication shape and an escaped-stream branch is disproportionate to the demonstrated benefit. Restoring the original windows preserves existing proof; it does not establish that 500 ms is a sufficient minimum or resolve the remaining wait-design criterion.

Current integrated candidate

Head 76d7b1d338fc7602dd41b1d81ad14ce74b047b4e merges main d9ac37b82700d7b45406ba47c0850ae46251fa9b into the reviewed withdrawal head 16792162c. #1979's animation/focus correction and #1968's history-freshness behavior are included. Merge conflicts were resolved by retaining both main's lifecycle diagnostics and this PR's preparation observations, and both wait-guide sections. No production source differs from main. The rejected selection observer stays removed; all five historical artifacts are byte-identical to the withdrawal commit.

Main now publishes the current turn after asynchronous history reads; its current-turn identity assertions and four stale/fresh queued-history cases are retained. Static AST review confirms all 71 main matcher expressions remain in order (75 in the integrated test), and the four new late-history case definitions are byte-identical. The old captured-turn mutation is historical evidence for the old server policy, not current mutation proof. The old-slot boundary still explicitly finishes the original slot before the peer starts its successor. Final and scene observation windows remain.

Fresh source-bound proof, with actual browser, mandatory build, original preload and verified loopback-only ordinary-UID namespace:

  • Deliberately finish the assistant inside the current SESSION_LOAD_ERROR handler: the quiet-history case fails its original streaming assertion, expected true / received false, after the retained 500 ms observation. 0 pass / 1 fail / 11 assertions, 13 unrelated cases filtered. Cost 59.34 s wall / 91.57 s CPU / 1242788 KiB peak RSS. Production source is restored and verified.
  • Restored helper plus all three snapshots: 4 pass / 48 assertions, ten other cases explicitly filtered. All three original final windows remain: 1501.648 ms plus three frame pairs totaling 59.896 ms. Snapshot bodies are 10523.24 / 10279.02 / 9519.16 ms. Command 80.24 s wall / 94.65 s CPU / 1233208 KiB peak RSS; setup was not separately instrumented. This is integrated behavioral proof, not a matched performance comparison.
  • Strict types pass (29.60 s); committed bun run check:pr --base origin/main passes 54 / 181, including lint/leakage and metadata gates (5.68 s). Citation proof passes 44 / 113 against the same final document bytes. The four timed native/type/preflight commands cost 174.86 s wall / 245.99 s CPU. Citation and engineering time are not included. Private-cache bun install --frozen-lockfile --backend=copyfile reports no changes, 192 ms; mutable dependencies are not shared.

Fresh hosted qualification passes the entire 14-case continuity file and every other selected category, with exact source identity below. #1993's earlier main-push Playwright channel-object failure remains separately open and actively investigated; neither this local pass nor the later passing #1968 main run diagnoses it. No unchanged failed job was retried.

Historical withdrawal proof

Reviewed head: 16792162caddaf6ba7de50d9ea5a009792aa5c37, parent 18451a1a252cddc2c6e9b121a0a2942dd6dbf201; branch integration base remains c95223333a83fd3049749a2e68fb0c07963b7ba5. Current-main comparison for preflight was 9274b8a06; this is not a claim that later main is integrated.

  • Focused native helper plus all three captured-history cases: 4 pass / 43 assertions, six unrelated cases explicitly filtered. Original mandatory build, actual browser, preload and loopback-only namespace remain; namespace UID/network receipts and pre/post source hashes were captured. All three original final windows ran: 1501.331 ms total plus 72.640 ms across three frame pairs. The snapshot bodies were 10267.75 / 10197.60 / 9445.76 ms. The command cost 77.94 s wall / 91.20 s CPU / 1246872 KiB peak RSS. Setup was not separately instrumented in this run. This is restoration proof, not a new matched benchmark.
  • Strict tsc --noEmit passed, 28.61 s. Committed bun run check:pr --base origin/main passed 54 tests / 181 assertions, 5.14 s, including lint/leakage and affected metadata/invariant gates. Citation tests passed 44 / 113, 0.63 s. These four validation commands consumed 112.32 s wall / 148.31 s CPU in total; engineering time is not included. Dependencies were installed into a private cache using copyfile, 33.85 s, without sharing mutable dependencies.
  • All 14 frozen original source/config hashes in the fifth artifact match the restored candidate. Both active test files match d7 byte-for-byte, and no live observer callers remain. The historical terminal-policy controls therefore retain their own recorded source/config identities; they were not rerun or relabelled as new current executions. The original captured-status mutation failed the original streaming assertion (0 / 1 / 11); the two failed-history terminal-policy controls failed their original streaming assertions (0 / 2 / 21). Native controlled holds/omissions in the four retained studies remain source-bound historical proof. Independent diff review confirmed all original product matcher expressions survive.

Retained historical measurements

These are separately measured changes under uncontrolled shared-host load. Gains are not additive and do not establish a whole-file or whole-CI speedup. Full sources, counters, controls, overhead and failed attempts remain in the immutable artifacts linked by the wait guide.

Slice Historical result New native execution cost at that study
Old host turn completion Three-case command 82.85 → 82.69 s; bodies 33.858 → 33.050 s. Delayed finalization invalidates the original captured-turn setup and is awaited by the candidate. 362.04 s / five commands; 90 receipt entries.
Newer-turn resync preparation 82.13 → 81.07 s command; bodies 32.86182 → 32.23022 s; 3 / 32 → 3 / 38. Real delayed resume and omission controls plus original terminal fault. 264.26 s valid commands plus preserved 47.79 s temporary annotation/build failure; historical 142.62 s baseline/fault pair reused.
Snapshot recovery preparation 81.07 → 79.70 s command; bodies 32.23022 → 30.93437 s; 3 / 38 → 3 / 41. Native delayed draft-save continuation, omission and original terminal fault retained. Peak RSS increased 4584 KiB. 258.14 s; reused controls not charged again; 179 receipt entries.
Snapshot drop preparation Bodies 30.93437 → 30.08234 s. Candidate adds the unchanged finite-animation control, so whole-command/resource comparison uses unequal selections and is descriptive only. Three final windows remain. 138.88 s; 125 new/reused receipt entries.

Rejected fifth study — evidence retained

Historical source 18451a1a added 177 net lines, including a shared 127-line observer, to change the equal-selection helper-plus-three-case result from 4 / 43 to 4 / 49. Bodies were 30.08234 → 29.36794 s (0.7144 s lower), command 79.69 → 78.83 s, setup 48.76674 → 48.61535 s, CPU 93.82 → 93.49 s, and peak RSS 1231080 → 1249220 KiB (+18140 KiB). Three fixed windows totaling 1501.63 ms became three completion boundaries totaling 774.26 ms. These historical observations are not benefits claimed for the restored candidate.

The immutable selection artifact still indexes 429 receipts, including real postcommit and failed-resume holds, omissions, cancellation and terminal faults. The first error mutation failed a different original retained-node progress assertion; its checker rejection and 128.35 s cost remain preserved. New native command costs were 322.24 + 128.35 + 332.68 = 783.27 s, excluding engineering/static-check cost; historical controls were reused without charging them again. All three final lifecycle snapshots still had later work pending, so this was never global quiescence. The rejected source remains in commit history; its artifact is not a current-source claim.

Historical hosted qualification

The following earlier failed or cheap draft receipts retain their original source. No unchanged failed full suite was retried; fresh qualification of the integrated candidate is separate.

Historical ready run 38675664808 tested earlier head df635ea1, without the later resync/recovery/drop work. Eleven selected jobs passed; browser (2) and aggregate failed #1915. All 13 executed checkouts were verified as e98c895f566f18895e530651562a64420e75a07b; cost was 7288 job-seconds / 1346 s event wall. The ten-case continuity file passed then, but that is not current-head qualification.

Prior cheap draft runs 38688865485 and 38700382135 passed their two executed gates at d7 and 184 respectively, with 46 and 45 summed job-seconds. Their expected draft skips did not supply full qualification. #1975 was subsequently superseded; #1979 delivered the #1915 correction and that issue is now closed. Its failure history is not relabelled as current proof.

Qualified candidate — 2026-10-15

Ready run 38795496667, attempt 1, passes all 13 selected jobs, including the aggregate. Packaging is intentionally unselected for this tests-only contribution. Every executed job checkout log identifies 9c685b6de9b3828e119a9e7d4feb0dff1ff21696, parents main d9ac37b82700d7b45406ba47c0850ae46251fa9b and head 76d7b1d338fc7602dd41b1d81ad14ce74b047b4e, tree 504b56199bd2bfc8eb7af213883234e009fa7d7e; immutable API and fetched Git agree. No failed suite was retried.

Unit job 116630958542 passes all 14 continuity cases, including the four new late-history cases, all three snapshot races, both ten-drop paths and both IME paths. The unchanged ten-minute endurance scenario passes in 603.539 seconds. Total executed CI job-wall cost is 8,134 seconds, event-to-completion 1389 seconds; the preceding cheap draft run adds 49 job-seconds. Separate project/contract workflows are outside that accounting. These are qualification costs, not matched performance gains.

Main then advanced independently through #1963 to 838f05d2ff611c72bdea8405c46f2504dccb6f24. Its four-file native event observer correction is separately qualified by all 14 selected jobs in run 38793661631. It changes no continuity source, fixture, product, dependency, preload, workflow or sharding implementation. Its hosted-app observer and additional unit file are different full-suite inputs, so the older run is not relabelled as proof of that combined tree. Under the unrelated-advancement rule, retain the tested base above and verify the actual squash parent/tree and automatic main run separately. The expected merge tree on that live base is 022e382887684a7315c51e796eeb7264458a79c6.

Actual main verification — 2026-10-15

#1961 is merged as 1cc1b34a802f0894391b9bb445fed39fed610230. Its actual parent is 838f05d2ff611c72bdea8405c46f2504dccb6f24 and tree is 022e382887684a7315c51e796eeb7264458a79c6, matching the reviewed prospective combined state; immutable GitHub and local Git agree.

Automatic push run 38798781662, attempt 1 passes all 13 selected jobs, including the aggregate. Every executed checkout log identifies that exact squash. Packaging is intentionally unselected for this tests-only delivery. Unit job 116642311946 passes all 14 continuity cases, with the exact same named set as ready qualification. All original product assertions, late-history cases and retained final observation windows remain. Layout job 116642311865 passes the unchanged native endurance case in 604.257 seconds: 588 chunks, 9,665,247 bytes, saved through 599.765 seconds and decoded duration 599.699977 seconds.

Main validation consumed 7,842 summed job-wall seconds and 1,487 seconds from event creation to last job completion. The separate ready run cost 8,134 job-seconds / 1,389 event seconds, and its preceding cheap draft cost 49 job-seconds: 16,025 executed CI job-seconds for these three events. Separate contract/project workflows, local commands and engineering time are excluded. The four newly timed local fault/restoration/type/preflight commands cost 174.86 seconds wall / 245.99 seconds CPU. These are verification costs; neither different-source CI timings nor the integrated restoration run is a matched speedup experiment. Historical per-slice gains and rejected-study costs retain their original identities in the PR.

This completes the partial four-slice delivery. #1855 stays open for justified remaining temporal horizons and its #1956/#1854 dependencies. The fifth observer remains withdrawn, with its original evidence preserved. The fresh main pass does not diagnose or waive #1993's separate #1962 qualification failure. No failed job was retried and no merged branch was pushed. PR and advanced issue retain milestone 0.44.0 (58); the issue is open and unassigned.

Checklist

  • Complete selected current-head hosted proof passed; exact source identity is recorded above.
  • Focused native restoration, strict types, committed preflight and citation proof passed.
  • Every original product assertion and original final/scene observation remains.
  • No changeset: only tests, fixtures and evidence/documentation change.
  • No personal data, machine contract or production behavior changes.
  • Rejected study evidence, actual costs and limitations remain available.

Anything left open

#1855 remains open. The three restored final snapshot windows and every retained scene window still need a justified temporal horizon or a simpler fault-sensitive completion design; preservation is not completion. #1956 concerns the separate local scene-upload prerequisite, and #1854 owns execution-tier policy. #1915 is resolved by #1979. Complete selected candidate proof passes as recorded above; final combined main proof passes and is separately attributed above. #1993 remains an independent open native Playwright investigation; it is not claimed repaired by this PR and any required candidate failure still needs diagnosis. Prior-head native or cheap draft passes are not substitutes.

@schlessera schlessera added this to the 0.44.0 milestone Oct 15, 2026
@schlessera schlessera added type: test Coverage, harness or proof work with no behaviour change. area: ui-react React chat/files/voice components, stores, WebSocket transport. 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 03:19
@schlessera
schlessera marked this pull request as draft October 15, 2026 03:42
@schlessera schlessera changed the title test(ui-react): await completed snapshot turn slots test(ui-react): await completed turns and history before snapshot assertions Oct 15, 2026
@schlessera schlessera changed the title test(ui-react): await completed turns and history before snapshot assertions test(ui-react): await completion before snapshot assertions Oct 15, 2026
@schlessera

Copy link
Copy Markdown
Owner Author

Complexity review applied in #1961 at 16792162caddaf6ba7de50d9ea5a009792aa5c37: retained four snapshot preparation slices; removed the fifth 177-line selection/publication observer and restored the exact original final 500 ms windows/frame pairs. All original product assertions remain. The fifth study's 0.7144-second historical body reduction, 783.27-second native study cost and 429 receipt entries remain as rejected evidence. A stronger fixture completion diagnostic alone did not justify its internal coupling.

Fresh native restoration proof: 4 cases / 43 assertions, 77.94 seconds wall / 91.20 seconds CPU / 1246872 KiB peak RSS; strict types pass (28.61 seconds), committed preflight 54 / 181 (5.14 seconds), citation checks 44 / 113. All 14 frozen source/config identities match d7, whose test and fixture are restored byte-for-byte. Historical faults retain their recorded source identity; no unchanged failed suite was retried and no new matched speedup is claimed.

#1961 stays draft; #1915 still blocks complete qualification and merge. The three restored windows are existing proof, not justified minimum horizons, and #1855 remains open. The current issue/PR bodies now reflect this scope and preserve the historical controls. Claim review-1961-selection-cost-20261015 is released after this handoff.

@schlessera

Copy link
Copy Markdown
Owner Author

Resumed #1961 at 76d7b1d338fc7602dd41b1d81ad14ce74b047b4e after #1915 closed through #1979. Current main d9ac37b82700d7b45406ba47c0850ae46251fa9b is integrated, including #1968's current-turn snapshot policy and all four new late-history cases. All 71 main matcher expressions are retained; the fifth observer stays removed and all five historical artifacts are unchanged.

Fresh actual terminal-policy mutation fails the original quiet-history streaming assertion (0 / 1 / 11), then restored native helper plus snapshots passes 4 / 48. Strict types, committed preflight 54 / 181 and citations 44 / 113 pass. Timed native/type/preflight cost: 174.86 seconds wall / 245.99 seconds CPU; no new matched speedup is claimed.

The reviewed head is ready for fresh complete selected hosted qualification, including all 14 continuity cases. #1993 remains separately open; no unchanged failed job was retried. The original final 500 ms windows and broader #1855 obligations remain. Claim resume-1961-four-slices-20261015 continues in the parent session through qualification and merge or a documented handoff.

@schlessera
schlessera marked this pull request as ready for review October 15, 2026 19:38
@schlessera

Copy link
Copy Markdown
Owner Author

Qualified candidate — 2026-10-15

Ready run 38795496667, attempt 1, passes all 13 selected jobs, including the aggregate. Packaging is intentionally unselected for this tests-only contribution. Every executed job checkout log identifies 9c685b6de9b3828e119a9e7d4feb0dff1ff21696, parents main d9ac37b82700d7b45406ba47c0850ae46251fa9b and head 76d7b1d338fc7602dd41b1d81ad14ce74b047b4e, tree 504b56199bd2bfc8eb7af213883234e009fa7d7e; immutable API and fetched Git agree. No failed suite was retried.

Unit job 116630958542 passes all 14 continuity cases, including the four new late-history cases, all three snapshot races, both ten-drop paths and both IME paths. The unchanged ten-minute endurance scenario passes in 603.539 seconds. Total executed CI job-wall cost is 8,134 seconds, event-to-completion 1389 seconds; the preceding cheap draft run adds 49 job-seconds. Separate project/contract workflows are outside that accounting. These are qualification costs, not matched performance gains.

Main then advanced independently through #1963 to 838f05d2ff611c72bdea8405c46f2504dccb6f24. Its four-file native event observer correction is separately qualified by all 14 selected jobs in run 38793661631. It changes no continuity source, fixture, product, dependency, preload, workflow or sharding implementation. Its hosted-app observer and additional unit file are different full-suite inputs, so the older run is not relabelled as proof of that combined tree. Under the unrelated-advancement rule, retain the tested base above and verify the actual squash parent/tree and automatic main run separately. The expected merge tree on that live base is 022e382887684a7315c51e796eeb7264458a79c6.

@schlessera

Copy link
Copy Markdown
Owner Author

Actual main verification — 2026-10-15

#1961 is merged as 1cc1b34a802f0894391b9bb445fed39fed610230. Its actual parent is 838f05d2ff611c72bdea8405c46f2504dccb6f24 and tree is 022e382887684a7315c51e796eeb7264458a79c6, matching the reviewed prospective combined state; immutable GitHub and local Git agree.

Automatic push run 38798781662, attempt 1 passes all 13 selected jobs, including the aggregate. Every executed checkout log identifies that exact squash. Packaging is intentionally unselected for this tests-only delivery. Unit job 116642311946 passes all 14 continuity cases, with the exact same named set as ready qualification. All original product assertions, late-history cases and retained final observation windows remain. Layout job 116642311865 passes the unchanged native endurance case in 604.257 seconds: 588 chunks, 9,665,247 bytes, saved through 599.765 seconds and decoded duration 599.699977 seconds.

Main validation consumed 7,842 summed job-wall seconds and 1,487 seconds from event creation to last job completion. The separate ready run cost 8,134 job-seconds / 1,389 event seconds, and its preceding cheap draft cost 49 job-seconds: 16,025 executed CI job-seconds for these three events. Separate contract/project workflows, local commands and engineering time are excluded. The four newly timed local fault/restoration/type/preflight commands cost 174.86 seconds wall / 245.99 seconds CPU. These are verification costs; neither different-source CI timings nor the integrated restoration run is a matched speedup experiment. Historical per-slice gains and rejected-study costs retain their original identities in the PR.

This completes the partial four-slice delivery. #1855 stays open for justified remaining temporal horizons and its #1956/#1854 dependencies. The fifth observer remains withdrawn, with its original evidence preserved. The fresh main pass does not diagnose or waive #1993's separate #1962 qualification failure. No failed job was retried and no merged branch was pushed. PR and advanced issue retain milestone 0.44.0 (58); the issue is open and unassigned.

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: 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.

1 participant