- attempt_ledger.ensure: relax gap-3 outcome NOT NULL on Postgres (ALTER COLUMN outcome DROP NOT NULL, probe-gated); without it every resume write on a gap-3-migrated PG table fails with NotNullViolation. SQLite keeps NOT NULL (no such ALTER). - db.PgCursor: PRAGMA table_info fake rows had the notnull flag inverted (NO -> 0); now matches sqlite semantics (1 = NOT NULL). No caller read row[3] before, so this was latent. - ledger_onboarding: stale 'PG path unverified' notes updated to point at the real-PG proof. - tests: pragma_info notnull pin (fake driver) + _column_notnull probe pins (fresh + gap-3 SQLite). Proof: 28/28 checks on real Postgres 16.15 (see verification/ codex-task-attempts-pg-proof-20261106.md).
This commit is contained in:
1 parent
698398dafb
commit
2fcde375a4
5 files changed
+104
-16
No files matched your search
@@ -23,15 +23,17 @@
|
||||
与 attempt_hook.PG_MARKER_DDL 两个常量(本模块不
|
||||
复制 DDL 文本,复制就会漂移)。老形态表升级走
|
||||
attempt_ledger.ensure_task_attempts_table 的统一列补齐
|
||||
(仅当老形态建过表时需要;属防御项,PG 真实库升级
|
||||
路径未实证)。
|
||||
(仅当老形态建过表时需要;属防御项,真实 PG 16.15
|
||||
升级路径已于 2026-11-06 实证,见 verification/
|
||||
codex-task-attempts-pg-proof-20261106.md)。
|
||||
4. 校验函数 verify_ledger_ready(conn):只读探针——查两
|
||||
张表的存在与必需列,不建表、不写行(读路径绝不改
|
||||
schema,与 metrics-report 端点的只读纪律一致)。
|
||||
5. 生产 PG 手动 DDL 仍是运维侧动作:本轨无生产 PG、无
|
||||
本地 PG,PG 证据与此前各轨同款——适配器级(? 占位符
|
||||
经 cloud.db 翻译、DDL 仅用 PG 合法类型、无自增列),
|
||||
绝不写成“生产 PG 已执行”。运维执行清单见
|
||||
5. 生产 PG 手动 DDL 仍是运维侧动作:升级路径本身已在
|
||||
真实 PG 16.15 上实证(见 verification/
|
||||
codex-task-attempts-pg-proof-20261106.md),但“生产 PG
|
||||
已执行”仍须运维在生产库上跑过才算,绝不写成已执行。
|
||||
运维执行清单见
|
||||
LEDGER_DDL_CHECKLIST(顺序执行 + 每步验证命令)。
|
||||
|
||||
零第三方依赖,只用标准库。conn 约定与 attempt_ledger
|
||||
@@ -79,8 +81,9 @@ LEDGER_DDL_CHECKLIST = (
|
||||
"action": "仅当表已由老形态(旧恢复 DDL、gap 3 台账 DDL"
|
||||
" 或演练形态)建过时:经 attempt_ledger."
|
||||
"ensure_task_attempts_table 补齐缺失的统一列"
|
||||
"(SQLite 已实测;PG 真实库升级路径未实证,"
|
||||
"生产 PG 上执行前须先在真实 PG 上验证)",
|
||||
"(SQLite 与真实 PG 16.15 均已实测,见 verification/"
|
||||
"codex-task-attempts-pg-proof-20261106.md;生产 PG"
|
||||
" 上执行仍是运维侧动作)",
|
||||
"ddl_source": "cloud.attempt_ledger.TASK_ATTEMPTS_DDL",
|
||||
"verify": "task_attempts 含统一 schema 全部 12 列",
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user