Skip to content

fix(forms): resolve live named properties without repeated scans - #739

Merged
lanyue-llk merged 1 commit into
mainfrom
codex/pr640-forms-final
Sep 22, 2026
Merged

lanyue-llk merged 1 commit into
mainfrom
codex/pr640-forms-final

Conversation

@lanyue-llk

@lanyue-llk lanyue-llk commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

查询不存在的表单命名属性时反复扫描控件,会产生不必要成本;优化不能破坏节点改名、表单归属变化或跨文档收养后的即时查询语义。

Reviewer 图解入口

artifact-site:七个 PR 的职责、依赖、原 11 类与 35 题证据。建议审查顺序:734 → 735 → 736 → 737 → 738 → 739 → 740;实际依赖以指南中的有向图为准。

图解与验收证据见站点报告;精确 HEAD 与完整成功、失败记录见下文。

当前 HEAD 4e85980f809e229e68be6e51f8acc097087001df 已基于 main@a54ba82a7ac6462429d2f60cd0dbd0d67c589e84 或其直接父 PR 重放;7919ed092465 的真实任务/专项证据和新提交的补丁等价边界分别核对。旧测试结果只对应归档二进制;当前 HEAD 由本 PR 的 CI 单独验证。

修复机制

使用文档的实时名称索引筛选候选,避免读取真实属性时枚举虚拟名称;命中后仍验证归属,不缓存可能过期的最终答案。保持 detached/adopted 文档与控件身份语义。

机制示意与验收证据见 artifact-site 审查报告;图片仅用于解释机制,不代表本 PR 的验收结果。

对应验收

本分区采用独立功能契约验收。

回归覆盖:missing/present 属性、getter 不被意外执行、in/descriptor/枚举、重复名称、自定义元素升级及 detached/adopted 文档;使用计数器正反对照验证避免扫描。

表单命名查询通过独立语义和性能契约验收,不认领 35 题中的其他功能。保留 detached/adopted 查询和避免重复扫描的正反对照,由当前 HEAD 的门禁重新验证。

当前版本 标识与验证范围
HEAD 4e85980f809e229e68be6e51f8acc097087001df
直接基线 746e376f0179988d0aa6250cb055aee2baaebb4f
main 基线 a54ba82a7ac6462429d2f60cd0dbd0d67c589e84
当前版本门禁 以该 HEAD 的 Format、Clippy、Nextest 结果为准;历史结果不替代当前门禁

范围与依赖

以工程 PR #734 为直接基线;diff 展示本分区修改。

本 PR 替代 732,基于更新后的 main;旧 PR 保留讨论与 review 历史。原始 #640 也保留作为拆分来源。

整组功能范围为历史 1.1.9 的 34 个失败任务加 1.1.8 已失败的 386,共 35 题:布局 27、输入 4、网络 3、文本 1。历史 67 是传输超时,保留证据但不归因本组功能修复。逐 case 历史及当前归属;历史 11 类分组。历史 main@de109 的 90 题基线 为 55/90,其运行顺序与后续子集不同,结果差异本身不作为独立因果证明。

7 个 PR 的依赖及逐题验收索引、PR 与提交账号核验。

35 题最终逐项来源总表;布局是 v3 的 26 题加 v4 单独 547,不是单轮 27/27。

@github-actions

Copy link
Copy Markdown

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 2e9c28529fb4 → HEAD 7919ed092465; benchmark order: base-first; workflow: success.

Public 48-site run · informational

