Repository navigation
v0.20.1 — Deployment Discipline
v0.20.1 hardens GitWire deployment after the CT 115 production reconciliation.
Highlights
- Fail-closed migration entrypoint — the app container now runs
node scripts/migrate.jsbefore startup and exits non-zero on migration failure, preventing workers from running against an uncertain schema. - Durable Redis memory ceiling —
maxmemory 256mb+noevictionare now baked into the Docker Composecommand:, surviving container recreation (previouslyCONFIG SETwas process-memory only and reset to 0 on any recreate). - /health deployment visibility — now reports
version,git_sha,db_migrations_applied,db_migrations_available, anddb_migration_status(derived from applied-vs-available, not a hardcoded target).statusdegrades to"degraded"when migrations are behind or unknown. - CI Docker build + smoke gate — every PR now builds and boots both the app and dashboard production images against ephemeral service containers, catching the "merged but never rebuilt" failure class.
- Fresh-DB migration 019 fix — the new CI smoke gate caught a latent schema gap: migration 019 indexed
managed_actions(repo_full_name)but no migration ever added that column. Invisible on CT 115 (warm DB) but fatal on a fresh DB. - Deployment runbook updated — canonical migration runner, Redis persistence behavior (
CONFIG SETephemerality, compose durability), CRLF normalization for emergencyscphotfixes, fail-closed entrypoint behavior, and drift verification via/health.
Production verification
- CT 115 rebuilt from master successfully.
/healthreportsstatus=okanddb_migration_status=current(36/36).- Redis
maxmemorypersists across rebuild at 268435456 withnoevictionandappendonly=yes. - All containers healthy and logs clean.
What this prevents
The drift class discovered during the CT 115 reconciliation: future rebuilds can no longer silently run stale code, stale schema, or unbounded Redis. Deployment state is now externally observable via /health, and unbuildable code is caught at PR time rather than during an emergency deploy.
Deferred
Version centralization (single build-info source of truth, GITWIRE_COMMIT_SHA wiring, dashboard footer) remains planned for v0.20.2. The git_sha field in /health is currently null until that wiring lands.