games-development-ai/docs/memorys/2026-06-05-MVP剩余清单与路线.md
zizi 14748491fe feat(web): add M0 product shell and M1 creator-flow wiring
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>
2026-06-06 01:55:47 +00:00

14 KiB
Raw Blame History

MVP 剩余清单与路线

生成时间2026-06-05 状态快照:基于 git HEAD 98e2aadS0-S5 已合并)及当前 session Web/WebGL playable demo slice。 受众:团队 + 未来 agent。 证据原则:本文只引用已有验证记录;未经验证的状态一律标注 not_started 或待确认。


1. 结论

当前可展示切片

Web playable demo slice路由 /preview/simulation-fixture-v1Canvas2D 默认渲染 + 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 bba5e13Task9 scope gate PASS
S2 creator workbench 后端层完成;产品外壳层未实现 git 8ffeba9-b4c17c8:合同/API/IR 编译器/scope gate 完成,但登录 UI/真实项目列表/创建项目/外壳导航从未实现,详见 2026-06-06-MVP可试用M0M1执行版
S3 simulation slice 完成 git e81e433-76d2444scope gate PASS
S4 web runtime 完成 runtime smoke PASS23 files / 244 tests2026-06-05-S4Task5运行冒烟.md
S5 mini-game conversion static_validated 仅import cert = No-Go 三端 static gate PASSDevTool 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. 已完成S0S5 + Web playable demo slice

S0S3harness + foundation + creator workbench + simulation

  • git 历史从 ba058fb(平台路线图)→ e90bf2dS3 phase-aware scope gate76d2444S3 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。

S4Web 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 smokerunRuntimeSmokeWithPlaywright PASS244 testspnpm typecheck/lint PASS。
  • S4 = Web runtime green基础已具备 Web playable demo slice 推进条件。

S5Mini-game conversionstatic_validated only

  • 转换合同、平台适配器wechat/douyin/kuaishou、项目生成器、static gate 均完成并 PASS。
  • 三端 simulation fixture static gate 结果:wechat_minigame=static_validateddouyin_minigame=static_validatedkuaishou_minigame=static_validated(保留 KUAISHOU_GLOBAL_AND_CONFIG_SHAPE_UNKNOWN warning
  • smoke:devtool-import 默认写 DevToolImportBlockerexit 1无法生成 passed evidence。
  • S5 Task5 Task6 fresh review 双 PASSS5 import certification 仍是 No-Go,详见 docs/memorys/2026-06-05-S5Task6最终验证.md
  • S4/S5 并行汇合验证 PASSmerge 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 必须有真实 PostgresS6T2 / S6T3 / S6T4 / S6T5 的 API 端到端测试。

S6 硬门禁

  • ReviewRecord 状态为 approved 才能创建 PublishedGamecreator 不能自审)。
  • GamePackage.web.status=smoke_passed 是提交发布的前置硬条件。
  • feed 查询结果不得包含 pending/rejected/unpublished 状态游戏。
  • MiniGameProject 绝不能成为 feed 可玩 item。
  • creator 不能审核自己提交的版本。

