W-G1 生成主线 L1 worker 本轮收口(lane wg1/gen-worker;便宜模型 + harness 门兜底,HJ-GEN-001): 机制/契约 - 可测性红线 + P0 latch 终态:生成工厂导出 _forensicsView().state().phase (booting|playing|gameover,进 gameover 恒驻留、禁自动重开),对齐官方 P3 契约; flash 实测能遵此契约(v4/v5 latch 驻留 ✓)。 - 套官方 generic 壳:worker 产 generated-factory.js → entry-bundle 用 buildGenericHostConfig 装配(=官方 entry-generic.js 的取证超集,多透传 recHook 供 F 门)→ esbuild __GameBundle。 真玩门(七门→九门) - 门 H 机制+latch:assertAfterPlay 进展断言(剩余↓ 等,证非空心) + expectLatch 真玩到 gameover 且驻留。 - 门 I 控制手感:controlCheck 连点验控制体平滑逼近(逮"一格一跳"/卡死)。 - 适配性真玩 driver:读 state 实体位置自动接球,解"盲打固定坐标打不动技巧游戏"的 H 假阴性(创始人亲玩 + v4/v5 regen 双重实证)。 质量评估(player 校准) - studio(design/code/fix/player panel on AgentScope 2.0.1) + calibrate.py 校准 harness。 - 创始人亲玩锚揭结构性天花板:便宜 player(静态截图+数据)判不出物理/碰撞/控制手感 (把碰撞有问题的 pro 高估为最佳);gate-H 盲打会假阴性;founder/人锚不可替代。 "上下文是杠杆"实证:接地使成本 −50%、修复轮次 −80%;rubric 锚定使 player MAE 1.25→0.75。 含从 dev/2.0.0 @3108009 拉入的官方 P3 通用装载壳(_generic/ + generic-host-config.js + 双 spec) 作 L1 套壳靶(为 lane 自洽,内容与 dev/2.0.0 一致,后续 merge 自去重)。 未提交:AGENTS.md/.gitignore 的 localagents 改动(非本人);生成产物游戏目录(构建 artifact)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
253 lines
6.1 KiB
JSON
253 lines
6.1 KiB
JSON
{
|
|
"game_id": "breakout-flash-v5",
|
|
"model": "deepseek-v4-flash",
|
|
"pass": false,
|
|
"retries": 3,
|
|
"attempts": [
|
|
{
|
|
"attempt": 0,
|
|
"stage": "play",
|
|
"errors": [],
|
|
"usage": {
|
|
"prompt_tokens": 4017,
|
|
"completion_tokens": 12376,
|
|
"total_tokens": 16393,
|
|
"wall_s": 134.487,
|
|
"id": "a5e9a083-492d-4160-b9b0-5b71eced7260",
|
|
"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": 1,
|
|
"stage": "play",
|
|
"errors": [],
|
|
"usage": {
|
|
"prompt_tokens": 4149,
|
|
"completion_tokens": 6604,
|
|
"total_tokens": 10753,
|
|
"wall_s": 65.824,
|
|
"id": "868072d4-cd1e-43bb-a2ef-30ca4bb97caa",
|
|
"finish_reason": "stop"
|
|
},
|
|
"play_pass": false,
|
|
"verdict_guards": {
|
|
"A_boot": true,
|
|
"C_frame": true,
|
|
"I_control": false,
|
|
"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": 4245,
|
|
"completion_tokens": 7460,
|
|
"total_tokens": 11705,
|
|
"wall_s": 69.351,
|
|
"id": "e21364b2-d252-4faf-b13c-ef2c0a4ebb7e",
|
|
"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": 3,
|
|
"stage": "play",
|
|
"errors": [],
|
|
"usage": {
|
|
"prompt_tokens": 4150,
|
|
"completion_tokens": 7543,
|
|
"total_tokens": 11693,
|
|
"wall_s": 78.659,
|
|
"id": "ed11ed20-dfbf-43c7-bf62-6683ab7b1b17",
|
|
"finish_reason": "stop"
|
|
},
|
|
"play_pass": false,
|
|
"verdict_guards": {
|
|
"A_boot": true,
|
|
"C_frame": true,
|
|
"I_control": false,
|
|
"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/breakout-flash-v5/generated-factory.js",
|
|
"bundle_path": "game-runtime/games/_wg1-gen/breakout-flash-v5/bundle.iife.js",
|
|
"verdict": {
|
|
"gameId": "breakout-flash-v5",
|
|
"url": "http://localhost:4327/games/_wg1-gen/breakout-flash-v5/index.html",
|
|
"ts": null,
|
|
"guards": {
|
|
"A_boot": {
|
|
"pass": true
|
|
},
|
|
"C_frame": {
|
|
"pass": true,
|
|
"f0": 51,
|
|
"f1": 82,
|
|
"delta": 31
|
|
},
|
|
"I_control": {
|
|
"pass": false,
|
|
"paddlePath": "paddle.x",
|
|
"results": [
|
|
{
|
|
"tapX": 50,
|
|
"before": 155,
|
|
"after": 16.12409472465515,
|
|
"moved": -138.87590527534485,
|
|
"distToTarget": 33.87590527534485,
|
|
"pass": true
|
|
},
|
|
{
|
|
"tapX": 340,
|
|
"before": 16.12409472465515,
|
|
"after": 249.47618775739102,
|
|
"moved": 233.35209303273587,
|
|
"distToTarget": 90.52381224260898,
|
|
"pass": false
|
|
}
|
|
]
|
|
},
|
|
"D_render": {
|
|
"pass": true,
|
|
"bright": 160281,
|
|
"maxCh": 255
|
|
},
|
|
"E_live": {
|
|
"pass": true,
|
|
"distinctStates": 11,
|
|
"samples": 11
|
|
},
|
|
"B_uncaught": {
|
|
"pass": true,
|
|
"uncaught": []
|
|
},
|
|
"F_wiring": {
|
|
"pass": true,
|
|
"callCount": 495,
|
|
"sample": [
|
|
"particles.spawnEmitter",
|
|
"audio.synth.synthSfx",
|
|
"audio.synth.synthSfx",
|
|
"audio.synth.synthSfx",
|
|
"audio.synth.synthSfx",
|
|
"audio.synth.synthSfx",
|
|
"audio.synth.synthSfx"
|
|
],
|
|
"expected": [
|
|
"particles.",
|
|
"audio.synth"
|
|
]
|
|
},
|
|
"G_input": {
|
|
"pass": true,
|
|
"inputHash": "19eb47b9",
|
|
"controlHash": "f0e8788b",
|
|
"atFrame": 530,
|
|
"ctrlFrame": 531
|
|
},
|
|
"H_progress": {
|
|
"pass": false,
|
|
"checks": [
|
|
{
|
|
"path": "remaining",
|
|
"op": "decreased",
|
|
"before": 30,
|
|
"after": 30,
|
|
"pass": false,
|
|
"why": "适配性真玩(挡板自动接球)下击碎砖块→剩余下降;接不住/碰撞失效则不降"
|
|
}
|
|
],
|
|
"latch": {
|
|
"pass": true,
|
|
"dwelledMs": 600,
|
|
"after": "gameover",
|
|
"reason": ""
|
|
},
|
|
"state0": {
|
|
"phase": "playing",
|
|
"score": 0,
|
|
"remaining": 30,
|
|
"progress": 0,
|
|
"gameoverReason": "",
|
|
"ball": {
|
|
"x": 111.00585468634965,
|
|
"y": 515.7535326413795,
|
|
"vx": -98.81664154547158,
|
|
"vy": -346.1723145395567
|
|
},
|
|
"paddle": {
|
|
"x": 155,
|
|
"y": 820,
|
|
"w": 80
|
|
}
|
|
},
|
|
"state1": {
|
|
"phase": "gameover",
|
|
"score": 0,
|
|
"remaining": 30,
|
|
"progress": 0,
|
|
"gameoverReason": "ball_lost",
|
|
"ball": {
|
|
"x": 21.229435960708493,
|
|
"y": 836.175170770526,
|
|
"vx": -206.15460802245252,
|
|
"vy": 295.1275615578947
|
|
},
|
|
"paddle": {
|
|
"x": 251.78406952933614,
|
|
"y": 820,
|
|
"w": 80
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"pass": false,
|
|
"notes": []
|
|
},
|
|
"tokens": {
|
|
"prompt": 16561,
|
|
"completion": 33983
|
|
},
|
|
"request_ids": [
|
|
"a5e9a083-492d-4160-b9b0-5b71eced7260",
|
|
"868072d4-cd1e-43bb-a2ef-30ca4bb97caa",
|
|
"e21364b2-d252-4faf-b13c-ef2c0a4ebb7e",
|
|
"ed11ed20-dfbf-43c7-bf62-6683ab7b1b17"
|
|
]
|
|
} |