- 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
+1
-1
@@ -733,7 +733,7 @@ class PgCursor:
|
||||
info_cur.close()
|
||||
self._fake_rows = [
|
||||
PgRow((i, r[1], r[2],
|
||||
0 if r[3] == "NO" else 1, r[4], r[5]),
|
||||
1 if r[3] == "NO" else 0, r[4], r[5]),
|
||||
("cid", "name", "type", "notnull",
|
||||
"dflt_value", "pk"))
|
||||
for i, r in enumerate(raw)]
|
||||
|
||||
Reference in new issue
Block a user