S6 P1 / 后置(不阻塞 P0

  • runtime 错误自动限制曝光规则。
  • ML feed 排序算法。
  • 评论、弹幕、粉丝体系。
  • 渠道提审、广告、支付、结算。

S7Feedback / 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。

验证分级

  • unitS7-T1schema、S7-T6final gate
  • integration-dbS7-T2 / T3 / T5。
  • manual-gate静态扫描S7-T4文档存在即满足

S7 硬门禁

  • prisma migration 必须通过。
  • QualitySignal 不能修改 GameVersion / PublishedGame 记录。
  • ChannelReadinessNote 只能引用 S5 ConversionReport / DevToolImportEvidence / DevToolImportBlocker ID不能自造转换状态不能替代 ChannelReview
  • P0 不能出现:MonetizationGameDailyStatsCreatorDailyStatsImprovementSuggestion

S7 P1 / 后置(不阻塞 P0

  • 创作者单游戏基础看板、运营质量/错误/举报视图。
  • GameDailyStatsCreatorDailyStats 聚合统计。
  • 简单规则建议(加载失败高、试玩低、留存低、举报高、互动高)。
  • 数据保留 / 冷归档策略。

S8Deploy Readiness / MVP Go-No-Go

状态not_started

P0 任务清单

任务 ID 标题 文件路径 依赖 验证类型
s8-t1 环境配置校验 scripts/validate-env.mjs unit静态校验
s8-t2 健康检查 apps/api health endpointworker heartbeatscripts/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 条件:同时满足以下全部:

  1. wechat_minigame DevToolImportEvidence.result="passed" 文件存在且 checksum 合法。
  2. douyin_minigame DevToolImportEvidence.result="passed" 文件存在且 checksum 合法。
  3. S0-S7 所有阶段证据链接完整。
  4. smoke-mvp 脚本 exit 0。

任意一项缺失、blocked、failed 或仅有 DevToolImportBlocker => No-Go不得宣称 MVP ready

S8 P1 / 后置(不阻塞 P0

  • 三平台真机 smokewechat/douyin/kuaishou device
  • 渠道正式提审 / 审核通过。
  • 广告、支付、结算生产配置。
  • 大规模压测、多地域容灾、failover 演练。

4. 硬门禁(不可伪造)

以下门禁无法用任何代码、文档或推断替代,必须由真实工具产出真实证据:

门禁名称 触发阶段 证据要求 当前状态
WeChat DevToolImportEvidence S5 import cert / S8 docs/evidence/devtool-import/wechat_minigame-*.jsonresult="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 的说明DevToolImportBlockerresult="blocked"/"failed")记录的是缺口和风险,解释了为何无法导入,但不能代替 DevToolImportEvidence.result="passed"。将 blocker 解读为通过证据属于违规。


5. P1 / 后置事项(按阶段汇总)

阶段 P1 / 后置项目(不阻塞 P0 验收)
S6 ML feed 排序;评论/弹幕/粉丝;渠道提审;广告/支付runtime 错误自动降权策略
S7 创作者/运营看板;GameDailyStats / CreatorDailyStats 聚合;ImprovementSuggestion 规则建议;数据归档
S8 三端真机 smoke渠道正式上架广告/支付生产配置;多地域容灾;压测

6. 沙箱验证天花板

本环境(/root/games-development-ailinuxnode 可用)的验证能力边界:

可以产出真实证据的命令

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

  • runRuntimeSmokeWithPlaywrightS4 smoke 已有 unit wrapper 替代)。
  • scripts/smoke-mvp.mjsS8需 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 certDevTools passed evidence不阻塞 S6 编码,但阻塞 S6 feed 将 mini-game artifact 用于任何"可玩"声称。
  • S6T1contracts可立即开始无 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 contractsunit立即可做
  └── S6T2~T5串行需 DB 环境)

S6 完成后
  ├── S7-T1unit可与 S6 后期 overlap
  ├── S7-T4文档可随时做
  └── S7-T2~T5需 DB

S7 完成后
  ├── s8-t1unit可提前
  ├── s8-t2unit可提前
  ├── s8-t5文档可随时做
  └── s8-t3需 DB
  └── s8-t4需 browser + DB + DevTools passed evidence
  └── s8-t6手动 Go/No-Go 最终门)

依赖强制串行点

  1. S5 DevTools import cert → s8-t4无法绕过无法提前声称
  2. ReviewRecord → PublishedGameS6 内部,运营必须先审核)。
  3. S0-S7 证据链 → s8-t6 Go/No-Go所有阶段证据必须完整

本文档基于 git HEAD 98e2aad 和本 session 状态快照编写。下一个关键更新节点Web/WebGL playable demo slice 完成后,或 S5 DevTools import cert 状态变更时。