ubiquitous-invention/docs/operations/README.md
Randall Stillwell 93565cd94c ops(db): reconcile CT 102 drift — stamp ledger, add missing 0002 tables
The `tasks` Postgres on CT 102 was bootstrapped years ago with
`drizzle-kit push`, which writes schema but skips the ledger. As of
today the ledger contained zero rows and the schema was missing
`markdown_backlog_items` + `cursor_sync_mappings` (migration 0002
ran on neither code path). Migration 0007's ALTER on
markdown_backlog_items had silently failed because of this; audit_log
was added manually.

The one-shot at docs/operations/2026-06-02-db-drift-reconcile.sql
created the two missing tables at the final post-0007 shape (skipping
0002's now-obsolete FK-to-objects intermediate state, which 0003
would have immediately rewritten anyway) and stamped all 8 migrations
with their sha256 + journal `when` so drizzle's
`lastDbMigration.created_at < migration.folderMillis` gate treats
them as already applied.

`pnpm db:migrate` is now a clean no-op against this DB. Future
migrations work normally.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-02 16:17:42 -05:00

14 lines
749 B
Markdown

# Operations runbooks
One-shot scripts and notes for operational fixes that aren't part of the
normal app flow. Each file is dated so the chronology is obvious.
Anything in this folder is **historical**. Don't re-run scripts here
without reading them first — most assume a specific broken state and
will fail or corrupt a healthy one.
## Inventory
| Date | File | What it fixed |
|------|------|---------------|
| 2026-06-02 | [`2026-06-02-db-drift-reconcile.sql`](./2026-06-02-db-drift-reconcile.sql) | Reconciled CT 102 `tasks` DB after years of `drizzle-kit push` left the migration ledger empty. Created the two tables that had never made it in (`markdown_backlog_items`, `cursor_sync_mappings`) and stamped all 8 migrations as applied. |