Metric Base HEAD Δ
Run status success success —
Extracted rows / contract 179 / 240 184 / 240 +5 (+2.79%)
Contract fill 74.58% 76.67% +2.09 pp (+2.80%)
Sites with rows 37 / 48 38 / 48 +1 (+2.70%)
Sites meeting row contract 35 / 48 36 / 48 +1 (+2.86%)
Unexpected empty sites 11 10 -1 (-9.09%)
Partial-row sites 2 2 0 (0.00%)
Site outcomes extracted: 35; HTTP error + rows: 2; empty: 7; HTTP error + empty: 1; navigation error + empty: 1; snapshot error + empty: 2 extracted: 37; HTTP error + rows: 1; empty: 7; HTTP error + empty: 1; snapshot error + empty: 2 —
Observed duration 80.94 s 75.74 s -5.20 s (-6.43%)
Estimated CPU 57.80 s 57.02 s -0.78 s (-1.34%)
Peak PSS 264.63 MiB 265.16 MiB +0.54 MiB (+0.20%)
Peak RSS 268.27 MiB 268.83 MiB +0.56 MiB (+0.21%)
Peak threads 25 26 +1 (+4.00%)
Mismatched sites 0 0 0
Timeout with items 0 0 0
Category rows Base HEAD Δ
news 35 / 40 35 / 40 0
stocks 20 / 40 20 / 40 0
tech 35 / 40 35 / 40 0
sports 27 / 40 27 / 40 0
games 32 / 40 37 / 40 +5
life 30 / 40 30 / 40 0

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 timelines

These 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.

Base

xychart-beta
    title "Base CPU"
    x-axis "Elapsed seconds" [2.037, 2.538, 4.541, 7.043, 9.046, 11.548, 13.549, 16.052, 18.053, 20.557, 22.56, 25.062, 25.562, 27.065, 29.568, 31.572, 34.075, 36.077, 38.58, 40.583, 43.086, 45.089, 47.592, 49.595, 52.098, 54.102, 56.604, 58.607, 61.111, 63.113, 65.614, 67.617, 70.119, 72.122, 74.625, 76.629, 79.132, 79.634]
    y-axis "CPU percent" 0 --> 500
    line [123.92, 127.81, 97.82, 177.89, 69.84, 139.87, 77.91, 0, 89.98, 51.88, 61.93, 123.92, 97.91, 139.95, 137.6, 161.84, 31.98, 81.95, 43.88, 143.86, 93.92, 2, 25.97, 23.96, 0, 0, 19.94, 21.99, 0, 0, 19.95, 23.98, 77.93, 51.98, 143.85, 99.9, 131.75, 209.41]
Loading
xychart-beta
    title "Base memory: RSS then PSS"
    x-axis "Elapsed seconds" [0.035, 2.037, 2.538, 4.541, 7.043, 9.046, 11.548, 13.549, 16.052, 18.053, 20.557, 22.56, 25.062, 25.562, 27.065, 29.568, 31.572, 34.075, 36.077, 38.58, 40.583, 43.086, 45.089, 47.592, 49.595, 52.098, 54.102, 56.604, 58.607, 61.111, 63.113, 65.614, 67.617, 70.119, 72.122, 74.625, 76.629, 79.132, 79.634, 80.943]
    y-axis "Memory MiB" 0 --> 500
    line [12.23, 120.35, 112.86, 135, 166.81, 155.51, 161.56, 170.92, 171.75, 151.75, 142.34, 146.18, 209.88, 268.27, 205.74, 178.89, 169.07, 152.89, 151.59, 146.07, 244.29, 251.89, 248.15, 247.84, 247.8, 247.81, 247.84, 247.83, 247.84, 246.79, 246.78, 246.61, 246.66, 161.43, 158.43, 150.14, 151.59, 170.26, 200.12, 0]
    line [8.94, 116.61, 109.22, 131.43, 163.18, 152.09, 156.36, 167.27, 168.07, 148.07, 138.66, 142.5, 206.25, 264.63, 202.06, 174.94, 165.38, 149.21, 147.98, 142.38, 240.6, 248.07, 244.47, 244.16, 244.13, 244.13, 244.17, 244.16, 244.16, 243.11, 243.11, 242.93, 242.98, 157.76, 154.62, 146.46, 147.92, 166.59, 196.55, 0]
Loading

HEAD

