主力批 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>
13 lines
1.6 KiB
JSON
13 lines
1.6 KiB
JSON
{
|
||
"title": "2048",
|
||
"brief": "做一款经典 2048。竖屏逻辑视口 390×844。\n- 居中 4×4 网格。按键 ArrowUp/ArrowDown/ArrowLeft/ArrowRight 控制所有方块朝该方向滑动到底;同值方块相撞合并为其和、该次得分加上合并值。\n- 每次【有效移动】(有方块移动或合并)后,用受控 random 在空格生成一个新方块(2 或 4)。\n- 网格填满且四个方向都无法移动/合并 = 失败(也可设达成 2048 = 胜利)。\n- 顶部文本 HUD:分数 / 状态。\n- 【终态契约·务必遵守】失败即把 phase 置 'gameover' 并【驻留】(显示结果 + 「点击重玩」);点击重玩前 phase 恒 'gameover',绝不自动重开 / 不下一帧复位(宿主每 500ms 轮询)。gameover 下输入一律忽略。\n- 【可测性·务必导出状态】_forensicsView().state() 纯只读实时真值:phase;result(null|'win'|'lose');score(整数,开局0);moves(有效移动次数,开局0);board(4×4 数值快照)。harness 据 score/phase 验进展与终局。\n- 反馈(juice):合并 / 失败触发 getEngine().particles.spawnEmitter + getEngine().audio.synth.synthSfx。\n- 画面:深色背景铺满;方块(按数值不同色)/ 数字 / 文字亮色实心。",
|
||
"play_spec": {
|
||
"driver": { "type": "key-cycle", "keys": ["ArrowLeft", "ArrowUp", "ArrowRight", "ArrowDown"], "steps": 50, "stepMs": 220 },
|
||
"expectedEngineCallPrefixes": ["particles.", "audio.synth"],
|
||
"assertAfterPlay": [
|
||
{ "path": "score", "op": "increased", "why": "循环四向滑动→合并得分上升;不合并/不响应键则不升" }
|
||
],
|
||
"expectLatch": true
|
||
}
|
||
}
|