Files
mnote/design/01-tree-first-graph-kernel/process/1-12-batch-e-p1-p2-tail-execution-checklist-v1.md
T

7.4 KiB
Raw Blame History

1-12 [process] Batch E P1/P2 尾项执行 checklist v1

创建时间:2026-05-21

当前状态:PROCESS

上位入口:design/01-tree-first-graph-kernel/process/1-8-mvp-post-process-execution-order-v1.md

阶段:Batch E / P1-P2 剩余尾项收口

1. 目标

本批次只处理当前仍有明确证据缺口、且可以并行推进的三个小尾项:

  1. 3-13 GFM AST 迁移尾项:保存失败状态保留、表格降级策略、web_shell.rs 临时适配分支去留判定。
  2. 1-6 Gap A2conflict UI 数据源从本地 session 状态进一步接入 BufferStore 可查询状态。
  3. 1-6 Gap A7 / 1-8 P2.2FileTree 菜单与快捷键最小接入 CommandContext enablement 口径。

本批次不扩 AI 主线,不处理 Wolai 对标,不提前实现 Phase C / Review Mode,不改变 local-first / tree-first 口径。

2. 已完成追认

  • 5-26 resource open resolver 已由 Batch D 完成,并经 task463-onlyoffice-resolver-smoke.js 与 Rust 单测复核,已归档到 design/05-editor-mainline/done/
  • 1-6 Gap A2 保存后刷新可见读回已由 task484-local-folder-page-body-refresh-readback-smoke.js 复核通过。
  • 1-6 Gap C1 Convex export dry-run / conflict / rollback 已由 task455-convex-export-plan-rollback-smoke.js 复核通过。
  • 1-6 Gap A2 conflict UI 数据源已接入 BufferStore 查询与冲突信封桥接;/api/documents/buffer-statedocument_page_shell 初始化、task451 信封断言均已通过,task451 在最新 3000 主进程上已复测通过。
  • 1-6 Gap A7 FileTree 右键菜单与 Delete/Backspace 快捷键已接入 CommandContext 等价 enablement 逻辑;task471 / task476 / core-protocol command_context 已通过。

3. Reasonix Worker 拆分

Worker AGFM AST 保存失败与降级策略尾项

Owner

  • design/03-rust-web/process/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/local_markdown_parser.rs
  • rust/crates/mnote-web/src/routes/web_shell.rs(只读审查,不能直接修改)
  • 可新增或修改一个 scripts/task48*-local-markdown-save-error-*.js smoke。

目标:

  • 补最小测试或实现,验证保存失败时编辑器状态可保留并显示可解释错误。
  • 补表格带 mark 单元格或不支持结构的降级策略测试;若当前行为已经可解释,写入证据并更新 3-13
  • 只读审查 web_shell.rslegacyStylesToTiptapMarks 等临时适配分支是否仍为必要兼容层;不能安全移除时,把它从“必须移除”改为“保留兼容层并有 TODO 退出条件”。

验收:

  • cargo test -p mnote-web local_markdown -- --test-threads=1
  • cargo test -p mnote-web web_shell -- --test-threads=1
  • 如新增 smokenode --check scripts/task48*-local-markdown-save-error-*.js,并尽量实跑。

当前状态:

  • 已有 task473 / task455 / task451 等结果可表明相邻尾项已处理,但保存失败状态保留与 web_shell.rs 兼容层退出条件仍需 Worker A 自己落盘证据。

Worker BBufferStore conflict UI 数据源

Owner

  • design/01-tree-first-graph-kernel/process/1-6-next-phase-gap-closure-checklist-v1.md
  • rust/crates/mnote-web/src/document_buffer_store.rs
  • rust/crates/mnote-web/src/routes/documents.rs
  • rust/crates/mnote-web/src/routes/web_shell.rs
  • scripts/task451-local-markdown-conflict-resolution-ui-smoke.js

