zizi c99014c243 test(aigc-3b-B): 派发面 e2e 真证安全面+全自动管线闭合(HMAC双向),P5 生成质量转 L1
3b-B e2e(mini-desktop 真跑·证据 wg1/gen-worker/evidence-3bB/):

 P0-P4 安全面+全自动管线=真证闭合(铁证 backend-callback-hmac.log + p4*.txt):
- HMAC 双向证:缺签名头→HTTP 401 / 错签(deadbeef≠482147b5)→HTTP 401 / 正签→过门(走到下游"任务不存在"非401)
  =关死 /dify/callback-internal 裸 @PermitAll 缺口
- 全自动派发链真通:执行器认领 taskId→dispatchGeneric 投 §6.1 job→worker 真生成(真烧模型)→
  HMAC 签名回调→验签通过→handleCallback 落库(gen-9303/9304/9305 三轮齐全)

 P5 一句话真生成=未达终局:三款全 nine_gate_failed。但截图(gen-9303-after-play.png)证生成
  真出 on-theme 可渲可动的「点击小怪物」游戏(Score/3s 倒计时/多彩怪物 monsters/targetScore=12),
  仅点击→计分坏(Score 仍 0)→九门确定性地板正确拦截「看着像但玩不了」=质量门正确履职、拒发不可玩。

判:L0 交付(管线+安全+质量门)已完成且证;缺=便宜模型把「点击命中→计分」写对=L1 生成域
  (prompt 点击坑+模型档+player/calibration,run_studio 自修 max_repairs 未救回)→转 L1 v3 迭代。

附带:serve-and-play.sh 跨平台 Chrome 探测(CHROME_BIN 覆盖>Linux /usr/bin>macOS>PATH 兜底,
  Linux 在前因 mini-desktop x86 是权威 e2e 机);p3bB_*.sql 发布四态/翻 feed 桩。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 16:20:28 +00:00

117 lines
2.4 KiB
JSON

{
"gameId": "gen-9304",
"url": "http://localhost:4320/games/_wg1-gen/gen-9304/index.html",
"ts": null,
"guards": {
"A_boot": {
"pass": true
},
"C_frame": {
"pass": true,
"f0": 60,
"f1": 90,
"delta": 30
},
"I_control": {
"pass": false,
"paddlePath": "paddleX",
"results": [
{
"tapX": 50,
"before": 195,
"after": 195,
"moved": 0,
"distToTarget": 145,
"pass": false
},
{
"tapX": 340,
"before": 195,
"after": 195,
"moved": 0,
"distToTarget": 145,
"pass": false
}
]
},
"D_render": {
"pass": true,
"bright": 1091360,
"maxCh": 255
},
"E_live": {
"pass": true,
"distinctStates": 31,
"samples": 31
},
"B_uncaught": {
"pass": true,
"uncaught": []
},
"F_wiring": {
"pass": true,
"callCount": 89,
"sample": [
"particles.spawnEmitter",
"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"
],
"expected": []
},
"G_input": {
"pass": true,
"inputHash": "2f4267bc",
"controlHash": "1ceee3f7",
"atFrame": 1176,
"ctrlFrame": 1181
},
"H_progress": {
"pass": true,
"checks": [
{
"path": "score",
"op": "increased",
"before": 0,
"after": 2,
"pass": true,
"why": "接住小球得分"
}
],
"latch": {
"pass": true,
"dwelledMs": 600,
"after": "gameover",
"reason": ""
},
"state0": {
"phase": "playing",
"score": 0,
"remaining": 1,
"progress": null,
"gameoverReason": "",
"ballPosX": 210.06992567097768,
"paddleX": 195
},
"state1": {
"phase": "gameover",
"score": 2,
"remaining": 0,
"progress": null,
"gameoverReason": "ball_lost",
"ballPosX": -1,
"paddleX": 195
}
}
},
"pass": false,
"notes": []
}