text36.txt 一、接续说明 执行时间:2026-06-20 CST 本文件只服务于一个目标: ```text 快速完成“当前 smoke 收尾” ``` 这里的 smoke 特指: ```text wasm-port/tests/browser/real_simulation_page_smoke.html ``` 本文件不讨论 77 SKIP promotion 复核,不讨论 inventory baseline 变化,也不继续新增 real simulation page runtime surface。目标是尽快把 handoff smoke 收敛工作收口,形成 稳定、低重复、可继续维护的 browser smoke。 二、当前状态 当前已经完成的收敛: ```text 1. 已为 handoff summary / operator snapshot / action plan / compact status / preflight / history 提取共享 smoke helper; 2. 已把 blocked / saved ready / restored ready 三态里一批 dataset / DOM / status-history 重复断言迁移到 helper; 3. 浏览器 smoke 当前保持通过; 4. inventory baseline 仍保持 82/82/77/0。 ``` 当前仍可能残留的问题,不是行为错误,而是测试结构层面的尾项: ```text 1. review/statusbar/external-shell 同一批 surface 仍可能存在对象字段重复断言; 2. 个别断言仍混合“主入口契约检查”和“兼容入口镜像检查”; 3. 三态大 if 仍偏长,后续维护成本高; 4. helper 与大 if 的边界尚未完全固化。 ``` 三、收尾目标 本轮 smoke 收尾的完成标准: ```text 1. blocked / saved ready / restored ready 三态继续完整覆盖; 2. handoff summary / operator / preflight / history 这批兼容入口不再在三态大 if 中重复散落; 3. review/statusbar/external-shell 同一批 surface 的重复断言尽量收口到 helper; 4. 不新增 getter / dataset / DOM selector; 5. 不改 runtime surface; 6. browser_real_simulation_page_smoke=ok。 ``` 不在本轮范围内的工作: ```text 1. 不新增任何新的 external-shell bundle / badge / receipt / verification surface; 2. 不修改 wasm-port/runtime/ui/simulation/index.html 的行为; 3. 不改 diagnostics artifact schema; 4. 不改 release artifact schema; 5. 不触碰 77 SKIP promotion 主线。 ``` 四、建议执行顺序 第一阶段:列出剩余重复断言 目标: ```text 把 real_simulation_page_smoke.html 中仍残留在三态大 if 里的 handoff 相关断言,按主题归类。 ``` 建议操作: ```text 1. 只看 blocked / saved ready / restored ready 三段; 2. 标记仍属于以下主题的断言: - review packet / copy-export / verification / badge - statusbar snapshot / receipt / receipt verification / receipt badge - external shell badge snapshot / copy-export - external shell bundle / receipt / receipt verification / audit bundle 3. 判断每类断言里哪些是: - 主对象字段契约检查 - dataset / DOM 兼容镜像检查 4. 只迁移兼容镜像检查,不迁移真正承担对象契约的字段检查。 ``` 退出条件: ```text 形成“剩余重复断言清单”,并明确哪些适合继续进 helper,哪些必须保留在大 if。 ``` 第二阶段:继续提取 helper 目标: ```text 把第一阶段识别出的兼容镜像断言继续迁移到共享 helper。 ``` 建议操作: ```text 1. 优先复用已有 assertLegacyHandoff* helper 风格; 2. 新 helper 只做以下事情: - dataset 值一致性; - DOM 文本一致性; - statusbar / diagnostics / document.body.dataset 镜像一致性; 3. helper 入参使用 phase / action / preflight / digest / expectedText 这类已稳定字段; 4. 不在 helper 中重新实现复杂业务拼接逻辑,尽量使用调用方已构造好的 expected text。 ``` helper 命名建议: ```text 若继续扩展 legacy helper,优先保持: - assertLegacyHandoffReviewStatusbarDom(...) - assertLegacyHandoffReviewStatusbarDataset(...) 若必须新增 helper,命名应保持主题聚合,避免再出现更细碎的 micro-helper。 ``` 退出条件: ```text 新增 helper 后,三态大 if 中同类 dataset / DOM 重复断言明显减少。 ``` 第三阶段:清理三态大 if 目标: ```text 删除已被 helper 完整覆盖的旧断言,保留真正需要的对象契约检查。 ``` 删除原则: ```text 1. helper 已检查的数据,不再在大 if 中重复检查第二次; 2. 主对象字段、API 名、phase / ready / digest / rows 长度这类核心契约,仍可保留; 3. 不为了“更短”而把关键对象字段契约也删掉; 4. 不删除三态覆盖; 5. 不删除公开 surface 的存在性检查。 ``` 建议保留的大 if 检查类型: ```text 1. apiName / phase / ready / baseline / digest 等对象自身契约; 2. rows.length / every(row.ready===true) 这类结构契约; 3. JSON.parse(packetJson) 后的关键字段; 4. 与 helper 不同层级的对象内容一致性。 ``` 退出条件: ```text 三态大 if 剩余内容主要是对象契约,而不是兼容入口镜像重复检查。 ``` 第四阶段:统一 helper 边界 目标: ```text 让后续维护者一眼能看出:哪些断言该放 helper,哪些该留在大 if。 ``` 建议操作: ```text 1. helper 内只处理“同一组 surface 的镜像一致性”; 2. 大 if 只处理“该阶段对象契约是否成立”; 3. 若 helper 和大 if 都检查同一值,优先保留 helper,删除重复镜像检查; 4. 若某值同时承载业务契约和镜像一致性,则在大 if 留对象字段,在 helper 留 DOM/dataset。 ``` 退出条件: ```text 文件结构形成稳定分层: helper = 兼容镜像一致性 大 if = 阶段对象契约 ``` 五、建议具体检查清单 下一轮可直接按下面 checklist 执行: ```text [ ] 1. 扫描 blocked / saved / restored 三段剩余 handoff 断言; [ ] 2. 标记 review/statusbar/external-shell 中仍重复的 dataset / DOM 检查; [ ] 3. 判断哪些是对象契约,哪些只是兼容镜像; [ ] 4. 继续扩展现有 legacy helper,避免新增碎片 helper; [ ] 5. 删除 helper 已覆盖的旧断言; [ ] 6. 检查三态是否仍完整覆盖; [ ] 7. 运行 git diff --check; [ ] 8. 运行 browser real simulation smoke; [ ] 9. 若 helper 边界稳定,补写下一份接续记录并宣布 smoke 收尾完成。 ``` 六、退出标准 本轮 smoke 收尾可宣布完成的标准: ```text 1. real_simulation_page_smoke.html 中 handoff 相关 helper 边界稳定; 2. 三态大 if 不再承载大量兼容入口重复镜像断言; 3. review/statusbar/external-shell 同一批 surface 的重复检查已基本收平; 4. browser_real_simulation_page_smoke=ok; 5. 没有新增 runtime surface; 6. inventory baseline 仍保持 82/82/77/0。 ``` 如果满足以上条件,下一轮就不应继续在这一批 smoke 上做小修小补,而应: ```text 1. 正式结束“当前 smoke 收尾”阶段; 2. 选择返回 promotion / inventory 主线,或继续已 PASS row 的 evidence expansion 主线。 ``` 七、建议验证命令 最低验证: ```bash git diff --check SKIP_INTERP_BUILD=1 wasm-port/tests/browser/verify_real_simulation_browser.sh ``` 如果下一轮顺手碰到 inventory / docs / artifact 路径,再补: ```bash SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh wasm-port/tests/docs/node/verify_sim_configs_coverage_docs.sh wasm-port/tools/verify_no_standalone_cnc_semantics.sh ``` 八、注意事项 ```text 1. 不要为了“测试更短”而删除对象契约检查; 2. 不要继续叠加新的 external-shell micro-surface; 3. 不要把 runtime 业务逻辑搬进 smoke helper; 4. 不要重新打开 77 SKIP promotion 总复核; 5. 这轮只做 smoke 收尾,不做主线切换。 ```