lili 4836a6f519 feat(wg1-scale20): 20基准放量(14款)+ 三方门验证 + driver库泛化 + 宿主键盘缺口定位
主力批 7/8 真可玩(Opus 对抗审计 0 假绿)、压测 match3 ✅;失败收敛:3 键盘款(2048/Tetris/Asteroids)挂宿主缺 keydown 桥=唯一真·L0 门面缺口(已 spawn_task 交 L0)、multiball/flappy/愤怒小鸟=driver-coverage(非模型)。spec 预判 CCD/文本HUD/网格/match/手势缺口全推翻(便宜 flash 自带 swept CCD/自写网格文本)。

- driver 库 1→6 型(tap-targets/flap-to-gap/seek-x/tap-pairs/key-cycle/paddle-intercept)+ drag 输入事件 + key() Arrow 修
- M3 视觉 player 当生产过滤器实证(与门 8/9 一致、抓显性空心)→ 门(地板)+M3(主观过滤)+创始人(人锚)三层互补
- 短板量化报告定稿 + 两 skill 沉淀(game-e2e §8 driver库/门承重/键盘缺口 · cheap-model §9 模型能力画像)
- 2 个 ultracode 对抗 workflow(审计10+诊断7 agents)抓 saolei 弱断言、纠 flappy 归因(driver 非模型)、定位宿主键盘根因

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

13 lines
2.7 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"title": "井字棋 Tic-Tac-Toe",
"brief": "做一款经典井字棋(三连棋)。竖屏逻辑视口 390×844。\n- 居中 3×3 棋盘:整体为正方形,左上角约 (30,255)、边长约 330(每格约 110×110);用亮色线条画网格。三列中心 x≈85/195/305,三行中心 y≈310/420/530。\n- 玩家执 X:点击任一【空】格落下 X(亮色、居中于该格)。落子后立即轮到 AI 执 O:用受控 random 在剩余空格中选一个落 O(简单 AI 即可,不必最优)。点击已占格无效(忽略)。\n- 胜负判定:任一行/列/对角线三格同色 = 该方获胜;九格落满且无三连 = 平局。\n- 顶部单行文本 HUD:对局中显示当前轮到谁(如 \"X 走\"/\"O 走\"),终局显示结果(\"X 胜\"/\"O 胜\"/\"平局\")。\n- 【终态契约·务必遵守】分出胜负或平局即进入终态:把 _forensicsView().state().phase 置为 'gameover' 并【驻留】——画面停在终态(可显示结果文案 + 「点击重玩」提示),但在玩家点击重玩之前 phase 必须恒为 'gameover',**绝不自动重开 / 不下一帧复位回 playing**(宿主每 500ms 轮询 phase 判结束,瞬时终态会被漏读)。**gameover 状态下对棋盘格/空白区的点击一律忽略,不得重置游戏**;仅点击明确的「重玩」按钮区域才允许重开。\n- 【可测性·务必导出状态】_forensicsView().state() 返回纯只读实时真值,除 phase 外额外导出:\n · result:null | 'X' | 'O' | 'draw'(对局中为 null)\n · moves:整数,已落子总数(开局必为 0,每落一子 +1)\n · board:长度 9 的数组,每元素 null|'X'|'O'(行优先,索引 0..8)\n · targets:长度 9 的数组,每元素 { x, y, idx, occupied } —— x/y 为该格中心的逻辑像素坐标(与画面一致)、idx 为 0..8、occupied 为该格是否已落子(布尔)。\n harness 依据 targets 自动点击空格真玩、依据 moves/phase 验证进展与终局,务必准确实时。\n- 反馈(juice):每次落子触发 getEngine().particles.spawnEmitter 粒子 + getEngine().audio.synth.synthSfx 音效;分出胜负时额外给一次明显反馈。\n- 画面:深色背景铺满 390×844;网格线 / X / O / 文字均用亮色实心绘制,X 与 O 视觉区分清晰。",
"play_spec": {
"driver": { "type": "tap-targets", "steps": 12, "stepMs": 350 },
"expectedEngineCallPrefixes": ["particles.", "audio.synth"],
"assertAfterPlay": [
{ "path": "moves", "op": "increased", "why": "适配性真玩(自动点空格)下落子→已落子数上升;点击失灵/棋盘没更新则不升" }
],
"expectLatch": true
}
}