Every change in these projects flowed through a lightweight
spec-driven workflow: proposal → spec (Given/When/Then) → design →
tasks → apply → verify → archive. The artifacts are committed
alongside the code in openspec/,
so the reasoning behind every architectural decision (hybrid naming,
AutoMigrate one-shot, dual-auth, secret rotation) survives review and
onboarding.
I optimize for decisions documented,
not lines of code. CI guards prevent regressions
(DB_RUN_MIGRATIONS=true
in production, donor-template leakage). Bugs caught in production
land back in the runbook so the next operator avoids the wall I hit.
Tests are integration-heavy with testcontainers — I'd rather catch a
schema bug against a real PostgreSQL than mock my way around it.