Skip to content

fix(network): report wire requests and retain response evidence - #737

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

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

Conversation

@lanyue-llk

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

Copy link
Copy Markdown
Contributor

请求已成功发出,但协议记录缺少实际 Referer 等请求头,导致网络验收无法观察真实行为;重定向和页面切换也可能让请求元数据或响应证据失真。

Reviewer 图解入口

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

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

当前 HEAD 15faebd1683b94fb4aa646f3ffe695a2bb45a44b 已基于 main@a54ba82a7ac6462429d2f60cd0dbd0d67c589e84 或其直接父 PR 重放;db091f6976d3 的真实任务/专项证据和新提交的补丁等价边界分别核对。当前 HEAD 的对应真实任务已在独立新环境完整单轮 3/3 通过、零重试;归档旧轮结果与本轮严格区分。动作、评分、合同、二进制和产物哈希审计见 artifact-site 报告。

修复机制

从实际传输结果生成协议观察记录;共享重定向方法与请求体规则。响应体通过有界所有者统一维护存储和索引,按会话启用状态、单条/总量预算及导航生命周期决定可见性和保留。

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

对应验收

本分区负责 3 题:339、595、676。

回归覆盖:逐跳重定向方法和请求体、实际请求头、导航保留、会话隔离、禁用与撤销、空/超限正文,以及替换/删除/淘汰后的索引一致性。

真实 HTTP POST→302→307→200 场景以服务端方法/正文及 CDP ExtraInfo 为独立判据。Chromium 153 与历史网络 HEAD ad2d10832ef45ca1b9cd3f817d3222eaa5d26a17 通过;比较版本 de1093d9c1ab23a0bf9b1c7d0ee99141c2eee134 两次重定向错误报告 POST。重定向对照与判据。普通请求事件的 Referer 不等同于线上请求头,因此不将二者相等作为断言;逐跳方法/正文及 ExtraInfo 与服务端一致的断言保留。该比较版本不是当前 PR 的精确基线。

595 在布局版本 48d78ac639a3d5e1738342a6876225f9988cefe3 中交互完成、订阅成功,但缺少网络记录 Referer 而未通过评分;本 PR 依赖布局并承担其最终验收。595 依赖证据。

当前版本 标识与验证范围
HEAD 15faebd1683b94fb4aa646f3ffe695a2bb45a44b
直接基线 62c07ae866e8ce5dbc0c78c23ee2dc493d7fa393
main 基线 a54ba82a7ac6462429d2f60cd0dbd0d67c589e84
当前 HEAD 真实任务 3/3 完整单轮通过,零重试;提交 15faebd1683b94fb4aa646f3ffe695a2bb45a44b,二进制 SHA-256 cfc0ee7241ff91ea327456d3fde33fd72df9cdb090e1373b477c4d7f2b92d1ee;逐题审计与历史对照
当前版本门禁 以该 HEAD 的 Format、Clippy、Nextest 结果为准;历史结果不替代当前门禁
已测归档版本真实任务 原合同 2/3 通过:339、595 通过,676 在第 2 步未找到尚未初始化的筛选控件;原失败与产物保持

范围与依赖

以布局 PR #735 为直接基线,并间接依赖工程 PR https://github.com/lexmount/moli/pull/734;diff 展示本分区修改。595 的交互步骤需要布局修复,网络记录负责最终订阅请求验收。

本 PR 替代 728,基于更新后的 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 与提交账号核验。

已测归档 HEAD db091f6976d3742a669b64c85360d4dfd3e41ca6 的 release 二进制已通过真实 HTTP POST→302→307→200 对照:服务端 POST/GET/GET、请求体,以及 CDP 元数据和每跳 ExtraInfo 与固定判据一致。最终版本 wire 验证。

已测归档版本三题原始结果。676 的失败发生于异步筛选 UI 初始化前;Chrome 与已测归档网络二进制均在 load 时没有 Filters,随后模板与数据请求均完成,控件出现。双浏览器根因与时间线。既有 readiness 声明将用于单独合同的只读功能前提验证,原动作、评分与失败记录不改。

七分区组合的文本正文、显式停止与普通解析器退出三个交互场景首次执行 3/3 通过;该证据不替代本 PR 的任务结果。组合验证范围与哈希。

676 就绪前提的后续三题完整运行仍为 2/3:339、676 通过,595 因 Postmill 脚本初始化竞态失败。独立审计。原轮与此轮不拼接为全通过;该中间轮保留;最终声明合同另见下文。

