Validate supplied base URLs before parsing the input, including absolute inputs. Use the base for same-scheme relative parsing and share the result with URL.canParse so all three parsing APIs agree.
Add regression coverage for invalid bases, same-scheme HTTP/FTP/file inputs, opaque and absent bases, and WebIDL conversion order. Mark url/failure.html passing after CLI and CDP confirmation.
Validation: cargo fmt --all; full workspace clippy with warnings denied; nextest 17593 passed, 13 skipped. URL WPT slice improves from 12/22 to 15/22 passing in both CLI and CDP, with 237 additional passing subtests and no newly failing cases. CDP smoke remains 42/43, with Puppeteer unavailable because node is missing.
Accept genuine FileLists across realms and prototype changes, reject spoofed interface values, and validate input receivers before the HTML setter steps. Read selected File metadata from private storage instead of script-visible properties.
Share native input-file access with FormData serialization so overridden input.files, FileList.length, and File metadata getters cannot change the submitted files. Preserve assigned FileList and File identity and create fresh lists in the input realm.
Validation: cargo fmt --all; workspace all-target/all-feature clippy with -D warnings; full nextest 17588 passed, 13 skipped; 87 focused tests passed including four new regressions. The same 17 related WPT cases and 236 subtests pass before and after.
Full CDP smoke: 41/43 groups pass. Upload and file-chooser scenarios now pass; dom-input reaches a separate select_option(ElementHandle) timeout reproduced on both parent and patched binaries. Puppeteer cannot start because node is absent. Artifacts: target/wpt-filelist-input-20260908-ASNKxA/.
Queue each History back/forward/go delta as its own authorized traversal task and resolve the destination when that task runs. Keep the committed traversal position separate from synchronous history mutations, and use the canonical Window history for isolated-world calls. Preserve Navigation API result-bearing traversal behavior.
Cover consecutive and opposite deltas, initially out-of-range requests, synchronous pushState, canceled and reentrant traversals, child documents, and isolated worlds. Update old coalescing assertions and wait for actual browser-owned history commits in protocol tests.
Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (17584 passed, 13 skipped). Overlapping navigation WPT improves from 16/22 to 18/22, with both new cases passing all 8 subtests. Navigation API comparison preserves all 385 previously passing cases out of 432.
CDP smoke: 41/43 passed. The dom-input FileList upload failure reproduces on the parent binary; puppeteer could not start because Node is missing locally. Artifacts: target/wpt-history-traversal-20260908-lcpQpn/{before,confirmed,navigation-after,cdp,cdp-before}.
Prepare pending child history seeds without mutating the active Location, history state, or NavigationHistoryEntry. Preserve initiator URLs and reserved service worker clients when queuing the deferred commit.
Cancel pending child navigation tasks and invalidate in-flight response ownership without clearing another window navigation. Preserve cross-document history traversals and reject incompatible Window.stop receivers.
Add regression coverage for five navigation entry points, retained document/history identity, sibling and parent isolation, late responses, resumed navigation, and traversal. Align integration assertions with committed URLs and test meta refresh through a real network load.
Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (17581 passed, 13 skipped). The 22 overlapping-navigation WPT cases improve from 12 to 16 passes with no lost passes; seven focused cases pass again. Move the four reproducibly fixed cases from failed to passed.
An earlier full nextest run hit one empty-output assertion in cli_meta_refresh_shutdown_exits_without_renderer_abort; retained its log. Independent old/new binary probes did not reproduce it, and the complete rerun passed without changing or skipping that test. Artifacts: target/wpt-window-stop-20260908-XbyH6Q.
Additional paired release validation: all 385 previously passing Navigation API cases remain passing out of 432. Two existing incomplete cases exchange timeout/harness-stalled classification; all other statuses, subtest counts and failure names are unchanged. Release SHA256: 11d9e1bf1faa64b07538c5f7ed93e7d04a6761d10d4d591433480a614df8a293.
Run the complete all profile in CDP mode with 50 workers at 800x600 DPR 1. Source: 3ca9eda2e71b96e98915a392b878eab72a30ef86; WPT: db95fafd1fcef8428805e41eb5705d444e8c67ce.
12,631 cases: 8,982 pass, 3,324 fail, 265 timeout, 54 harness-stalled, 6 error. The case set and fixed run schedule match the previous all-profile baseline.
Preserve exact full-run classifications. Re-ran all 33 pass-status changes twice: 17 newly passing cases stayed passing; 8 formerly passing cases failed all three runs. Other differences include reproducible run-scope/timing sensitivity, so the net gain of 7 is not a count of newly fixed tests.
Artifacts: target/wpt-full-3ca9eda2e-20260908-NMJR82/{report-all,drift-a,drift-b}. Binary SHA256: a5cf5593bbaff4bb22d42f96ca5c2a3c3aa55d91a96249a2a9a95fa12a8330c0. The legacy version probe uses an unsupported subcommand; the binary was separately verified with --version as moli 1.1.3.