Files
mnote/.codex/reasonix-tasks/results/design-governance-worker-a-01-03.md
T
lix-2026 1956a8a21a chore: align mvp design governance
- 统一 local-first MVP 后阶段架构口径,补充 process 执行总序和 Reasonix 协作记录

- 归档已完成的 design checklist,标注参考型 process,更新 AGENTS/REASONIX/架构文档

- 补充文件树/主编辑器下载与上下文菜单相关实现、bug 记录和 smoke 脚本

验证:git diff --check;codegraph sync .;cargo test -p mnote-web;node --check scripts/task476-filetree-editor-context-menu-download-smoke.js
2026-05-21 09:04:13 +08:00

272 lines
14 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.
# Design Governance Report — Worker A
审查范围:`design/01-tree-first-graph-kernel/process/``design/02-convex-rust-long-term-architecture/process/``design/03-rust-web/process/`
审查时间:2026-06-17
上位依据:`design/01-05-current-priority-overview.md`2026-05-21 口径)
---
## 总览
| 域 | 文件 | 建议状态 | 高风险项 |
|----|------|---------|---------|
| 01 | 1-tree-first-graph-kernel-v1.md | **keep-process** | 无 |
| 01 | 1-1-tree-first-graph-kernel-checklist-v2.md | **keep-process** | 无 |
| 01 | 1-2-tree-first-graph-product-vision-progress-v1.md | **keep-process** | 无 |
| 01 | 1-3-current-priority-execution-checklist-v1.md | **keep-process** | 无 |
| 01 | 1-4-next-phase-execution-roadmap-v1.md | **keep-process** | 无 |
| 01 | 1-5-next-phase-sequential-execution-checklist-v1.md | **keep-process** | ⚠ 多数 items 未勾选 |
| 01 | 1-6-next-phase-gap-closure-checklist-v1.md | **keep-process** | ⚠ browser smokes 未复跑 |
| 01 | 1-7-local-workspace-root-page-bundle-checklist-v1.md | **archive-done** | 无 |
| 02 | 2-3-local-workspace-access-control-productization-v1.md | **archive-done** | 无 |
| 03 | 3-rust-web-long-term-architecture-v1.md | **keep-process** | 无 |
| 03 | 3-1-rust-web-long-term-checklist-v2.md | **keep-process** | 无 |
| 03 | 3-3-rust-web-tree-realtime-event-stream-v1.md | **keep-process** | 无 |
| 03 | 3-13-rust-web-local-markdown-gfm-ast-parser-migration-v1.md | **keep-process** | ⚠ 3 unsub items |
| 03 | 3-15-local-markdown-asset-upload-relative-path-v1.md | **keep-process** | ⚠ browser smoke 待补 |
| 03 | 3-17-convex-export-web-entry-v1.md | **needs-human-confirmation** | ⚡ 设计稿但未落码 |
---
## 逐文件审查
---
### 1. `01-tree-first-graph-kernel/process/1-tree-first-graph-kernel-v1.md`
**建议状态:keep-process**
**证据:** `01-05-current-priority-overview.md` §1 明确列为当前仍然有效的 3 份上位主线之一。文档更新于 2026-04-22,全文固定 "tree-first graph kernel" 长期方向,不使用旧 Convex 默认存储 / Next 主入口 / BlockNote 默认编辑器口径。
**归档/保留原因:** 仍是 tree-first kernel 方向的权威定义文档,所有后续设计以此为基础。
---
### 2. `01-tree-first-graph-kernel/process/1-1-tree-first-graph-kernel-checklist-v2.md`
**建议状态:keep-process**
**证据:** `01-05-current-priority-overview.md` §3 明确列为"仍然有效但不在第一线"的 process 文档。文档头部已标注优先级转移说明,使用 `DONE / PARTIAL / NOT_STARTED` 状态体系,反映真实代码状态而非乐观口径。
**归档/保留原因:** 仍是 Kernel Phase 全景参考,Phase 0-3 已 DONEPhase 4-9 进度清晰。
---
### 3. `01-tree-first-graph-kernel/process/1-2-tree-first-graph-product-vision-progress-v1.md`
**建议状态:keep-process**
**证据:** 更新于 2026-05-19,引用 `01-05-current-priority-overview.md` 作为上位依据。使用 local-first MVP 后阶段口径。包含对照 Wolai 帮助中心的详细块类型覆盖率、AI 操作能力缺口分析,以及三条架构收口主线的进度百分比。
**归档/保留原因:** 唯一一份产品愿景 vs 实现进展的对照文档,提供 gap analysisAI 操作思维导图 / Office 文件),对产品规划仍有参考价值。
---
### 4. `01-tree-first-graph-kernel/process/1-3-current-priority-execution-checklist-v1.md`
**建议状态:keep-process**
**证据:** `01-05-current-priority-overview.md` §6 明确引用为"持续推进 checklist"。文档 P0-P6 全部勾选且有验证证据(单测命令 + smoke 脚本),P7 已完成阶段性瘦身。迁移到 done/ 的标准清晰列出并已满足。
**归档/保留原因:** 当前最活跃的执行清单,`1-3` 本身作为持续执行清单保留在 process/,已完成的上位设计各自在 done/。
---
### 5. `01-tree-first-graph-kernel/process/1-4-next-phase-execution-roadmap-v1.md`
**建议状态:keep-process**
**证据:** 更新于 2026-05-19,引用 `01-05``1-3`。全文核心论点是"架构收口为主,产品化闭环为辅",与当前 local-first MVP 后阶段口径完全一致。
**归档/保留原因:** 定义了下一阶段路线图(WorkspacePath → BufferStore → Page Aggregate kernel-native → command context → live cache),仍有效。
---
### 6. `01-tree-first-graph-kernel/process/1-5-next-phase-sequential-execution-checklist-v1.md`
**建议状态:keep-process**
**证据:** 更新于 2026-05-19,引用 `1-4``1-3`。所有执行原则和 Phase A0-A7 定义仍符合当前架构方向。
**归档/保留原因:** 提供了顺序执行的详细清单,且多数 items 尚未勾选,说明它是未来的工作计划而非已完成的文档。
**⚠ 风险:** 全场 687 行,大多数 checkbox 未勾选。如果团队当前执行顺序已不按此 checklist 推进(例如优先做 BufferStore 而非 smokes),应降级为 `mark-process-reference` 或更新本文件。当前保留但需关注执行偏差。
---
### 7. `01-tree-first-graph-kernel/process/1-6-next-phase-gap-closure-checklist-v1.md`
**建议状态:keep-process**
**证据:** 创建于 2026-05-19,状态 `PARTIALLY_DONE`。引用 `1-5``1-4`。基于 Reasonix 执行汇总的缺口补齐文档。
**归档/保留原因:** 记录了哪些缺口已由 Reasonix 执行填补(BufferStore、CommandContext、export/rollback),哪些仍未完成(browser smokes、conflict UI)。仍有跟踪价值。
**⚠ 风险:** §6.2 列出 6 个未复跑的 browser smokes。这些 smokes 如果长期不跑,本文件的剩余项跟踪价值下降。
---
### 8. `01-tree-first-graph-kernel/process/1-7-local-workspace-root-page-bundle-checklist-v1.md`
**建议状态:archive-done**
**证据:**
- 所有 checklist items 全部勾选并附验证命令
- 8 个 Rust 单测通过(`create_default_local_workspace_uses_managed_data_root``local_tree_command_create_page_creates_timestamped_markdown_and_sibling_folder` 等)
- HTTP smoke 通过:`node scripts/task443-local-markdown-asset-upload-smoke.js`
- 浏览器验收完成(截图保存到 `tmp/page-bundle-*`
- 磁盘结构验证通过:无默认 `pages/``assets/``mindmaps/` 顶层目录,新建页面带 `HHMMSS` 时间戳
**代码证据:**
- `create_default_local_workspace_for_actor_at_base``local_folder_source.rs:1494`
- 同名目录作为页面子容器 — 单测 `local_page_tree_uses_sibling_directory_as_page_children_container`
- 文件树不合并 `.md` 和同名目录 — 单测 `local_file_tree_keeps_markdown_and_sibling_folder_as_separate_rows`
**归档/保留原因:** 所有目标已实现且有验收证据。设计稿的收口方向是"默认工作区只保留用户内容根目录和 `.mnote/` 系统目录"——已落地。
---
### 9. `02-convex-rust-long-term-architecture/process/2-3-local-workspace-access-control-productization-v1.md`
**建议状态:archive-done**
**证据:**
- A1-A5 (P0 管理员控制面 API):全部完成,`GET/POST/DELETE /api/admin/access-policy/*` 已实现并有单测覆盖
- B1-B5 (P1 权限覆盖审计):全部完成,覆盖 local folder open、page body write、tree command、Hermes/Reasonix、shared AI session
- `01-05-current-priority-overview.md` §5 已将"管理员目录授权 UI/API"列为"已有最小实现与验证证据,不再作为当前第一优先级"
**代码证据:**
- `rust/crates/mnote-web/src/routes/local_folder_source.rs``add_local_access_grant_for_context``create_local_access_grant``ensure_local_workspace_access_for_actor`
- `rust/crates/mnote-web/src/ssr/pages/admin.rs` — 管理员 UI
- `rust/crates/mnote-web/src/routes/mod.rs` — route registration
**归档/保留原因:** 所有 checklist items 已勾选并有单测/代码证据。文档中定义的产品化目标(管理员可管理、agent 可复用、全入口不绕过)已实现。后续 access control 扩展可在新文档中推进。
---
### 10. `03-rust-web/process/3-rust-web-long-term-architecture-v1.md`
**建议状态:keep-process**
**证据:** `01-05-current-priority-overview.md` §1 明确列为当前仍然有效的 3 份上位主线之一。更新于 2026-05-09,定义了 Rust Web 分层方案(axum + Leptos Islands + Hermes)。
**归档/保留原因:** 仍是 Rust Web 架构的权威定义文档。
---
### 11. `03-rust-web/process/3-1-rust-web-long-term-checklist-v2.md`
**建议状态:keep-process**
**证据:** `01-05-current-priority-overview.md` §3 明确列为"仍然有效但不在第一线"。文档头部已标注优先级转移说明(2026-04-22 + 2026-04-29 复核补充)。Phase 0-8 状态清晰(DONE / PARTIAL / NOT_STARTED),反映真实代码状态。
**归档/保留原因:** 仍是 Rust Web 实施全景参考。Phase 1 接近 DONE、Phase 8 接近 DONE、Phase 3/4/5/7 为 PARTIAL。
---
### 12. `03-rust-web/process/3-3-rust-web-tree-realtime-event-stream-v1.md`
**建议状态:keep-process**
**证据:** `01-05-current-priority-overview.md` §2.3 引用为 Tree Realtime 当前状态文档。2026-05-18 补充 local-first 口径,明确 Convex realtime substrate 仅适用于 convex_workspace。有明确 §9.2 "仍未完成" 说明不能移到 done/。
**归档/保留原因:** 有明确 §9.2 未完成项(Sidebar/page subtree/filetree 未全部统一到同一条 live stream cacheWS 尚未成为主实时链路)。README 中明确了 done/ 迁移前必须完成的验收标准。无风险。
---
### 13. `03-rust-web/process/3-13-rust-web-local-markdown-gfm-ast-parser-migration-v1.md`
**建议状态:keep-process**
**证据:** 文档自身 §11.9 明确标注 "[ ] 迁移完成后把设计稿状态从 process 移到 done" 未勾选。剩余 3 项未完成:
1. "[ ] 新增 web shell 单测,验证 legacy <-> Tiptap 转换不丢 marks"
2. "[ ] 把手写 parser 标记为过渡实现"
3. "[ ] 移除 web_shell.rs 中只为补丁存在的临时适配分支"
**归档/保留原因:** 迁移工作未完成。当前读侧 AST 已就位,写侧回 Markdown 仍部分依赖手写规则。无口径冲突。
**⚠ 风险:** 3 个未完成项如果长期无人推进,应降级为 `mark-process-reference`。但当前准确。
---
### 14. `03-rust-web/process/3-15-local-markdown-asset-upload-relative-path-v1.md`
**建议状态:keep-process**
**证据:** 文档状态头明确标注"(代码、单测和 HTTP smoke 已完成;真实浏览器 smoke 待补)"。§9 checklist 中除浏览器 smoke 外所有项目已勾选。实现与缺陷闭环在 `bugs/03-rust-web/done/3-16`
**代码证据:**
- `local_markdown_asset_upload_copies_next_to_markdown_with_relative_path` 单测通过
- HTTP smoke 覆盖 `/api/local-folder/assets/upload` 真实 multipart 上传
**归档/保留原因:** 代码实现已完成,仅缺浏览器 smoke 这一最终验收。应该保持 process 直到 browser smoke 通过。
**⚠ 风险:** 缺少浏览器 smoke 意味着编辑器上传面板的实际用户体验未验证。低风险。
---
### 15. `03-rust-web/process/3-17-convex-export-web-entry-v1.md`
**建议状态:needs-human-confirmation → 候选人:mark-process-reference**
**证据:** 状态标记为 `process`,但文档是一份 Web 控制台 UI 的设计提案("后续落码顺序"列出 5 步尚未实现的落码步骤)。CLI 工具已存在:
- `scripts/export-convex-workspace-to-local.js` 支持 `--dry-run``--manifest``--conflict-report``--rollback`
- `task444``task455` smoke 通过
`01-05-current-priority-overview.md` §5 已将 P6 (Convex 导出) 列为"已有最小实现与验证证据,不再作为当前第一优先级"。
**建议补充说明:** 文档作为 Web 入口设计稿保留在 process/ 会产生"这是当前待办"的误导。建议:
- **选项 A (推荐)mark-process-reference** — 保持文档但标记为参考设计,不误认为待办。保留 CLI 设计供后续 Web 入口实现时参考。
- **选项 Bkeep-process** — 如果团队明确要在短期内实现 Web 入口。
- **选项 Carchive-old-process** — 如果决定 CLI 能力已足够,不优先做 Web UI。
**⚠ 风险:** 如果标记为 process,用户可能误以为 Web 入口已进入实施状态。实际上 5 个落码步骤均未开始。
---
## 汇总统计
| 建议状态 | 数量 | 文件 |
|---------|------|------|
| keep-process | 11 | 1, 1-1, 1-2, 1-3, 1-4, 1-5, 1-6, 3, 3-1, 3-3, 3-13, 3-15 |
| archive-done | 2 | 1-7, 2-3 |
| needs-human-confirmation | 1 | 3-17 |
> 注:3-15 虽推荐 keep-process,但其代码实现已完成,仅缺浏览器 smoke;在 browser smoke 通过后应自动进入 archive-done。
---
## 最高风险项
1. **`3-17-convex-export-web-entry-v1.md` (needs-human-confirmation)** — 被标记为 process 但实质是未落码的设计稿,可能误导读者以为 Web 入口在实施中。需人工确认是降级为参考、归档、还是推进落地。
2. **`1-5-next-phase-sequential-execution-checklist-v1.md` (keep-process, ⚠)** — 全场 687 行,大多数 checkbox 未勾选。如果执行计划已偏离此 checklist,内容可能过时。
3. **`1-6-next-phase-gap-closure-checklist-v1.md` (keep-process, ⚠)** — 6 个 browser smokes 长期未复跑降低剩余项跟踪价值。
4. **`3-13-rust-web-local-markdown-gfm-ast-parser-migration-v1.md` (keep-process, ⚠)** — 3 个未完成项如果无人认领,迁移工作将停滞在 partial 状态。
---
## 验证命令
```bash
# 确认文件存在
find design/01-tree-first-graph-kernel/process design/02-convex-rust-long-term-architecture/process design/03-rust-web/process -maxdepth 1 -type f -name '*.md' | sort
# 确认归档建议的文件已落地代码
cargo test -p mnote-web create_default_local_workspace_uses_managed_data_root -- --nocapture
cargo test -p mnote-web local_tree_command_create_page_creates_timestamped_markdown_and_sibling_folder -- --nocapture
cargo test -p mnote-web local_workspace_access -- --nocapture
```
---
## 未完成项
- 本报告仅为只读审查,未移动任何 `design/` 文件。
- 如果审核通过,`1-7``2-3` 应移至各自域的 `done/`
- `3-17` 需人工确认最终状态。