目标:

  • 为当前打开文档暴露最小 buffer state 查询能力,或把已有 Page Aggregate / session conflict envelope 明确桥接到 BufferStore 状态。
  • conflict UI 应能读取 editor base version、disk/current version、source actor 或等价字段;不能只靠前端本地临时状态。
  • 保持现有 task451 的 accept disk / keep current / merge 三条行为不回退。

验收:

  • cargo test -p mnote-web document_buffer -- --test-threads=1
  • cargo test -p mnote-web local_folder -- --test-threads=1
  • PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/google-chrome-stable node scripts/task451-local-markdown-conflict-resolution-ui-smoke.js

当前状态:

  • 代码与 targeted tests 已通过,后续仅保留对 UI 复核和状态记录的收口,不再作为未完成主线。

Worker CCommandContext FileTree 菜单 / 快捷键最小接入

Owner

  • design/01-tree-first-graph-kernel/process/1-6-next-phase-gap-closure-checklist-v1.md
  • rust/crates/core-protocol/src/command.rs
  • rust/crates/mnote-web/src/ssr/pages/layout.rs
  • scripts/task476-filetree-editor-context-menu-download-smoke.js
  • scripts/task471-local-folder-bulk-resource-trash-smoke.js

目标:

  • 在 SSR sidebar JS 中引入最小 CommandContext 等价 enablement helper,先覆盖 FileTree 右键菜单和 Delete/Backspace 快捷键。
  • readonly / sourceKind / selectionCount / resourceKind 的禁用语义应与 Rust CommandContext 测试口径一致;不要求本轮把 Rust evaluator 直接编译到 JS。
  • 保持下载、多选删除、粘贴、只读阻断 smoke 不回退。

验收:

  • cargo test -p mnote-web sidebar_filetree -- --test-threads=1
  • cargo test -p core-protocol command_context -- --test-threads=1
  • node scripts/task471-local-folder-bulk-resource-trash-smoke.js
  • node scripts/task476-filetree-editor-context-menu-download-smoke.js

当前状态:

  • 代码与 targeted tests 已通过,可作为 1-6 A7 的已完成证据使用。

4. Codex 复核项

  • 逐个读取 worker 的 final.md / result.json / diffB/C 由代码 diff 与 targeted tests 复核,A 无 final.md / result.json,已记录 timeout。
  • 检查 worker 是否越权修改非 owner 文件:A 未采纳,B/C 改动范围与任务目标一致;Codex 对 documents.rs 查询兜底补了单测。
  • 运行各 worker 验收命令中与实际改动相关的 targeted tests。
  • UI/browser 可见项必须由 Codex 或浏览器测试 worker 实跑复核:task471task476task451 已有实跑记录,且 task451 已在最新 3000 主进程上复测通过。
  • 更新 1-63-13、本文执行记录:1-6 追认 buffer_state / task451 状态;3-13 追认 task486 改为当前主链 smoke 并复测通过。
  • 可归档的文档移动到 done/,不能归档的保留明确未完成项:5-26 已归档,3-13 保持 process。
  • 提交前运行 git diff --checkcodegraph sync .codegraph status

5. 本轮执行记录

  • 2026-05-21Codex 复核 5-26 最后一项,cargo test -p mnote-web sidebar_tree_runtime_opens_office_assets_through_resource_shell -- --test-threads=1node scripts/task463-onlyoffice-resolver-smoke.js 通过,5-26 已归档。
  • 2026-05-21Codex 建立 Batch E checklist,并准备派发 Worker A/B/C。
  • 2026-05-21Codex 复核 1-63-13 现有 code / test 状态后,确认 Gap A2 conflict UI 与 Gap A7 菜单/快捷键已落地,Gap C1 已完成;Batch E 只剩 Worker A 的 3-13 尾项与对文档状态的最终收口。
  • 2026-05-21Reasonix Worker A 重新派发后长期未生成 final.md / result.jsonCodex 终止卡住的 runner / reasonix acp 进程,并记录 .codex/reasonix-tasks/results/batch-e-worker-a-gfm-save-error-timeout.md;后续 Codex 将 task486 重新对齐到当前 /documents 主链并复测通过,保存失败状态保留已追认。