# 1-10 [done] Batch C P1 Resource / BufferStore / GFM / Convex Evidence Checklist v1

> 创建时间：2026-05-21
>
> 上位入口：`design/01-tree-first-graph-kernel/process/1-8-mvp-post-process-execution-order-v1.md`
>
> 阶段：Batch C / P1 小尾项收口
>
> 当前状态：`DONE`

## 1. 目标

在 Batch B 已完成 baseline smoke 复核后，继续处理 P1 中仍会干扰后续判断的尾项：

1. `5-26` resource open resolver 仍未实际收敛。
2. `1-6` Gap A2 保存后刷新可见读回需要以真实 smoke 复核。
3. `3-13` GFM AST 迁移仍有若干可小步关闭的测试 / 过渡标记尾项。
4. `1-6` Gap C1 Convex export dry-run / conflict / rollback 仍缺独立 smoke 证据。

本批次不扩新产品面，不改 OnlyOffice 保存链路，不把 `documents/save` 重新升级为 local-first 长期正文入口。

## 2. Reasonix Worker 拆分

### Worker A：resource open resolver 最小收敛

Owner：

- `design/05-editor-mainline/process/5-26-resource-open-resolver-convergence-checklist-v1.md`
- `rust/crates/mnote-web/src/ssr/pages/layout.rs`
- `scripts/task463-onlyoffice-resolver-smoke.js`

目标：

- 审查并最小收敛 `buildLocalOnlyOfficeOpenUrl`、`openEditorAttachmentEditTab`、`openEditorAttachmentNewWindow`、`openConvexAssetFromFileTree` 与 `resolveResourceOpen` 的重复 local Office / resource open 判断。
- 若能安全实现，只改 `layout.rs` 与 `task463`。
- 必须保持：正文附件“弹窗编辑”进 main resource tab，“新窗口编辑”进浏览器窗口，md/text/code 继续走 tiptap/text/code 渲染路径。

验收：

- `cargo test --manifest-path rust/Cargo.toml -p mnote-web sidebar_tree_runtime_opens_office_assets_through_resource_shell -- --test-threads=1`
- `node --check scripts/task463-onlyoffice-resolver-smoke.js`
- 如 smoke 可运行，执行 `node scripts/task463-onlyoffice-resolver-smoke.js`

### Worker B：GFM AST 尾项小包

Owner：

- `design/03-rust-web/done/3-13-rust-web-local-markdown-gfm-ast-parser-migration-v1.md`
- `rust/crates/mnote-web/src/routes/local_folder_source.rs`
- `rust/crates/mnote-web/src/routes/web_shell.rs`

目标：

- 补充或追认 GFM AST 尾项中低风险项：空表格单元格 / 降级策略测试、legacy->Tiptap marks 验证测试、写侧手写 Markdown 函数过渡标记。
- 不修复 frontmatter title 优先级；该项是单独行为变更，保留给后续专项。
- 不移除 web_shell legacy 适配分支，只允许加过渡注释或测试。

验收：

- `cargo test --manifest-path rust/Cargo.toml -p mnote-web local_markdown -- --test-threads=1`
- `cargo test --manifest-path rust/Cargo.toml -p mnote-web web_shell -- --test-threads=1`

### Worker C：Convex export 产品化补 smoke

Owner：

- `design/01-tree-first-graph-kernel/done/1-6-next-phase-gap-closure-checklist-v1.md`
- `scripts/task444-convex-workspace-export-local-fixture-smoke.js`
- 可新增 `scripts/task48*-convex-export-*.js`

目标：

- 为 C1 已有能力补 smoke：dry-run 不写文件、同名冲突不覆盖、rollback 恢复导出前状态。
- 不修改 Convex runtime，不改 local-first 架构口径。
- 优先复用现有 fixture/export 脚本，新增脚本要可离线运行。

验收：

- `node --check scripts/task444-convex-workspace-export-local-fixture-smoke.js`
- `node scripts/task444-convex-workspace-export-local-fixture-smoke.js`
- 新增 smoke 的 `node --check` 与实跑通过。

## 3. Codex 本地关键路径

Codex 同步处理：

- A2 保存后刷新可见读回：复现 `POST /api/page-body/write` 后刷新 editor DOM 不显示正文的问题，判断是过期证据、hydration 问题，还是当前真实回归。
- 若是 smoke 缺失，补最小 browser smoke；若是真回归，优先修复 web shell / aggregate bootstrap。

## 4. 完成条件

- Reasonix worker 均有 `final.md` / `result.json` 或明确 `TIMEOUT` 记录。
- Codex 独立审查 diff，不直接相信 worker 总结。
- 相关 targeted tests 与 browser smoke 实跑通过或形成明确 bug。
- `1-6`、`1-9`、`3-13`、`5-26` 文档状态更新。
- 提交前运行 `codegraph sync .`、`codegraph status`、`git diff --check`。

## 5. 本轮执行记录

- 2026-05-21：Codex 建立 Batch C checklist，准备派发 Worker A/B/C，并本地排查 A2 刷新读回。
- 2026-05-21（Codex）：新增并实跑 `task484-local-folder-page-body-refresh-readback-smoke.js`，验证 `POST /api/page-body/write` 后磁盘、Page Aggregate、刷新后 ProseMirror 均读回新正文；`1-6` Gap A2 浏览器可见读回改判为完成，剩余仅为 conflict UI 数据源接 BufferStore。
- 2026-05-21（Reasonix Batch C Worker A）：worker 只提交 resource resolver 收敛计划，未生成 `final.md` / `result.json`，无业务代码 diff；记录为 `PLAN_ONLY_TIMEOUT`，`5-26` 保持 `process`。结果文件：`.codex/reasonix-tasks/results/batch-c-worker-a-resource-open-resolver-timeout.md`。
- 2026-05-21（Reasonix Batch C Worker B）：完成 GFM AST 尾项小包，补空引用块 / 空表格单元格测试、web_shell marks 断言、写侧 Markdown 过渡注释，并更新 `3-13`；结果文件：`.codex/reasonix-tasks/results/batch-c-worker-b-gfm-tail.md`。
- 2026-05-21（Reasonix Batch C Worker C）：`task455-convex-export-plan-rollback-smoke.js` 实跑通过，覆盖 dry-run/conflict/rollback 三个行为，`1-6` Gap C1 已可视为完成。结果文件：`.codex/reasonix-tasks/results/batch-c-worker-c-convex-export-smokes.md`。
- 2026-05-21（Codex Batch F 追认）：`3-13` 已移动到 `design/03-rust-web/done/`，本文作为 Batch C 执行记录不再保持活跃 process。
