Add automated database migration runner with safety checks on startup #67

Closed
opened 2026-04-08 16:36:04 -04:00 by pook · 1 comment
Owner

Problem

Stale issue #33 has no PR after 6h. The original scope may be too broad. This replacement focuses narrowly on running pending migrations at startup with a lock to prevent concurrent migration runs.

Implementation

  1. In the app startup sequence, before listening on the HTTP port, check for pending migrations
  2. Use an advisory lock (pg_advisory_lock) to prevent two instances from migrating simultaneously
  3. Run pending migrations in a transaction — rollback on any failure
  4. Log each migration applied: { migration: 'name', status: 'applied'|'skipped', duration_ms }
  5. If migrations fail, log the error and exit with code 1 (do not start serving)

Acceptance Criteria

  • App runs pending migrations before accepting traffic
  • Concurrent startups don't race on migrations (advisory lock)
  • Failed migration prevents app from starting (fail-fast)
  • Already-applied migrations are skipped
  • Migration status is logged as structured JSON

Generated by CEO Planner (priority: 3)

## Problem Stale issue #33 has no PR after 6h. The original scope may be too broad. This replacement focuses narrowly on running pending migrations at startup with a lock to prevent concurrent migration runs. ## Implementation 1. In the app startup sequence, before listening on the HTTP port, check for pending migrations 2. Use an advisory lock (pg_advisory_lock) to prevent two instances from migrating simultaneously 3. Run pending migrations in a transaction — rollback on any failure 4. Log each migration applied: `{ migration: 'name', status: 'applied'|'skipped', duration_ms }` 5. If migrations fail, log the error and exit with code 1 (do not start serving) ## Acceptance Criteria - App runs pending migrations before accepting traffic - Concurrent startups don't race on migrations (advisory lock) - Failed migration prevents app from starting (fail-fast) - Already-applied migrations are skipped - Migration status is logged as structured JSON --- *Generated by CEO Planner (priority: 3)*
Author
Owner

Bulk-closed 2026-04-10 during pipeline triage.

Context: CEO agent had created 100 open agent-task issues against compliancebot, largely duplicates of each other and of the 50 currently-open PRs. Root cause traced to a git-push race in agent-worker executor (dispatch jobs collided on branch agent/dispatch/* because jobId prefix truncated to literal "dispatch"). Fix deployed: runId is now threaded from Paperclip shim through /dispatch → TaskJob → executor, and branches are keyed on a 12-char unique run key.

What to do next:

  1. Triage the 50 open PRs at https://192.168.183.110:3000/pook/compliancebot/pulls — many are ready to merge
  2. CEO should halt new task creation until open PRs drop below 10
  3. Surviving kept issues: #313, #314, #315, #341, #342, #350, #351, #352 (PR review/merge tasks)

This issue was superseded, not abandoned. Reopen if still relevant after PR triage.

Bulk-closed 2026-04-10 during pipeline triage. **Context:** CEO agent had created 100 open agent-task issues against compliancebot, largely duplicates of each other and of the 50 currently-open PRs. Root cause traced to a git-push race in agent-worker executor (dispatch jobs collided on branch `agent/dispatch/*` because jobId prefix truncated to literal "dispatch"). Fix deployed: runId is now threaded from Paperclip shim through /dispatch → TaskJob → executor, and branches are keyed on a 12-char unique run key. **What to do next:** 1. Triage the 50 open PRs at https://192.168.183.110:3000/pook/compliancebot/pulls — many are ready to merge 2. CEO should halt new task creation until open PRs drop below 10 3. Surviving kept issues: #313, #314, #315, #341, #342, #350, #351, #352 (PR review/merge tasks) This issue was superseded, not abandoned. Reopen if still relevant after PR triage.
pook closed this issue 2026-04-10 14:48:30 -04:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pook/compliancebot#67
No description provided.