feat(studio): 本地预览渲染真生成物——runtime mock 9001 接 E1 engineBundle,闭合 create→预览可玩闭环
打通 E1↔E6:本地 create→预览此前走「无 manifestUrl→demo 兜底」,而 demo 用的自研壳正被 T1b 替换 → load_timeout 玩不了。改为:
- mock/runtime.ts:9001 回填 manifestUrl=/mock-manifests/9001.json + checksum(sha256 of 原文);宿主 fetchAndVerifyManifest 校验后走【引擎包路】__GameBundle.bootGameHost 真玩
- scripts/gen-preview-manifest.mjs(新建):读仓内已提交的九门探针 bundle(E1 适配器产物)→ 包成 GamePackage(engineBundle 内嵌)静态件 + 打印 checksum;确定性(同源 bundle→同 sha256)
- public/mock-manifests/ gitignore(生成件大,不入库;源 bundle 已在 game-runtime 入库一次)
- .agent 记本地预览 setup 步
验证:`npm run build` 绿;**CDP 真 UI 走查实证**——/create/preview/9001 状态由「加载失败 load_timeout」→「可试玩」,预览渲染 tap-target 真玩件(Score:0/3 + 3 目标),errtip=null。静态 manifest 经 vite 原样服务,curl 校 checksum 与 mock 一致。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>