483683b834
真实 Postgres 上验收 issue #13 的 manual 档: 22 字段旧表加 auto_migrate=False, information_schema 断言列一个不加(23 列而非 auto 档的 25),裁剪后的 INSERT 照常 落库,其余 22 列逐列与提交值相等;least_privilege_pre_tenant_dsn(缺列旧表 + 只授 SELECT/INSERT 的角色)下补列失败与写入失败两类 warning 全部消失,只剩一条点名 tenant_id/meta 并附可直接执行 ALTER 的准备期提示。 沿用既有隔离纪律: 临时 schema + search_path,teardown 只删自建对象,不碰共享的 public.llm_calls。 红证据(两种取法都做了): ① 把两例的 auto_migrate 临时改成 True —— 列断言红("Left contains 2 more items, first extra item: 'tenant_id'"),补列断言红("Postgres 遥测补列失败(写入将逐行 降级): must be owner of table llm_calls")。 ② 把 postgres.py 的 _trim_columns 临时退回 Task 3 之前(manual 档不裁剪不提示) —— 两例均红于 "Postgres 遥测写入失败(丢弃该行): column \"tenant_id\" of relation \"llm_calls\" does not exist"。 两次红都已还原,18/18 通过。 _record_minimal 改为返回实际提交的字段: 逐列断言另抄一份期望值时,抄错的列会伪装 成"库写错列位",漏抄的列则根本不被验证。