Thirty commits across three repos, and the day split cleanly into two halves: standing a control plane up on a bare host, and fixing the things that were quietly wrong once it was actually reachable.
The deploy half has its own write-up — a deploy script that had been reporting success for weeks while skipping its own git pull. This is everything else.
1. An account that can sign in and see nothing
Multi-tenant app. A user belongs to organisations; every query is scoped to the current one. Registration created the user row and stopped there — no role, no organisation.
Which produces the worst possible failure mode: the account works. Login succeeds, the session is valid, the dashboard renders. It's just empty, because every scoped query returns zero rows and every permission check runs against a user holding no role at all.






