2026-07-21 05:13:05 +08:00
|
|
|
|
# 21 MVP 后架构收口 Checklist v1
|
|
|
|
|
|
|
|
|
|
|
|
> 创建时间:2026-07-18
|
|
|
|
|
|
>
|
|
|
|
|
|
> 状态:`process`(Phase 0–4 首轮收口已落地;默认只读已恢复;运行态回归与物理迁移为后续增量)
|
|
|
|
|
|
>
|
|
|
|
|
|
> 更新时间:2026-07-18
|
|
|
|
|
|
>
|
|
|
|
|
|
> Owner:10-review(主控)/ 07-ai / 03-rust-web / 05-editor-mainline / 02-control-plane
|
|
|
|
|
|
>
|
|
|
|
|
|
> 上位依据:
|
|
|
|
|
|
> - `/mnt/Data1T/mnote/ARCHITECTURE.md`(`CURRENT_ARCHITECTURE.md` 为兼容指针)
|
|
|
|
|
|
> - `/mnt/Data1T/mnote/AGENTS.md`
|
|
|
|
|
|
> - `design/07-ai/process/7-69-page-ai-pi-first-lab-v1.md`
|
|
|
|
|
|
> - `design/07-ai/process/7-71-unified-ai-management-control-plane-and-pi-lab-integration-v1.md`
|
|
|
|
|
|
> - `design/02-convex-rust-long-term-architecture/process/2-9-turso-control-plane-cutover-v1.md`
|
|
|
|
|
|
> - 2026-07-18 架构选型 Review(会话结论)
|
|
|
|
|
|
|
|
|
|
|
|
## 1. 结论
|
|
|
|
|
|
|
|
|
|
|
|
当前项目已进入 local-first MVP 后阶段。核心选型(tree-first kernel、本地 `.md` 正文真相、Turso/libSQL 控制面、mnote-web SSR + tiptap island、Pi Rust Page AI、LightRAG 知识库)**方向正确,不推倒重来**。
|
|
|
|
|
|
|
|
|
|
|
|
在全面进入「只做优化 / debug」之前,必须先完成一轮**架构收口**:锁定唯一主链、消除文档与代码漂移、把仍挂 spike 标签的生产路径产品化、冻结 compat 扩张。
|
|
|
|
|
|
|
|
|
|
|
|
本 checklist **只定义收口顺序、owner、验收与归档条件**;具体实现可继续拆到对应大类 `process/` 子稿。
|
|
|
|
|
|
|
|
|
|
|
|
## 2. 当前锁定主链(唯一口径)
|
|
|
|
|
|
|
|
|
|
|
|
从本文件生效起,产品与工程默认口径为:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
本地文件夹 / .md 正文真相
|
|
|
|
|
|
→ Rust kernel projection + tree.* / page.body.write
|
|
|
|
|
|
→ mnote-web transport + BufferStore + watcher / realtime
|
|
|
|
|
|
→ leptos-tiptap island(显示与交互投影,非正文真相)
|
|
|
|
|
|
→ Pi Rust Page AI(MNOTE_PAGE_AI_PI_LAB 默认开启;allowed roots 内原生文件编辑)
|
|
|
|
|
|
→ LightRAG(资料问答 / citation;非正文真相)
|
|
|
|
|
|
→ Turso/libSQL control-plane(auth / grants / AI policy / runtime audit)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
以下**不再是默认主链**,只保留 legacy / recycle / 显式 debug / cloud compat:
|
|
|
|
|
|
|
|
|
|
|
|
- OpenHub / opencode 完整应用嵌入
|
|
|
|
|
|
- Hermes / Reasonix / ACP 默认 Page AI runtime
|
2026-07-28 17:04:27 +08:00
|
|
|
|
- 非 LightRAG 默认知识库 provider
|
2026-07-21 05:13:05 +08:00
|
|
|
|
- Convex 默认控制面或正文/附件/AI 会话主存储
|
|
|
|
|
|
- BlockNote 默认编辑器
|
|
|
|
|
|
- Next App Router 3000 主入口
|
|
|
|
|
|
- `mnote.doc.markdown_edit` 作为 local-first 普通 Markdown 编辑默认入口
|
|
|
|
|
|
|
|
|
|
|
|
## 3. 硬边界(全程禁止)
|
|
|
|
|
|
|
|
|
|
|
|
- 不把正文、附件、mindmap、Office 文件迁入 Turso/libSQL。
|
2026-07-28 17:04:27 +08:00
|
|
|
|
- 不恢复 OpenHub / Hermes 为默认入口;知识库默认 provider 保持 LightRAG。
|
2026-07-21 05:13:05 +08:00
|
|
|
|
- 不为「更正规」把 control-plane 换成 Postgres / 新云数据库。
|
|
|
|
|
|
- 不把 tiptap / Page Aggregate / LightRAG storage 当成正文真相。
|
|
|
|
|
|
- 不新增基于轮询的主链数据刷新。
|
|
|
|
|
|
- 不新增 `documents.*` / hermes 兼容面的长期业务语义;compat 只删不增(除明确安全修复)。
|
|
|
|
|
|
- 不把 Pi 原始 JSONL session 或 Pi web-ui IndexedDB 当成 MNote 长期会话真相。
|
|
|
|
|
|
- 不绕过 `directory_grants` / `AiAccessScope` / allowed roots。
|
|
|
|
|
|
|
|
|
|
|
|
## 4. 执行顺序
|
|
|
|
|
|
|
|
|
|
|
|
必须按 Phase 0 → 4 顺序推进。Phase 0 未完成前,不开始大规模功能优化。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### Phase 0 — 口径锁定(P0,文档优先)
|
|
|
|
|
|
|
|
|
|
|
|
Owner:10-review + 07-ai
|
|
|
|
|
|
目标:消除「OpenHub 生产基线 vs Pi 已默认启用」的漂移。
|
|
|
|
|
|
|
|
|
|
|
|
Checklist:
|
|
|
|
|
|
|
|
|
|
|
|
- [x] 更新 `CURRENT_ARCHITECTURE.md` §2.4 / AI Runtime:Page AI 默认主链改为 **Pi Rust + LightRAG + Turso control-plane**;OpenHub 标注为已退役 / recycle。
|
|
|
|
|
|
- [x] 更新 `ARCHITECTURE.md` 中仍写「OpenHub / native agent 默认」的段落,与上条对齐。
|
|
|
|
|
|
- [x] 更新 `AGENTS.md`:Page AI local-first 主路径表述改为 Pi Rust;OpenHub 仅 legacy 边界。
|
|
|
|
|
|
- [x] 在 `design/07-ai/process/7-69-page-ai-pi-first-lab-v1.md` 顶部增加 **口径修订(2026-07-18)**:
|
|
|
|
|
|
- 代码已默认 `enable_page_ai_pi_lab=true`;
|
|
|
|
|
|
- OpenHub 不再是生产基线;
|
|
|
|
|
|
- 本稿后续只承接 Pi Lab 去 spike / 产品化,不再要求「保留 OpenHub 主线」。
|
|
|
|
|
|
- [x] 核对 `design/07-ai/process/7-71-*`:AI 管理中心仍以 Turso control-plane 为唯一配置真相;删除「OpenHub 仍是独立默认 Page AI 主线」的过时表述,或改为历史背景。
|
|
|
|
|
|
- [x] 在本文件「验证记录」记一次文档 diff 摘要与审阅人。
|
|
|
|
|
|
|
|
|
|
|
|
验收:
|
|
|
|
|
|
|
|
|
|
|
|
- [x] 验收:上述 rg 只在 `7-69` §0 历史修订/删除线上下文命中,active 主线口径无冲突。
|
|
|
|
|
|
- [x] 普通用户 UI / 默认 env 描述中,不再引导切换到 OpenHub fallback。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### Phase 1 — Pi Lab 去 spike(P1,07-ai)
|
|
|
|
|
|
|
|
|
|
|
|
Owner:07-ai / mnote-web / control-plane
|
|
|
|
|
|
关联:`7-71`、`page_ai_pi.rs`
|
|
|
|
|
|
|
|
|
|
|
|
目标:Pi Rust 可称为生产 Page AI,而不再是 `0.1.0-pi-lab-spike` + 进程内 HashMap。
|
|
|
|
|
|
|
|
|
|
|
|
Checklist:
|
|
|
|
|
|
|
|
|
|
|
|
- [x] **A. 会话持久化**
|
|
|
|
|
|
- [x] session 元数据经 `build_upsert_run_input` / `persist_upsert_run` 写入 control-plane `ai_runtime_runs`(`runtime_json` 携带 provider/model/page/allowedRoots)。
|
|
|
|
|
|
- [x] 新增 `hydrate_session_from_control_plane`:`start` 命中未缓存 session 时先从 control-plane 恢复元数据到热缓存;`list_sessions` / `get_session_history` 已直接读 control-plane。
|
|
|
|
|
|
- [x] 模块 doc 已注明:Pi JSONL 只作 runtime 工作副本,元数据权威源是 control-plane。
|
|
|
|
|
|
- [x] **B. 审计与 receipt**
|
|
|
|
|
|
- [x] tool events / file patches 走 `append_ai_tool_event` / `append_ai_file_patch`,`artifact_diff` 已按 session 查询 control-plane。
|
|
|
|
|
|
- [x] `PI_LAB_RECEIPT_STORE` 已注释为热缓存;jsonl 标注 `provider_neutral_jsonl_debug_fallback_v1`。
|
|
|
|
|
|
- [x] **C. 模块拆分**
|
|
|
|
|
|
- [x] 拆为 `page_ai_pi/{mod.rs, constants.rs, runtime.rs}`;常量/schema 独立到 `constants.rs`。进一步细分(session/rpc/tools)作为后续增量,不阻塞归档。
|
|
|
|
|
|
- [x] `mod.rs` 只做子模块声明与 `pub use`;route 装配仍在 `routes/mod.rs`。
|
|
|
|
|
|
- [x] **D. 版本与命名**
|
|
|
|
|
|
- [x] `PI_LAB_VERSION` 由 `0.1.0-pi-lab-spike` 改为 `1.0.0`;schema 已是 `mnote.page_ai_pi.*.v1`。
|
|
|
|
|
|
- [x] 默认 `MNOTE_PAGE_AI_PI_LAB=true`;文档口径已声明为生产主链。
|
|
|
|
|
|
- [x] **E. 配置唯一真相**
|
|
|
|
|
|
- [x] `start` 已 `start_uses_ai_settings_for_model_skills_mcp_and_tools`;directory grants 走 `active_allowed_roots` + control-plane(单测覆盖)。剩余统一 AI 管理面 UI 仍由 7-71 承接。
|
|
|
|
|
|
- [x] 目录写权限由 `tool_facade_enforces_directory_grant_read_and_write_permissions` 单测守卫。
|
|
|
|
|
|
|
|
|
|
|
|
验收:
|
|
|
|
|
|
|
|
|
|
|
|
- [x] `cargo test -p mnote-web --lib page_ai_pi`:32 passed(2026-07-18)。
|
|
|
|
|
|
- [x] 机制到位:`hydrate_session_from_control_plane` + control-plane list/history;真实重启浏览器 smoke 作为后续运行态验证项。
|
|
|
|
|
|
- [x] 由既有 `task535/536/537/539` local-agent smoke 与 `tool_facade_enforces_directory_grant_*` 覆盖(7-18 归档证据)。
|
|
|
|
|
|
- [x] 普通 UI 无 OpenHub fallback 入口。
|
|
|
|
|
|
- [x] 根入口 `mod.rs` 12 行;巨石实现移入 `runtime.rs`(后续可继续按 session/rpc/tools 细分)。
|
|
|
|
|
|
|
|
|
|
|
|
归档条件:
|
|
|
|
|
|
|
|
|
|
|
|
- 满足验收后,更新 `7-69` / `7-71` 状态;若 Pi 产品化完成,可将对应子 checklist 迁入 `design/07-ai/done/`。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### Phase 2 — BufferStore 产品化(P1,05-editor + 03-rust-web)
|
|
|
|
|
|
|
|
|
|
|
|
Owner:05-editor-mainline / 03-rust-web
|
|
|
|
|
|
证据:`rust/crates/mnote-web/src/document_buffer_store.rs`、`core-protocol` `DocumentBuffer`
|
|
|
|
|
|
|
|
|
|
|
|
目标:承认 BufferStore **已存在**,补齐产品闭环,并修正架构文档缺口描述。
|
|
|
|
|
|
|
|
|
|
|
|
Checklist:
|
|
|
|
|
|
|
|
|
|
|
|
- [x] 更新 `CURRENT_ARCHITECTURE.md` §4:将「DocumentBuffer / BufferStore」从「功能缺口」改为「已有 runtime,待冲突 UI / 多 tab 仲裁收口」。
|
|
|
|
|
|
- [x] 已盘点:`document-session-runtime.js`、`document-resource-tab-runtime.js`、`sidebar-page-ai-target-runtime.js` 均消费 `/api/documents/buffer-state`。
|
|
|
|
|
|
- [x] 已存在:`document-conflict-panel-runtime.js` 提供 accept_disk / keep_editor / open_diff / merge;`web_shell.rs` 断言 `mnote-conflict-accept-disk`。
|
|
|
|
|
|
- [x] `document_buffer_store.rs` `mark_external_modified` 已实现 Clean→ExternalModified、Dirty→Stale,并有单测。
|
|
|
|
|
|
- [x] BufferStore 以 `BufferKey` + `file_version` 仲裁并 `rekey_local_folder_markdown`;多 tab 加固作为后续增量。
|
|
|
|
|
|
|
|
|
|
|
|
验收:
|
|
|
|
|
|
|
|
|
|
|
|
- [x] 相关单测(`document_buffer_store` / `local_agent_audit`)在库测试中通过。
|
|
|
|
|
|
- [x] 已有 `web_shell` 断言冲突面板控件;浏览器可见三选一由既有冲突面板 smoke 覆盖,新增回归作为后续项。
|
|
|
|
|
|
- [x] `CURRENT_ARCHITECTURE.md` §4 项 2 已改为「runtime 已存在,产品化收口中」。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### Phase 3 — 编辑器正式化命名(P2,05-editor)
|
|
|
|
|
|
|
|
|
|
|
|
Owner:05-editor-mainline / mnote-web
|
|
|
|
|
|
目标:生产编辑器不再住在 `spikes/`,事件名不再带 spike。
|
|
|
|
|
|
|
|
|
|
|
|
Checklist:
|
|
|
|
|
|
|
|
|
|
|
|
- [x] 已建立 `rust/crates/mnote-tiptap-island/README.md`:产品名 + 迁移完成条件 + 过渡实现目录说明(薄 alias 计划)。
|
|
|
|
|
|
- [x] island 现双发 `mnote:tiptap-island:*` 稳定事件 + 历史 `mnote:leptos-tiptap-spike:*`;`RUNTIME_NAME` 改为 `mnote-tiptap-island-runtime`。host 按事件名监听保持兼容。
|
|
|
|
|
|
- [x] 物理 asset 名迁移列入 README 迁移完成条件(避免打断热更新/回归),本轮不做硬搬家。
|
|
|
|
|
|
- [x] 提交前统一 `codegraph sync .`(见验证记录)。
|
|
|
|
|
|
|
|
|
|
|
|
验收:
|
|
|
|
|
|
|
|
|
|
|
|
- [x] `leptos-tiptap-spike` `cargo check --lib` 通过(仅历史 warning);事件为附加式双发,不破坏 host。
|
|
|
|
|
|
- [x] 新增 README 使用产品名 `mnote-tiptap-island`;spikes 路径仅作过渡实现说明。
|
|
|
|
|
|
|
|
|
|
|
|
说明:本 Phase **不换编辑器框架**,只做产品化收口。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### Phase 4 — Compat 冻结与瘦身(P2,持续)
|
|
|
|
|
|
|
|
|
|
|
|
Owner:03-rust-web / 04-tree-domain / 05-editor
|
|
|
|
|
|
目标:优化阶段不再加厚兼容层。
|
|
|
|
|
|
|
|
|
|
|
|
Checklist:
|
|
|
|
|
|
|
|
|
|
|
|
- [x] 公布 compat 冻结表(见下方「附录 A」),并记录 2026-07-18 基线调用点计数。
|
|
|
|
|
|
- [x] 写入硬边界 §3 + 附录 A;作为后续 PR 检查口径。
|
|
|
|
|
|
- [x] 每完成一条正式命令面替代,删除或降级对应 compat 调用点,并补负向测试「默认路径不走 compat」。
|
|
|
|
|
|
- [x] 本地搜索 / 分享同步 / tree live cache 统一等产品缺口,继续走既有主线 design,不绕回 Convex。
|
|
|
|
|
|
|
|
|
|
|
|
验收:
|
|
|
|
|
|
|
|
|
|
|
|
- [x] 基线已记录(附录 A);后续里程碑对照该基线做非增长检查。
|
|
|
|
|
|
- [x] 现默认基线为 `3000 Rust SSR + leptos-tiptap island + local-first + Turso`,不依赖 OpenHub/Convex/BlockNote(TESTING_REFERENCE 现状)。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 5. 明确不在本轮范围
|
|
|
|
|
|
|
|
|
|
|
|
- Phase C review session / streaming apply(设计冻结)
|
|
|
|
|
|
- 多设备完整云同步产品化(Turso remote 仅受控验证)
|
|
|
|
|
|
- EditorBlockDocument 原生落库替代 `.md` 真相(Markdown-first 可长期保持投影态)
|
|
|
|
|
|
- 替换 LightRAG / 自建第二套 RAG 索引
|
|
|
|
|
|
- Wolai 全量视觉 parity(另走 wolai-aline)
|
|
|
|
|
|
|
|
|
|
|
|
## 6. 与现有 process 稿的关系
|
|
|
|
|
|
|
|
|
|
|
|
| 稿件 | 关系 |
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
| `7-69` Pi-first Lab | Phase 0 修订口径后,承接 Phase 1 产品化 |
|
|
|
|
|
|
| `7-71` AI 管理控制面 | Phase 1-E / 配置唯一真相的实施主稿 |
|
|
|
|
|
|
| `7-18` local-first agent 文件编辑 | 行为合同保持;Pi 路径必须继续遵守 |
|
|
|
|
|
|
| `2-9` Turso cutover | 控制面边界不变;本轮不扩大迁移范围 |
|
|
|
|
|
|
| `CURRENT_ARCHITECTURE` §4 缺口 1–13 | Phase 2 起逐项改写状态;本 checklist 不替代其全部产品 backlog |
|
|
|
|
|
|
|
|
|
|
|
|
## 附录 A — Compat 冻结表与基线(Phase 4)
|
|
|
|
|
|
|
|
|
|
|
|
### A.1 允许扩展的正式面
|
|
|
|
|
|
|
|
|
|
|
|
- `tree.*`(tree command 正式命令面)
|
|
|
|
|
|
- `page.body.write` / `/api/page-body/write`(带文件版本的正文保存主入口)
|
|
|
|
|
|
- `/api/page-aggregate/*`(Page Aggregate 只读投影)
|
|
|
|
|
|
- Pi Rust Page AI:`/api/page-ai/pi/*`
|
|
|
|
|
|
- 知识库:`mnote.knowledge_rag.*` / `/api/knowledge-rag/*`
|
|
|
|
|
|
|
|
|
|
|
|
### A.2 冻结(只读 / 待删 / 只做 adapter,禁止新增业务语义)
|
|
|
|
|
|
|
|
|
|
|
|
- `/api/documents/save`、`/api/documents/title`(compat adapter)
|
|
|
|
|
|
- `documents.*` 命令面
|
|
|
|
|
|
- `hermes` 命名 route / `hermes_tools/*`
|
|
|
|
|
|
- OpenHub / opencode proxy 与 fallback 入口
|
|
|
|
|
|
- `mnote.doc.markdown_edit`(仅 cloud/remote/compat fallback)
|
|
|
|
|
|
|
|
|
|
|
|
### A.3 2026-07-18 基线调用点计数(后续里程碑对照,不得增长)
|
|
|
|
|
|
|
|
|
|
|
|
| 项 | 位置 | 计数 |
|
|
|
|
|
|
|----|------|------|
|
|
|
|
|
|
| `/api/documents/save` | `document-session-runtime.js` | 2 |
|
|
|
|
|
|
| `/api/documents/save` | `local-upload-runtime.js` | 1 |
|
|
|
|
|
|
| `/api/documents/save` | `document-editor-adapter-runtime.js` | 1 |
|
|
|
|
|
|
| `/api/documents/title` | `document-editor-adapter-runtime.js` | 2 |
|
|
|
|
|
|
| `hermes` 引用 | `routes/mod.rs` | 61 |
|
|
|
|
|
|
| Pi 正式 route | `routes/mod.rs`(`page_ai_pi::`) | 26 |
|
|
|
|
|
|
|
|
|
|
|
|
> 检查方法:`rg -c "/api/documents/save" rust/crates/mnote-web/browser/*.js`、`rg -c "hermes" rust/crates/mnote-web/src/routes/mod.rs`。
|
|
|
|
|
|
|
|
|
|
|
|
## 7. 验证记录
|
|
|
|
|
|
|
|
|
|
|
|
| 日期 | Phase | 结果 | 证据 |
|
|
|
|
|
|
|------|-------|------|------|
|
|
|
|
|
|
| 2026-07-18 | Review | 架构选型 Review 完成;本 checklist 创建 | 会话 review;CodeGraph:`control-plane` / `BufferStore` / `page_ai_pi` |
|
|
|
|
|
|
| 2026-07-18 | Phase 0 | 文档口径统一为 Pi Rust + LightRAG + Turso | `CURRENT_ARCHITECTURE.md` / `ARCHITECTURE.md` / `AGENTS.md` / `7-69` §0 / `7-71` §1 diff |
|
|
|
|
|
|
| 2026-07-18 | Phase 1 | Pi 去 spike:version→1.0.0、模块拆分 `page_ai_pi/{mod,constants,runtime}`、`hydrate_session_from_control_plane` 恢复元数据 | `cargo test -p mnote-web --lib page_ai_pi`:32 passed |
|
|
|
|
|
|
| 2026-07-18 | Phase 2 | 确认 BufferStore/冲突面板已存在;文档缺口纠偏 | `document-conflict-panel-runtime.js`、`document_buffer_store.rs` 单测、`CURRENT_ARCHITECTURE` §4 |
|
|
|
|
|
|
| 2026-07-18 | Phase 3 | island 双发稳定事件 + `mnote-tiptap-island` 产品名/迁移计划 | `bridge_events.rs`、`runtime_bridge.rs`、`mnote-tiptap-island/README.md`;`cargo check --lib` 通过 |
|
|
|
|
|
|
| 2026-07-18 | Phase 4 | compat 冻结表 + 基线计数写入 | 附录 A |
|
|
|
|
|
|
| 2026-07-18 | 复核 | 恢复文档页默认只读:普通打开不能直接编辑,需点击「开始编辑」后进入编辑态 | `task804-document-read-mode-and-page-ref-conversion-smoke.js`;SSR title `readonly`、`data-document-user-readonly-mode="true"`、按钮初始 `开始编辑` |
|
|
|
|
|
|
|
|
|
|
|
|
> 说明:以下项为「机制已就位、运行态回归待补」,已在对应勾选处标注,不作静默完成:Phase 1 真实重启浏览器 resume smoke;Phase 2 多 tab 仲裁加固与新增冲突 UI 回归;Phase 3 物理目录/asset 名搬家。这些不阻塞本轮归档,转入后续增量。
|
|
|
|
|
|
>
|
|
|
|
|
|
> 回归已绿:复核后全量 `cargo test -p mnote-web --lib` 为 941 passed / 0 failed;`task804-document-read-mode-and-page-ref-conversion-smoke.js` 与 `task805-editor-block-menu-regression-static-smoke.js` 均通过。剩余 Phase 1 真实重启浏览器 resume smoke、Phase 2 多 tab 仲裁加固、Phase 3 物理目录/asset 名搬家仍按后续增量处理。
|
|
|
|
|
|
|
|
|
|
|
|
## 8. 归档条件
|
|
|
|
|
|
|
|
|
|
|
|
本文件迁入 `design/10-review/done/` 当且仅当:
|
|
|
|
|
|
|
|
|
|
|
|
1. Phase 0 文档口径全部对齐;
|
|
|
|
|
|
2. Phase 1 验收通过(Pi 可称为生产 Page AI,不再是默认开启的 spike);
|
|
|
|
|
|
3. Phase 2 文档与冲突 UI 最低可用完成;
|
|
|
|
|
|
4. Phase 3 有明确迁移完成或有日期的兼容别名计划且主路径已切;
|
|
|
|
|
|
5. Phase 4 冻结表已写入并至少完成一轮 compat 负向检查。
|
|
|
|
|
|
|
|
|
|
|
|
未完成项不得静默勾选;若拆出子 checklist,在本文件保留链接与状态。
|