Repository navigation
fix(forms): resolve live named properties without repeated scans - #760
Conversation
a4b6756 to
cec1eda
Compare
22c9d0c to
7c4f06a
Compare
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.535, 2.536, 3.037, 4.539, 5.54, 7.043, 8.545, 10.047, 11.549, 13.052, 14.554, 15.555, 16.056, 17.057, 18.559, 20.06, 21.561, 23.062, 24.563, 26.064, 26.565, 27.066, 28.569, 30.071, 31.574, 33.076, 34.577, 36.079, 37.08, 38.582, 40.084, 41.584, 43.086, 44.589, 46.091, 47.092, 48.595, 50.097]
y-axis "CPU percent" 0 --> 200
line [81.91, 111.86, 139.81, 113.96, 161.7, 135.71, 165.67, 179.88, 101.75, 111.91, 127.99, 97.73, 0, 33.92, 107.98, 105.74, 45.99, 93.83, 147.97, 97.75, 101.8, 109.87, 151.7, 119.97, 117.9, 99.84, 25.99, 71.83, 103.96, 35.98, 127.71, 42.03, 79.93, 141.58, 185.74, 19.98, 101.7, 103.87]
xychart-beta
title "Base memory: RSS then PSS"
x-axis "Elapsed seconds" [0.034, 1.535, 2.536, 3.037, 4.539, 5.54, 7.043, 8.545, 10.047, 11.549, 13.052, 14.554, 15.555, 16.056, 17.057, 18.559, 20.06, 21.561, 23.062, 24.563, 26.064, 26.565, 27.066, 28.569, 30.071, 31.574, 33.076, 34.577, 36.079, 37.08, 38.582, 40.084, 41.584, 43.086, 44.589, 46.091, 47.092, 48.595, 50.097, 51.407]
y-axis "Memory MiB" 0 --> 500
line [12.4, 91.18, 115.37, 120.93, 141.74, 166.44, 172.1, 149.01, 183.18, 181.37, 170.88, 189.79, 162.78, 162.75, 143.57, 154.26, 148, 146.95, 181.53, 161.44, 210.94, 272.08, 258.09, 196.35, 170.66, 163.78, 176.99, 147.2, 145.38, 151.21, 150.48, 182.16, 160.77, 169.54, 185.17, 158.55, 157.67, 158.75, 171.66, 0]
line [9.14, 87.4, 111.79, 117.36, 138.14, 162.37, 168.48, 145.3, 179.48, 175.22, 167.26, 186.16, 159.1, 159.07, 139.89, 150.64, 144.33, 143.27, 177.86, 157.32, 207.33, 268.42, 254, 192.7, 166.78, 160.14, 173.21, 143.51, 141.69, 146.16, 146.81, 178.48, 157.09, 165.87, 181.52, 154.5, 153.99, 155.07, 167.98, 0]
HEADxychart-beta
title "HEAD CPU"
x-axis "Elapsed seconds" [1.036, 1.537, 2.539, 4.042, 5.542, 6.543, 8.045, 9.047, 10.549, 12.052, 13.054, 14.555, 16.057, 17.058, 18.559, 20.059, 21.06, 22.562, 23.564, 24.065, 25.067, 26.569, 27.571, 29.072, 30.573, 31.575, 33.076, 34.578, 35.579, 37.08, 38.581, 39.582, 41.083, 42.083, 43.586, 45.088, 46.089, 46.59]
y-axis "CPU percent" 0 --> 500
line [31.92, 123.85, 131.8, 121.86, 201.98, 153.87, 107.85, 179.79, 65.91, 115.88, 141.79, 129.99, 97.9, 91.88, 63.99, 98.05, 133.69, 133.8, 107.79, 103.86, 103.78, 127.94, 109.81, 100, 31.98, 63.84, 113.84, 65.92, 151.8, 83.92, 0, 133.74, 117.92, 153.86, 99.75, 111.9, 107.7, 203.72]
xychart-beta
title "HEAD memory: RSS then PSS"
x-axis "Elapsed seconds" [0.035, 1.036, 1.537, 2.539, 4.042, 5.542, 6.543, 8.045, 9.047, 10.549, 12.052, 13.054, 14.555, 16.057, 17.058, 18.559, 20.059, 21.06, 22.562, 23.564, 24.065, 25.067, 26.569, 27.571, 29.072, 30.573, 31.575, 33.076, 34.578, 35.579, 37.08, 38.581, 39.582, 41.083, 42.083, 43.586, 45.088, 46.089, 46.59, 47.247]
y-axis "Memory MiB" 0 --> 500
line [12.27, 88.66, 107.51, 116.02, 133.96, 148.67, 175.08, 161.4, 196.34, 178.63, 189.18, 183.24, 180.25, 174.63, 156.09, 151.46, 186.74, 153.71, 168.81, 268.83, 232.12, 218.82, 161.36, 160.47, 172.72, 145.4, 143.75, 143.33, 151.01, 193.85, 181.25, 153.22, 171.3, 189.41, 164.95, 158.85, 155.25, 174.89, 193.01, 0]
line [9.09, 85.06, 103.86, 112.41, 130.43, 145.09, 171.42, 157.79, 192.74, 171.82, 185.56, 179.57, 176.58, 170.95, 152.41, 147.97, 179.08, 150.04, 165.18, 265.16, 227.77, 215.22, 157.61, 156.83, 169.04, 141.86, 140.08, 139.63, 147.33, 189.17, 177.58, 149.55, 167.62, 185.78, 160.75, 155.17, 151.63, 171.22, 189.48, 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.003341%Package and image size
Startup latency and PSS
Concurrency matrix
Frontend differential — ✅ 1,020/1,020 cases matched; 0 issues; 2 Chromium reference recoveries
Recovered Chromium reference infrastructure failures
Agent episodes · Moli vs Chromium — ✅ 8/8 Moli episodes passed; 0 failures
Runtime and CDP session contracts — ✅ 26 contract cases; 0 failures
CDP smoke — ✅ 50/50 groups passed; 574 scenariosWorkers: 4 · cumulative group time: 156.95 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. |
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. |
19f651f to
7649f13
Compare
7c4f06a to
b2e8f4c
Compare
7649f13 to
6185ba5
Compare
b2e8f4c to
b81655b
Compare
008b31d to
2009cd7
Compare
b81655b to
5f9803a
Compare
读取不存在的表单命名属性会反复全量扫描控件;简单缓存最终答案则会在改名、移除、表单归属变化或跨文档收养后过期。本 PR 使用文档实时名称索引筛选候选,再检查当前归属,避免全扫描而保持实时语义。
一图看懂
图示说明问题、修复机制与行为边界;点击可查看原图。验收归属不等于当前提交通过结果,版本和测试证据见下文。
机制与边界
不缓存可能失效的最终查询答案。读取真实标准属性不应枚举虚拟名称或意外执行 getter;重复名称、枚举和 descriptor 必须保持原有语义。detached/adopted 文档与控件身份仍按实际 DOM 归属处理。
代码阅读路线
moli-dom/src/native/host/query_index.rs、document.rs:名称索引与更新生命周期。element/forms/form_element.rs、forms、template_install/accessors_forms:候选查询、归属过滤及真实/虚拟属性边界。script_vm/tests/dom_xhr/forms/named_lookup.rs与 forms tests:实时语义和避免扫描的正反对照。验收场景
性能测试使用扫描计数正反对照,语义测试独立检查 DOM 行为;不能只断言缓存命中或依赖运行耗时。此 PR 不认领历史 35 题,历史专项证据见 原 PR #739 与报告。
已合入;最后 head
5f9803a1cf3934a662850f77b577a0ec0f74c380,base main,最终提交门禁见 Checks。旧报告中的 #755 直接分支依赖是历史状态,工程前提已进入 main。Reviewer 重点
索引是否覆盖每种实际名称/归属变化?命中后是否仍验证归属?查询成本下降是否以真实属性、实时查询或跨文档语义回退为代价?
整组验收与证据入口
这组修复来自 #640,对应 1.1.9 的 34 个失败 case,加上 1.1.8 已失败的 386,共 35 个唯一 case。按最终职责分配为:#756 布局 27、#757 输入 4、#758 网络 3、#761 文本 1;#755、#759、#760 以各自独立功能契约验收,不重复认领这 35 个 case。