Skip to content

test(render): control registered renderer phase deadlines - #2006

Merged
schlessera merged 1 commit into
mainfrom
test/1947-phase-clock-0113361e
Oct 16, 2026
Merged

schlessera merged 1 commit into
mainfrom
test/1947-phase-clock-0113361e

Conversation

@schlessera

@schlessera schlessera commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

Closes #1947
Refs #1849

What changed

The all-double renderer phase-budget fixture drives actual registered queue, acquisition, rendering, idle and cleanup timers with a test-local clock. It retains all 15 original cases and their behavioral expectations, adds exact boundaries, overlap/cancellation/rearming checks and a failure-path cleanup control (16 cases / 184 expectations). Late promise continuations still execute before resource/capture assertions. Production deadlines, options, renderer behavior and native Chromium proof remain unchanged.

Why this shape

#1947 explicitly scopes this file to scheduling policy with doubles. Native event-loop turns drain its finite promise continuations; registration and resource effects establish phase readiness. Complete timeout descriptors are restored in finally. Real outer failure ceilings remain independent. No production injection seam, dependency, contract change or consumer-visible changeset is needed.

Proof

Head d6024807f starts from base 4e4a663f98054d86f2dc90154b42ffbe8f8b7692. Local checks passed:

bun run test packages/ui-render-puppeteer/tests/phase-budgets.test.ts
bun run typecheck
bun run check:pr --base origin/main

Preflight: 288 cases / 3062 expectations. Focused restoration: 16 cases / 184 expectations. Committed evidence preserves source hashes, original logs, timer observations, mutation results and matched same-host commands. Full command: 3.15 → 0.11 s; wedged cleanup: 2.13 → 0.11 s; two phase cases: 0.51 → 0.11 s. Full summed bodies: 3024.55 → 6.96 ms. These overlapping scopes are not additive or a whole-CI gain. Installation (9.57 s), command overhead, CPU/RSS and observer runs are separately recorded.

Mutations fail intended assertions: changed requested deadlines or rendering phase fail registration; missing cancellation/rearm fails timer state; one-millisecond early/late scheduler faults fail boundary state; removed expiration guards fail original late-capture count (0 expected, 1 received); duplicated close fails original close count (1 expected, 2 received); omitted restoration fails complete descriptor equality. All were restored. Narrower post-content-only and memoization-only mutations survive independent safeguards; those limits are recorded without claiming detection.

All 13 selected hosted jobs passed. The qualification receipt records every executed job checkout, independently verified archive hashes, original head/base/tree, test counts, source-conditional exclusions, cost and unrelated main advancement.

Checklist

  • Focused local preflight/behavioral receipts and complete selected hosted proof passed; actual head/base/job checkout evidence is in Proof.
  • Acceptance criteria from the issue are all met, or the gap is named below.
  • The PR and completed/advanced issues have verified release milestones under docs/process/github.md.
  • A changeset is included, or this changes nothing a consumer can see.
  • No personal data anywhere in the diff — the leakage gate covers the whole tree.
  • The integration contract index or relevant component is updated in this same commit, or nothing in the machine surface moved.
  • Docs under docs/ reflect the change, or nothing documented moved.

Anything left open

This delivers only #1947; other #1849 children and final epic-wide qualification remain open. The historical timing pair makes no native browser-duration, reliable CPU/RSS or whole-CI speedup claim.

@schlessera schlessera added this to the 0.44.0 milestone Oct 16, 2026
@schlessera schlessera added type: test Coverage, harness or proof work with no behaviour change. area: render render-template and the network-denied puppeteer renderer. labels Oct 16, 2026
@schlessera

schlessera commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner Author

Current-head qualification for #1947 / #1849:

CI run 38840172326, attempt 1, passes all 13 selected jobs. Every executed job checkout log and all eleven independently downloaded/hash-verified artifact archives agree on checkout 1bc18ff6d68b5dabb18dfa79f6abb7a51cc24701, parents 4e4a663f98054d86f2dc90154b42ffbe8f8b7692 + head d6024807fb8347b36d60c815f65151fa6573844b, tree 2f133704cb7ebb27df950668b12fc01cdbc78691. Immutable GitHub commit data and local Git agree.

Job ID Seconds
changeset 116778205284 31
layout (2) 116778359272 1445
layout (1) 116778359326 577
runtime 116778359344 778
captures 116778359360 590
verify 116778359370 73
unit (1) 116778359379 599
unit (4) 116778359385 352
browser (1) 116778359388 659
unit (2) 116778359410 408
unit (3) 116778359438 603
browser (2) 116778359440 723
proof 116784859148 14

Packaging is intentionally unselected for this test-only contribution. Unit proof passes 8,012 tests, browser proof 8,808 tests, and layout proof 1,093 tests. All 16 phase-budget cases pass in the shared unit shard. The original 65 matcher sites retain order and expected payloads within all 15 original cases (static AST check plus input/diff review); the original 82 executed expectations remain within the expanded 184. Unit skips are 24 opt-in paid image cases and four inactive vector-unavailability fallback sentinels; the corresponding real vector cases pass. Browser skips are ten coarse-touch cases intentionally excluded in fine-pointer projects. Native healthy cells, expected negative controls, ten-minute encoding and cleanup remain exercised; no unavailable runtime is reported as passing.

Measured qualification cost: 6,852 executed job-seconds and 1,499 seconds event-to-completion. This excludes separate contract/project workflows and local work; it is validation cost, not optimization savings. The earlier title/label contract cancellations contain no test rerun. No test job was retried.

