Chromium reports loadingFailed for a failed document request and later
loadingFinished when its internal error Document commits and loads under
the same request identity. The sequential navigation audit incorrectly
reported duplicate terminals and a successful terminal without a response.
Recognize this pair only when a same-session chrome-error frame commit
matches the request's frame, loader, and final unreachable URL between
the failure and completion. Keep ordinary request ordering and duplicate
terminal checks, and retain the transport failure in request summaries.
Cover direct and redirected failures, identity mismatches, missing or
misordered commits, extra terminals, and preservation of failure details.
Refresh classifications from the unfiltered all-profile CDP run of
14,064 cases against the release build of 909ea48c37.
Results: 10,282 pass, 3,503 fail, 246 timeout, 25 harness-stalled,
7 error, and 1 existing crash. IndexedDB has 396 pass, 46 fail,
and no timeouts; all 35 original regression cases and 660 subtests pass.
Keep the first full-run results, including two Trusted Types stalls
and the existing Worker CSP timeout. Candidate reruns passed on both
HEAD and the pre-migration baseline; subsequent neighbor runs also
passed without replacing the original full-run classifications.
Validation: full WPT Cross run, case-list/report integrity checks,
and git diff --check. No Rust source or build metadata changes.
Refresh all case lists from the final complete Moli-only run: 14,064 entries, 10,247 passes, 3,547 failures, 239 timeouts, 23 stalled harnesses, 7 errors, and 1 crash. The three corrected crashtests now pass. IndexedDB remains 360 passing, 77 failing, and 5 timing out across 442 entries.
Validate the initial Session/Frame/Loader commit before running readiness. Follow same-frame document replacement after a destroyed execution context within the original case deadline, and allow legitimate URL changes while preserving readiness and crash checks.
Validation: 500 Python WPT tests passed; navigation reproducer passed 20/20 runs. All 606 crashtests executed with 596 passing, 9 existing timeouts, and 1 existing crash. All 593 previously passing crashtests remained passing.
Include Window and DedicatedWorker scripts and supported HTTPS/template HTML cases in the default and all profiles. Add enumeration regression coverage and refresh statuses from the complete release-Moli run.
Validation: 494 Python WPT tests passed. Executed 14,064 Moli WPT entries, including 442 IndexedDB entries (228 Window and 214 DedicatedWorker): 360 passed, 77 failed, and 5 timed out.
Run all 13,631 WPT Cross cases with the release binary from 3dc8bcef3a
against WPT db95fafd1fce, using the standard schedule and zero retries.
Record the first full-run results: 9,894 pass, 3,471 fail, 234 timeout,
23 harness-stalled, 8 error and 1 crash. The sorted status lists form
an exact partition, with no missing or duplicate cases.
Confirmed template document and SVGLength regressions were fixed in
separate commits. Compare subtest failures with the preserved 672118c9fa
release and retain the original full-run failures after bounded probes.
Run all 13631 WPT Cross cases against Release a9e54b4a0a at upstream
db95fafd1fcef8428805e41eb5705d444e8c67ce. Record 9866 pass, 3489 fail,
238 timeout, 28 harness-stalled, 9 error and 1 crash, with zero missing.
Keep original full-run statuses. Replay all 32 changed cases for three
focused rounds (96 executions) without rewriting the lists. Nine cases
changed from pass to nonpass; four stay nonpass in all focused rounds
and five vary. Preserve the two new consistent font failures and the
font-face-reject fail-to-timeout change for follow-up investigation.
Verify lists are sorted, disjoint, and exactly partition the full matrix.
Release binary SHA-256:
a388b701c7da01cc104f535d6d8fa1a89b7638bd994531fca3622e22f9afbe85
Refresh all 13631 WPT cases at db95fafd1fcef8428805e41eb5705d444e8c67ce after rebasing the style stack and XML fork migration onto main 3ca6888b9d.
9863 pass, 3483 fail, 249 timeout, 26 harness-stalled, 9 error, 1 crash; zero missing. Lists exactly partition frozen Release 8eefbbace618edfbe851b6f2ba2a6231db214e5fbc202bf35d0e16f23d606004.
All 16 status/subtest changes versus the prior validated build were replayed against both binaries for three rounds (96 case executions). No new stable or possible flaky regression; existing variations are recorded without rewriting full-run outcomes. Root fmt, strict workspace/all-target/all-feature Clippy and complete Nextest (20427 passed, 18 skipped) pass. XML 312-case and Chromium overflow 840-case comparisons have no differences.
Refresh the complete 13631-case snapshot at WPT db95fafd1fcef8428805e41eb5705d444e8c67ce after the XML fork migration and main rebase.
9866 pass, 3487 fail, 240 timeout, 28 harness-stalled, 9 error, 1 crash; zero missing. Frozen Release SHA-256: b6408a72a6ad26dcd613ced3b0998d6fcf3c9d510d7657011057e294b1637f60.
All nine apparent case/subtest/status regressions were replayed against both frozen builds. No new stable regression; the Trusted Types navigation delta is preexisting flaky behavior. Keep the full-run statuses in these lists.
Extract shared invalidation from realtime layout commit dfeda25e6d. Retain original source ownership, detached-subtree cleanup, real splice ordering and structural-effect limits. Add selector/cache regressions and a normal-CLI before/after benchmark.
The inherited listen backlog of five makes concurrent browser connections
wait for TCP retries before fixture handlers run. Match wptserve's backlog
of 2000 for every IPv4/IPv6 origin without changing test timeouts.
Add real socket tests that queue a complete 50-worker burst before the
accept loop starts. Both address families time out before this change and
connect successfully afterward.
With the same frozen release binary, Worker error stress changes from
86/100 passes to 150/150 after changing only the backlog. Script-order
and worker XHR timing cases each pass all 30 additional trials.
Validation: 81 Python tests across connection backlog, fixture resources,
fixture responses and runner orchestration; git diff --check.
Move choose-_parent-001/002/004 to passed after receiver-based target
resolution. Each passed five isolated release runs on this main-based
branch. Refresh only these three cases and preserve all other recorded
outcomes; this is not a new full-suite run.
Large semantic dumps retain a JSON object graph with allocated field names
and string node references for every AX node before formatting the output.
Build compact typed nodes with numeric references and pass them directly
from the renderer to the CLI. Keep one AX traversal for both typed nodes
and CDP payloads, converting protocol nodes individually as they are built.
Preserve omitted/empty fields, field insertion order, list markers, and
frame-root attachment order. Render text iteratively and trim in place.
Add compatibility coverage and a standalone benchmark that stages both
executables on the same filesystem, alternates runs, records peak RSS and
wall time, and rejects changes to dump output bytes.
Against main at 5f5e1fff3 on a generated 40,000-row list (three interleaved
runs, medians):
- semantic_tree_text: 718.42 -> 390.96 MiB; 2.919 -> 2.204 s.
- semantic_tree: 815.71 -> 483.81 MiB; 2.484 -> 2.369 s.
- markdown control: 95.52 -> 95.59 MiB; 0.895 -> 0.913 s.
A generated 200,000-row list also completes with identical bytes (one run):
- semantic_tree_text: 3473.02 -> 1775.07 MiB; 13.245 -> 10.015 s.
- semantic_tree: 3803.45 -> 2137.26 MiB; 12.626 -> 10.397 s.
JSON/text comparisons also match the baseline on a mixed fixture containing
hidden/ignored nodes, form values, list markers, shadow DOM, and child frames.
These generated fixtures are independent of the external MOL-269 evidence.
Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast (19,885 passed, 17 skipped)
- cargo build --release -p moli
Refs: MOL-269
Refresh all-profile WPT Cross lists from Moli 1.1.16 release at 23c6bb5754
against WPT db95fafd1f, using CDP with 50 workers. Each of 13,631 cases
ran once: 9,674 pass, 3,656 fail, 253 timeout, 37 harness-stalled,
10 error and 1 crash. Pass count rises by 86 (132 gained, 46 lost).
Review all 46 lost passes against the previous snapshot's binary:
41 stable version regressions, 2 existing flaky cases, 1 existing runner
readiness race and 2 cases failing in both versions. Preserve original
full-run outcomes in the lists. Validate exact report agreement, sorted
disjoint coverage and no missing cases; git diff --cached --check passes.
Add bounded fixed and random Chromium/Moli comparisons for target lifecycle,
window activity, named-window reuse, opener references and navigation inheritance,
plus a real DevTools frontend probe. Preserve action replay, raw protocol evidence
and target/session mappings while normalizing observed equivalent focus-event
orders and retaining exception identity in comparisons.
Validation: PYTHONPATH=moli-benchmark moli-benchmark/.venv/bin/python -m unittest discover -s moli-benchmark/tests -p test_multipage_cdp_fuzz.py -v.
Run the 451451cec release against WPT db95fafd1f with the full all profile,
CDP mode, and 50 workers. Record all 13,631 executed cases: 9,583 passed,
3,724 failed, 259 timed out, 10 errored, 1 crashed, and 54 stalled.
Both Promise and both Wasm entry-settings regressions now pass in the full
run and in all five focused release rounds. Keep the other original full-run
statuses, including errors and intermittent failures; diagnostic comparisons
with main and the previous release do not replace snapshot results.
Audit confirms every raw result agrees with the engine report, matrix, and
eight sorted, disjoint status lists, with no missing or unexecuted cases.
Run the unfiltered all profile with release Moli 1.1.12 built from
0c5f83969f after rebasing onto main
8f7598a30f, using WPT
db95fafd1fcef8428805e41eb5705d444e8c67ce and 50 CDP workers.
Complete all 13,631 cases: 9,578 pass, 3,730 fail, 261 timeout, 9 error,
one crash and 52 harness-stalled. Against main's lists, 11 cases gain pass
and 16 lose pass, for a net decrease of five. Preserve the raw full-run
outcomes.
Validate the unchanged case set and exactly one recorded result per case.
Raw live results, engine output, matrix and all eight sorted, disjoint,
exhaustive status lists agree. No setup errors, missing cases, unknown
statuses or unexecuted recovery placeholders. git diff --check passes.
Check all 16 pass losses against the same release main source and WPT.
Four Promise/Wasm entry tests reproduce a source regression: HEAD times
out in 8/8 paired trials while main passes 8/8. The callback retirement
guard added in 77d2700c6 is the cause; a diagnostic-only fallback restores
all four in 3/3 trials. Keep these failures in the raw timeout list.
Nine losses also fail on main; two original failures remain unreproduced.
rel-attribute-clearing remains suspicious (HEAD 3/28 failures, main 0/28).
Filtered validation does not alter this full-run snapshot.
Cover WPT Fetch status fixture handling, including no-body statuses, preserved HTTP status metadata and redirect targets, through the actual fixture server.
Run the unfiltered all profile with release Moli 1.1.12 built from
cbb41950af, using WPT
db95fafd1fcef8428805e41eb5705d444e8c67ce and 50 CDP workers.
All 13,631 cases have exactly one recorded Moli attempt.
Moli: 9,583 pass, 3,727 fail, 259 timeout, 9 error, 1 crash,
and 52 harness-stalled. The case set matches the previous refresh;
51 cases gain pass and eight lose pass, for a net gain of 43.
Keep the raw full-run outcomes.
Validate all eight status lists against the raw results and matrix:
sorted, disjoint, exhaustive, with no setup errors, missing cases,
unknown statuses, or unexecuted recovery placeholders.
git diff --check passes.
Run the full 13,631-case profile on source 112a97e61 with Moli and Chromium
145.0.7632.116 at parallelism 50, using WPT db95fafd1fcef8428805e41eb5705d444e8c67ce.
The case set and fixed scheduling order match the previous full run.
Moli: 9,540 pass, 3,704 fail, 263 timeout, 61 error, 10 crash, 53 harness-stalled.
Chromium: 11,388 pass, 1,897 fail, 242 timeout, 16 error, 18 crash, 70 harness-stalled.
All three JSON module regressions pass on both engines. Relative to 7d9a0a98c,
11 cases gain pass and five lose pass, for a net increase of six.
Keep raw full-run outcomes. Four pass losses pass once on both frozen binaries
in focused diagnostics; SharedWorker-extendedLifetime fails identically in
all three focused runs on each binary, including the pre-fix build.
Validate complete per-engine execution, exact raw/matrix agreement, and sorted,
disjoint, exhaustive status lists. No missing cases or recovery placeholders.
Run the unfiltered all profile against WPT db95fafd1f with Moli built
from 7f9b8b63d (dev, debug=0) and Chromium 145.0.7632.116, using 50 CDP
workers. Both engines execute all 13,631 cases without setup errors,
missing results, or unexecuted recovery placeholders.
Moli: 9,534 pass, 3,708 fail, 264 timeout, 63 error, 52 harness-stalled,
and 10 crash. Chromium: 11,383 pass, 1,899 fail, 242 timeout, 17 error,
72 harness-stalled, and 18 crash.
Compared with the previous lists, 171 cases gain pass and 11 lose pass,
for a net gain of 160. Of the previous refresh's 104 pass losses, 101
now pass, two fail, and one errors. Retain the original full-run
outcomes; separate diagnostic reruns do not replace list statuses.
Validate all eight lists against the raw results and matrix: sorted,
disjoint, exhaustive, and complete. git diff --check passes.
Run unfiltered profile all on WPT db95fafd1fcef8428805e41eb5705d444e8c67ce
with Moli built from 8ba39c4aa1 and Chromium 145.0.7632.116, 50 workers.
Both engines produced results for all 13,631 cases.
Moli: 9,374 pass, 3,686 fail, 260 timeout, 247 error, 54 harness-stalled,
10 crash. Chromium: 11,334 pass, 1,888 fail, 272 timeout, 30 error,
89 harness-stalled, 18 crash.
Complete 91 previously unexecuted cases after a worker exhausted its
restart budget, using the same binary and fixture in bounded batches.
Use their first measured outcomes (63 pass, 26 fail, 2 timeout); preserve
all actual full-run failures and crashes. Both samesite-iframe and
empty-preload-response-body now pass in both engines.
Validate all eight status lists against the raw results and matrix:
sorted, disjoint, exhaustive, with no missing or unexecuted cases.
Compared with the previous refresh, 65 cases gain pass and 104 lose pass
(98 probe errors, 6 failures). Before/after diagnostic rechecks recover
31 of those 104 on the fixed binary; the other 73 also fail or error on
the old binary. Diagnostic retries do not replace full-run outcomes.
Run the unfiltered all profile on Moli c429911cdf and Chromium
145.0.7632.116 using WPT db95fafd1f and 50 CDP workers. Moli was
built from this branch with cargo build --locked (dev, debug=0).
Both engines completed all 13,631 cases without setup errors or
recovery-aborted cases. Keep the existing 13,558 cases and add 73.
Moli: 9,413 pass, 3,687 fail, 264 timeout, 202 error, 55
harness-stalled, and 10 crash. Chromium: 11,380 pass, 1,899 fail,
243 timeout, 19 error, 72 harness-stalled, and 18 crash.
Verify all eight lists are sorted, disjoint, complete and exactly
match the Moli matrix. Preserve the raw statuses, including 200
five-second CDP evaluate probe timeouts. The previous snapshot
used Moli d40181f729; this refresh is not a controlled fixture A/B.
Reconcile the shared HTTP handlers and discovery rules from the split PRs with the complete fixture surface in wpt-misc-fix. Share stash namespaces and XHR dispatch, retain the existing testdriver bridge, preserve raw header values, and carry forward the remaining pipe, template, and dynamic-import regressions.
Validation: 742 Python tests across 74 modules pass; focused Ruff checks and git diff --check pass. With fixed Moli and Chromium binaries, a 27-case WPT comparison against main improves whole-case passes from 7 to 26 and 6 to 23 respectively, with no previously passing case regressing.
Bring the remaining Fetch header fixtures from wpt-misc-fix, including early responses to unread uploads, CORS metadata, response status pipes, and handler discovery. Consolidates d210a13a5d and 8e2764e6cd with their current regression tests.
Implement preload/resources/preload-count.py and admit its exact references
during case discovery. Resource requests increment a shared counter and fail
with 404; result requests return JavaScript and consume the count. This lets
the unsupported-type WPT verify that no preload request was sent.
Validation: 432 Python WPT tests across 31 modules, run with 32 workers.
Moli and Chromium both pass the affected WPT and the two related MIME cases
(47 subtests per engine). Only Python and the WPT pass ledger changed.
(cherry picked from commit b8a3d0497d3575200ce28896c8bcde7f8c4719c4)
Serve Fetch redirect.py with upstream Origin and credentials responses,
preflight handling, query inheritance, counters, delays and form status codes.
Recognize its relative, absolute and RESOURCES_DIR references during discovery.
Cover the HTTP behavior and discovery with regressions. Verify the fixture
against upstream wptserve, including byte parsing and unread request bodies.
(cherry picked from commit 813bb1b3ecb4e55c5a0167df22494ca5269b1ef1)
Implement requri.py and redirect.py with their upstream query, status,
Location, delay, and method behavior. Preserve raw request URIs and allow
redirect responses before the upload completes.
Recognize supported XHR references during case selection and cover the
fixtures through real HTTP requests.
Validation: all 510 benchmark unit tests pass. With the unchanged Moli
binary, 17 WPT cases improve from 6 to 9 passes and 72 to 79 passing
subtests; both redirected Worker harnesses now execute their assertions.
(cherry picked from commit 456c59b63e4ef997d35dbf984b2406a6c3c75926)
Support the iframe parentage stash fixture with write-once POST and read-once retrieval, preserving UUID/path namespaces and the difference between an absent value and empty bytes. Reuse the Python-handler response path for pipe processing. Tests cover requests, methods, body framing and case selection.
Validation: all branch checks passed. Ran 333 tests in 135.692s; OK
(cherry picked from commit 39dc2130dc)
Serve the bogus HTTP charset fixtures with their original bytes and optional valid meta charset. Match upstream response behavior for HEAD, extension methods and response-pipe bypass. Include exact reference selection and byte-level response tests.
Validation: all branch checks passed. Ran 325 tests in 122.514s; OK
(cherry picked from commit 9827403ad3)