显式就绪合同 v2 的完整三题现已 3/3 通过(339、595、676),每题在该合同中执行一次、无重试;原 runner、动作、评分及二进制不变。该已测归档 HEAD 的 18 项 CI 检查全部通过。完整验收说明 · 逐题动作与产物哈希。

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

@github-actions

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 b0f237b095 → HEAD db091f6976; 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 323.6 s 337.1 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 241.6 MiB 239.6 MiB -1.9 MiB
Periodic peak PSS 238.3 MiB 236.3 MiB -2.0 MiB
RSS · first 10 avg 171.1 MiB 168.6 MiB -2.4 MiB
RSS · last 10 avg 166.5 MiB 168.3 MiB +1.7 MiB
RSS · last − first window -4.5 MiB -0.4 MiB +4.2 MiB
RSS · warm slope / 100 nav +0.9 MiB +1.8 MiB +0.9 MiB
PSS · first 10 avg 168.3 MiB 165.4 MiB -2.9 MiB
PSS · last 10 avg 163.2 MiB 164.6 MiB +1.3 MiB
PSS · last − first window -5.0 MiB -0.8 MiB +4.3 MiB
PSS · warm slope / 100 nav +0.6 MiB +1.5 MiB +1.0 MiB
Peak file descriptors 64 63 -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 167.9 MiB 151.8 MiB 229.4 MiB 164.5 MiB 148.4 MiB 51
51–100 168.0 MiB 146.8 MiB 214.1 MiB 164.7 MiB 143.4 MiB 52
101–150 171.8 MiB 157.2 MiB 224.4 MiB 168.3 MiB 153.6 MiB 55
151–200 170.2 MiB 140.9 MiB 216.3 MiB 166.6 MiB 137.3 MiB 53

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

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.035068%
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.035068%

Package and image size

Metric Base HEAD Delta Delta %
Raw binary 146.38 MiB 146.43 MiB +52.56 KiB +0.035068%
Stripped binary 100.46 MiB 100.51 MiB +48.00 KiB +0.046658%
gzip binary 50.10 MiB 50.13 MiB +23.01 KiB +0.044857%
Rootfs 153.28 MiB 153.33 MiB +50.00 KiB +0.031855%
gzip rootfs 58.88 MiB 58.90 MiB +22.90 KiB +0.037982%

Startup latency and PSS

Case Base p50 HEAD p50 Delta Base PSS HEAD PSS Delta
Serve ready 27.21 ms 27.11 ms −0.10 ms 4.05 MiB 4.72 MiB +689.00 KiB
CDP first page 50.71 ms 49.23 ms −1.47 ms 4.16 MiB 2.62 MiB −1.54 MiB
CDP warm page 12.94 ms 12.31 ms −0.62 ms 48.94 MiB 48.98 MiB +41.00 KiB
CLI about:blank 14.45 ms 13.07 ms −1.38 ms 3.93 MiB 3.48 MiB −467.00 KiB
CLI local JS 17.20 ms 20.32 ms +3.12 ms 2.84 MiB 2.58 MiB −274.00 KiB

Concurrency matrix

Concurrency Base p50 HEAD p50 Delta Base PSS HEAD PSS Delta HEAD failures Unstable B/H
1 17.44 ms 18.22 ms +0.78 ms 623.00 KiB 623.00 KiB 0 B 0 0/0
5 21.74 ms 22.15 ms +0.41 ms 12.78 MiB 22.11 MiB +9.32 MiB 0 0/0
10 21.09 ms 20.67 ms −0.42 ms 12.73 MiB 16.32 MiB +3.60 MiB 0 0/0
25 20.96 ms 20.99 ms +0.04 ms 20.80 MiB 25.88 MiB +5.08 MiB 0 0/0
100 20.50 ms 20.13 ms −0.37 ms 17.70 MiB 22.11 MiB +4.41 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 7m 45.27s
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 4.10 ms 25.61 ms
Chromium 8 8 47/47 318.09 ms 82.77 ms
Operation p50 Chromium Moli Delta Delta %
navigate 45.46 ms 6.88 ms −38.57 ms −84.86%
observe 0.75 ms 0.84 ms +0.10 ms +13.08%
fill 3.49 ms 3.16 ms −0.33 ms −9.38%
click 5.22 ms 3.56 ms −1.65 ms −31.69%
Idle-resource episode Peak RSS Peak PSS Average CPU Peak CPU Peak processes Sampler
Moli 63.80 MiB 61.25 MiB 0.69% 8.01% 1 ✅
Chromium 1284.61 MiB 414.66 MiB 2.40% 84.30% 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 24.27 ms 31.78 ms 469.00 KiB
Long-lived CDP session 13 0 21.16 ms 23.00 ms —
CDP smoke — ✅ 48/48 groups passed; 535 scenarios

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

