Repository navigation
fix(fetch): follow credential callback navigation after load - #1431
lanyue-llk wants to merge 2 commits into
Conversation
87940e6 to
6b6b3ba
Compare
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: 179 / 240 rows; 37 / 48 sites produced rows; 11 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.538, 2.539, 3.04, 4.042, 5.544, 6.045, 7.046, 8.547, 10.049, 11.05, 12.553, 14.054, 15.555, 17.058, 18.059, 19.561, 21.062, 21.563, 22.564, 24.067, 25.57, 26.571, 28.074, 29.574, 31.076, 32.579, 33.58, 35.082, 36.583, 38.085, 39.588, 40.588, 42.09, 43.591, 45.092, 46.594, 47.595, 49.097]
y-axis "CPU percent" 0 --> 500
line [137.77, 111.89, 123.73, 105.78, 147.7, 193.93, 91.77, 166.05, 73.8, 181.64, 55.83, 55.92, 147.88, 39.94, 5.99, 61.92, 4, 0, 3.99, 5.98, 143.82, 37.94, 81.85, 101.88, 133.73, 149.91, 165.85, 135.84, 133.99, 37.94, 113.87, 95.96, 97.8, 96.02, 21.95, 20, 171.75, 144.03]
xychart-beta
title "Base memory: RSS then PSS"
x-axis "Elapsed seconds" [0.036, 1.538, 2.539, 3.04, 4.042, 5.544, 6.045, 7.046, 8.547, 10.049, 11.05, 12.553, 14.054, 15.555, 17.058, 18.059, 19.561, 21.062, 21.563, 22.564, 24.067, 25.57, 26.571, 28.074, 29.574, 31.076, 32.579, 33.58, 35.082, 36.583, 38.085, 39.588, 40.588, 42.09, 43.591, 45.092, 46.594, 47.595, 49.097, 50.392]
y-axis "Memory MiB" 0 --> 500
line [12.62, 114.98, 120.29, 135.4, 129.85, 148.25, 169.45, 168.84, 167.98, 178.07, 181.27, 151.43, 178.06, 195.8, 146.9, 147.43, 159.86, 145.85, 145.85, 141.94, 146.33, 177.89, 158.74, 168.1, 260.05, 210.09, 221.66, 166.69, 165.52, 204.73, 152.23, 156.68, 168.72, 154.65, 183.07, 173.48, 163.22, 177.77, 190.88, 0]
line [9.43, 111.47, 116.83, 131.86, 126.35, 143.75, 165.5, 165.3, 164.43, 175.17, 177.75, 147.89, 174.65, 191.36, 143.33, 143.87, 156.25, 142.19, 142.18, 138.27, 142.76, 174.9, 155.1, 164.47, 256.43, 206.5, 218.02, 163.06, 161.88, 200.98, 148.59, 153.04, 165.02, 151.02, 179.78, 169.84, 159.58, 174.14, 186.01, 0]
HEADxychart-beta
title "HEAD CPU"
x-axis "Elapsed seconds" [1.038, 1.538, 2.54, 3.541, 4.041, 5.042, 6.544, 8.046, 9.047, 10.549, 11.549, 13.051, 14.053, 15.555, 17.056, 18.058, 19.56, 20.563, 22.065, 23.566, 24.567, 26.068, 27.07, 28.072, 28.572, 29.574, 31.076, 32.579, 33.58, 35.082, 36.083, 37.584, 39.086, 40.088, 41.589, 42.589, 44.092, 45.093]
y-axis "CPU percent" 0 --> 500
line [19.95, 127.9, 141.71, 151.89, 114.05, 199.55, 155.86, 99.97, 171.76, 149.55, 111.94, 131.95, 101.71, 1.99, 105.78, 49.95, 0, 0, 3.99, 71.96, 72.02, 113.91, 155.77, 99.85, 109.96, 131.98, 131.8, 87.88, 157.84, 129.97, 101.85, 91.92, 61.91, 129.67, 49.97, 22, 17.97, 138.06]
xychart-beta
title "HEAD memory: RSS then PSS"
x-axis "Elapsed seconds" [0.036, 1.038, 1.538, 2.54, 3.541, 4.041, 5.042, 6.544, 8.046, 9.047, 10.549, 11.549, 13.051, 14.053, 15.555, 17.056, 18.058, 19.56, 20.563, 22.065, 23.566, 24.567, 26.068, 27.07, 28.072, 28.572, 29.574, 31.076, 32.579, 33.58, 35.082, 36.083, 37.584, 39.086, 40.088, 41.589, 42.589, 44.092, 45.093, 46.487]
y-axis "Memory MiB" 0 --> 500
line [12.46, 79.79, 112.42, 125.88, 128.56, 142.56, 155.83, 164.5, 164.93, 176.15, 165.12, 178.68, 163.12, 160.39, 148.46, 170.49, 146.42, 149.36, 146.87, 145.91, 159.01, 184.95, 166.76, 188.44, 270.03, 258.71, 213.55, 221.94, 158.91, 162.95, 176.97, 171.98, 159.89, 167.37, 215.41, 180.52, 166.58, 174.57, 183.89, 0]
line [9.34, 76.27, 108.67, 122.37, 125.03, 139.07, 152.39, 160.91, 161.34, 172.65, 161.87, 175.02, 159.56, 156.81, 143.29, 166.91, 142.82, 145.76, 143.28, 142.32, 155.41, 181.36, 163.22, 185.36, 266.48, 254.65, 209.96, 217.61, 155.35, 159.39, 173.38, 168.38, 156.48, 163.79, 211.93, 176.93, 162.98, 170.98, 180.35, 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.002749%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.32 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. |
|
Closing after the consolidation audit. Inferring a likely navigation from credentialed XHR/fetch activity is a site-driven heuristic and is intentionally excluded from #1501. Explicit completion contracts remain the correct interface. |
A page can reach Load while the main document still owns a credentialed Fetch/XHR callback that immediately hands off to a top-level navigation. The CLI currently freezes that bootstrap document, so native Markdown can be empty even though the page is completing its own same-document authentication flow.
This change reuses the renderer’s typed, owner-bound navigation handoff. At Load, it observes only explicit credentials-including Window Fetch/XHR requests owned by the current main document. It waits within the existing bounded navigation window, finishes as soon as that request chain settles, and follows a successor navigation through the existing owner state machine. Ordinary requests, workers, resource loads, long timers, polling, and URL-specific rules are excluded.
Behavior tests cover a credentialed bootstrap callback that performs a same-origin top-level replacement. A negative control verifies that an unrelated four-second request and five-second timer do not delay the result. The tests run through the repository CI.
PR stack
GitHub dependency chain:
#1334 → #1335 → #1336 → #1337 → #1380 → #1428 → #1431 → #1432
This PR targets
codex/preserve-painted-markdown-text, the head branch of #1428. Its Files changed view therefore contains only this navigation-lifecycle fix. Merge the stack from left to right. #919 is a separate historical combination and is not a dependency. #1429 targetsmainindependently because it only adds reusable comparison CI.