v2026.6.10
·
203 commits
to main
since this release
Fixed
- Migration journal reconciler — consolidated-DB self-heal. A cold open of a consolidated/sealed
cleo.dbcould hang or fail withE_NOT_INITIALIZED("Task database not initialized"). Root cause:probeAndMarkAppliedran itsCREATE TABLEregex over raw migration SQL including prose comments, capturing phantom table targets (e.g. "…the project-side CREATE TABLE half of that move…") → the migration was never marked applied → Drizzle re-ran a bareCREATE TABLEagainst an existing table → threw (wrapped in.cause, so the "table already exists" retry guard missed it) → the rejected init-promise poisoned the connection cache → surfaced as a maskedE_NOT_INITIALIZED. Fixes: (1) strip SQL line/block comments before DDL-target extraction (reusing the existingstripSqlCommentsidiom); (2) probe-tolerance for eliminated tables — aCREATEof a table a later migration permanentlyDROPs (e.g.release_manifests→ superseded byreleases) now counts as satisfied via acomputeEliminatedTables()disposition walk; (3) zero-DDL migrations (pure-DML backfills,DROP-only, index/trigger-only) are gated by the consolidation cutover — pre-consolidation ones are stamped applied, post-consolidation ones are run-once bymigrate()(so new backfills/drops actually execute); (4) retry predicates now walk the fullerr.causechain; (5) a rejected init-promise is evicted from the connection cache so a transient open failure no longer poisons later callers. (provenance: T11829; #986)