Slowest group Scenarios Duration Status
target-lifecycle 24 17.21 s ✅
multi-page 45 11.93 s ✅
chromium-cdp 56 11.01 s ✅
dom-input 27 10.83 s ✅
layout-screenshot 5 7.56 s ✅

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

@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 b0f237b09557 → HEAD db091f6976d3; benchmark order: base-first; workflow: success.

Public 48-site run · informational

Metric Base HEAD Δ
Run status success success —
Extracted rows / contract 184 / 240 184 / 240 0 (0.00%)
Contract fill 76.67% 76.67% 0.00 pp (0.00%)
Sites with rows 38 / 48 38 / 48 0 (0.00%)
Sites meeting row contract 36 / 48 36 / 48 0 (0.00%)
Unexpected empty sites 10 10 0 (0.00%)
Partial-row sites 2 2 0 (0.00%)
Site outcomes extracted: 36; HTTP error + rows: 2; empty: 7; HTTP error + empty: 1; snapshot error + empty: 2 extracted: 37; HTTP error + rows: 1; empty: 8; HTTP error + empty: 1; snapshot error + empty: 1 —
Observed duration 68.40 s 72.16 s +3.76 s (+5.49%)
Estimated CPU 57.56 s 60.33 s +2.77 s (+4.81%)
Peak PSS 266.19 MiB 256.63 MiB -9.56 MiB (-3.59%)
Peak RSS 269.17 MiB 260.05 MiB -9.13 MiB (-3.39%)
Peak threads 27 26 -1 (-3.70%)
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 37 / 40 37 / 40 0
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.042, 3.544, 4.044, 5.546, 7.549, 9.552, 11.555, 13.557, 15.058, 16.06, 17.061, 19.063, 21.065, 23.066, 24.567, 26.569, 28.072, 28.572, 30.575, 32.577, 34.578, 36.079, 38.081, 40.084, 42.087, 44.089, 45.592, 47.595, 49.598, 51.6, 53.603, 55.105, 57.108, 59.111, 61.113, 63.115, 64.617, 66.621]
    y-axis "CPU percent" 0 --> 500
    line [109.86, 125.96, 117.83, 199.9, 131.82, 171.55, 135.6, 111.9, 103.82, 0, 10, 119.78, 42, 3.99, 143.99, 111.89, 105.89, 105.86, 101.87, 53.95, 115.99, 37.96, 101.96, 25.93, 122, 19.95, 109.72, 41.89, 19.99, 19.95, 18, 0, 91.84, 13.98, 139.87, 73.93, 97.91, 121.67]
Loading
xychart-beta
    title "Base memory: RSS then PSS"
    x-axis "Elapsed seconds" [0.041, 2.042, 3.544, 4.044, 5.546, 7.549, 9.552, 11.555, 13.557, 15.058, 16.06, 17.061, 19.063, 21.065, 23.066, 24.567, 26.569, 28.072, 28.572, 30.575, 32.577, 34.578, 36.079, 38.081, 40.084, 42.087, 44.089, 45.592, 47.595, 49.598, 51.6, 53.603, 55.105, 57.108, 59.111, 61.113, 63.115, 64.617, 66.621, 68.4]
    y-axis "Memory MiB" 0 --> 500
    line [12.37, 110.87, 135.41, 137.07, 155.13, 170.24, 181.07, 157.82, 162.41, 166.08, 155.4, 134.95, 138.21, 143.96, 134.23, 170.22, 164.84, 269.17, 235.63, 214.28, 161.74, 177.18, 145.27, 151.82, 148.13, 247.36, 236.58, 243.72, 244.46, 242.25, 242.26, 242.27, 242.25, 170.09, 144.66, 173.27, 147.55, 149.98, 176.96, 0]
    line [9.59, 107.54, 131.88, 133.95, 151.84, 167.47, 178.06, 154.68, 159.23, 162.33, 152.4, 131.86, 135.08, 140.97, 131.24, 167.23, 161.19, 266.19, 232.19, 211.3, 158.75, 174.44, 142.28, 148.83, 145.93, 244.94, 233.38, 240.44, 241.36, 239.07, 239.08, 239.09, 239.13, 167.1, 141.53, 170.23, 144.23, 146.71, 173.73, 0]
