Repository navigation
Conversation
Sequential Navigation Soak A/B✅ HEAD completed the 200-navigation resilience and memory observation. One browser process, one target, and one CDP session navigate CSDN → SegmentFault → Huaban → example.com repeatedly. This run issued 200 Common ancestor Session resilience
A public-page failure is reported separately from an unrecoverable session. The soak requires all navigation attempts, zero failed recovery, zero lifecycle/network ordering violations, and complete resource evidence. Process-tree memory
HEAD memory by 50-navigation quarter
Raw reports and per-navigation boundary samples: workflow run and full Public-site timing and memory are observational. Use the A/B deltas and trend shape as evidence, not as a deterministic performance threshold. |
Spider Bench A/BWorkflow: No benchmark result or performance conclusion is available for this run. |
CI Regression ReportSource CI run · source state at render:
Release regression — ✅ HEAD/base failures 0/0; raw binary +0.005685%Package and image size
Startup latency and PSS
Concurrency matrix
Frontend differential — ⚪ artifact unavailable or invalidArtifact unavailable or invalid. See the source CI run for infrastructure details. Agent episodes · Moli vs Chromium — ⚪ artifact unavailable or invalidArtifact unavailable or invalid. See the source CI run for infrastructure details. Runtime and CDP session contracts — ✅ 26 contract cases; 0 failures
CDP smoke — ⚪ artifact unavailable or invalidArtifact unavailable or invalid. See the source CI run for infrastructure details. WebMainBench · 545 pages — ✅ 545/545 completed; 0 unexpected failures
Frozen HTML · Linux · Diagnostics: All artifact fields are parsed by the trusted default-branch renderer; missing or invalid inputs remain visible as unavailable. |
Register the child document refresh before dispatching Window and owner-element load callbacks. A callback can adopt the meta element into another iframe; rescanning afterward lost the original refresh depending on frame load order. The existing exact-document timer owner and navigation cancellation still apply. Add deterministic source-first and destination-first iframe tests, including adoption into an already loaded sandboxed document. The source-last case fails before this change while the destination-last control passes. The old ordering is present at least as far back as the earliest visible Public preview commit 27b5135, rather than a newly introduced feature change. Validation: - cargo fmt --all - cargo clippy --workspace --all-targets --all-features -- -D warnings - cargo nextest run --no-fail-fast Original-commit: 1136e87
Keep the pre-load registration that preserves refreshes across meta adoption, and also scan after owner load callbacks when no refresh is armed. This retains support for callbacks that insert a new refresh without canceling the original document's refresh when its element was moved or removed. Add deterministic Window-load and iframe-load insertion tests. Both fail before this fix, and the full Release WPT probe also exposed dynamic-append.html timing out at 7e79f9c; that incomplete validation was stopped before Cases refresh. Fixes: 7e79f9c (fix(html): arm child meta refresh before load callbacks) Validation: - cargo fmt --all - cargo clippy --workspace --all-targets --all-features -- -D warnings - cargo nextest run --no-fail-fast Original-commit: 6d1bc4e
Route native meta insertion and attribute mutation candidates by their owning document, instead of limiting mutation refresh handling to the top document. Loaded child documents now register adopted or inserted refresh elements using their own URL, sandbox policy and exact document timer owner. Ignore shadow-tree candidates and retain the existing deadline for identical refresh candidates. Use the active runtime borrow directly while registering child timers and create the native callback in the child Window realm. Initial load capture remains the fallback for child documents that are still loading. Add deterministic source-first/source-last sandbox adoption tests and post-load insertion and shadow-tree controls. The old frozen Release also reproduces the related allow-scripts-flag-changing-1 WPT flake (7 pass/3 timeout in10 rounds); the new source-last adoption and post-load insertion tests fail before this fix. Validation: - 13 related child meta refresh tests pass - cargo fmt --all - cargo clippy --workspace --all-targets --all-features -- -D warnings - cargo nextest run --no-fail-fast Original-commit: 0e34b9e
Capture refresh candidates during parsing and load callbacks as document-owned pending work, then arm their timers only after the iframe owner load callback finishes. DOM readyState complete alone does not establish that load callbacks have run, so immediate mutation timers could change a fragment before the first iframe load observed the original URL. Use FrameOwnerStore's exact-document load progress to admit timer activation. Keep pending candidates when meta elements move, preserve active deadlines for identical candidates, and cancel both pending and armed work on retirement. Add a Browser integration test that reproduces the premature fragment change, and a Page task-executor ordering control. WPT same-document-refresh.html passes with bec88e1 and fails with6faf8d3fed2 before this fix. Fixes: 6faf8d3 (fix(html): schedule refresh mutations in loaded child documents) Validation: - 15 related child refresh and Browser integration tests pass - cargo fmt --all - cargo clippy --workspace --all-targets --all-features -- -D warnings - cargo nextest run --no-fail-fast Original-commit: 2fbc805
A retained child's original SameObject getter captured undefined when its lazy surface had never been read. Returning that snapshot after retirement made Window.screen disappear when an iframe was removed before its first read. Use captured objects when present, and let the exact retained native global materialize an untouched surface in its original Realm. Retain receiver and cross-origin authorization. Cover cold Screen reads, identity and zero geometry. Fixes: 9f11881 (PR #1651) Validation of the complete fix set, with unchanged source content across the separate logical commits: - cargo fmt --all - cargo clippy --workspace --all-targets --all-features -- -D warnings - cargo nextest run --no-fail-fast: 20374 passed, 18 skipped Original-commit: d61a6c8
Clearing Location.hash produced a URL without a target fragment and entered the full-URL navigation path, interrupting load/harness completion and replacing srcdoc documents. Preserve explicit hash-setter intent in the shared Location route and compare encoded fragments before taking any navigation. Keep the main branch's full href/assign no-fragment behavior and retired-facade checks. Cover top-level hash removal, canonical hash reassignment, and srcdoc Document identity, origin and NavigateEvent metadata. Fixes: 536fa76 (PR #1701) Validation of the complete fix set, with unchanged source content across the separate logical commits: - cargo fmt --all - cargo clippy --workspace --all-targets --all-features -- -D warnings - cargo nextest run --no-fail-fast: 20374 passed, 18 skipped Original-commit: 5fe0217
Use the creator URL for source matching in inherited about:blank/srcdoc documents. Keep actual document URLs in violation reports and preserve opaque sandbox origins and data URL blocking. Cover ordinary and sandboxed srcdoc, changed parent/child base URLs, allowed same-origin images, blocked cross-origin images, and owner reports. Regression-commit: 5399724 Regression-PR: #1714
c4313c0 to
44621a0
Compare
This combined runtime PR has been superseded by four independent PRs targeting main:
Each branch is based directly on the fixed main baseline
ce0781f2ad7e3ab62198ef169c06ed72d9e4b178and passed formatting, workspace/all-targets/all-features Clippy with warnings denied, and full Nextest before its new Rust commit was created. The 17 source/test paths are disjoint. Recombining the patches exactly reproduces this PR's source changes on that baseline; original authors and source-commit traceability are retained.All four remote heads and online PR file lists were verified. Closing this aggregate PR avoids submitting the same runtime fixes twice. The Taffy/Stylo work remains in #1745.
The original
bump-version1118branch remains at44621a04398ceb3e741ac475d517dc2eddbce0bb, including its combined Release Cases snapshot. That historical snapshot has not been copied into the standalone source PRs; regenerate Cases from the integrated Release after merging the relevant fixes.Historical combined-build description and evidence
Preserve child-document load/refresh ordering, retained Window surfaces, and same-document hash navigation. Restore image CSP self matching for inherited local documents while keeping owner-document enforcement.
Changes
The Taffy/Stylo upgrade, required shared-atom/parser compatibility, and all layout/style fixes are in #1745. This branch has 17 source/test files and no source-path overlap with that PR. Cargo manifests/lockfile, layout, CSS parser, and selector code remain at the validated main baseline.
CSP regression boundary
PR #1714, merged 2026-10-19 14:37:13 UTC, introduced the regression in
5399724fb07a24935531b92c42621be1baa8c089.For
content-security-policy/meta/sandbox-iframe.html, a Release with only that commit removed, while holding all six runtime fixes constant, passes 3/3. The build containing it fails 3/3. The adjacent parent is2843cde2c43b418fc96c60541ae1ff6971a5fe41. Chromium passes the sandboxed-srcdoc and opaque-data-origin controls. The final fix passes both cases in three fresh rounds and preserves #1714's document ownership and reporting behavior.The new CSP fix is its own commit,
59c8fc213350fd4d00ac06c3ce0eed5a3971a999. Six earlier runtime commits retain their original topics/authors and anOriginal-committrailer. The Cases snapshot is separate in44621a04398ceb3e741ac475d517dc2eddbce0bb.Validation
Validated independently on
main@5399724fb07a24935531b92c42621be1baa8c089, using final source contents matching59c8fc213350fd4d00ac06c3ce0eed5a3971a999.cargo fmt --allpassed.cargo clippy --workspace --all-targets --all-features -- -D warningspassed.cargo nextest run --no-fail-fast: 20,407 passed, 18 skipped, including the new CSP guard.db95fafd1fcef8428805e41eb5705d444e8c67ce: 9,751 pass, 3,604 fail, 242 timeout, 24 harness-stalled, 9 error, 1 crash; 0 missing. Cases exactly partition all 13,631 results, and the CSP regression case is Pass.a1a0396f693f7214c7f018565cc1b06039981192fafb9bc59daff07c32549dc9.Both PRs are based directly on the same fixed main commit. Each shared Cases snapshot describes its own standalone binary; refresh the snapshot after combining both PRs.