Repository navigation
Fix callback navigation, frame Markdown and ResizeObserver layout delivery - #1481
lanyue-llk wants to merge 3 commits into
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/B✅ All benchmark browser service runs completed; results are informational. Public HEAD: 184 / 240 rows; 38 / 48 sites produced rows; 10 unexpected empty sites. ✅ Deterministic fixture contract is clean. Common ancestor Public 48-site run · informational
Public-site content, timing, and memory are noisy. This single A/B run reports evidence only; site outcome counts explain missing rows without treating them as a deterministic regression. CPU and memory timelinesThese are bounded 40-point views of the same complete process-tree samples used by the HTML report. CPU uses 100% per occupied logical core; memory lines are RSS first and PSS second when complete PSS samples are available. Basexychart-beta
title "Base CPU"
x-axis "Elapsed seconds" [1.539, 3.041, 3.541, 5.041, 6.541, 7.042, 8.043, 10.045, 11.548, 13.049, 15.053, 16.554, 18.054, 19.557, 21.558, 23.061, 24.563, 26.066, 28.068, 29.57, 31.073, 33.075, 34.575, 36.076, 37.076, 37.576, 39.578, 41.079, 42.581, 44.583, 46.084, 47.587, 49.089, 51.092, 52.594, 54.096, 55.598, 57.6]
y-axis "CPU percent" 0 --> 500
line [35.92, 0, 98.03, 136.03, 161.98, 199.86, 139.92, 95.94, 175.75, 77.93, 133.82, 105.89, 8, 5.99, 2, 0, 2, 99.78, 89.97, 7.98, 7.98, 95.98, 125.95, 92.01, 112.06, 105.93, 137.92, 155.75, 121.73, 103.88, 133.84, 89.73, 143.84, 19.97, 31.96, 119.82, 8, 122.05]
xychart-beta
title "Base memory: RSS then PSS"
x-axis "Elapsed seconds" [0.036, 1.539, 3.041, 3.541, 5.041, 6.541, 7.042, 8.043, 10.045, 11.548, 13.049, 15.053, 16.554, 18.054, 19.557, 21.558, 23.061, 24.563, 26.066, 28.068, 29.57, 31.073, 33.075, 34.575, 36.076, 37.076, 37.576, 39.578, 41.079, 42.581, 44.583, 46.084, 47.587, 49.089, 51.092, 52.594, 54.096, 55.598, 57.6, 58.968]
y-axis "Memory MiB" 0 --> 500
line [12.39, 89.73, 100.05, 117.92, 153.62, 152.64, 174.47, 183.34, 168.13, 171.99, 160.74, 177.52, 144.11, 143.04, 143.96, 144.71, 144.91, 145.33, 162.89, 151.32, 136.88, 139.39, 174.06, 165.86, 170.44, 274.37, 191.67, 186.6, 160.23, 206.78, 157.21, 154.99, 178.29, 234.68, 172.89, 162.72, 184.19, 147.27, 177.9, 0]
line [9.03, 86.02, 96.33, 114.33, 150.01, 149.03, 170.39, 179.73, 164.39, 168.22, 157.01, 173.82, 140.38, 139.31, 140.23, 140.98, 141.19, 141.61, 159.18, 147.59, 133.2, 135.67, 170.49, 162.15, 166.74, 270.76, 187.94, 182.87, 156.52, 203.16, 153.6, 151.26, 174.67, 230.96, 170.37, 159.09, 180.48, 143.54, 174.16, 0]
HEADxychart-beta
title "HEAD CPU"
x-axis "Elapsed seconds" [1.037, 1.537, 2.037, 3.54, 5.545, 7.547, 9.549, 11.051, 13.053, 15.055, 17.057, 18.559, 20.563, 22.564, 24.067, 26.069, 28.071, 30.073, 31.576, 33.578, 35.581, 37.082, 39.084, 41.086, 43.089, 44.591, 46.593, 48.594, 50.597, 52.098, 54.1, 56.103, 57.605, 59.608, 61.61, 63.614, 65.115, 65.615]
y-axis "CPU percent" 0 --> 500
line [0, 8, 2, 119.76, 127.67, 137.87, 91.92, 129.9, 101.92, 133.79, 6, 0, 0, 119.86, 17.98, 33.95, 11.99, 11.99, 0, 0, 27.97, 9.98, 13.99, 3.99, 93.89, 113.83, 116.01, 121.8, 173.98, 127.97, 115.9, 59.95, 119.79, 15.98, 133.99, 33.94, 132, 203.99]
xychart-beta
title "HEAD memory: RSS then PSS"
x-axis "Elapsed seconds" [0.036, 1.037, 1.537, 2.037, 3.54, 5.545, 7.547, 9.549, 11.051, 13.053, 15.055, 17.057, 18.559, 20.563, 22.564, 24.067, 26.069, 28.071, 30.073, 31.576, 33.578, 35.581, 37.082, 39.084, 41.086, 43.089, 44.591, 46.593, 48.594, 50.597, 52.098, 54.1, 56.103, 57.605, 59.608, 61.61, 63.614, 65.115, 65.615, 66.924]
y-axis "Memory MiB" 0 --> 500
line [12.29, 54.86, 63.14, 67.13, 115.43, 144.95, 171.11, 164.98, 182.79, 191.23, 166.07, 150.41, 149.98, 150.88, 178.55, 161.78, 164.11, 160.66, 162.25, 161.11, 161.44, 163.23, 161.63, 138.75, 140.69, 167.26, 180.03, 277.05, 232.34, 174.89, 174.96, 164.98, 159.59, 170.03, 167.45, 195.77, 159.25, 200.6, 216.01, 0]
line [8.97, 51.21, 59.49, 63.5, 111.83, 141.73, 167.39, 161.3, 179.91, 188.14, 162.32, 146.68, 146.25, 147.14, 174.86, 158.05, 160.4, 156.94, 158.52, 157.38, 157.71, 159.5, 157.9, 135.03, 136.96, 163.53, 176.97, 272.88, 228.75, 171.6, 171.24, 161.33, 155.86, 166.36, 163.72, 192.05, 156.27, 196.87, 212.27, 0]
Deterministic fixture · required contractThe fixture exercises 15 routes: 8 are expected to emit rows and 7 intentionally exercise empty, loading, or timeout behavior.
Full HTML, JSON, CSV, logs, and page snapshots: workflow run and full The public-web A/B is informational. The exact HEAD fixture contract runs as a separate required CI check; timing and public-site content deltas remain non-blocking. |
CI Regression ReportSource CI run · source state at render:
Release regression — ✅ HEAD/base failures 0/0; raw binary +0.025550%Package and image size
Startup latency and PSS
Concurrency matrix
Frontend differential — ✅ 1,020/1,020 cases matched; 0 issues
Agent episodes · Moli vs Chromium — ✅ 8/8 Moli episodes passed; 0 failures
Runtime and CDP session contracts — ✅ 26 contract cases; 0 failures
CDP smoke — ✅ 52/52 groups passed; 621 scenariosWorkers: 4 · cumulative group time: 195.94 s · failed groups: 0
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. |
|
Superseded by #1501 for the evidenced Web Fetch fixes: frame Markdown, per-frame stripping, navigation-stage preservation, and ResizeObserver delivery/recovery. The credential-request navigation heuristic was intentionally excluded. |
A successful Load can return a bootstrap page before a credentialed fetch callback replaces it. Markdown also omits live child-frame content, and ResizeObserver can read an old layout snapshot after a size change.
This change fixes those three paths:
--with-framesconverts the current child Documents at their frame positions, including nested and cross-origin frames. Links and images use each Document's effective base URL, including inherited srcdoc bases and<base>. Frames with no usable content retain their source link or label.Default
fetch --dump markdowncontinues to use the native text path without real layout. A CLI virtual-list fixture verifies that its resize-driven children appear with explicit--layoutand remain absent without it. This does not improve dynamic-104 under the default text method.Validation on ARM64 Linux, Rust 1.96.1:
cargo fmt --allpassed.moli,moli-renderer-v8, andmoli-test-supportlibraries with all features and warnings denied;molialso passed with all targets.This branch starts from main at
7a36b6a63f7b8f8f9801e19959343620fba36265and is independent of PR1476 and the content/navigation stack.