Loading

HEAD

xychart-beta
    title "HEAD CPU"
    x-axis "Elapsed seconds" [2.047, 4.055, 6.059, 8.062, 10.063, 12.068, 14.07, 16.073, 18.075, 20.077, 22.08, 24.084, 26.518, 28.52, 29.021, 30.523, 32.527, 34.531, 36.628, 37.629, 38.13, 40.132, 42.135, 44.136, 46.138, 46.638, 48.139, 50.141, 52.144, 54.146, 56.15, 58.151, 60.155, 62.156, 64.157, 66.16, 68.162, 70.165]
    y-axis "CPU percent" 0 --> 200
    line [113.77, 129.45, 157.67, 105.92, 93.84, 115.06, 129.91, 129.81, 93.95, 75.85, 45.99, 63.9, 76.57, 101.83, 103.84, 109.69, 125.57, 117.81, 99.89, 184.02, 51.93, 113.92, 9.98, 147.91, 25.98, 0, 25.98, 51.88, 23.99, 22, 23.94, 25.99, 23.99, 75.93, 123.95, 149.83, 99.92, 133.93]
Loading
xychart-beta
    title "HEAD memory: RSS then PSS"
    x-axis "Elapsed seconds" [0.043, 2.047, 4.055, 6.059, 8.062, 10.063, 12.068, 14.07, 16.073, 18.075, 20.077, 22.08, 24.084, 26.518, 28.52, 29.021, 30.523, 32.527, 34.531, 36.628, 37.629, 38.13, 40.132, 42.135, 44.136, 46.138, 46.638, 48.139, 50.141, 52.144, 54.146, 56.15, 58.151, 60.155, 62.156, 64.157, 66.16, 68.162, 70.165, 72.157]
    y-axis "Memory MiB" 0 --> 500
    line [12.27, 111.67, 131.47, 137.93, 158.43, 158.82, 162.63, 170.41, 177.21, 163.4, 145.88, 135.2, 141.62, 153.42, 210.31, 260.05, 182.49, 166.05, 160.93, 175.2, 160.8, 147.3, 148.16, 139.91, 242.23, 232.4, 232.37, 238, 238.55, 237.45, 237.44, 237.47, 236.5, 236.43, 172.05, 148.4, 142.12, 148.55, 159.83, 0]
    line [9.14, 108.27, 128.04, 134.46, 154.99, 155.43, 159.12, 167.54, 172.91, 159.96, 142.43, 131.77, 138.19, 150.2, 206.9, 256.63, 179.15, 162.96, 157.6, 171.86, 157.46, 144.13, 144.83, 136.63, 238.92, 229.16, 229.13, 234.76, 235.31, 234.21, 234.2, 234.23, 233.26, 233.21, 168.83, 145.17, 138.9, 145.34, 156.63, 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.88 s 19.90 s +0.03 s (+0.14%)
Estimated CPU 0.41 s 0.45 s +0.04 s (+9.73%)
Peak PSS 58.07 MiB 57.87 MiB -0.20 MiB (-0.34%)
Peak RSS 61.54 MiB 61.35 MiB -0.19 MiB (-0.30%)
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.

@lanyue-llk
lanyue-llk force-pushed the codex/pr640-layout-final branch from b0f237b to 62c07ae Compare September 22, 2026 09:52
@lanyue-llk
lanyue-llk force-pushed the codex/pr640-network-final branch from db091f6 to 15faebd Compare September 22, 2026 09:54
@lanyue-llk
lanyue-llk force-pushed the codex/pr640-layout-final branch from 62c07ae to 058c3b5 Compare September 22, 2026 11:42
@lanyue-llk
lanyue-llk force-pushed the codex/pr640-network-final branch from 15faebd to 7a3a798 Compare September 22, 2026 11:44
@lanyue-llk
lanyue-llk changed the base branch from codex/pr640-layout-final to main September 22, 2026 11:44
@lanyue-llk
lanyue-llk merged commit 1be735d into main Sep 22, 2026
2 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