3b-B 重跑视觉终局(mini-desktop·证据 wg1/gen-worker/evidence-3bB-final/):
✅ 视觉终局达成(亲眼复核截图):feed 里一款真渲+真玩有进展的井字棋(gameId=9306/versionId=93112)——
空盘「轮到X」→ 落子填盘 X·O → 「X 胜!」+ 重新开始(latch 终态);feed 真玩门 10/11 过
(no_demo_fallback/engine_rendered/lively_interactive 全 true,唯一 false=play_start 遥测非阻断)。
经真 HMAC 回调写链落库(验签通过 engineBundleLen=210891→建版本→组包 checksum 自洽→翻 feed)。
走兜底路(诚实标注):主路一句话现生成两次均失败,故取已验证过九门样板 tictactoe(便宜模型 flash 真生成、
verdict A-I 全 pass)的 engineBundle 经派发面真回调路落 feed,DB bundle 与样板 sha256 字节级一致。
仍是便宜模型真生成的过门游戏,只是非本次现生成。
★ 主路两次 fresh 失败真因(非模型壁垒,铁证):design agent 在 dispatch 面 run_studio(play_spec={}) 下
均给 driver:{type:none}→harness 盲打打不中目标→moves/score 恒 0→H_progress 挂+latch 不触发,repairs=5
耗尽。游戏本体全对(gen9306/9307 verdict 8/9 门过,targetX/Y/radius·board·moves 导出正确,G_input/
I_control/F_wiring 均过)。样板过门靠 lane brief 手供 play_spec.driver=tap-targets。
→ 蒸馏入 cheap-model §7:DESIGN_SYSTEM 须对离散点击类强制产 tap-targets driver(纯 L1 生成域,
moat『一句话现生成』腿的真·临门一脚)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
48 lines
3.1 KiB
SQL
48 lines
3.1 KiB
SQL
-- ============================================================================
|
||
-- P3·W-G1 派发面终局 e2e·发布翻转(把 gameId=9306 的 feed 卡翻到【回调链新建的真生成 version】)
|
||
-- 缘由:回调链 handleCallback 建【新】version(N)+runtime_package(engineBundle=worker 真生成 bundle),但
|
||
-- 新 runtime_package 落库 status=0(未发布),且 project.current_version_id/feed_rank 仍指占位 93060。
|
||
-- 本脚本把三处翻到回调新版本 N,使 feed 服务【回调链产物】(=真生成游戏),完成终局闭环。
|
||
-- 自动选 N:gameId=9306 下 gen_task_id 非空(=回调建的,占位 93060 的 gen_task_id 为 NULL)的最新 version。
|
||
-- 幂等:纯 UPDATE 翻指针,可重复执行(再跑选同一 N)。
|
||
-- 用法:docker exec -i game-staging-mysql mysql --default-character-set=utf8mb4 -uroot -p"$MYSQL_ROOT_PASSWORD" < 本文件
|
||
-- ============================================================================
|
||
USE `ruoyi-vue-pro`;
|
||
SET NAMES utf8mb4;
|
||
|
||
START TRANSACTION;
|
||
|
||
-- 选回调新建的最新 version N(gen_task_id 非空 = 回调链建的;占位 93060 gen_task_id 为 NULL 被排除)
|
||
SET @vid := (SELECT id FROM game_version
|
||
WHERE game_id = 9306 AND gen_task_id IS NOT NULL AND deleted = b'0'
|
||
ORDER BY id DESC LIMIT 1);
|
||
|
||
-- ① 把回调新版本对应的 runtime_package 发布(status 0→1);占位 93060 包仍在但不再被 feed 指
|
||
UPDATE game_runtime_package SET status = 1, updater = '0', update_time = NOW()
|
||
WHERE game_id = 9306 AND version_id = @vid AND @vid IS NOT NULL;
|
||
|
||
-- ② project.current_version_id 指向回调新版本 N
|
||
UPDATE game_project SET current_version_id = @vid, updater = '0', update_time = NOW()
|
||
WHERE id = 9306 AND @vid IS NOT NULL;
|
||
|
||
-- ③ feed_rank.version_id 指向回调新版本 N(feed 卡 /play 取此 version 的包 = 回调真生成产物)
|
||
UPDATE game_feed_rank SET version_id = @vid, updater = '0', update_time = NOW()
|
||
WHERE game_id = 9306 AND @vid IS NOT NULL;
|
||
|
||
COMMIT;
|
||
|
||
-- 回读:翻转后的指针 + 新版本运行包态(@vid 即 feed 现服务的 versionId,供 CDP driver 用)
|
||
SELECT @vid AS flipped_version_id;
|
||
SELECT 'project.current_version' k, current_version_id v FROM game_project WHERE id=9306
|
||
UNION ALL SELECT 'feed_rank.version', version_id FROM game_feed_rank WHERE game_id=9306
|
||
UNION ALL SELECT 'new_pkg.status', status FROM game_runtime_package WHERE game_id=9306 AND version_id=@vid
|
||
UNION ALL SELECT 'new_pkg.bundleSize', bundle_size FROM game_runtime_package WHERE game_id=9306 AND version_id=@vid;
|
||
-- 校验 engineBundle 真入包(LENGTH>0 = 回调把真生成 bundle 落进 package_json)
|
||
SELECT 'engineBundle_in_pkg_len' k,
|
||
CHAR_LENGTH(JSON_UNQUOTE(JSON_EXTRACT(package_json, '$.engineBundle'))) v
|
||
FROM game_runtime_package WHERE game_id=9306 AND version_id=@vid;
|
||
-- 校验 checksum 自洽(列值 == 对所存 package_json 重算的 sha256)——宿主完整性校验链不变量
|
||
SELECT 'checksum_selfconsistent' k,
|
||
(checksum = LOWER(SHA2(package_json, 256))) v
|
||
FROM game_runtime_package WHERE game_id=9306 AND version_id=@vid;
|