M0 (product shell / user entry): /login page, app-shell nav with current user + role + logout, real project list (replaces hardcoded demoProjects), create-project + auto first-version, role-aware home entries. Auth uses native-form + 303 PRG redirect + HttpOnly huijing_api_token cookie; new proxies for auth(login/logout/me) and projects(create/version). M1 (creator flow): surface deterministic-generator demo label; switch prompt/save/compile routes from raw-JSON passthrough to PRG redirect back to workbench + status banner; 401/403 -> /login, empty-state create-version fallback. M1-T5 (per-version playable preview) deferred to M2 (Path A): verified blockers = stub logic compiler + no package-serving endpoint + tested S2 boundary; workbench honestly labels preview as a later capability and links the fixture as a clearly-marked platform sample (no orphan jump, S2 boundary untouched). Verification (@huijing/web): typecheck + lint + 88 unit tests + next build + git diff --check all green. End-to-end (DB-backed create/generate/save/compile) requires real Postgres and is not claimed verified in-sandbox. Docs: docs/agent-specs/2026-06-06-MVP用户可试用M0M1-执行版.md (execution plan + status), docs/agent-specs/2026-06-06-M1T5预览试玩-审阅版.md (M1-T5 review/decision), docs/memorys/2026-06-06-MVP可试用M0M1执行版.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
14 KiB
MVP 剩余清单与路线
生成时间:2026-06-05 状态快照:基于 git HEAD
98e2aad(S0-S5 已合并)及当前 session Web/WebGL playable demo slice。 受众:团队 + 未来 agent。 证据原则:本文只引用已有验证记录;未经验证的状态一律标注 not_started 或待确认。
1. 结论
当前可展示切片
Web playable demo slice,路由 /preview/simulation-fixture-v1,Canvas2D 默认渲染 + opt-in WebGL fallback。该切片是本 session 正在推进的工作,基于 S4 runtime smoke PASS 与 S5 mini-game static gate PASS 的基础上交付。
MVP 整体现状
| 阶段 | 状态 | 关键证据 |
|---|---|---|
| S0 harness | 完成 | git 6e363ae 起多个 feat/harness 提交,门禁 PASS |
| S1 app foundation | 完成 | git bba5e13,Task9 scope gate PASS |
| S2 creator workbench | 后端层完成;产品外壳层未实现 | git 8ffeba9-b4c17c8;注:合同/API/IR 编译器/scope gate 完成,但登录 UI/真实项目列表/创建项目/外壳导航从未实现,详见 2026-06-06-MVP可试用M0M1执行版 |
| S3 simulation slice | 完成 | git e81e433-76d2444,scope gate PASS |
| S4 web runtime | 完成 | runtime smoke PASS(23 files / 244 tests),见 2026-06-05-S4Task5运行冒烟.md |
| S5 mini-game conversion | static_validated 仅;import cert = No-Go | 三端 static gate PASS,DevTool import smoke 默认写 blocker,无 passed evidence |
| S6 publish-review-feed | not_started | — |
| S7 feedback/telemetry | not_started | — |
| S8 deploy-readiness | not_started | — |
| Web/WebGL playable demo | 本 session 进行中 | — |
WeChat/Douyin DevTools import certification = 硬 No-Go 门
DevToolImportEvidence.result="passed" 目前不存在。docs/evidence/devtool-import/ 目录内仅有 README.md,无任何 passed evidence 文件。这是 S5 import certification 和 S8 Go/No-Go 的前置硬门禁,不可绕过。
2. 已完成(S0–S5 + Web playable demo slice)
S0–S3:harness + foundation + creator workbench + simulation
- git 历史从
ba058fb(平台路线图)→e90bf2d(S3 phase-aware scope gate)→76d2444(S3 runtime backend presearch)完整覆盖。 - S0 harness 门禁通过,lifecycle validation baseline 已建立(
6e363ae)。 - S1 app foundation 完成,Task9 scope gate 通过(
9294101)。 - S2 creator workbench 合同、API、UI、IR compiler、阶段 scope gate 均完成。
- S3 simulation slice contracts、compiler、logic module、validator、consumer contract 均完成,scope gate PASS。
S4:Web runtime
- 任务链:scope gate → game package contract → web package builder → runtime SDK → preview runtime UI → runtime smoke。
- 全部 fresh spec review + quality review PASS,详见
docs/memorys/2026-06-05-S4Task*.md。 - runtime smoke:
runRuntimeSmokeWithPlaywrightPASS,244 tests,pnpm typecheck/lintPASS。 - S4 = Web runtime green,基础已具备 Web playable demo slice 推进条件。
S5:Mini-game conversion(static_validated only)
- 转换合同、平台适配器(wechat/douyin/kuaishou)、项目生成器、static gate 均完成并 PASS。
- 三端 simulation fixture static gate 结果:
wechat_minigame=static_validated,douyin_minigame=static_validated,kuaishou_minigame=static_validated(保留 KUAISHOU_GLOBAL_AND_CONFIG_SHAPE_UNKNOWN warning)。 smoke:devtool-import默认写DevToolImportBlocker,exit 1,无法生成 passed evidence。- S5 Task5 Task6 fresh review 双 PASS,但 S5 import certification 仍是 No-Go,详见
docs/memorys/2026-06-05-S5Task6最终验证.md。 - S4/S5 并行汇合验证 PASS,merge commit
98e2aad,详见docs/memorys/2026-06-05-S4S5并行汇合.md。
Web/WebGL playable demo slice(本 session)
- 基于 S4 runtime,在
/preview/simulation-fixture-v1暴露 Canvas2D 默认 + opt-in WebGL fallback。 - 该切片是当前 session 正在推进的工作,状态以实际验证结果为准,本文不超前声称 PASS。
3. 剩余阶段
S6:站内发布 / 运营审核 / 移动端 Feed
状态:not_started
P0 任务清单
| 任务 ID | 标题 | 文件路径 | 依赖 | 验证类型 |
|---|---|---|---|---|
| S6T1 | Define Contracts | packages/shared-contracts/src/publish-review-feed.ts |
S5 完成 | unit |
| S6T2 | Publish Gate | apps/api/src/modules/publish/ |
S6T1 | integration-db |
| S6T3 | Review Queue + Operator Actions | apps/api/src/modules/review/ |
S6T2 | integration-db |
| S6T4 | Mobile Feed API + UI | apps/api/src/modules/feed/ |
S6T3 | integration-db |
| S6T5 | Interactions + Share | apps/api/src/modules/interactions/ |
S6T4 | integration-db |
| S6T6 | Final Verify | — | S6T5 | unit |
并行分组
- Group A(独立):S6T1 可独立开始,只需 shared-contracts。
- Group B(串行):S6T2 → S6T3 → S6T4 → S6T5(依赖链,不可并行)。
- Group C(汇合):S6T6 依赖 S6T1-T5 全部完成。
验证分级
- unit 可在本环境运行:S6T1(合同 schema 测试)、S6T6(集成最终 gate)。
- integration-db 必须有真实 Postgres:S6T2 / S6T3 / S6T4 / S6T5 的 API 端到端测试。
S6 硬门禁
ReviewRecord状态为approved才能创建PublishedGame(creator 不能自审)。GamePackage.web.status=smoke_passed是提交发布的前置硬条件。- feed 查询结果不得包含
pending/rejected/unpublished状态游戏。 MiniGameProject绝不能成为 feed 可玩 item。- creator 不能审核自己提交的版本。
S6 P1 / 后置(不阻塞 P0)
- runtime 错误自动限制曝光规则。
- ML feed 排序算法。
- 评论、弹幕、粉丝体系。
- 渠道提审、广告、支付、结算。
S7:Feedback / Telemetry
状态:not_started
P0 任务清单
| 任务 ID | 标题 | 文件路径 | 依赖 | 验证类型 |
|---|---|---|---|---|
| S7-T1 | Telemetry contracts | packages/shared-contracts/src/telemetry.ts |
S6 完成 | unit |
| S7-T2 | POST /events/batch ingestion | apps/api/src/modules/telemetry/ + prisma |
S7-T1 | integration-db |
| S7-T3 | Minimal quality signals worker | apps/api/src/modules/feedback/ |
S7-T2 | integration-db |
| S7-T4 | Document deferred dashboards | docs/future/ |
— | manual-gate(文档) |
| S7-T5 | Channel readiness notes API + UI | apps/api/src/modules/channel-readiness/,apps/web operator page |
S7-T2 | integration-db |
| S7-T6 | Final verify | — | S7-T3, T5 | unit |
并行分组
- Group A(可并行):{S7-T1, S7-T4}。
- Group B(可并行,依赖 T1):{S7-T2, S7-T5}。
- Group C(串行):{S7-T3}(依赖 T2)。
- Group D(汇合):S7-T6。
验证分级
- unit:S7-T1(schema)、S7-T6(final gate)。
- integration-db:S7-T2 / T3 / T5。
- manual-gate(静态扫描):S7-T4(文档存在即满足)。
S7 硬门禁
- prisma migration 必须通过。
QualitySignal不能修改GameVersion/PublishedGame记录。ChannelReadinessNote只能引用 S5ConversionReport/DevToolImportEvidence/DevToolImportBlockerID;不能自造转换状态;不能替代ChannelReview。- P0 不能出现:
Monetization、GameDailyStats、CreatorDailyStats、ImprovementSuggestion。
S7 P1 / 后置(不阻塞 P0)
- 创作者单游戏基础看板、运营质量/错误/举报视图。
GameDailyStats、CreatorDailyStats聚合统计。- 简单规则建议(加载失败高、试玩低、留存低、举报高、互动高)。
- 数据保留 / 冷归档策略。
S8:Deploy Readiness / MVP Go-No-Go
状态:not_started
P0 任务清单
| 任务 ID | 标题 | 文件路径 | 依赖 | 验证类型 |
|---|---|---|---|---|
| s8-t1 | 环境配置校验 | scripts/validate-env.mjs |
— | unit(静态校验) |
| s8-t2 | 健康检查 | apps/api health endpoint,worker heartbeat,scripts/healthcheck.mjs |
— | unit |
| s8-t3 | demo seed | scripts/seed-demo.mjs |
integration-db | integration-db |
| s8-t4 | MVP smoke | scripts/smoke-mvp.mjs |
S0-S7 全部通过 + WeChat+Douyin DevToolImportEvidence.result=passed | browser |
| s8-t5 | 运维文档:监控+回滚 | docs/operations/ |
— | static-scan |
| s8-t6 | 验收 runbook + Go/No-Go | docs/evidence/mvp-acceptance/ |
s8-t1 ~ t5 全通过 | manual-gate |
并行分组
- Group A(可独立并行):{s8-t1, s8-t2, s8-t5}。
- Group B(依赖 DB):{s8-t3}(依赖 integration-db)。
- Group C(依赖全部前序):{s8-t4}(browser + DevTools passed evidence 必须就位)。
- Group D(汇合):{s8-t6}(手动 Go/No-Go 最终门)。
S8 Go/No-Go 规则(硬性)
Go 条件:同时满足以下全部:
wechat_minigameDevToolImportEvidence.result="passed"文件存在且 checksum 合法。douyin_minigameDevToolImportEvidence.result="passed"文件存在且 checksum 合法。- S0-S7 所有阶段证据链接完整。
- smoke-mvp 脚本 exit 0。
任意一项缺失、blocked、failed 或仅有 DevToolImportBlocker => No-Go,不得宣称 MVP ready。
S8 P1 / 后置(不阻塞 P0)
- 三平台真机 smoke(wechat/douyin/kuaishou device)。
- 渠道正式提审 / 审核通过。
- 广告、支付、结算生产配置。
- 大规模压测、多地域容灾、failover 演练。
4. 硬门禁(不可伪造)
以下门禁无法用任何代码、文档或推断替代,必须由真实工具产出真实证据:
| 门禁名称 | 触发阶段 | 证据要求 | 当前状态 |
|---|---|---|---|
| WeChat DevToolImportEvidence | S5 import cert / S8 | docs/evidence/devtool-import/wechat_minigame-*.json 中 result="passed",含真实 tool name/version/log/checksum |
No-Go(无文件) |
| Douyin DevToolImportEvidence | S5 import cert / S8 | 同上,douyin 平台 | No-Go(无文件) |
| ReviewRecord before PublishedGame | S6 | operator approved ReviewRecord 存在,且 creator != reviewer | not_started |
| smoke_passed before feed/submit | S6 | GamePackage.web.status=smoke_passed 写入 DB |
not_started |
| feed 不返回 pending/rejected/unpublished | S6 | feed API 测试 + 运行时断言 | not_started |
| MVP smoke exit 0 | S8 | scripts/smoke-mvp.mjs 实际运行 exit 0,需 browser + DB |
not_started |
| Go/No-Go 报告 | S8 | docs/evidence/mvp-acceptance/ 中明确区分真实跑通 / 静态验证 / 人工证据 / 未进 P0 |
not_started |
关于 S5 DevTools blocker 的说明:DevToolImportBlocker(result="blocked"/"failed")记录的是缺口和风险,解释了为何无法导入,但不能代替 DevToolImportEvidence.result="passed"。将 blocker 解读为通过证据属于违规。
5. P1 / 后置事项(按阶段汇总)
| 阶段 | P1 / 后置项目(不阻塞 P0 验收) |
|---|---|
| S6 | ML feed 排序;评论/弹幕/粉丝;渠道提审;广告/支付;runtime 错误自动降权策略 |
| S7 | 创作者/运营看板;GameDailyStats / CreatorDailyStats 聚合;ImprovementSuggestion 规则建议;数据归档 |
| S8 | 三端真机 smoke;渠道正式上架;广告/支付生产配置;多地域容灾;压测 |
6. 沙箱验证天花板
本环境(/root/games-development-ai,linux,node 可用)的验证能力边界:
可以产出真实证据的命令
pnpm lint
pnpm typecheck
pnpm test
pnpm check:s5-scope / check:s4-scope / check:workspace-scripts
pnpm run build:minigame -- --target all --fixture simulation
node --check <file>
git diff --check
需要真实 Postgres 的命令(本环境抛 PrismaClientKnownRequestError)
- S6-S8 的 API integration 测试。
- prisma migrate / seed 命令。
scripts/seed-demo.mjs和任何需要 DB 写入的冒烟脚本。
需要真实浏览器的命令(本环境 flaky)
runRuntimeSmokeWithPlaywright(S4 smoke 已有 unit wrapper 替代)。scripts/smoke-mvp.mjs(S8,需 browser + DB)。
需要真实开发者工具的操作(本环境无法模拟)
- 微信开发者工具 / 抖音开发者工具导入项目。
- 生成有效的
DevToolImportEvidence.result="passed"文件。
结论:在本沙箱内,lint / typecheck / unit / scope-gate / build:minigame 命令产出的证据是真实可信的。DB integration、live device、devtool import 必须在具备完整环境的真实机器上验证,不能在本沙箱伪造或推断为通过。
7. 建议推进顺序
当前优先:完成 Web/WebGL playable demo slice
本 session 正在推进,与 S6/S7/S8 无依赖冲突,可独立完成。
S6 启动条件
- S4 runtime smoke PASS(已满足)。
- S5 static gate PASS(已满足)。
- S5 import cert(DevTools passed evidence)不阻塞 S6 编码,但阻塞 S6 feed 将 mini-game artifact 用于任何"可玩"声称。
- S6T1(contracts)可立即开始,无 DB 依赖。
S7 启动条件
- S6 P0 完成(S7 下游于 S6 feed 和 interaction 事件)。
- S7-T1 和 S7-T4 可与 S6 后期并行。
S8 启动条件
- S6 + S7 P0 全部完成。
- WeChat + Douyin DevToolImportEvidence.result="passed" 必须在 s8-t4 之前就位,否则 smoke-mvp 强制 exit 1。
并行机会
当前 session
└── Web/WebGL playable demo slice(无阻塞)
S6 开始后
├── S6T1 contracts(unit,立即可做)
└── S6T2~T5(串行,需 DB 环境)
S6 完成后
├── S7-T1(unit,可与 S6 后期 overlap)
├── S7-T4(文档,可随时做)
└── S7-T2~T5(需 DB)
S7 完成后
├── s8-t1(unit,可提前)
├── s8-t2(unit,可提前)
├── s8-t5(文档,可随时做)
└── s8-t3(需 DB)
└── s8-t4(需 browser + DB + DevTools passed evidence)
└── s8-t6(手动 Go/No-Go 最终门)
依赖强制串行点
- S5 DevTools import cert → s8-t4(无法绕过,无法提前声称)。
- ReviewRecord → PublishedGame(S6 内部,运营必须先审核)。
- S0-S7 证据链 → s8-t6 Go/No-Go(所有阶段证据必须完整)。
本文档基于 git HEAD 98e2aad 和本 session 状态快照编写。下一个关键更新节点:Web/WebGL playable demo slice 完成后,或 S5 DevTools import cert 状态变更时。