Live main advanced through #1907 (interactive-share behavior) and #2007 (storage documentation attribution). Neither changes the renderer, its dependency closure, this fixture or the test harness. The recorded passing checkout remains distinct from the eventual combined squash; independent main proof will retain its own source identity.

Artifact ID Verified SHA256
layout-proof-2 12021950371 f13b73dcb27725c8372bf149114c58020aa651fb756f65cdbfa0d92509beafb8
layout-proof-1 12021675826 6ab0ced78d6f0ba214a8a7a106196053fbda4245bddeebbf531cb012e698b487
browser-proof-1 12021626305 ff4156d239978acad538283954b9e9b0e15c34b7c6acf9df0cfd4b26d54fbbe3
unit-proof-3 12021601246 903771e7b4836a45701622b7ebf5f8b1bc40f8bd597833268ebe9a59707ebd10
unit-proof-1 12021521605 7e2c32f3483ffc877a84b62cbaa24b4d7dbe4eb78960dcc67cb82e77a967617f
runtime-proof 12021163752 9e8bba4482dc5558f448ebea87427cfcb052b2bcf7ec4dace128cd944dd8ea4b
captures-proof 12021093748 d939a6c3e8504a51230b56870bda53dc971d2f6d7ff75ca4020f8530561b6112
proof-reuse-ledger 12021057046 9b306d165b6504635ac4691adf438e12fe142473f3e611b6b3eb98bfb645cd1b
unit-proof-2 12020707545 e2e8360cf015946fe79307cadbd20e70570c46cd1ee4a0f09ff8d0e5b3bc7e7f
browser-proof-2 12020623244 a579a8210f481f25d1035414cb0e43b65a41af2a39dc82cd72312fe2a66f2d92
unit-proof-4 12020562736 3db5b516ef9758f83a993fddc652ad1340a573e4498bd0c2292a4e2ca532a09b

@schlessera

Copy link
Copy Markdown
Owner Author

Merged #1947 via PR #2006 as 5e9854b2e53ab7cfb4364008cf9cd2065b369404. Remote-main ancestry is verified. Actual parent 04ef3552190d8f56eab09dd6c3580101b6385ba4 and tree 1d79ff7483dd68a00e8a6a8b9a02c6d7940f3843 match the independently reconstructed combined result; they remain distinct from the older PR qualification tree.

Automatic main CI 38842537268, attempt 1, passes all 13 selected jobs. Every executed job checkout log and all eleven independently downloaded/hash-verified artifact archives identify this actual squash/tree/parent. All original renderer assertions, 2000 ms logical cleanup boundary and separate native Chrome/endurance proof remain. No failed test job was retried. The separate website workflow also passed.

Main job ID Seconds
changeset 116785667756 33
runtime 116785824719 756
unit (4) 116785824750 354
captures 116785824751 448
unit (3) 116785824766 662
layout (1) 116785824769 587
verify 116785824771 64
unit (2) 116785824776 493
layout (2) 116785824799 1453
unit (1) 116785824806 342
browser (1) 116785824828 692
browser (2) 116785824992 776
proof 116792291220 14

Main qualification cost is 6,674 executed job-seconds and 1,509 seconds event-to-completion. Together with PR qualification (6,852 job-seconds), these two CI runs cost 13,526 executed job-seconds, excluding separate workflows, queue outside event elapsed and local/engineering work. These are validation costs, not matched optimization savings.

The committed paired fixture measurement remains 3.15 → 0.11 seconds for the full command, with 15 original cases retained and a sixteenth cleanup control added. Original 65 matcher sites/payloads are retained; candidate runs 184 expectations. Wrong deadlines/phase, cancellation/rearm, late capture, duplicate close and restoration controls fail intended assertions; narrower redundant-guard survivors remain explicitly documented. This establishes no whole-CI, native-duration or reliable CPU/RSS improvement.

PR #2006 and closed #1947 both retain release milestone 0.44.0 (58). No downstream open issue declares #1947 as a blocker. Epic #1849 remains open with other work; this invocation does not claim another child.

Main artifact ID Independently verified SHA256
layout-proof-2 12022897622 53a3c6f5d8b43fa1f58e92a0c8cfd735e6e632d3a3a22b25258d4d1688fdafd0
runtime-proof 12022730664 0d2ff349a0bd7408371accca64933b291008b97657fabd2508fafbd6f257bf0e
browser-proof-2 12022691409 9539a6434afc9c0111ad96e751da84ccd40bc79409064aeb2495bc672b7313c9
unit-proof-2 12022640429 f178bec31d9d47fc91e568ef2b99c71321cd373d52abe6bb1cfa8056561d3c19
unit-proof-4 12022585208 29e73457a20588830bce837a59949f161c4bc69da1c79a24dd3916704b42a28f
captures-proof 12022530941 c54e9dd41d24b79fa7c730442b494750b01945109cc170ca261999324ca5fed5
unit-proof-1 12022450323 5dd4e1d86b6348d81b47d8c198e92f41210c50ec27abe807ee2f033616af2f59
proof-reuse-ledger 12022315145 e9e28d3e6e0698f837fbb57218ed5aa3e1d0af771267a0633eab86a3b0b52b64
layout-proof-1 12022062110 18bd212c198b43f32db446921a7eea328664f255e74820c0f2965b84cad8648a
browser-proof-1 12021803638 cc556f60e6a73cd7ce781f95efaf6e2fd319868f83adbaea2b3126e1cc9b298e
unit-proof-3 12021783700 d5d36c4439853f6c05a96f484482742aad5d9fbf6aa2f6666874e99cbdda8be1

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

Labels

area: render render-template and the network-denied puppeteer renderer. 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-render-puppeteer: control registered phase-budget timers in the browser-double fixture

1 participant