摘要

实验 0054 发现本地 Arena 里有两条攻击预览路径:一条是玩家鼠标悬停时显示的“击杀数 + 伤害区间”,另一条是早先做的“按次语义读取”原型(每个决策只能读一次,带请求范围和版本号)。两者计算方式不同。本实验不以“二者数值不同”判错,而是分别检查每条路径是否兑现了它自己承诺的显示、请求范围和输出字段。在固定 16 个旧决策根、32 个候选攻击上,所有检查都通过:没有目标错配、没有绕过读取次数、没有额外私有字段泄漏。结论限于这一固定范围,不是商业游戏认证,也没有棋力含义。

要回答的问题

  • 语义读取原型:每次请求是否只读一次、拒绝重复和越权请求、只输出合同允许的字段?
  • 悬停显示:在真实的产品页面上,目标兵组头顶的两行提示是否与同一路径的计算值一致?

方法

  • 恢复状态:从 0054 固定的 16 个根(来源 1000000–1000007 各 2 个)读取原训练记录中的前一步状态;只反序列化,不调用任何推进战斗的函数(step/transition 都被设为“调用即报错”的守卫)。16 个根的公开观察和菜单都与原保存值精确一致。
  • 语义读取检查:每个候选新建一个读取实例,先读一次核对范围和模式;再用原请求重发、用新请求第二次读、用过期版本号、错误会话、无效句柄、可能触发提交的请求、非观察方回合分别请求,看是否都被拒绝。
  • 悬停显示检查:用无头 Edge 加载原产品页面,注入真实的战斗展示快照,把鼠标悬停到每个目标上,读取页面上的提示文字;所有 POST 请求被拒绝且实际为 0。

设置

单 CPU 进程、无 GPU、无训练;30 分钟预算,实际 351.893 秒。

结果

检查 实际结果
16 个旧检查点及公开输入匹配 16 通过
32 个首次请求 32 接受,各计 1 次读取
输出 有值 / 未知 30 / 2
同请求重复、第二次不同请求 各 32 拒绝,共 64
过期版本、错误会话 各 16 拒绝,共 32
无效句柄、可能提交、非观察方回合 各 16 拒绝,共 48
正式请求检查合计 32 接受 + 144 拒绝 = 176
原状态和历史事件 16 根均未改变
输出字段 32 通过,没有状态、随机数或额外构筑字段

30 个有值结果与各自的路线预览一致,在这批样本里也恰好与悬停伤害端点相同——但不能据此推断两个接口一般等价。2 个未知都出现在 1000006 第 13 步,是 reach(隔一格攻击)类型;旧原型只支持近战和远程,按合同对其他类型返回未知。首个 reach 例的悬停预览是 318–477,而语义读取是未知,这是已知的覆盖限制,不是计算错误。

浏览器显示:桌面 1440×1080 下 16 根 32 候选的击杀数、伤害和百分比全部与同路径计算一致;手机 390×844 只核对了首根 2 个候选。控制台错误、页面异常、HTTP 失败和 POST 都是 0。截图中第一例为 8–11 只 / 252–336 伤害。

失败与负结果

尝试 结果 处理
入口首次导入 从错误模块导入选秀类型失败,目录尚未建立 仪器错误,改用正确模块
第 1 次正式尝试 12 根 24 候选完成后,第 13 根首个候选断言失败 仪器错误地假定所有合法攻击都有近战/远程数值;原失败和部分回执全部保留
单例诊断 确认该候选是 reach 类型、合同本应返回未知 不是 provider 失败
第 2 次正式尝试 16 根全部完成,176 次检查通过 只按原合同修正仪器判断,协议和生产代码未改

因此同一批候选实际被首次请求了 58 次(25 + 1 + 32),不是 58 个独立样本。

局限

  • 没有覆盖不可达目标、真实版本推进后的读取额度重置、恶意进程隔离或正式游戏数值保真。
  • 手机视口只验收首根;手机界面其他 HUD 较拥挤,本轮不声称移动布局可用。
  • 浏览器外层是最小会话包装,不是完整的 Arena 保存恢复验收。

结论与下一步

在测试范围内,两条本地预览路径都与各自合同一致,实验关闭,没有生产修改。reach 类型未知是后续可讨论的功能缺口。下一步检验一个显式标注的“本地预览信息模式”能否让 AI 在收尾时做出与 Fair 不同的选择(实验 0056)。