Skip to content
Back to operating principles
Incidents & postmortems

When something breaks, you read about it here.

Every user-visible degradation gets a plainly-worded postmortem within the same week. Root cause, detection, mitigation, prevention. No corporate fog.

medium2026-05-01duration weeks (Build 1900 introduced the 2→5 raise; Build 1949 fixed the four drift paths; SQL migration applied 2026-05-02)

Free-tier signup granted 13 songs/month instead of the published 5

New free-tier signups were silently receiving 13 songs/month (3 base + 10 soft-launch promotional bonus from a long-retired migration) instead of the 5 songs/month claim published on /pricing, /scoring/standard, and homepage copy. Three other paths (self-heal profile insert, referral fallback, schema column default) had their own stale defaults — 2, 3, and 1 respectively. Four code paths, four different wrong numbers, none of them matching the documented free-tier amount.

Read the postmortem
high2026-04-26duration unknown — present since at least Build 1075 (changelog) + 1201 (engineering); discovered + fixed Build 1425

/engineering rendered 0 commits + /changelog said "Build log unavailable"

For an unknown stretch of weeks, the public /engineering report rendered every velocity stat as 0 (0 commits, 0 punch-list shipped, 0 files touched, mean 0/day) and /changelog displayed "Build log is unavailable on this deploy." Both pages depend on `git log` at request time. Vercel's runtime container has no git binary; the catch blocks silently returned empty data; the all-zeros UI rendered as if the engineering culture had stopped.

Read the postmortem
low2026-04-25duration n/a

This page exists. There is no first incident yet.

Inaugural entry. The infrastructure is live so the moment something breaks, the writeup ships within the same week.

Read the postmortem