xychart-beta
    title "HEAD CPU"
    x-axis "Elapsed seconds" [2.037, 4.04, 6.541, 8.542, 10.544, 12.546, 15.051, 17.051, 19.055, 21.056, 22.056, 23.058, 25.561, 27.062, 27.563, 29.565, 31.568, 34.07, 36.073, 38.075, 40.077, 42.078, 44.582, 46.586, 48.587, 50.59, 53.093, 55.095, 57.097, 59.1, 61.102, 63.604, 65.607, 67.608, 69.61, 72.113, 74.116, 75.117]
    y-axis "CPU percent" 0 --> 500
    line [113.92, 151.79, 139.74, 82.04, 117.95, 135.95, 125.7, 26, 107.78, 44, 0, 87.8, 107.7, 109.87, 103.87, 102.04, 47.94, 133.88, 57.87, 81.9, 27.98, 114.01, 19.96, 39.9, 23.99, 19.98, 2, 2, 0, 2, 0, 23.99, 41.95, 91.93, 131.9, 99.9, 123.75, 203.8]
Loading
xychart-beta
    title "HEAD memory: RSS then PSS"
    x-axis "Elapsed seconds" [0.035, 2.037, 4.04, 6.541, 8.542, 10.544, 12.546, 15.051, 17.051, 19.055, 21.056, 22.056, 23.058, 25.561, 27.062, 27.563, 29.565, 31.568, 34.07, 36.073, 38.075, 40.077, 42.078, 44.582, 46.586, 48.587, 50.59, 53.093, 55.095, 57.097, 59.1, 61.102, 63.604, 65.607, 67.608, 69.61, 72.113, 74.116, 75.117, 75.74]
    y-axis "Memory MiB" 0 --> 500
    line [12.2, 116.34, 132.73, 168.47, 160.2, 161.07, 179.14, 170.49, 146.24, 156.2, 140.97, 141.43, 141.5, 158.08, 268.83, 230.95, 215.64, 160.5, 162.37, 145.25, 151.64, 157.79, 255.38, 238.47, 247.21, 248.73, 247.63, 248.84, 247.93, 247.94, 247.96, 246.89, 246.79, 171.57, 169.86, 149.21, 146.69, 158.06, 190.29, 0]
    line [9, 112.76, 129.08, 164.84, 156.52, 157.74, 175.46, 166.82, 142.56, 152.34, 137.48, 137.74, 137.81, 154.4, 265.16, 226.82, 211.97, 156.82, 158.71, 141.59, 147.97, 154.12, 251.04, 234.96, 243.7, 245.22, 244.19, 245.4, 244.5, 244.5, 244.52, 243.45, 243.35, 168.14, 166.42, 145.78, 143.25, 154.86, 186.96, 0]
Loading

Deterministic fixture · required contract

The fixture exercises 15 routes: 8 are expected to emit rows and 7 intentionally exercise empty, loading, or timeout behavior.

Metric Base HEAD Δ
Run status success success —
Extracted rows / contract 40 / 40 40 / 40 0 (0.00%)
Contract fill 100.00% 100.00% 0.00 pp (0.00%)
Sites with rows 8 / 15 8 / 15 0 (0.00%)
Sites meeting row contract 15 / 15 15 / 15 0 (0.00%)
Unexpected empty sites 0 0 0
Partial-row sites 0 0 0
Site outcomes extracted: 7; HTTP error + rows: 1; empty: 3; timeout + empty: 4 extracted: 7; HTTP error + rows: 1; empty: 3; timeout + empty: 4 —
Observed duration 19.89 s 19.90 s +0.00 s (0.00%)
Estimated CPU 0.42 s 0.42 s 0.00 s (0.00%)
Peak PSS 57.36 MiB 57.24 MiB -0.12 MiB (-0.21%)
Peak RSS 60.88 MiB 60.87 MiB -0.01 MiB (-0.02%)
Peak threads 18 18 0 (0.00%)
Mismatched sites 0 0 0
Timeout with items 0 0 0

