text37.txt 一、接续说明 执行时间:2026-06-20 CST 本文件对应 `text36.txt` 的第一阶段执行结果: ```text 把 real_simulation_page_smoke.html 中剩余重复断言先扫出来,形成清单; 本轮不继续抽 helper,不改 runtime,不改 smoke 逻辑。 ``` 扫描范围: ```text wasm-port/tests/browser/real_simulation_page_smoke.html 只看 blocked / saved ready / restored ready 三段 handoff 相关断言 ``` 二、扫描结论总览 当前 `summary / operator snapshot / action plan / compact status / preflight / history` 这一批兼容入口,已经基本完成从三态大 if 向 helper 的迁移。 剩余的重复断言主要集中在另一批主题: ```text review/statusbar/external-shell ``` 更具体地说,当前还残留在三态大 if 中、且具有明显重复结构的内容,主要是: ```text 1. handoff review note / review packet / review packet copy-export / review packet verification / review packet badge; 2. handoff statusbar snapshot / statusbar receipt / statusbar receipt verification / statusbar receipt badge; 3. handoff external shell badge snapshot / badge copy-export; 4. 上述对象对应的一批 document.body.dataset 兼容镜像检查。 ``` 三、按主题的剩余重复断言清单 1. review packet 组 当前仍重复出现在 blocked / saved ready / restored ready 三态中的对象字段检查: ```text - ReviewNote: phase / action / preflight / latestHistory / noteText - ReviewPacket: phase / action / preflight / latestHistory / packet.reviewNote / packet.preflight / packetJson parse 后关键字段 / digest 正则 - ReviewPacketCopyExport: phase / ready / action / preflight / digest / packetJson / reviewNote / copyText / exportText / summaryText - ReviewPacketVerification: phase / ready / statusText / digestMatches / jsonParseReady / reviewNoteMatches / preflightMatches / digest / preflight / reviewNote / packetJson / rows.length / rows.every(ready) / summaryText - ReviewPacketVerificationBadge: phase / statusText / ready / readyCount / totalCount / badgeState / badgeText / statusbarBadgeText / statusbarBadgeState / digest ``` 判定: ```text 这组里有两类内容混在一起: 1. 对象契约:应保留一部分在大 if; 2. dataset / DOM 镜像:适合继续抽 helper。 ``` 建议下一轮优先处理: ```text 先抽 review packet 组的 dataset / DOM 镜像一致性; 对象自身字段契约暂时保留在大 if。 ``` 2. statusbar 组 当前仍重复出现在三态中的对象字段检查: ```text - StatusbarSnapshot: phase / action / preflight / packetBadgeText / packetBadgeState / digest / baseline / ready / summaryText - StatusbarReceipt: phase / action / preflight / badge / packetBadgeState / digest / baseline / ready / receiptText / copyText / summaryText - StatusbarReceiptVerification: phase / ready / statusText / receiptMatches / digestMatches / badgeMatches / summaryText / receiptText / digest / badge / baseline - StatusbarReceiptBadge: phase / statusText / ready / readyCount / totalCount / receiptBadgeState / receiptBadgeText / statusbarReceiptBadgeText / statusbarReceiptBadgeState / digest ``` 同时仍残留的一批 dataset 兼容镜像检查: ```text document.body.dataset.evidenceSessionHandoffStatusbarReceipt* document.body.dataset.evidenceSessionHandoffStatusbarReceiptVerification* document.body.dataset.evidenceSessionHandoffStatusbarReceiptBadge* ``` 判定: ```text 这组重复程度很高,且 blocked / saved ready / restored ready 结构高度对称; 很适合继续抽成共享 helper。 ``` 建议下一轮优先级: ```text 高优先级 ``` 3. external shell badge 组 当前仍重复出现在三态中的对象字段检查: ```text - ExternalShellBadgeSnapshot: phase / action / preflight / packetBadgeText / receiptBadgeText / baseline / digest / ready / shellBadgeState / shellBadgeText / statusbarShellBadgeText - ExternalShellBadgeCopyExport: phase / action / preflight / ready / shellBadgeState / shellBadgeText / copyText / exportText / summaryText / digest ``` 同时仍残留的一批 dataset 兼容镜像检查: ```text document.body.dataset.evidenceSessionHandoffExternalShellBadgeSnapshot* ``` 判定: ```text 这组与 statusbar 组一样,结构很规整,blocked / ready 两态几乎只变 phase / text; 适合继续抽 helper。 ``` 建议下一轮优先级: ```text 高优先级 ``` 4. external shell bundle / receipt audit bundle 组 当前状态: ```text 这组大部分 dataset / DOM 镜像检查已经由现有 assertExternalShell* helper 覆盖; 在三态大 if 中剩余的更多是对象字段契约检查,而不是重复的镜像检查。 ``` 判定: ```text 短期内不应优先再抽; 除非发现新的大块 dataset / DOM 镜像重复,否则这组先保持现状。 ``` 建议下一轮优先级: ```text 低优先级 ``` 四、按类型划分:哪些更像“对象契约”,哪些更像“兼容镜像” 建议继续保留在三态大 if 中的检查: ```text 1. apiName 2. phase / ready / statusText / baseline / digest 3. rows.length / rows.every(ready) 4. JSON.parse(packetJson) 后的关键字段 5. packet / snapshot / receipt / bundle 等对象内部结构是否成立 ``` 建议继续迁移到 helper 的检查: ```text 1. document.body.dataset.* 镜像值; 2. diagnostics panel 文本镜像; 3. statusbar 文本镜像; 4. 只读 DOM value 节点文本镜像; 5. phase/action/preflight/digest 派生出的短文本镜像。 ``` 五、第一阶段产出结论 本轮扫描后的结论是: ```text 1. summary / operator / preflight / history 这条线已经基本收平; 2. 剩余真正需要继续收尾的重点,是 review/statusbar/external-shell badge 这组; 3. 下一轮最值得继续抽 helper 的,是: - review packet 组的 dataset / DOM 镜像; - statusbar 组的 dataset / DOM 镜像; - external shell badge snapshot / copy-export 的 dataset / DOM 镜像; 4. receipt audit bundle 这组暂时不是主要尾项; 5. 下一轮不应重新扫描全文件,而应直接按上面三组进入第二阶段 helper 提取。 ``` 六、建议下一轮入口 推荐下一轮直接执行 `text36.txt` 第二阶段,但按下面优先级推进: ```text 优先级 1:statusbar 组 优先级 2:external shell badge 组 优先级 3:review packet 组 优先级 4:最后再看是否还需要补 external shell bundle / audit bundle ``` 建议下一轮的最小目标: ```text 至少把 statusbar + external shell badge 这一批 dataset / DOM 重复断言继续抽走; 完成后重新运行 browser_real_simulation_page_smoke。 ``` 七、建议验证命令 ```bash git diff --check SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh ```