摘要
实验 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)。
Comments