Full HTML, JSON, CSV, logs, and page snapshots: workflow run and full spider-bench-results artifact.

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.

@github-actions

github-actions Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

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 Page.navigate commands per binary.

Common ancestor 2e9c28529f → HEAD 7919ed0924; benchmark order: base-first; workflow: success.

Session resilience

Metric Base HEAD
Attempted / planned 200 / 200 200 / 200
Direct observable pass 200 / 200 200 / 200
Failures / recovered 0 / 0 0 / 0
Recovery failures 0 0
Lifecycle order violations 0 0
Network order violations 0 0
Wall time 316.7 s 323.7 s

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

Metric Base HEAD Δ
Boundary samples 200 200 0
Boundary RSS samples 200 200 0
Boundary PSS samples 200 200 0
Periodic peak RSS 238.7 MiB 238.2 MiB -0.4 MiB
Periodic peak PSS 236.5 MiB 235.3 MiB -1.2 MiB
RSS · first 10 avg 167.2 MiB 167.0 MiB -0.2 MiB
RSS · last 10 avg 132.8 MiB 169.1 MiB +36.4 MiB
RSS · last − first window -34.4 MiB +2.2 MiB +36.6 MiB
RSS · warm slope / 100 nav -26.9 MiB +1.3 MiB +28.3 MiB
PSS · first 10 avg 164.9 MiB 163.1 MiB -1.8 MiB
PSS · last 10 avg 131.2 MiB 166.2 MiB +35.0 MiB
PSS · last − first window -33.7 MiB +3.1 MiB +36.8 MiB
PSS · warm slope / 100 nav -26.4 MiB +1.8 MiB +28.2 MiB
Peak file descriptors 63 62 -1
Peak threads 31 31 0

HEAD memory by 50-navigation quarter

HEAD range Avg RSS Final RSS Peak RSS Avg PSS Final PSS Peak FD
1–50 166.7 MiB 151.7 MiB 228.1 MiB 163.2 MiB 148.7 MiB 54
51–100 166.3 MiB 134.5 MiB 212.6 MiB 163.4 MiB 131.7 MiB 52
101–150 169.7 MiB 154.2 MiB 237.2 MiB 167.0 MiB 152.2 MiB 55
151–200 168.7 MiB 143.7 MiB 218.5 MiB 166.1 MiB 141.0 MiB 54

Raw reports and per-navigation boundary samples: workflow run and full sequential-navigation-soak-results artifact.

Public-site timing and memory are observational. Use the A/B deltas and trend shape as evidence, not as a deterministic performance threshold.

@github-actions

github-actions Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

CI Regression Report

Source CI run · source state at render: in_progress · artifacts: 5/5

Check Status Signal
Release regression ✅ HEAD/base failures 0/0; raw binary +0.000240%
Frontend differential ✅ 1,020/1,020 cases matched; 0 issues
Agent episodes ✅ 8/8 Moli episodes passed; 0 failures
Runtime/CDP contracts ✅ 26 contract cases; 0 failures
CDP smoke ✅ 48/48 groups passed; 535 scenarios
Release regression — ✅ HEAD/base failures 0/0; raw binary +0.000240%

Package and image size

Metric Base HEAD Delta Delta %
Raw binary 146.36 MiB 146.36 MiB +368 B +0.000240%
Stripped binary 100.45 MiB 100.45 MiB 0 B 0.00%
gzip binary 50.09 MiB 50.09 MiB +872 B +0.001660%
Rootfs 153.26 MiB 153.26 MiB 0 B 0.00%
gzip rootfs 58.86 MiB 58.86 MiB +198 B +0.000321%

Startup latency and PSS

Case Base p50 HEAD p50 Delta Base PSS HEAD PSS Delta
Serve ready 27.64 ms 3.24 ms −24.39 ms 4.34 MiB 8.83 MiB +4.49 MiB
CDP first page 53.03 ms 55.86 ms +2.83 ms 4.45 MiB 8.28 MiB +3.83 MiB
CDP warm page 14.14 ms 21.91 ms +7.78 ms 48.23 MiB 48.58 MiB +361.50 KiB
CLI about:blank 14.65 ms 22.20 ms +7.55 ms 3.80 MiB 2.63 MiB −1.18 MiB
CLI local JS 20.12 ms 18.35 ms −1.77 ms 3.92 MiB 4.11 MiB +187.00 KiB

