diff --git a/docs/agent-specs/2026-06-19-生成平台架构演进-review.md b/docs/agent-specs/2026-06-19-生成平台架构演进-review.md new file mode 100644 index 00000000..5dfe1b01 --- /dev/null +++ b/docs/agent-specs/2026-06-19-生成平台架构演进-review.md @@ -0,0 +1,174 @@ +--- +date: 2026-06-19 +topic: 生成平台架构演进(多架构师综合) +status: review · 待创始人评审 +--- + +# 造梦AI 生成平台架构演进方案(多架构师综合 · review 版) + +> **产出方式**:5 位大厂级架构师(平台/编排 · 生成流水 · 质量验证 · 配置策略-基建 · 数据脊柱)各自**先读真实代码(file:line)→ 诊断 → 逐块 keep/optimize/refactor/rewrite + 迁移路径**,经独立对抗交叉评审(戳过度/不足/破闭环、剔除失实背书),平台总架构师综合;6c6g 大脑线编排 + 复核。 +> **承重论据已抽查属实(2026-06-19 复核)**:`contracts/prompts/registry.yaml` 存在 · 源项目持久层 `V18/V20` SQL 存在 · `landSourceQuietly/markSourceBuiltQuietly` 在 `DifyCallbackServiceImpl` 真调用 · `failureReason` 归桶 `llm_error` 确认。 +> **基准**:dev/2.0.0。**承原**:[[agentic编排-SAA]]、plan `2026-06-18-001`。**迁移序列挂入现有 plan,不另起 plan 编号。** + +## 1. 结论摘要 + +1. **现状病根不是"没建成",而是"机制已通、生成质量未达门 + 策略下沉进机制层造成多源漂移"。** SAA 16 节点裸图主干已合 dev/2.0.0、双证地基成立、九门确定性地板 + 救场阶梯 + checkpoint + 进程内回调全齐;真正的债集中在三类:① **弱契约多源漂移**(job/state 字符串键三处手工对齐、模型路由硬编码进 Java、trace 跨进程键集);② **生成质量中间态**(factory 默认 60% < 80% 门,gamedef 真结构化已双证未 cutover);③ **验收 oracle 的 Goodhart 风险**(出题=被考同源,latch 不分胜利/弃守终态)。 +2. **演进主线 = 单轨化 + 策略外置 + oracle 去自评闭环,三件事按"不破现有灰度闭环"的节奏分阶段做。** 不重写任何主干,只把硬编码的策略抽成数据契约、把跨进程对齐点锁成单一事实源、把验收信号补上独立 ground-truth——且所有新门**默认 flag-off 只落 trace**,达标率稳定后一行 flip(对齐 backend Tier0 范式)。 +3. **总判:大面积 keep,少量 optimize/refactor,零 rewrite。** 接法 A 裸图是接法 B(ReAct)的躯干、九门是该架构最大工程价值、源项目持久化已是一等公民(实证 V18/V20 + 真调用链已接,反掉了"持久层悬空"的误判)——这些全留。改的只是策略层外置与 oracle 加固,且都 additive + fallback 回落。 + +--- + +## 2. L0/L1 平台脊柱 + +### 2.1 闭环(L0,不变) +`创作(一句话)→ 生成(SAA studio 图)→ 预览/出包(engineBundle)→ 发布 → 审核 → game-feed → 试玩 → 互动/广告 → 收益 → 遥测 → 推荐优化`。这条全链已分段实证(M2/golden-loop/Tier-1 广度),本方案**不动闭环形状**,只深化"生成"这一段并锁住跨段契约。 + +### 2.2 子系统切分(L1,按模块边界=并行边界) +| 子系统 | 职责 | 当前载体 | +|---|---|---| +| **编排脊柱** | job→图→回调,框架可换接缝 | `GenerationDispatcher` + `SaaGraphDispatcher`(进程内) / `WorkerDispatchClient`(http) | +| **生成图** | 16 节点机制层(render…emit + 救场) | `SaaStudioGraph.assemble`(唯一布线源) | +| **生成节点/策略** | 节点实现 + 路由谓词 + prompt 装配 | `SaaStudioNodes` / `SaaGenNodes` / `SaaPrompts` | +| **验收地板** | 九门 harness(确定性,禁重写) | `build-from-source.mjs` / `serve-and-play.sh` / `play.cdp.cjs` | +| **源项目持久层** | 结构化源落库 + 血缘(改源不改包) | `game_source_project`(V18/V20) + `SourceProjectApi.land/markBuilt/markOrphan` | +| **成本/凭证层** | 模型计费唯一权威 | new-api(单一成本平面) | +| **策略数据契约** | prompt/模型/品类/gatespec 外置源 | `contracts/prompts/`(已建 registry.yaml) + 待补 models/category | + +### 2.3 跨系统契约(锁住,任何改动契约先行) +8 类契约保持。本方案**新增/强化三处单一事实源**(替代当前注释约定): +- **GenerationJob 边界 DTO**(替代 job 字符串键三处手工对齐); +- **models 策略文件**(替代 11 个 Java 模型名常量,**双轨共享、单一权威 + CI parity 守护**); +- **category-spec.json**(品类骨架 oracle,**Python/SAA 双轨共享的语言无关 JSON**,不能只在一侧建)。 + +### 2.4 数据架构 = 护城河 +护城河四层(数据/网络效应/资产/合规)中,**生成侧贡献"数据层"**:每次生成的 `trace_json`(失败真因、cacheHit、escalationEvents、门有效性)+ 源项目血缘 = 模型/门/救场调参的唯一证据源。当前最大的诊断盲区是 **failureReason 全归桶 llm_error**(§3.4 修)——修复后数据回路才能按真因聚合,这是数据驱动闭环的承重件。 + +--- + +## 3. 生成子系统深架构演进(钻到底) + +### 3.1 机制(代码)/ 策略(数据)分层 —— 核心矛盾的统一治理 +**病根**:策略下沉进机制层。三处倒置:模型路由(Java 常量)、prompt 正文(Java 字面量,且与 Python worker 双轨镜像)、品类骨架(design-agent 自产)。 + +**统一治理原则**:凡"换它不该重编译重部署"的,外置为数据契约;凡"涉及跨 Python/SAA 双轨"的,数据契约必须是**语言无关 JSON/YAML、两轨都读它、CI 卡 parity**——否则把"策略化"换成"新增双源漂移",是拆东补西(评审已戳穿此陷阱,见 §5)。 + +### 3.2 规格驱动生成 —— 现状是半成品,补"独立品类校验",不押单模型 +- 现状:`classify` 产 archetype + profile 三维(tick/input/progress),`design` 自产 gatespec。**这是"机制驱动→规格驱动"的过渡半成品**,classify 自评注释诚实标明"只引导不产代码"。 +- **裁定**:保留 classify/design 自产骨架的**生成路径**,但**验收 oracle 不能押在同一只待验模型的分类输出上**(W-G1 核心未知正是便宜模型连 ball.x/driver:none 都反复写错)。 +- **必做(去自评闭环一格未断的根因)**:category 分类必须有**独立于 design-agent 的交叉校验**——从 brief 关键词 / player-panel 视觉反推品类,与 design 自报品类比对,不一致即降权/拒发。这比"把出题点从写 gatespec 前移到选 category"更治本(否则只是自评闭环挪一格)。 + +### 3.3 九门 → 规格驱动验收的重设计(精确版,反对过度) +**保**:九门 harness 作机制地板(确定性 verdict.pass、禁重写、反 LLM 自评)——该架构最大工程价值,零理由动。 + +**重设计的边界(严格区分 must-fix 与镀金)**: + +| 项 | 裁定 | 理由 | +|---|---|---| +| 九门确定性地板 | **keep** | 反 Goodhart 核心不变量 | +| category-spec registry 当外部 oracle | **optimize(降级,非 refactor)** | 方向对但**不能用同一模型的分类输出当 oracle**;必须配 §3.2 独立校验,否则自评闭环只挪一格 | +| **latch 语义区分胜利终态 vs 弃守/超时终态** | **must-fix(P0,最要紧)** | 当前 latch 由系统强加(expectLatch 恒 true),`drainAfter` 弃守排空能逼出 gameover——空壳可蹭过 latch。这是 H 门承重件对"是不是题面要的游戏"零鉴别力的真口子,比加 selfAssessed 字段重要得多 | +| H/I 未声明即 pass:true(fail-open) | **must-fix** | 生产门控对 `driver:none / passthrough / H-SKIP` 产物**一律 fail-closed 拒发**,把纠偏落到门控不止于文档 | +| firstPlay 升独立硬门 + 阈值 flag | **降级/推迟(over-engineered)** | 成功率未到 80% 地板时给半成品镀金,违背创始人"defer 切产线、门交质量到 80% 一行 flip"。**只落 trace 观测,不建独立测量** | +| service.py 生产门控升级(规格门 ∧ firstPlay AND) | **must-fix:默认 flag-off** | 当前刻意宽门放量观测(开闸=2 门焊死放行/3 门 v0 只观测)。新增门若不默认 off 会立即收紧放行、掐断攒数据的灰度闭环。对齐 backend Tier0 flag 范式 | + +**Goodhart 可观测化(最小代价)**:把"模型靠 clickable 等运行时内置基元过门 vs 真写交互逻辑"的占比、player/nreview 自评与九门 verdict 的交叉一致性,都进 trace(additive 扩展位已有)。长期背离即告警——用数据积累"门的有效性"证据,不加评审舰队。 + +### 3.4 配置控制平面(infra 既可用,不另起炉灶) +- **prompt**:`contracts/prompts/registry.yaml` 已存在(实证)。把 gamedef 生成约定(GAMEDEF_SYSTEM 正文 + rt 面 idiom + 命名对齐)**提为 registry 版本化资产**,Java `GAMEDEF_SYSTEM` 与 worker prompt.py **均从该资产读、CI 卡 byte**。一举解 P0 split-brain + 坐实三段式缓存前缀(前缀 byte 一致才命中,spike 已证 76–93%)。 +- **模型**:11 个模型名 + per-role 采样面外置为 `models.yaml`/Properties,`Models.stage1()` 从配置加载、常量作 fallback。**硬约束**:指定单一权威(Java 读同一份 models.yaml 或 CI 校验 Java↔Python parity),否则换来跨语言模型路由漂移。 +- **品类**:`category-spec.json` 双轨共享 JSON(见 §3.2)。 +- **失败真因**:扩 `failureReason` 契约(加 `failureDetail` 子码:`max_repairs_exceeded`/`escalate_exhausted`/`bundle_missing_global_name`/`model_timeout`),让图内真因结构化进终态而非只进日志。**契约先行**(api-schemas/aigc.yaml → 回调 VO → 审核台读取侧),**注意 DB `failure_reason` 列宽 32 字符约束**,additive 不读即退现行。 + +### 3.5 agent 架构(代码机制 + 数据策略 + 接法 B 门内子 agent) +- **代码机制**:`SaaStudioGraph.assemble` 唯一布线源 + 救场阶梯条件边 + recursionLimit 推导硬刹车 —— **keep**,split-brain 防线有拓扑测试守护。 +- **数据策略**:gatespec/playSpec/sourceProject.schema/verdict.schema 作策略层数据契约 —— keep。 +- **接法 B(ReAct)门内子 agent**:按 plan U5,以 `ReactAgent.asNode` **增量替换 generate/repair 单发节点**,九门 verdict 作强制终止——evolve 不 rework,接法 A 是接法 B 躯干。**前置**:先做 §3.6 拆 `SaaStudioNodes` 单文件(1642 行节点+路由+RFC6901+IO 混居),否则接法 B 改造 blast radius 偏大。 +- **回退链 vs 救场升档语义盲区**:`generateNode` 内 U4 回退链静默切模型、不计 failCount、不入 escalationEvents,与图层 escalate 是两套机制。**must-fix(提到与 cutover 同期)**:append 轻量 `fallbackEvents` 入 trace——cutover 成本归因依赖"一次失败走了几层模型",盲区不补则 60% 门的成本侧不可信。 + +### 3.6 trace 抽取与文件拆分(去内联、可单测) +- `extractTraceQuietly` + 6 子方法(~280 行)从 896 行 dispatcher 抽出独立 `SaaTraceExtractor`(纯函数,补 snake→camel 单测)——**refactor**。**纠正失真背书**:其收益**仅是"纯函数可脱图单测"**,不是"闭合双 Java 实现漂移"(HTTP 路 trace 抽取在 Python worker `service.py:_extract_trace`,Java 侧不抽 trace);F5 bug 实在 `ReadinessScorer.scoreFirstPlay` 且已修,不能当抽取收益论据。 +- 拆 `SaaStudioNodes`:节点工厂 / 路由谓词 / RFC6901 工具 / giveup dump IO 分包(包内方法移动,单测护航零行为变更)——refactor,为接法 B 铺路。 + +--- + +## 4. 逐子系统 keep/optimize/refactor/rewrite 裁定表 + +| 子系统/部件 | 裁定 | 改什么 / 为什么 | +|---|---|---| +| `SaaStudioGraph.assemble` 唯一布线源 + 救场阶梯 + recursionLimit | **keep** | split-brain 防线 + 拓扑测试守护,最稳资产,零改 | +| `GenerationDispatcher` 接口 dispatch + http\|saa 双实现 | **keep** | 框架可换不变量,灰度已实证 | +| 进程内派发骨架(后台单线程跑图 + 短事务 + 进程内回调消灭 HTTP+HMAC)+ checkpoint + watchdog | **keep** | 决策正确且实证,抽走 trace 后自然瘦身 | +| 九门 harness + verdict 确定性裁定 | **keep** | 反 Goodhart 核心,最大工程价值 | +| 16 节点裸图(接法 A) | **keep** | 接法 B 躯干,evolve 不 rework | +| **源项目持久层**(V18/V20 + land/markBuilt) | **keep**(实证已接线,非"悬空") | 反掉误判:落库链已在 DifyCallbackServiceImpl 真调用(事务外层+source_hash 幂等);真实缺口=**version 血缘丰富度 + gamedef 路端到端验证**,降为 P2 | +| job/state 字符串键弱契约 | **optimize** | 固化为 `GenerationJob` record 作 dispatcher 边界 DTO,K_* 内部 Map 不动;消三处漂移源 | +| 模型路由(11 常量 + 采样面硬编码) | **optimize** | 外置 models.yaml + fallback 常量 + **CI parity 守护** | +| failureReason 归桶 llm_error | **optimize** | 扩 failureDetail 子码,契约先行,additive | +| factory\|gamedef 双产线(sourceMode) | **keep(演进态)+ 硬退役门** | 立里程碑:gamedef ≥80% → 切默认 → factory 退役 + 二分收敛;否则双轨变永久债 | +| prompt 双轨(Java GAMEDEF_SYSTEM ↔ worker prompt.py) | **refactor** | 提为 contracts/prompts 版本化资产、两轨读它、CI 卡 byte;解 P0 split-brain + 缓存前缀 | +| category 验收 oracle | **optimize(+独立校验)** | 不押单模型分类输出,加 brief/视觉反推交叉校验 | +| latch 终态语义 | **refactor(P0)** | 区分胜利终态 vs 弃守/超时终态 | +| 生产门控 fail-open 后门(none/passthrough/H-SKIP) | **optimize(fail-closed,默认 flag-off)** | 落到门控不止文档,但不破灰度闭环 | +| `extractTraceQuietly` 内联 | **refactor** | 抽 SaaTraceExtractor,纯函数可单测(narrow rationale) | +| `SaaStudioNodes` 单文件过载 | **refactor** | 拆包,为接法 B 铺路 | +| 回退链/升档语义盲区 | **optimize** | append fallbackEvents,与 cutover 同期 | +| Semaphore(1)+ 固定端口 4320/9222 串行门 | **keep(显式记债)** | harness 固定端口的合理短期取舍,规模化前不改(过早优化) | + +**rewrite:零项。** + +--- + +## 5. 跨域冲突裁决(总架构师拍板) + +1. **源项目持久化"悬空" vs "已一等公民"**(生成流水 P1-3 ↔ 评审)。**裁:已一等公民。** 实证 V18/V20 SQL 双副本 + `landSourceQuietly/markSourceBuiltQuietly` 在 DifyCallbackServiceImpl 真调用(事务外层)。原 P1-3 改判 P2,follow-up 从"补 V18 落库接线"改为"**补 base_version_id 血缘 + gamedef 路端到端验证已存在落库链**"——否则是为已有资产重复建设。 + +2. **trace 抽出的 rationale**(平台域 ↔ 其评审)。**裁:按 narrow rationale 接。** 抽出收益仅"纯函数可脱图单测",删除"闭合双 Java 实现漂移""F5 在 extractor 可修"两条失实背书(HTTP trace 在 Python 侧;F5 在 ReadinessScorer 且已修)。 + +3. **category-spec registry 当 oracle**(质量域 refactor ↔ 其评审)。**裁:降级为 optimize + 强制独立校验。** 不能把验收 oracle 押在同一只待验模型的分类输出上;且 category-spec.json 必须**双轨共享语言无关 JSON**,否则把"三处重复"变"四处"。 + +4. **firstPlay 升独立硬门 + 阈值 flag**。**裁:推迟(over-engineered)。** 成功率未到 80% 地板前只落 trace 观测,对齐创始人"门交质量到 80% 一行 flip"。 + +5. **新门是否立即生效**。**裁:一律默认 flag-off 只落 trace。** 含 service.py 规格门 AND 条件——当前刻意宽门放量观测(开闸 2 门焊死/3 门 v0),收紧会掐断攒数据的灰度闭环。达标稳定后一行 flip。 + +6. **模型/prompt 外置后的双源风险**。**裁:外置必须配单一权威 + CI parity 守护**,否则"策略化"沦为"跨语言漂移",违背单一成本层/字节对齐不变量。 + +7. **gamedef 兑现度浅(build 经 iife 中转)**。**裁:keep 接缝(降 blast radius),登记 follow-up。** "装配成 factorySrc、下游零改"是刻意把范式风险关在 generate-validate 一段,cutover 前不重做;源项目可寻址/可 diff 的优势在 modify/extend 真上线前补血缘即可。 + +--- + +## 6. 迁移序列(对齐 plan-001/002,不另起炉灶) + +> 已有:plan `2026-06-17-001`(backend Tier0 生成主线)、`2026-06-18-001`(gen-lifecycle + Tier-1 广度)、`2026-06-18-002`(Tier-1 广度后端)。本序列**挂入这些 plan 的验收**,不新建 plan 编号。关键路径标 ★。 + +- **阶段 0(零风险·立桩)**:job 核心字段名 + state K_* 键集 + trace camelCase 键集收敛常量来源。**切分**:Java 内键名(可收敛常量类)vs Java↔Python trace 键(只能靠契约/测试夹具对齐,**不能并入 Java 常量类**——评审戳穿的假锚)。纯重命名,无行为变化。 +- **阶段 1(refactor·测试保障)**:抽 `SaaTraceExtractor` + 拆 `SaaStudioNodes` 分包,补单测。dispatcher 896→~600 行。零行为变更。 +- **阶段 2 ★(refactor·解 P0)**:gamedef prompt 约定提为 contracts/prompts 版本化资产,Java + worker 两轨读它、CI 卡 byte。**关键路径:split-brain 未解前,不得拿 worker 线数据做 cutover 决策**(worker 当前 119 行纯 iife、零 gamedef 路,此 P0 是"潜在"非"已激活",但 cutover 依赖它)。 +- **阶段 3(optimize·契约先行)**:① models 外置 + CI parity;② failureReason 扩 failureDetail 子码(注意列宽 32);③ GenerationJob record 边界 DTO(图内 Map 不动,http/saa 同步切,灰度开关保非破坏)。全 additive + fallback 回落。 +- **阶段 4 ★(质量加固·全 flag-off 落 trace)**:① latch 终态语义区分(P0);② category 独立交叉校验;③ Goodhart 可观测化(基元占比 + 自评/门交叉一致性);④ fallbackEvents 入 trace。**全默认 off,只观测,不改放行行为。** +- **阶段 5 ★(里程碑门·cutover)**:gamedef 成功率达 80% 门 → 切默认产线 → 退役 factory 二分 → fail-closed 门 flip → modify deterministic"从源真构建"闭合(挂 B7/引擎 E2)。把演进双轨 + 半成品 modify 收敛为单轨稳态。**依赖:阶段 2(prompt 同源)+ 阶段 4(质量信号可信)+ 80% 达标率。** + +**关键路径**:阶段 2(prompt 同源解 split-brain)→ 阶段 4(质量信号可信)→ 阶段 5(cutover)。阶段 0/1/3 可与之并行(独立资源)。 + +--- + +## 7. 风险与回滚 + +| 风险 | 缓解 | 回滚 | +|---|---|---| +| 模型/prompt/category 外置成新双源漂移 | 单一权威 + CI parity/byte 卡门 | 配置缺失回落常量;worker 不引用即回 iife-only | +| 新门收紧放行掐断灰度闭环 | 全部默认 flag-off 只落 trace,达标后 flip | trace 字段 additive,缺键省略字节兼容 | +| latch 修复误伤现有过门样本 | flag-off 观测期对比新旧 latch 判定差异 | 不 flip 即维持现行 latch | +| category 独立校验误拒正常样本 | 先降权观测、不直接拒发,统计误拒率 | 关 flag 退回 design 自报 | +| failureReason 契约改动破审核台 | 契约先行 + DB 列宽校验 + additive | 消费侧不读子码即退现行 | +| record 化触 http/saa 两实现 | record 仅边界 DTO,图 state Map 不动 | 删 record 退回 Map.get | +| gamedef cutover 后 factory 退役回归 | 80% 门 + 端到端验证为前置硬门 | 保留 sourceMode 开关一个 release,可切回 factory | +| 串行门吞吐天花板=1(已知债) | 本轮不改(过早优化),显式记 follow-up | N/A | + +**验证状态**:本方案为架构裁定文档,未改代码。已实证锚点:V18/V20 SQL + land/markBuilt 真调用链(反掉持久层悬空误判)、failureReason 归桶 llm_error、contracts/prompts/registry.yaml 已存在(prompt 外置非 greenfield)、SAA 四文件路径。**未验证待 Mac 落地时确认**:worker prompt.py / models.yaml 在 wg1 外部 worker 树(本仓不可见),其"纯 iife、零 gamedef 路"的论断采信评审实证,阶段 2 落地前需 Mac 侧复核。 + +相关文件(绝对路径): +- `/root/games-development-ai/game-cloud/game-module-aigc/game-module-aigc-server/src/main/java/com/wanxiang/huijing/game/module/aigc/saa/{SaaStudioGraph,SaaStudioNodes,SaaGenNodes,SaaGraphDispatcher}.java` +- `/root/games-development-ai/game-cloud/game-module-aigc/game-module-aigc-server/src/main/java/com/wanxiang/huijing/game/module/aigc/service/callback/DifyCallbackServiceImpl.java`(land/markBuilt 真调用链 L96/L161/L186/L212/L237) +- `/root/games-development-ai/huijing-server/src/main/resources/db/migration/V18.0.0__create_game_source_project.sql` + `V20.0.0__game_source_project_add_uk.sql` +- `/root/games-development-ai/contracts/prompts/registry.yaml`、`/root/games-development-ai/contracts/agent-loop/{source-project,verdict,game-design}.schema.json` +- 对齐 plan:`/root/games-development-ai/docs/plans/2026-06-17-001-*.md`、`2026-06-18-001-*.md`、`2026-06-18-002-*.md` \ No newline at end of file diff --git a/docs/agent-specs/_index.md b/docs/agent-specs/_index.md index f3e6ebb6..6ec99253 100644 --- a/docs/agent-specs/_index.md +++ b/docs/agent-specs/_index.md @@ -25,6 +25,7 @@ - `2026-06-17-多session分工与任务总账.md` — 三阶段/两开发线/增量集成 + 角色分权(Mac 实现 / 6c6g 独立评审+真机验 / studio 前端);取代 `生成引擎-并行编排`(模块切分版) ### 生成主线设计链(现行架构) +- ★ `2026-06-19-生成平台架构演进-review.md` — **多架构师综合·架构演进总方案(review·待创始人评审)**:**零 rewrite/大面积 keep**;病根=策略下沉机制层(多源漂移)+生成质量未达门+验收 oracle Goodhart;演进=策略外置(数据驱动·prompt/模型/品类提为契约)+九门去自评闭环(**latch 胜利/弃守区分=P0**+fail-closed)+单轨化,全程 flag-off 不破灰度;迁移序列挂 plan-001/002 不另起。承 [[agentic编排-SAA]]+固定架构设计链。 - `2026-06-17-固定游戏架构与SAA-agentic-studio-execution.md` — **ACTIVE · 当前生成主线架构 execution**(固定游戏架构=轻量声明式领域模型+2D 适配器 / SAA studio 9+1+1 agent / 8 契约 / 救场阶梯 / 缓存三段式;**两 spike 已绿**:缓存经 new-api 透传 76-93%、classify tickModel 100%) - `2026-06-17-固定游戏架构与SAA-agentic-studio-review.md` — 配套**设计 review**(含深析 §10 + 创始人决策;承原 v2 生命周期原则) - `2026-06-12-游戏生成系统总体架构-review.md` — 生成系统总体架构纲领(三级生成 / W-G0~G4 路线 / 意图矩阵)