3.6 KiB
3.6 KiB
Worker A:7-27 归档性审查结果
审查时间:2026-05-20 审查范围:
design/07-ai/process/7-27-online-markdown-writeback-final-content-truth-v2.md× 当前 Rust 代码
1. 对照步骤 1-6 的完成状态
| 步骤 | 内容 | 状态 | 证据 |
|---|---|---|---|
| 步骤 1 | 增强 blocks_to_markdown:注释格式加 type/rev,复杂块用 raw marker |
✅ 已实现 | doc.rs:1185-1215 — 输出 <!-- block:id:type:level=N --> 和 [mnote-raw-block:id] |
| 步骤 2 | 实现 parse_final_markdown_to_blocks |
✅ 已实现 | doc.rs:656-747 — 完整实现含正则提取、fuzzy 回退、复杂块保留 |
| 步骤 3 | 实现 build_page_content |
✅ 已实现 | doc.rs:850-913 — 含新块 ID 生成、复杂块保留、inline contentNodes 保护 |
| 步骤 4 | 替换 doc_markdown_edit online 写回路径 |
✅ 已实现 | doc.rs:1625-1700 — "// 7-27: 在线写回以最终 markdown 为真源" |
| 步骤 5 | 更新 full_content 处理 |
✅ 已实现 | doc.rs:1578-1585 — 转为 search=全文, replace=full,进新路径 |
| 步骤 6 | 清理旧代码 | ✅ 已标记 | Line 1911: // 退役:7-27 …直接写回 |
2. 测试矩阵覆盖
| 优先级 | 场景 | 测试函数 | 结果 |
|---|---|---|---|
| P0 | 单块精确 search/replace | test_search_replace_exact |
✅ |
| P0 | 忽略空白 match | test_search_replace_normalized_chinese_byte_boundaries |
✅ |
| P0 | 多 operation 命中同块 | hermes_tools_markdown_edit_merges_same_block_operations |
✅ |
| P0 | full_content | hermes_tools_markdown_edit_online_full_content_rejects_unsafe_block_mapping |
✅ 注释明确:"7-27 修复后:full_content 不再被拒绝" |
| P1 | heading 替换 | test_blocks_to_markdown_heading |
✅ |
| P1 | 包含复杂块文档的替换 | test_build_page_content_full_content_replaces_old_text_blocks_but_keeps_complex_blocks |
✅ |
| P1 | dryRun | hermes_tools_markdown_edit_local_dry_run_does_not_write |
✅ |
| P1 | revision 过期检查 | hermes_tools_markdown_edit_online_page_body_save_carries_revision_conflict_key |
✅ |
| P2 | 原始块 ID 消失保留 | test_build_page_content_preserves_missing_original_text_block_when_some_ids_remain |
✅ |
| P2 | 空 operations | hermes_tools_markdown_edit_rejects_no_applied_operations |
✅ |
3. 开放问题状态
| 开放问题 | 当前状态 |
|---|---|
OQ1:<!-- block:id:type:rev --> 被 search/replace 破坏 |
extract_block_comment 在解析不完整注释时返回 (None, None),标记为 is_new=true,安全降级 |
| OQ2:full_content 块类型从 GFM 前缀推断 | detect_block_type_from_prefix 支持 heading/todo/paragraph,代码块等交由 fallback 处理 |
| OQ3:行内格式保持 | update_legacy_block_text_for_markdown_edit + replace_single_inline_text_value 在文本不变时保留 marks,改变时更新 text 字段 |
4. 验证结果
$ cargo test -p mnote-web markdown_edit -- --test-threads=1
16 passed; 0 failed
$ cargo test -p mnote-web hermes_tools_manifest_describes_markdown_edit_write_contract -- --test-threads=1
1 passed; 0 failed
$ git diff --check
无冲突标记
5. 结论:可归档
归档条件全部满足:
- 步骤 1-6 全部实现 ✅
- P0/P1 测试矩阵全部通过 ✅
- 旧代码已标记退役 ✅
- 命名管道的 reason 字段包含
"mnote.doc.markdown_edit (7-27)"✅ - 开放问题均为已知边界,不需要阻碍归档
6. 执行操作
将 design/07-ai/process/7-27-online-markdown-writeback-final-content-truth-v2.md 移动到 design/07-ai/done/。