Build · Create · Engineering
Blameless post-incident review register
A root-cause register where each incident carries a why-chain, a stated root cause, and owned, dated corrective actions, so the same incident does not recur.
You receive: A structured RCA register (JSON) that passes the why-depth, root-cause, severity, and owned-dated-action checks.
Part of Keep App Running
What's verified: STUD verifies the submitted register (JSON) is structurally complete: your minimum number of incidents, each with a unique id, a why-chain of at least the required depth, a stated root cause, a severity in your set, and the minimum owned, ISO-dated, status-tracked corrective actions. STUD does NOT judge whether the stated root cause is correct or whether the corrective actions will actually prevent recurrence; it checks the register's completeness.
Opens soon
This play is verified and ready. It opens soon, once sign-in and payments are live.
Example
A sample of what this play produces. Your result is generated for your inputs.
- Production served the new Next.js build before the Neon schema migration for that release had run, so a query referenced a column that did not exist yet and the page 500'd.
- The deploy pipeline built and served the app without a preceding, enforced schema-apply step.
- The prior process (D-021) treated catalog/schema sync as a manual, human-run step rather than a build dependency.
- No mechanism made 'migrate, then seed and sync, then serve' an ordering guarantee inside the Vercel build itself.
- The team had not yet decided that auto-apply on deploy (D-022) was safer than a manual pre-deploy sync gate.
| Action | Owner Role | Due Date | Status |
|---|---|---|---|
| Add scripts/deploy-migrate.mts to the production build: drizzle-kit migrate, then seed-catalog, then sync-catalog --apply, before the app serves | platform-eng | 2026-07-09 | done |
| Make the build fail closed if DATABASE_URL is absent on a production build, instead of serving stale schema | platform-eng | 2026-07-09 | done |
- A pull request passed the local pre-commit gate recipe green but failed the required CI gate.
- The local gate script ran only three of the checks the CI gate workflow actually runs.
- The local recipe and the CI workflow were two independently maintained step lists with nothing comparing them.
- No test locked the local recipe's ordered steps to the CI workflow's ordered steps, so drift stayed invisible until a change exercised the missing step.
| Action | Owner Role | Due Date | Status |
|---|---|---|---|
| Add gate-local-sync.test.ts asserting gate:local runs the exact same ordered steps as .github/workflows/gate.yml | platform-eng | 2026-08-01 | done |
| Document gate:local in CLAUDE.md as the one command that reproduces the CI gate exactly | platform-eng | 2026-08-01 | done |
Get early access to STUD the day it goes live.