Repository navigation
fix(markdown): preserve visible text and share export style observations - #1428
lanyue-llk wants to merge 6 commits into
Conversation
d205d91 to
d1653c6
Compare
8a39036 to
1f99b9f
Compare
dd4774c to
8b63b90
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. |
CI Regression ReportSource CI run · source state at render:
Release regression — ✅ HEAD/base failures 0/0; raw binary −0.011257%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: 155.38 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. |
Spider Bench A/B✅ All benchmark browser service runs completed; results are informational. Public HEAD: 189 / 240 rows; 39 / 48 sites produced rows; 9 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.037, 1.538, 2.54, 3.542, 4.043, 5.045, 5.545, 6.546, 8.047, 9.548, 11.05, 12.052, 13.554, 15.055, 16.057, 17.559, 19.06, 20.062, 21.564, 23.065, 24.568, 25.568, 27.07, 28.572, 29.573, 31.074, 32.576, 33.576, 35.076, 36.578, 37.579, 39.081, 40.582, 42.084, 43.084, 44.585, 46.086, 47.087]
y-axis "CPU percent" 0 --> 500
line [2, 91.79, 107.77, 123.76, 147.75, 123.7, 181.94, 157.74, 165.82, 209.95, 179.76, 147.59, 103.91, 113.85, 87.86, 3.99, 109.86, 129.81, 11.97, 4, 123.83, 120, 143.84, 109.87, 103.81, 145.78, 147.81, 143.99, 126.03, 83.89, 37.96, 145.88, 84.04, 3.99, 74.02, 103.97, 27.98, 135.8]
xychart-beta
title "Base memory: RSS then PSS"
x-axis "Elapsed seconds" [0.036, 1.037, 1.538, 2.54, 3.542, 4.043, 5.045, 5.545, 6.546, 8.047, 9.548, 11.05, 12.052, 13.554, 15.055, 16.057, 17.559, 19.06, 20.062, 21.564, 23.065, 24.568, 25.568, 27.07, 28.572, 29.573, 31.074, 32.576, 33.576, 35.076, 36.578, 37.579, 39.081, 40.582, 42.084, 43.084, 44.585, 46.086, 47.087, 48.424]
y-axis "Memory MiB" 0 --> 500
line [12.52, 62.09, 93.77, 121.77, 126.28, 138.91, 157.05, 177.14, 186.21, 176.63, 176.19, 185.32, 169.94, 188, 167.86, 158.4, 147, 159.37, 159.58, 148.73, 143.4, 186.06, 187.5, 164.27, 296.08, 206.02, 157.02, 164.18, 202.63, 176.53, 159.32, 154.29, 205.57, 178.39, 166.27, 183.64, 204, 158.24, 176.09, 0]
line [9.97, 59.31, 91.04, 119.11, 123.5, 136.13, 154.34, 174.38, 183.44, 173.87, 173.41, 182.54, 167.16, 184.78, 164.67, 155.17, 143.79, 156.1, 156.48, 145.46, 140.21, 182.87, 184.65, 161.09, 282.44, 202.87, 152.9, 161.01, 199.61, 173.35, 156.08, 151.06, 202.54, 175.15, 163.02, 180.05, 198.74, 155, 172.84, 0]
HEADxychart-beta
title "HEAD CPU"
x-axis "Elapsed seconds" [1.037, 2.539, 3.539, 5.043, 6.044, 7.546, 8.548, 10.049, 11.05, 12.551, 13.553, 15.055, 16.056, 17.557, 18.559, 19.56, 20.06, 21.061, 22.563, 23.564, 24.566, 25.066, 26.066, 27.067, 28.57, 29.57, 31.071, 32.071, 33.573, 34.574, 36.075, 37.077, 38.579, 39.58, 41.08, 42.081, 43.584, 44.085]
y-axis "CPU percent" 0 --> 500
line [2, 127.78, 125.92, 95.75, 171.97, 161.73, 99.83, 159.91, 69.88, 61.92, 131.84, 105.88, 89.93, 35.96, 51.85, 0, 4, 159.85, 91.91, 111.95, 105.8, 109.82, 110.18, 137.92, 45.92, 160, 135.91, 103.99, 125.85, 23.99, 135.96, 125.72, 17.97, 124, 169.87, 83.88, 139.69, 193.59]
xychart-beta
title "HEAD memory: RSS then PSS"
x-axis "Elapsed seconds" [0.037, 1.037, 2.539, 3.539, 5.043, 6.044, 7.546, 8.548, 10.049, 11.05, 12.551, 13.553, 15.055, 16.056, 17.557, 18.559, 19.56, 20.06, 21.061, 22.563, 23.564, 24.566, 25.066, 26.066, 27.067, 28.57, 29.57, 31.071, 32.071, 33.573, 34.574, 36.075, 37.077, 38.579, 39.58, 41.08, 42.081, 43.584, 44.085, 44.484]
y-axis "Memory MiB" 0 --> 500
line [12.67, 62.46, 125.87, 135.52, 151.44, 182.59, 199.26, 180.25, 190, 166.07, 188.86, 195.48, 152.53, 156.3, 166.86, 159.26, 153.01, 152.09, 173.6, 161.45, 180.15, 212.04, 277.43, 195.55, 207.33, 157.77, 185.86, 168.58, 158.05, 163.15, 160.5, 207.1, 202.84, 167.74, 194.67, 196.73, 171.48, 202.61, 212.86, 0]
line [9.72, 59.24, 122.58, 132.31, 148.43, 179.48, 195.17, 176.99, 186.76, 162.82, 185.23, 192.17, 149.24, 153.24, 163.58, 156, 149.75, 148.83, 171.04, 158.32, 176.97, 208.78, 275.06, 192.33, 204.07, 154.49, 182.89, 165.3, 154.73, 159.86, 157.27, 203.81, 199.59, 164.45, 191.38, 193.45, 168.21, 198.84, 209.58, 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. |
Native Markdown can omit visible white text over an image, positioned sibling or pseudo-element. The visibility adapter infers the painted background from DOM ancestors and a default white canvas, then removes text when the inferred background matches its color. DOM ancestry does not establish the actual painted backdrop.
Remove this color-only suppression and its unused helpers. Explicit display, visibility and opacity filtering remains in place. The regression scenarios cover sibling pictures, pseudo-element backgrounds and positioned backdrops, alongside controls for genuinely hidden text. Existing expectations for color-only suppression are updated to preserve the text.
Markdown export also sampled the same document through six independent style observations. Collect the required properties and visibility provenance together, remove unused color/background samples, and preserve the adapter's field layout. A large catalog scenario checks cascading styles, meaningful images, hidden controls, dynamic updates and repeated exports.
The exporter already projects finite, single-run opacity animations with a forwards fill to their bounded final state. Apply that same rule when the animation has a positive delay; a finite delay does not make the final state unbounded. The regression includes a delayed reveal and retains controls for paused, repeating, reverse, zero-duration and non-opacity animations.
This is stacked after #1380, whose branch already contains the #1337 style-aware Markdown export. The affected export does not exist on
main. This PR does not update #919, add site-specific extraction, modify benchmark answers or postprocess native output. The performance change removes known repeated work; historical logs do not establish it as the sole cause of an observed export timeout.Validation: whitespace checks passed. Format, Clippy and the test suite are delegated to the repository's normal CI; no local test suite or benchmark calls were run. Historical benchmark outputs and verdicts remain unchanged by this product patch.
PR stack
This PR is the sixth layer of the GitHub stack and targets the preceding branch directly:
main→ #1334 → #1335 → #1336 → #1337 → #1380 → #1428 → #1431 → #1432Merge from left to right. The GitHub base of #1428 is
codex/readme-web-fetch-benchmarks, not #919 and notmain; its Files changed view therefore contains only this layer's product fix. #919 remains a separate rebased historical combination and is not a dependency of this stack. #1429 targetsmainindependently because it only adds reusable CI infrastructure.