5b2e3ba82d
Twelve tasks across the two plans, each with the files it touches, the evidence it has to produce, and the command that proves it. #13 goes first: both branches edit config.py and client.py, and #12's partitioning template leans on the schema SQL helper and the untargeted conflict clause that #13 introduces. Writing the cap plan surfaced a trap worth its own guard. digest_messages appends the very same dict when a message's content is not a list, so the telemetry copy, the caller's messages and the cache key all share one object -- capping in place would poison the caller's request and the cache key at once, silently. Two red-line tests now pin that down, and the plan asks for an in-place version to be written and run first, to prove the tests actually catch it.
778 B
778 B
type, node_id, title, date
| type | node_id | title | date |
|---|---|---|---|
| plan | plan:plan-issue13-schema-mode | 实现计划: issue13-schema-mode | 2026-08-19 |
实现计划: issue13-schema-mode
正文: 2026-08-19-issue13-schema-mode.md。实现 design:issue13-schema-mode。
七个任务: ① 建 telemetry/schema.py 单一事实源(纯搬迁,行为不变)+ insert_sql()/telemetry_schema_sql(); ② PG 写入去掉冲突目标(为分区让路); ③ 两个 recorder 加必填 auto_migrate 与裁剪写入; ④ config 派生 + 装配 + .env.example; ⑤ 顶层导出; ⑥ 真实 PG 集成验收(临时 schema 隔离,严禁碰共享表); ⑦ 文档与 Expand/Contract 承诺。
insert_sql 的列名来自数据库探测结果而非常量,故子集校验是注入面的闸,不是形式主义。