feat(mcp): notes 档案分片双写 + backfill 自愈(可拆除性修复) #5

Merged
lanrtop merged 2 commits from feat/governance-feedback-loop into master 2026-09-11 21:26:21 +08:00
Showing only changes of commit e345cc6a90 - Show all commits

View File

@ -147,12 +147,19 @@ R 规则层=CONVENTIONS 规则库炼境强项业务侧反而隐式E
## 任务卡 ## 任务卡
### 📋 notes 档案落地(可拆除性修复:双写 + 存量回填) ### notes 档案落地(可拆除性修复:双写 + 存量回填)· done 2026-09-11
- status: todo - status: done
- complexity: M - complexity: M
- files: src-tauri/src/mcp_tools.rs, src-tauri/src/db.rs - files: src-tauri/src/mcp_tools.rs, src-tauri/src/mcp_inject.rs原卡列 db.rs 实际未动——无新表,纯双写层)
- acceptance: agent_verify: [Tauri command] append_project_note(pid, content) → DB 有记录**且** `.blueprint/notes-archive.jsonl` 尾行 JSON 可解析出同一 content存量回填命令执行后 JSONL 行数 = project_notes 表行数cargo test 覆盖双写 + 并发追加不交错 - acceptance: agent_verify: [Tauri command] append_project_note(pid, content) → DB 有记录**且** `.blueprint/notes-archive.jsonl` 尾行 JSON 可解析出同一 content存量回填命令执行后 JSONL 行数 = project_notes 表行数cargo test 覆盖双写 + 并发追加不交错 ✅110 测试全绿含新增 3双写行匹配 / 回填幂等+死登记跳过 / 8 线程并发不交错)
- 备注project_notes 是全系统唯一不在 git 的原创资产(飞轮全部原料)。格式选 JSONL 而非 md——机器可重放重建 DB才是真「重生配方」。归宿炼境仓库 `.blueprint/notes-archive.jsonl`,沿 usage.json「炼境自动写文件 + chore commit」先例。这即本模块缺口①「结构化落账」的地基 - **归宿翻转声明(动工前辩证,偏离原卡设计)**:原卡「炼境仓库集中式档案」→ 改为**按项目分片**
(各项目 `.blueprint/notes-archive.jsonl` 存自己的笔记)。理由:① 安装态进程无法可靠定位「炼境仓库」路径;
② 与「资产=纯文件在项目 git、可拆除性按项目」哲学一致透镜节 .blueprint 分片描述);③ 子项目会话
(含 DSH文件直读就地消费自家档案④ usage.json 先例本就是 per-project 写入
- 实现留痕双写失败不回滚笔记DB 事实源)仅 log_event warn`backfill_notes_archive` MCP 工具
全量重建幂等自愈;死登记(空/相对路径)跳过并报告(复用 validate_registered_path 防护,
project_root 重构出依赖注入版 project_root_with_conn
- **待重建终验**MCP 实调append 双写 + backfill 存量 78+ 条笔记落盘)需重建安装炼境后执行
### 📋 /ship 模板体检(第二轮分诊待行动 ×4 ### 📋 /ship 模板体检(第二轮分诊待行动 ×4
- status: todo - status: todo