# Reasonix Worker A:GFM AST 保存失败与降级策略尾项 Project root: `/mnt/Data1T/mnote` 你不是唯一 worker。不要回滚、覆盖或整理他人改动;只处理本任务 ownership 范围。 ## 背景 上位 checklist:`design/01-tree-first-graph-kernel/process/1-12-batch-e-p1-p2-tail-execution-checklist-v1.md` 当前 `design/03-rust-web/process/3-13-rust-web-local-markdown-gfm-ast-parser-migration-v1.md` 仍保留几个尾项: - 保存失败时保留编辑器状态并给出可解释错误。 - 表格带 mark 单元格 / 不支持结构的降级策略测试仍不足。 - `web_shell.rs` 中 `legacyStylesToTiptapMarks` 等临时适配分支是否可移除尚未判定。 ## Ownership 允许修改: - `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` - 可新增或修改一个 `scripts/task48*-local-markdown-save-error-*.js` 只读审查,不允许修改: - `rust/crates/mnote-web/src/routes/web_shell.rs` 禁止修改: - AI / Hermes / OnlyOffice 文件 - FileTree action / trash 代码 - `rust/crates/mnote-web/src/routes/web_shell.rs`(只读审查即可,避免与 Worker B 冲突) - git commit、git reset、git checkout ## 任务 1. 先审查代码,确认保存失败状态保留是否已有行为和测试。 2. 尽量补一个最小单测或 smoke,覆盖保存失败时编辑器仍保留当前内容,并能显示可解释错误。 3. 补表格带 mark 单元格或不支持结构降级策略的最小测试;如果已有测试足够,更新文档证据。 4. 只读审查 `web_shell.rs` 临时 legacy marks 分支;不能安全移除就把 `3-13` 的“必须移除”改为“保留兼容层 + 明确退出条件”。不要修改 `web_shell.rs`。 5. 更新 `3-13` 的本轮执行记录,不把未验证项标完成。 ## 验收命令 - `cargo test -p mnote-web local_markdown -- --test-threads=1` - `cargo test -p mnote-web web_shell -- --test-threads=1` - 如新增 smoke:`node --check scripts/task48*-local-markdown-save-error-*.js`,并尽量实跑。 ## 最终回复 请列出: - 修改文件 - 运行的命令和结果 - 未完成项 - 风险或需要 Codex 再判断的点