games-development-ai/docs/plans/2026-06-19-001-feat-coredone-验收闭环执行-plan.md
lili 4e801d5e8a docs(reframe收口): 生成引擎 reframe 全层 doc-sync + 统一执行 plan + 上线主计划 SoT + §6.8 双评审
双查一致性(Codex+Opus)→ 修问题 → 出 plan 全链收口。

修问题(reframe 全活层 doc-sync · 框架统一 AgentScope / 三档按 AI 深度 / 去超休闲 /
A-model 写真 src/ / tier2 spike accept · n=5 收敛环 / 预算闸 <¥10·<¥50):
knowledge 三件套 + 顶层图说 00/01/02/05 + 6 域 README + 5 mvp 账本 + skill·workflow +
agent-specs(_index / 演进路线降留痕);系统性死链 自治富游戏引擎.md → 运行时 SoT repoint(7 档)。

AGENTS.md:§2 收敛上线主计划 SoT、§3.1 入口自审 reframe 对齐。

出 plan:① 生成引擎统一执行计划(新建 · 统一三档 · 吸收退役 06-18-001/06-19-001/003);
② 4 份重复 plan 退役/并入/去两线 banner;③ 可行性方案16周 就地升格为项目上线主计划 SoT(canonical)。

§6.8 双评审(Codex+Opus)6 必修已修:WU-A 真实拓扑+JS留+迁移契约 / A11 孤儿接缝(①WU-B↔③阶段三)
/ 三档拆清 / ③ 过度表述 / 人办清单 n≥30→n=5 / 死链。

tier2/HANDOFF.md:n≥30→n=5 + agentscope-runtime→2.0.2 Workspace doc-sync banner。

①③ status=草稿·双评审已过·待创始人确认 F1(WU-A 迁移归属)后转正式。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 12:14:25 -07:00