Concurrency matrix

Concurrency Base p50 HEAD p50 Delta Base PSS HEAD PSS Delta HEAD failures Unstable B/H
1 16.70 ms 16.65 ms −0.05 ms 578.00 KiB 561.00 KiB −17.00 KiB 0 0/0
5 19.30 ms 20.27 ms +0.97 ms 21.65 MiB 13.54 MiB −8.11 MiB 0 0/0
10 19.38 ms 21.30 ms +1.91 ms 26.71 MiB 12.58 MiB −14.13 MiB 0 0/0
25 19.35 ms 20.07 ms +0.72 ms 17.62 MiB 17.97 MiB +356.00 KiB 0 0/0
100 21.51 ms 19.43 ms −2.08 ms 21.27 MiB 26.41 MiB +5.14 MiB 0 0/0
Frontend differential — ✅ 1,020/1,020 cases matched; 0 issues
Match DOM mismatch Diagnostic mismatch Moli error Reference error Infrastructure error Mismatched frames Duration
1,020 0 0 0 0 0 0 6m 35.81s
Agent episodes · Moli vs Chromium — ✅ 8/8 Moli episodes passed; 0 failures
Fast contract Episodes Passed Assertions Ready p50 Episode p50
Moli 8 8 47/47 3.06 ms 25.27 ms
Chromium 8 8 47/47 257.56 ms 98.74 ms
Operation p50 Chromium Moli Delta Delta %
navigate 48.81 ms 6.73 ms −42.07 ms −86.20%
observe 1.01 ms 0.86 ms −0.15 ms −14.82%
fill 4.37 ms 2.94 ms −1.43 ms −32.77%
click 6.68 ms 3.61 ms −3.07 ms −45.93%
Idle-resource episode Peak RSS Peak PSS Average CPU Peak CPU Peak processes Sampler
Moli 60.34 MiB 58.67 MiB 0.69% 12.00% 1 ✅
Chromium 1267.27 MiB 406.26 MiB 2.06% 93.63% 13 ⚠️ PSS partial
Runtime and CDP session contracts — ✅ 26 contract cases; 0 failures
Suite Cases Failures Median case p50 Median case p95 Median peak PSS p50
Synthetic fetch 13 0 15.98 ms 16.77 ms 750.00 KiB
Long-lived CDP session 13 0 18.91 ms 19.23 ms —
CDP smoke — ✅ 48/48 groups passed; 535 scenarios

Workers: 4 · cumulative group time: 146.43 s · failed groups: 0

Slowest group Scenarios Duration Status
target-lifecycle 24 16.55 s ✅
multi-page 45 11.45 s ✅
chromium-cdp 56 10.98 s ✅
dom-input 27 10.77 s ✅
layout-screenshot 5 7.66 s ✅

All artifact fields are parsed by the trusted default-branch renderer; missing or invalid inputs remain visible as unavailable.

@lanyue-llk
lanyue-llk force-pushed the codex/pr640-reliability-final branch from 2e9c285 to 746e376 Compare September 22, 2026 09:49
@lanyue-llk
lanyue-llk force-pushed the codex/pr640-forms-final branch from 7919ed0 to 4e85980 Compare September 22, 2026 09:57
@lanyue-llk
lanyue-llk force-pushed the codex/pr640-forms-final branch from 4e85980 to 9d5c490 Compare September 22, 2026 11:47
@lanyue-llk
lanyue-llk changed the base branch from codex/pr640-reliability-final to main September 22, 2026 11:47
@lanyue-llk
lanyue-llk merged commit e979f50 into main Sep 22, 2026
4 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant