主力批 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>
273 lines
6.6 KiB
JSON
273 lines
6.6 KiB
JSON
{
|
||
"game_id": "invaders",
|
||
"model": "deepseek-v4-flash",
|
||
"pass": false,
|
||
"retries": 2,
|
||
"attempts": [
|
||
{
|
||
"attempt": 0,
|
||
"stage": "validate",
|
||
"errors": [
|
||
"违禁:禁 Date.now(用 ctx.time.nowMs)"
|
||
],
|
||
"usage": {
|
||
"prompt_tokens": 4010,
|
||
"completion_tokens": 5733,
|
||
"total_tokens": 9743,
|
||
"wall_s": 55.621,
|
||
"id": "d4b8a1fb-870e-4ccb-bccf-3a6935b50683",
|
||
"finish_reason": "stop"
|
||
}
|
||
},
|
||
{
|
||
"attempt": 1,
|
||
"stage": "play",
|
||
"errors": [],
|
||
"usage": {
|
||
"prompt_tokens": 4056,
|
||
"completion_tokens": 5884,
|
||
"total_tokens": 9940,
|
||
"wall_s": 50.188,
|
||
"id": "92e8da7e-15c7-4d89-a3ca-667e21424c13",
|
||
"finish_reason": "stop"
|
||
},
|
||
"play_pass": false,
|
||
"verdict_guards": {
|
||
"A_boot": true,
|
||
"C_frame": true,
|
||
"I_control": true,
|
||
"D_render": true,
|
||
"E_live": true,
|
||
"B_uncaught": true,
|
||
"F_wiring": true,
|
||
"G_input": true,
|
||
"H_progress": false
|
||
}
|
||
},
|
||
{
|
||
"attempt": 2,
|
||
"stage": "play",
|
||
"errors": [],
|
||
"usage": {
|
||
"prompt_tokens": 4145,
|
||
"completion_tokens": 13956,
|
||
"total_tokens": 18101,
|
||
"wall_s": 149.346,
|
||
"id": "05c64b32-a770-4564-b9ff-4d1f2d65f19b",
|
||
"finish_reason": "stop"
|
||
},
|
||
"play_pass": false,
|
||
"verdict_guards": {
|
||
"A_boot": true,
|
||
"C_frame": true,
|
||
"I_control": true,
|
||
"D_render": true,
|
||
"E_live": true,
|
||
"B_uncaught": true,
|
||
"F_wiring": true,
|
||
"G_input": true,
|
||
"H_progress": false
|
||
}
|
||
}
|
||
],
|
||
"factory_path": "game-runtime/games/_wg1-gen/invaders/generated-factory.js",
|
||
"bundle_path": "game-runtime/games/_wg1-gen/invaders/bundle.iife.js",
|
||
"verdict": {
|
||
"gameId": "invaders",
|
||
"url": "http://localhost:4320/games/_wg1-gen/invaders/index.html",
|
||
"ts": null,
|
||
"guards": {
|
||
"A_boot": {
|
||
"pass": true
|
||
},
|
||
"C_frame": {
|
||
"pass": true,
|
||
"f0": 46,
|
||
"f1": 76,
|
||
"delta": 30
|
||
},
|
||
"I_control": {
|
||
"pass": true,
|
||
"skipped": "未声明 controlCheck(向后兼容)"
|
||
},
|
||
"D_render": {
|
||
"pass": true,
|
||
"bright": 50423,
|
||
"maxCh": 255
|
||
},
|
||
"E_live": {
|
||
"pass": true,
|
||
"distinctStates": 32,
|
||
"samples": 32
|
||
},
|
||
"B_uncaught": {
|
||
"pass": true,
|
||
"uncaught": []
|
||
},
|
||
"F_wiring": {
|
||
"pass": true,
|
||
"callCount": 78,
|
||
"sample": [
|
||
"particles.spawnEmitter",
|
||
"audio.synth.synthSfx",
|
||
"particles.spawnEmitter",
|
||
"audio.synth.synthSfx",
|
||
"particles.spawnEmitter",
|
||
"audio.synth.synthSfx",
|
||
"particles.spawnEmitter",
|
||
"audio.synth.synthSfx",
|
||
"particles.spawnEmitter",
|
||
"audio.synth.synthSfx",
|
||
"particles.spawnEmitter",
|
||
"audio.synth.synthSfx"
|
||
],
|
||
"expected": [
|
||
"particles.",
|
||
"audio.synth"
|
||
]
|
||
},
|
||
"G_input": {
|
||
"pass": true,
|
||
"inputHash": "d3749c56",
|
||
"controlHash": "887afb78",
|
||
"atFrame": 1105,
|
||
"ctrlFrame": 1107
|
||
},
|
||
"H_progress": {
|
||
"pass": false,
|
||
"checks": [
|
||
{
|
||
"path": "score",
|
||
"op": "increased",
|
||
"before": 0,
|
||
"after": 9,
|
||
"pass": true,
|
||
"why": "适配性真玩(炮台移到敌人 x 开火)下击毁敌人→得分上升;打不中/无碰撞则不升"
|
||
}
|
||
],
|
||
"latch": {
|
||
"pass": false,
|
||
"reason": "真玩未到达 gameover 终态(终态不可达/无失败态/play-spec 未驱动到结束)",
|
||
"phaseNow": "playing"
|
||
},
|
||
"state0": {
|
||
"phase": "playing",
|
||
"result": null,
|
||
"score": 0,
|
||
"enemiesRemaining": 12,
|
||
"targets": [
|
||
{
|
||
"x": 150.6666666666664,
|
||
"y": 95,
|
||
"idx": 0,
|
||
"occupied": false
|
||
},
|
||
{
|
||
"x": 200.66666666666623,
|
||
"y": 95,
|
||
"idx": 1,
|
||
"occupied": false
|
||
},
|
||
{
|
||
"x": 250.66666666666623,
|
||
"y": 95,
|
||
"idx": 2,
|
||
"occupied": false
|
||
},
|
||
{
|
||
"x": 300.66666666666754,
|
||
"y": 95,
|
||
"idx": 3,
|
||
"occupied": false
|
||
},
|
||
{
|
||
"x": 150.6666666666664,
|
||
"y": 135,
|
||
"idx": 4,
|
||
"occupied": false
|
||
},
|
||
{
|
||
"x": 200.66666666666623,
|
||
"y": 135,
|
||
"idx": 5,
|
||
"occupied": false
|
||
},
|
||
{
|
||
"x": 250.66666666666623,
|
||
"y": 135,
|
||
"idx": 6,
|
||
"occupied": false
|
||
},
|
||
{
|
||
"x": 300.66666666666754,
|
||
"y": 135,
|
||
"idx": 7,
|
||
"occupied": false
|
||
},
|
||
{
|
||
"x": 150.6666666666664,
|
||
"y": 175,
|
||
"idx": 8,
|
||
"occupied": false
|
||
},
|
||
{
|
||
"x": 200.66666666666623,
|
||
"y": 175,
|
||
"idx": 9,
|
||
"occupied": false
|
||
},
|
||
{
|
||
"x": 250.66666666666623,
|
||
"y": 175,
|
||
"idx": 10,
|
||
"occupied": false
|
||
},
|
||
{
|
||
"x": 300.66666666666754,
|
||
"y": 175,
|
||
"idx": 11,
|
||
"occupied": false
|
||
}
|
||
]
|
||
},
|
||
"state1": {
|
||
"phase": "playing",
|
||
"result": null,
|
||
"score": 9,
|
||
"enemiesRemaining": 3,
|
||
"targets": [
|
||
{
|
||
"x": 116.66666666666792,
|
||
"y": 485,
|
||
"idx": 2,
|
||
"occupied": false
|
||
},
|
||
{
|
||
"x": 16.66666666666636,
|
||
"y": 525,
|
||
"idx": 4,
|
||
"occupied": false
|
||
},
|
||
{
|
||
"x": 116.66666666666792,
|
||
"y": 525,
|
||
"idx": 6,
|
||
"occupied": false
|
||
}
|
||
]
|
||
}
|
||
}
|
||
},
|
||
"pass": false,
|
||
"notes": []
|
||
},
|
||
"tokens": {
|
||
"prompt": 12211,
|
||
"completion": 25573
|
||
},
|
||
"request_ids": [
|
||
"d4b8a1fb-870e-4ccb-bccf-3a6935b50683",
|
||
"92e8da7e-15c7-4d89-a3ca-667e21424c13",
|
||
"05c64b32-a770-4564-b9ff-4d1f2d65f19b"
|
||
]
|
||
} |