lili ffe3a5c993 fix(WU-C 5.4): tap-targets harness 认单数/可空 target — 解 M2 Node 退役阻塞
M2 auto-vs-golden 门抓到的生成契约漂移修复(Codex 实现 + 主代理诊断/受控验证)。
根因:~20% click-score 款 _forensicsView 暴露单数 target(对象、菜单态为 null)
而非复数 targets(数组),tap-targets harness 只认复数数组:① _build_play_spec
推断漏判→误推 key-cycle;② 驱动器 targetsPath 找不到单数 target。

两处修(认两种合法形态、既有数组行为零变):
- cheap_run.py:_build_play_spec 以【键存在性】判 tap-targets(targets/target 键
  在即可,菜单态 null/空数组仍归 tap-targets)——非值类型(空数组过/null 不过的
  非对称是漏判根因)。
- play.cdp.cjs:runTapTargets 取值非数组时回退读单数 target、包成 1 元素数组。

验证:退化款 avg-click-score-14 auto 路 E_live/G_input/H_progress 0.667→1.0
(3/3 确定性复现);test_ensure_play_spec 8→13 绿。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 10:41:16 -07:00
..