diff --git a/docs/plans/2026-08-curator-agent-refactor.md b/docs/plans/2026-08-curator-agent-refactor.md index bc09256..1e5865a 100644 --- a/docs/plans/2026-08-curator-agent-refactor.md +++ b/docs/plans/2026-08-curator-agent-refactor.md @@ -232,7 +232,25 @@ commits:`6df2f20` 解析器与意图分流 · `1580504` 适配器三态 · `07 「链接抽取」;`journalctl` 无新错误;`ps` 无孤儿 node;系统提示不含 `expert coding assistant`。 -### 阶段 1 · 契约与数据层(约 1.5 天) +### 阶段 1 · 契约与数据层 —— ✅ 已完成 2026-08-28 + +commits:`e18f4de` 迁移框架 / 事务 / upsert / 索引 · `5de5933` `contracts.py`。 +测试 58 → 77。生产库已升级:`user_version` 0 → 3,`integrity_check` ok, +`foreign_key_check` ok,计数与迁移前一致,自动快照 +`curator-v0-20260828T063553Z.sqlite3`。 + +**顺带发现并修掉的两个问题**: + +1. 我最初把"库版本高于代码"的检查写在"无待办迁移则返回"之后 —— 那样它永远不会触发, + 因为超前的库本就没有待办迁移,旧代码会继续往看不懂的 schema 里写。已调整顺序并加测试。 +2. `create_control_plan` 是所有写操作的幂等闸门,却是 check-then-insert。 + 并发下两条 Telegram 消息可同时通过 SELECT,第二条撞 UNIQUE 抛 IntegrityError —— + 于是"重复请求"表现为"失败"而不是"已计划"。已改为单语句,并加 6 线程栅栏测试。 + +**验证方式**:漂移守卫不是假设的 —— 给 `RECOMMENDATIONS` 加一个值而不改其它, +`test_exported_schemas_match_the_current_definitions` 确实失败。 + +### 阶段 1 原始清单(供对照) 1. `curator/contracts.py`:dataclass + JSON Schema 定义 `ExtractionResult` / `ReviewSynthesis` / `FactPack` / `WriteProposal` / `IntentPlan`(**补 `external_ids`**)。