From d55030bf4ac3cfff041febbb21ee70e343c29019 Mon Sep 17 00:00:00 2001 From: lili Date: Thu, 25 Jun 2026 02:04:46 -0700 Subject: [PATCH] =?UTF-8?q?feat(runtime):=20=E5=88=A0=20gamedef=20?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E6=97=B6=E6=A0=B8=E5=BF=83(gd-runtime/build-?= =?UTF-8?q?from-source/2d-api)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gamedef 声明式 JSON + new Function 解释路线的 game-runtime 核心,随 gamedef 判废一并清除: - 4 测试:src/host/{gd-runtime.test,gd-archetypes.test,build-from-source.test,gameplay-pitfalls.test}.mjs - 4 被引文件:src/host/{gd-runtime.js,build-from-source.mjs,runtime-api-2d.d.ts,runtime-api-2d.md} 这 8 文件互相引用闭环、仅被彼此与那 4 个 gamedef 测试引用;A-model 全线 (src/core / src/plugins / host / _template / _generic)不依赖它们。 src/core/game-host.d.ts L25 一句史化石注释提及 gd-runtime(非 import), 属"绝不动"的 A-model 核心,保留,列入残留报告。 验证(必跑·删后绿基线): - 核心 node --test src/core+src/plugins = 211 pass / 0 fail - games/_generic 壳 = 5 pass / 0 fail(确认未误伤 _generic 标准插件壳) Co-Authored-By: Claude Opus 4.8 (1M context) --- game-runtime/src/host/build-from-source.mjs | 317 ----------- .../src/host/build-from-source.test.mjs | 218 -------- .../src/host/gameplay-pitfalls.test.mjs | 53 -- game-runtime/src/host/gd-archetypes.test.mjs | 197 ------- game-runtime/src/host/gd-runtime.js | 493 ------------------ game-runtime/src/host/gd-runtime.test.mjs | 358 ------------- game-runtime/src/host/runtime-api-2d.d.ts | 231 -------- game-runtime/src/host/runtime-api-2d.md | 136 ----- 8 files changed, 2003 deletions(-) delete mode 100644 game-runtime/src/host/build-from-source.mjs delete mode 100644 game-runtime/src/host/build-from-source.test.mjs delete mode 100644 game-runtime/src/host/gameplay-pitfalls.test.mjs delete mode 100644 game-runtime/src/host/gd-archetypes.test.mjs delete mode 100644 game-runtime/src/host/gd-runtime.js delete mode 100644 game-runtime/src/host/gd-runtime.test.mjs delete mode 100644 game-runtime/src/host/runtime-api-2d.d.ts delete mode 100644 game-runtime/src/host/runtime-api-2d.md diff --git a/game-runtime/src/host/build-from-source.mjs b/game-runtime/src/host/build-from-source.mjs deleted file mode 100644 index fa743b8b..00000000 --- a/game-runtime/src/host/build-from-source.mjs +++ /dev/null @@ -1,317 +0,0 @@ -/** - * build-from-source.mjs —— build-from-source 装配器(gameDefinition → 可玩工厂源文本 · build-from-source-v0) - * owner:本 session(引擎线 · plan 2026-06-18-001 U2) | 消费方:SaaGenNodes.scaffoldNode(落 generated-factory.js)→ build.mjs(esbuild)→ 九门 harness - * - * ════════════════════════════════════════════════════════════════════════════ - * 【职责】把后端线产出的 sourceProject(声明式 gameDefinition + behaviors 各带逻辑 JS)装配成 - * `generated-factory.js` 源文本——对齐已冻装载契约(game-host.d.ts:default export 工厂 → - * GameInstance{init,update,render,destroy,_forensicsView}),GameInstance 五法委托 U1 的 createRuntime。 - * - * 【信任模型(评审定论·铁律)】模型产出的 behavior.code / rule.condition 是**不可信代码**。 - * - 它**只在浏览器**(Chrome via 九门 CDP harness)执行;esbuild 只**静态打包**(从不执行它); - * 生产链上 **Node 永不执行不可信模型代码**(本仓 Node 仅在单测里跑「自产金样」)。浏览器即安全边界。 - * - 同步 JS 无法在进程内硬中断(死循环/逃逸),故**在校验边界静态拦截**({@link #scanLogic})——把 - * 危险模式(禁用全局/确定性逃逸/死循环/condition 副作用)在编译前转成 validationErrors → repair 反馈, - * 而非靠 prompt 自觉。这是 new Function 不沙箱的现实缓解(对齐双评审 Critical 的边界化建议)。 - * - * 【接现有·零改下游】产出文本 → scaffoldNode 落 generated-factory.js → scripts/build.mjs(esbuild, - * 唯一构建脚本不动)→ bundle.iife.js → serve-and-play.sh + play.cdp.cjs 九门(harness 零改)。 - * - * 【为何「behaviors 带 JS 经数据串内联」】gameDefinition 内联为 JS 对象字面量,behavior.code 作字符串随之内联; - * 运行期 createRuntime 经 new Function 编译。JSON.stringify 完备转义;另把 `<` 转 `<`(保 inline-injection 安全, - * 防 提前闭合 host 页内联 /