232 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "feat: plan003 Plan B — Phase-1 core-done 验收闭环执行(引擎资产 + 验收 harness + 广度/前端真验证)"
status: 已并入统一执行 plan2026-06-25
date: 2026-06-19
type: feat
origin: docs/brainstorms/2026-06-19-plan003-phase1验收闭环-requirements.md
---
# feat: plan003 Plan B — Phase-1 core-done 验收闭环执行
> **并入 banner2026-06-25** 本 plan 原是 Plan A(gen-done = SAA)∧ Plan B(core-done)双线。Plan A 随 SAA 退役已 moot;Plan B 的 core-done 验收闭环(九门 + 广度 / 前端真验证)已并入统一执行 plan ① 的 WU-C(§5.4 三层校验与九门)/ WU-F(验收预算门)。本 plan 降留痕。现行口径见 ① `docs/plans/2026-06-25-生成引擎统一执行计划-AgentScope三档-plan.md` 与运行时 SoT `docs/architecture/架构/生成引擎/agentic运行时架构图说.md`。
> **双线拆分**:本档 = Plan Bcore-done。Plan Agen-done = 003-U1 用对 M3 + 003-U2 flip在另一 sessiongamedef-qc lane并行,不依赖本档。本档与 Plan A **代码面不相交**Plan B 拥 `gd-runtime`/前端/验收层;Plan A 拥 SAA java/worker python;唯一耦合 = 本档 Phase 2/3 的 game-quality 门**消费 Plan A 产出**(单向、末段),及 mini-desktop e2e 串行排队。
## 摘要
把验收闭环需求档落成 **core-done 执行**:建/接各门 harness(复用 nine-gate `play.cdp.cjs` 四件套 / CDP 走查 / staging-ops / 已合的 003-U1 e2e 工具)、引擎资产渲染(原 003-U5)、广度/前端真验证,再做双里程碑收口。**Plan-A 依赖步骤后置**:Phase 1 全独立(可并行 fan-out),Phase 2 gated on gen-done 产出,Phase 3 最终收口。
## 问题背景
总账诚实口径:plan002 前端 + 广度后端多停在「build 绿 + mock + 代码评审」,真验证(staging + mini-desktop CDP + 三跨 e2e)= open;引擎资产渲染(003-U5)未做且 `gd-runtime``GAMEDEF_KEYS` strip 掉 assets = 死代码。core-done 要把这些 open 收成真证据 + 补齐资产渲染,作 Phase-1「done」的非生成半边。生成半边(gen-done)归 Plan A。
## 关键技术决策KTD
1. **本档 = 验收/收口执行层 + 引擎资产**,不重排 Plan A 的生成/prompt 开发(消费其产出)。
2. **`gd-runtime` 整面归本档**(U1):解 plan003「U5 ↔ U1 共面、同 owner 串改」冲突——Plan A 的 remaining 语义走 DESIGN_SYSTEM java,本档独占 `gd-runtime`/`build-from-source`,两面零撞。
3. **复用现成 harness 不另起**:nine-gate `play.cdp.cjs`(R4/R9 划界)、`ui-walkthrough-cdp`(R5/R7/R8 CDP)、`staging-ops`+`smoke-test.sh`(R3/R8 staging)、`SaaFullGraphE2eTest`(R4 经我建的 003-U1 工具)。
4. **依赖排序 = 独立先、gen-依赖后**:Phase 1 六单元无 Plan A 依赖,执行期 fan-out 成并行后台 worktree 子代理;Phase 2/3 的 game-quality 门(feed 真玩/rubric/M0 core/最终验收)gated on gen-done。
5. **rubric 与九门划界**(R9):九门已客观覆盖项(F/I/H/control)不重打,rubric 只补九门测不到的设计完整性层(资产/玩法目标),资产对位一票否决。
## 高层技术设计HTD— 阶段依赖
```mermaid
flowchart TB
subgraph P1["Phase 1 · 独立(无 Plan A 依赖,可并行 fan-out)"]
U1["U1 引擎资产渲染 + asset 孤儿闭合"]
U2["U2 审核→发布纵切 e2e"]
U3["U3 经济赋余额→C端三跨+幂等"]
U4["U4 广度域抽检 harness"]
U5["U5 8页 CDP 走查 harness"]
U6["U6 smoke 5链路 staging 真绿 + R3 reframe"]
end
subgraph P2["Phase 2 · gated on gen-done + U1"]
U7["U7 设计完整性 rubric 评分"]
U8["U8 创作→生成→feed真玩 + 资产可见"]
U9["U9 M0 core 联合验收门"]
end
subgraph P3["Phase 3 · 最终收口"]
U10["U10 双里程碑收口 + 最终 Phase-1 验收"]
end
GenDone["Plan A · gen-done(≥80% + flip)"]
U1 --> U7
U1 --> U8
GenDone -.消费产出.-> U7
GenDone -.消费产出.-> U8
GenDone -.消费产出.-> U9
U8 --> U9
P1 --> U10
P2 --> U10
GenDone -.-> U10
```
## 需求追溯
| 需求(origin) | 单元 | 阶段 |
|---|---|---|
| R11 资产可见 / 003-U5 引擎资产 + T3 | U1 | 1 |
| R5 审核→发布 | U2 | 1 |
| R6 经济赋余额→C端+幂等 | U3 | 1 |
| R8 广度抽检 | U4 | 1 |
| R7 8页走查 | U5 | 1 |
| R3 smoke 5链路 | U6 | 1 |
| R9 rubric | U7 | 2(gated) |
| R4 feed真玩 + R11 in-context | U8 | 2(gated) |
| 003-U3 M0 core | U9 | 2(gated) |
| R10 总判 / 003-U4 最终验收 | U10 | 3 |
> Plan A 落的:R1/R2(gen-done)+ T1/T2(回退同契约 / flip 两步)。本档 Phase 2/3 消费其 ≥80% 产出。
---
## 实现单元
### Phase 1 — 独立单元(无 Plan A 依赖,执行期可并行 fan-out
#### U1. 引擎资产渲染 + asset 孤儿闭合(原 003-U5 + T3 reconcile
- **Goal**:gd-runtime 支撑带美术的简单游戏——六类资产 `ref→GamePackage.assets→drawImage/audio` 渲染链路 + `GAMEDEF_KEYS` 纳入 assets(消死代码)+ `drawEntity` 支持 `shape:'sprite'`;R11 代理判据 = 素材 ref 可识别特征在 play 截图比对命中。
- **Requirements**:R11;origin 003-U5;跨档 T3(reconcile plan003 003-U5 独立门 ↔ R11 嵌入判据,以 R11 代理判据为最终口径)。
- **Dependencies**:无(引擎 js 独立);**本单元独占 gd-runtime 整面**(解共面冲突,Plan A 不碰)。
- **Files**:`game-runtime/src/host/gd-runtime.js``game-runtime/src/host/build-from-source.mjs``game-runtime/src/host/build-from-source.test.mjs`、渲染器。
- **Approach**:`GAMEDEF_KEYS` 纳入 assets + `drawEntity` 经受控面加载 sprite,**或**把 asset 注入移到 validate 装配前(二选一,消「validate 后 merge=永不被消费」死代码);六类资产(sprite/character/effect/scene/ui/music)逐类 `ref→draw`;4 短板(文本HUD/grid/CCD/drag)先核差分勿重造。
- **Patterns**:`.agents/skills/game-e2e-cdp-harness.md` §5-6(引擎掌帧/能力接线像素门);现 `gd-runtime`/`build-from-source`;plan003 003-U5 六类资产逐类验收门。
- **Test scenarios**:happy `build-from-source` 单测断言 sprite 实体产 `drawImage` 调用 + 截图非空;六类资产逐类各 1 demo `ref→assets→draw` 真渲染 + 截图;**Covers R11** 端到端孤儿闭合(`002-U6` 选用素材 ref 特征在 play 截图比对命中,非"非空即过");edge 缺资产/错 ref 兜底;4 短板逐项 demo。
- **Verification**:`build-from-source` 单测绿 + 六类资产 demo 各截图 + 孤儿闭合截图(特征命中)+ `game-runtime` 构建绿。
#### U2. 审核→发布纵切真机 e2eR5
- **Goal**:admin 审核通过→`game_project` 置发布态 + `game_feed_rank` 写入(同事务),CDP + DB 行级证据。
- **Requirements**:R5。
- **Dependencies**:无(plan002 admin 审核台已建,本单元真验证)。
- **Files**:验收脚本(game-admin CDP 走查 + DB 断言);无 prod 改(除非走查逮缺陷)。
- **Approach**:复用 HJ-FE-WALK admin `/wanxiang/review` 走查范式(接 staging),审核通过→DB 行级核 status + feed_rank 同事务。
- **Patterns**:`.agents/skills/ui-walkthrough-cdp.md`;总账链路②已闭合先例(2026-06-11 链路②波)。
- **Test scenarios**:happy 审核通过→`status=4` + `game_feed_rank`(zone,status1)写入;驳回路;权限 RBAC;空队列。
- **Verification**:CDP 截图(队列减项)+ DB 行级实证。
#### U3. 经济赋余额→C端三跨 + 幂等R6
- **Goal**:admin 赋余额→`trade_flow` 入账 + `trade_account` 余额增 + C 端余额显示变;同 bizNo 重投不二次入账。
- **Requirements**:R6。
- **Dependencies**:无(trade 成熟 + plan002 U10 赋余额前端)。
- **Files**:验收脚本(admin + C 端 CDP + DB 断言 + API curl)。
- **Approach**:三跨 = 前端 CDP(C 端余额变)+ 后端 API(同 bizNo 幂等返 200)+ DB(`trade_account` 余额行 + `trade_flow` 流水行);同 bizNo **重复投递一次**断言不二次变动。
- **Patterns**:`deploy/smoke-test.sh` 链路④;trade 幂等(uk_source 逐笔 / 余额 CAS)。
- **Test scenarios**:happy 赋余额三跨;**幂等** 同 bizNo 重投不二次入账;赋订阅→C 端查态;权限 RBAC;审计日志(赋值可溯)。
- **Verification**:三跨证据(CDP+API+DB)+ 幂等断言 HOLD。
#### U4. 广度域抽检 harnessR8
- **Goal**:社区 / 素材 / admin 运营 各:关键 API 200/code=0 + 单测绿 + ≥1 CDP 页抽检。
- **Requirements**:R8。
- **Dependencies**:无(plan002 广度已建)。
- **Files**:抽检脚本(API curl + 各域 1 CDP 页)。
- **Approach**:定每域 CDP 页(解原「留待规划」):社区→排行/评论页;素材→素材中心页;admin→经营看板页。抽检证据,**不逐域三跨 e2e**;本组证据可滚动累计。
- **Patterns**:`deploy/smoke-test.sh` envelope 检;`.agents/skills/ui-walkthrough-cdp.md`
- **Test scenarios**:各域关键 API 200/code=0 + 空数据 + 权限/归属隔离;各域 1 CDP 页关键元素渲染。
- **Verification**:每域三件(API/单测/CDP 抽检)就绪即冻。
#### U5. 8页 CDP 走查 harnessR7
- **Goal**:8 页真数据走查,**零未捕获异常 + 零 5xx/关键接口 4xx + 每页关键元素/数据渲染断言**(非"控制台零 error")。
- **Requirements**:R7。
- **Dependencies**:无(play 页本阶段用 seed 游戏;SAA 生成游戏走查在 U8)。
- **Files**:走查脚本(CDP,8 页)。
- **Approach**:studio 创作 / feed / play / admin 审核 / admin 运营 / 素材中心 / 玩法中心 / 创作者主页;某页发布前不可达则标 `skipped`+原因,不自动判 B 不过。
- **Patterns**:`.agents/skills/ui-walkthrough-cdp.md`;HJ-FE-WALK-001。
- **Test scenarios**:每页关键元素/数据渲染断言;零未捕获异常;零 5xx/关键 4xx;skipped 路记原因。
- **Verification**:8 页截图 + 断言(skipped 页注原因)。
#### U6. smoke 5链路 staging 真绿 + R3 reframeR3
- **Goal**:`deploy/smoke-test.sh` 五条业务链路 staging 真绿(含 `--deep` 入队 200/code=0);明示 **R3 = 基础设施/链路就绪门,不代理 R1**(对 dispatcher=http/saa 同绿)。
- **Requirements**:R3。
- **Dependencies**:无(staging 在线)。
- **Files**:`deploy/smoke-test.sh`(若需补口径注释)、运行记录。
- **Approach**:跑 smoke 默认 + `--deep`;确认五链路绿;记录 R3 不作生成路证据(评审 P0-1)。
- **Patterns**:`.agents/skills/staging-ops.md`;`deploy/smoke-test.sh`
- **Test scenarios**:五链路逐项 PASS;`--deep` 入队 200/code=0;任一 FAIL 归因。
- **Verification**:`SMOKE_VERDICT=PASS`
---
### Phase 2 — gated on gen-donePlan A ≥80%+ U1 资产
#### U7. 设计完整性 rubric 评分R9
- **Goal**:rubric(5 项 ×0-2:资产对位[一票否决]/玩法目标完整/反馈充分/难度/内容非退化)对 Plan A 的 ≥80% 批抽 **8 款**人工逐项打分,**均分 ≥1.4 且 资产对位 ≥1**
- **Requirements**:R9。
- **Dependencies**:**Plan A gen-done(≥80% 批)+ U1(资产渲染)**。
- **Files**:rubric 评分表/记录(`docs/agent-specs/` 或 evidence 目录)。
- **Approach**:与九门划界——F/I/H/control 引用不重打,rubric 只补九门测不到层;人工(创始人或指派)亲玩/观玩打分。
- **Test scenarios**:Test expectation: none —— 评分流程,非代码单元;交付 = 打分协议 + 8 款评分表。
- **Verification**:8 款评分表 + 均分 ≥1.4 + 资产对位项无 0。
#### U8. 创作→生成→feed真玩纵切 + 资产可见R4 + R11 in-context
- **Goal**:一句话经 SAA 路生成→发布→feed 真玩到终局,资产可见。
- **Requirements**:R4、R11。
- **Dependencies**:**Plan A gen-done + U1 资产**;mini-desktop(与 Plan A e2e 串行排队)。
- **Files**:e2e 脚本(`SaaFullGraphE2eTest` / `play.cdp.cjs` + feed CDP)。
- **Approach**:最小断言集 = CDP 启动帧(非空 canvas)+ 交互后状态截图 + `game_project` ≥ published + 遥测 `session_start`/终局事件;用 SAA 路生成的游戏;资产经 U1 比对命中。
- **Patterns**:`game-runtime/games/_wg1-gen/_shared/play.cdp.cjs` nine-gate;`SaaFullGraphE2eTest`;003-U1 e2e 工具。
- **Test scenarios**:**Covers R4** feed 真玩到终局 + CDP 截图 + 落库/遥测事件;**Covers R11** 资产特征比对命中;edge 生成失败就地降级。
- **Verification**:CDP 四件套 + DB/遥测行。
#### U9. M0 core 联合验收门003-U3
- **Goal**:M0 core e2e = 一句话真生成可玩游戏 + 三契约(API/dispatcher/manifest)对齐。
- **Requirements**:origin 003-U3。
- **Dependencies**:**Plan A gen-done + U1 + U8**;mini-desktop。
- **Files**:集成验收(无新文件);挂总账 M0 里程碑追踪。
- **Approach**:mini-desktop CDP 一句话端到端 + 三契约核;M0+(入 feed/审核)随就绪联合验。
- **Test scenarios**:Test expectation: none —— 集成验收门;交付 = M0 core e2e 证据。
- **Verification**:M0 core e2e 过 + 三契约对上。
---
### Phase 3 — 最终收口(全依赖)
#### U10. 双里程碑收口 + 最终 Phase-1 验收R10 / 003-U4
- **Goal**:`core-done` = U1U9 证据冻;`Phase-1 done = gen-done ∧ core-done`;创始人签核;最终回归。
- **Requirements**:R10;origin 003-U4。
- **Dependencies**:**U1U9 + Plan A gen-done**。
- **Files**:收口记录 + `docs/mvp/MVP进度总账.md` 回填。
- **Approach**:收口口径 = R1/R2/R4/R5/R6 同一运行窗口(≤2 工作日)收齐 + R8 滚动累计 + 创始人 24h 签核;最终回归 = `deploy/smoke-test.sh` 绿 + 8 页 CDP 走查真数据 + 简单游戏 e2e + 经济 e2e;M1/M2/M3 域逐项绑 002 对应 unit + 证据。
- **Test scenarios**:Test expectation: none —— 最终回归/收口门。
- **Verification**:全过 = **Phase-1 done**(gen-done ∧ core-done 各自打勾 + 总判签核)。
---
## 范围边界
**Deferred to Follow-Up Work**
- 广度域逐域三跨 e2e(本档只抽检);MQ 异步化、best-of-N。
**非本档(归他处)**
- gen-done = Plan A(003-U1 用对 M3 + 003-U2 flip)+ T1/T2 跨档 TODO。
- 性能/可用性轴(feed 首屏 P75<3s / 可用性 99.5%)延后 Phase-2(风险接受, origin)。
- 真广告/真支付/实名/ICP(日历闸门)= mock;3D/Cocos/复杂游戏(P2/P3)。
## 依赖与前置
- **Plan A(gen-done)**:Phase 2/3 game-quality (U7/U8/U9/U10)消费其 80% 产出(单向末段)。Plan A 另落 T1(回退同契约实证)、T2(flip 两步消 R1R2 循环)。
- **mini-desktop**(九门 e2e + 端口 4320/9222 + flock):U8/U9/U10 e2e Plan A 量测**串行排队**。
- 003-U1 e2e 工具(已合 `dev/2.0.0`)、`NEWAPI_KEY`(`docs/内网凭据与端点.md`)。
- Phase 1 真验证前提:plan002 前端(U8/U9/U10)`VITE_API_BASE`staging
## 风险
- **R1 game-quality 门等 gen-done**:Plan A 80% 可达性未证(v3 用法错为主因但 n=5)→ U7/U8/U9 收口时点不定缓解:Phase 1 全独立先冻,gen-done 到再跑 Phase 2
- **R2 gd-runtime owner**:本档独占 gd-runtime,Plan A DESIGN_SYSTEM—— Plan A 误改 gd-runtime 则冲突缓解:Plan A prompt 已铁律标注
- **R3 mini-desktop 串行瓶颈**:两线 e2e 排队;缓解 = flock 单实例锁 + 错峰
## 来源
- `docs/brainstorms/2026-06-19-plan003-phase1验收闭环-requirements.md`(origin, §6.8 双评审)。
- `docs/plans/2026-06-18-003-feat-gen-quality-converge-and-m0-integration-plan.md`(003-U3/U4/U5)。
- `.agents/skills/{game-e2e-cdp-harness,ui-walkthrough-cdp,staging-ops,saa-graph-orchestration}.md`
- `deploy/smoke-test.sh`;`docs/mvp/MVP进度总账.md`