docs: 同步架构口径并整理设计稿状态

- 同步 AGENTS、ARCHITECTURE 与 01-05 总览中的 page aggregate / tree realtime 当前口径\n- 更新 3-3、5-5、5-6 对当前 Rust-first page aggregate 与 tree live stream 进展的描述\n- 将已被 wolai-aline 流程取代的 5-8 迁入 old 并标记 recycle
This commit is contained in:
lix-2026
2026-05-09 20:51:43 +08:00
parent d148e1ccc2
commit ac7023988e
7 changed files with 53 additions and 50 deletions
@@ -1,11 +1,11 @@
# 5-5 [process] 主编辑区与树域单一真源对齐方案 v1
> 更新时间:2026-04-22
> 更新时间:2026-05-09
>
> 关联文档:
> - `/mnt/Data1T/mnote/design/05-editor-mainline/process/5-4-leptos-tiptap-mainline-correction-v1.md`
> - `/mnt/Data1T/mnote/design/old/05-editor-mainline/process/5-3-tiptap-leptos-rust-migration-checklist-v1.md`
> - `/mnt/Data1T/mnote/design/04-tree-domain/process/4-sidebar-pagetree-filetree-rust-web-rebuild-v1.md`
> - `/mnt/Data1T/mnote/design/04-tree-domain/done/4-sidebar-pagetree-filetree-rust-web-rebuild-v1.md`
> - `/mnt/Data1T/mnote/design/04-tree-domain/done/4-4-tree-projection-protocol-contract-v1.md`
> - `/mnt/Data1T/mnote/design/01-tree-first-graph-kernel/process/1-tree-first-graph-kernel-v1.md`
> - `/mnt/Data1T/mnote/design/05-editor-mainline/done/5-5-1-page-aggregate-contract-v1.md`
@@ -34,7 +34,7 @@
它现在更接近于:
> **`Rust-aware + Convex-backed + 前端本地组装` 的混合态。**
> **`Rust snapshot 优先 + Convex-backed + 前端 fallback / 本地 state 仍存在` 的混合态。**
因此,当前看到的这些“小问题”:
@@ -60,10 +60,9 @@
但以下事实仍然成立:
- 标题链路虽已开始与树域 canonical snapshot 对齐,但还没有和正文、页面设置统一成同一组 page aggregate command family
- 页面正文是一条独立保存链
- 页面设置又是一条独立更新链
- 页面树 / 文件树与页头标题的一致性已明显改善,但当前 page aggregate projection 仍主要由前端装配而不是 Rust 原生提供
- 读取主链虽已优先消费 Rust `mnote.page_aggregate.v1` snapshot,但 snapshot 不可用时仍保留 TS fallback
- 标题、正文、页面设置虽已开始收口到同一组 page aggregate command family,但 projection 回流与运行时语义还没完全闭环
- 页面树 / 文件树与页头标题的一致性已明显改善,但页头标题、页面设置与编辑器 runtime 还没有完全共享同一份聚合真相
- `pageOptions` 已部分进入 `leptos-tiptap` 运行时语义层,但还没有整体收口完成
所以当前不能把这条线描述成:
@@ -110,27 +109,24 @@
## 3.1 当前页面数据并不是一个统一聚合
当前文档页在加载时,实际上是把几类数据拆开读取,再由前端壳层重新拼装
当前文档页读取主链已经优先走 Rust `mnote.page_aggregate.v1` 快照,再在 snapshot 不可用或不可信时回退到 TS builder
- 页面 meta
- 页面标题
- 页面设置
- 页面正文
- 页面子树快照
- Rust `/api/page-aggregate/:id` snapshot
- TS fallback builder
- 页面本地 aggregate state reducer
- preferred sidebar snapshot / 页头标题补偿链
这意味着当前是:
这意味着当前已经不再是:
- Rust 返回一份稳定的 page aggregate projection
- `page.tsx` 手工拉 `meta + content` 再现场拼 props
是:
但也还不是:
- Next route 先查 meta
- 再查 content
- 再把 `title/options/content/pageSubtree` 手动组成页面 props
- 页面所有读写、标题回流、页面设置运行时语义都只围绕一份 Rust page aggregate 自动闭环
这条链本身已经说明:
> **当前页面不是消费一份 canonical page projection,而是消费几份分裂的子结果。**
> **当前页面已经进入 Rust-first 聚合读取阶段,但 canonical page projection 仍未成为页面域唯一真相。**
### 3.1.1 标题链已开始收口,但尚未完成页面聚合统一
@@ -1,6 +1,6 @@
# 5-6 [process] Page Aggregate 单一真源对齐执行清单 v1
> 更新时间:2026-04-22
> 更新时间:2026-05-09
>
> 关联文档:
> - `/mnt/Data1T/mnote/design/05-editor-mainline/process/5-5-page-aggregate-single-truth-alignment-v1.md`
@@ -30,6 +30,7 @@
### 2.1 已经成立的事实
- [x] `leptos-tiptap` 已经成为页面内正式主编辑区,不再是 iframe bridge。
- [x] `/api/documents/page` 已优先消费 Rust `mnote.page_aggregate.v1` snapshotTS builder 退为 fallback。
- [x] 正文保存已经能按 `workspaceId/documentId` 正确落到对应页面。
- [x] 当前主编辑区已具备可继续推进的基础交互能力。
- [x] 当前问题已经不再是“能不能接入主编辑器”,而是“接入后如何收口为单一真源”。
@@ -78,7 +79,7 @@
- [x] 不再继续给 `DocumentPageProps``DocumentContentProps` 零散加字段来扩页面真相。
- [x] 文档页加载入口能明确区分“聚合读取结果”和“局部 UI 临时态”。
补充:当前已新增 `page-aggregate-builder.ts``page-aggregate-loader.ts``/api/documents/page`,文档页 SSR 入口和 `DocumentContent` 的内容重试补拉都已改为消费同一份 `PageAggregateProjection`,不再由 `page.tsx` 手工拼 `meta + content`。Rust 侧仍未直接暴露同名 `Page Aggregate` projection route,但 `storage-convex-bridge``bridge-runtime` 已开始接受 `page.head.updateTitle / page.layout.updateOptions / page.body.save` 这组 page command family 的命名口径,因此这里按“等价契约已出现”勾选完成。
补充:当前已新增 `page-aggregate-builder.ts``page-aggregate-loader.ts``/api/documents/page`,文档页 SSR 入口和 `DocumentContent` 的内容重试补拉都已改为消费同一份 `PageAggregateProjection`,不再由 `page.tsx` 手工拼 `meta + content`。Rust 侧当前已直接暴露 `/api/page-aggregate/:id``mnote.page_aggregate.v1` snapshot`page-aggregate-loader.ts` 会先校验并消费这条 Rust 读链,只有 snapshot 不可用或不可信时才回退到 TS builder。与此同时,`storage-convex-bridge``bridge-runtime` 已开始接受 `page.head.updateTitle / page.layout.updateOptions / page.body.save` 这组 page command family 的命名口径,因此这里按“读取契约已进入 Rust-first,写入命令面已开始收口”勾选完成。
### 4.3 退出标准
@@ -1,41 +0,0 @@
# 5-8 [process] Wolai 编辑态自动化测试方案 v1(已收口)
> 更新时间:2026-04-30
>
> 状态:本文件原有的工具筛选、只读边界、沙盒页要求和脚本草案已经被统一的 `wolai-aline` skill 与 `08-wolai-aline-test-flow` 流程取代。后续不要再按本文旧版测试方案执行。
## 当前唯一口径
后续所有 Wolai 对标、复刻、aline/alignment、编辑器状态自动化测试任务,统一使用:
- Codex skill`/home/lix/.codex/skills/wolai-aline`
- 项目流程:`/mnt/Data1T/mnote/design/08-wolai-aline-test-flow/process/wolai-aline-test-flow-v1.md`
- 项目规则:`/mnt/Data1T/mnote/AGENTS.md``Wolai-aline 对标流程`
## 取代的旧结论
以下旧结论不再作为执行依据:
- “Hermes 页面只能只读,写入必须另找沙盒页”。
- “published 态脚本可以代表主编辑器完成验收”。
- “subagent 文本结论或文案断言足以证明对齐”。
- “先实现再由用户肉眼指出差异”。
- 本文旧版 `wolai-reference-*` 脚本草案、分阶段 checklist、工具通道优先级。
## 现行规则摘要
- 当前 Hermes 测试页 `https://www.wolai.com/liaibo/ikFSSM1a4GgvmHBYFCNfVd` 已授权用于 Wolai-aline 编辑器对标中的最小编辑验证。
- 编辑验证必须记录前后截图、动作链、输入内容和清理状态。
- 即使在 Hermes 测试页,也禁止未经确认地删除、移动、归档、发布、评论、改权限或批量修改既有非测试内容。
- 其他 Wolai 页面仍默认只读;写入仍需用户提供沙盒页 URL 和明确授权。
- 浏览器对标测试必须使用 subagent 执行;主线程必须复核截图并形成差异矩阵。
- 发现差异后先补本地 smoke,让差异可复现失败,再实现修复。
## 后续维护
若后续 Wolai-aline 任务发现新的稳定失败模式,应更新:
- `/home/lix/.codex/skills/wolai-aline/references/failure-patterns.md`
- 必要时同步更新 `/mnt/Data1T/mnote/design/08-wolai-aline-test-flow/process/wolai-aline-test-flow-v1.md`
不要继续扩写本文作为新测试方案。