docs(db): point this repo at its own database, and gate the way back - #143
Merged
Conversation
The schema fix landed in #138, but the repo still told you to operate a Supabase we do not have. docs/SUPABASE_SETUP.md opened with "Completed Setup" for a hosted project jkjmhtirxwhljpkcfxqe.supabase.co and said to apply migrations by pasting SQL into a supabase.com dashboard. Two unreferenced scripts printed the same instruction, one handing out a psql string against pooler.supabase.com, and the CLI's .temp cache with the old project ref was committed — twice, once nested under supabase/migrations/. That is not stale clutter, it is the outage. A wrong pointer to a real-looking place is worse than no pointer: no pointer makes someone ask, a plausible one makes them assume it was handled. Nobody pasted anything, the eleven migrations were never applied, and /api/health served PGRST205 for months while every deploy went green. So the doc now describes what is actually true — self-hosted on bitbaum at supabase.orangecat.ch, our tables in the `botsmann` schema because one database backs several apps and `public` is orangecat's, and migrations applied automatically on deploy by fleetcrown's apply-schema.sh against the botsmann._deploy_schema_history ledger. Nothing is pasted anywhere. 280 lines became 100. Fixing today's copies only clears today's copies, so check:selfhost joins verify: it fails on supabase.com/dashboard, app.supabase.com, pooler URLs and real project refs, allows supabase.com/docs because the product documentation is still correct for us, and exempts docs/archive/ so history can stay honest. Proven to fail before shipping — it catches an injected dashboard link and a project ref, and leaves the your-project.supabase.co placeholder alone. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018waGt1ieA9TjpscqrbrnGb
This was referenced Aug 28, 2026
catomean
added a commit
to bitbaum/orangecat
that referenced
this pull request
Aug 28, 2026
The managed Supabase Cloud project was decommissioned in 2026-06 — this repo documents that in docs/operations/DECOMMISSION-CLOUD.md and marks the retired host in next.config.js. But .env.example still opened with # Get from: https://supabase.com/dashboard/project/[project]/settings/api and gave the URL as a hosted placeholder. That is the first file anyone opens when setting the app up, and it sends them to a control plane we do not have. Not a cosmetic fix. The same shape took botsmann down: its setup doc described a hosted project in the present tense, so its eleven migrations were never applied and /api/health served PGRST205 for months while every deploy went green (bitbaum/botsmann#143). A wrong pointer to a real-looking place is worse than no pointer — no pointer makes someone ask, a plausible one makes them assume it was handled. Found by a fleet-wide sweep for hosted-Supabase references; this was the last live instruction left in the fleet. Claude-Session: https://claude.ai/code/session_018waGt1ieA9TjpscqrbrnGb Co-authored-by: Georgy Butaev <41178744+g-but@users.noreply.github.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The schema fix landed in #138 and botsmann is healthy. But the repo still told you to operate a Supabase we do not have.
docs/SUPABASE_SETUP.mdopened with "✅ Completed Setup" for a hosted projectjkjmhtirxwhljpkcfxqe.supabase.coin eu-west-1, and instructed you to apply migrations by pasting SQL into a supabase.com dashboard. Two unreferenced scripts printed the same instruction — one handed out a psql string againstpooler.supabase.com— and the Supabase CLI's.temp/cache holding the old project ref was committed, twice, once nested undersupabase/migrations/.That is not stale clutter. It is the outage. A wrong pointer to a real-looking place is worse than no pointer: no pointer makes someone ask, a plausible one makes them assume it was handled. Nobody pasted anything, the eleven migrations were never applied, and
/api/healthservedPGRST205for months while every deploy went green.The doc even contradicted the database: it listed
004_extensionsand005_optimizationsas "to apply manually", while both are recorded applied in the ledger.What changed
docs/SUPABASE_SETUP.mdrewritten, 280 lines → 100. Self-hosted on bitbaum atsupabase.orangecat.ch; our tables in thebotsmannschema because one database backs several apps andpublicis orangecat's; migrations applied automatically on deploy by fleetcrown'sapply-schema.shagainstbotsmann._deploy_schema_history— forward-only, one transaction, refuses destructive statements. Nothing is pasted anywhere.scripts/run-migration-009.ts,scripts/apply-optimizations.mjs(both unreferenced, both hosted-era).supabase/.temp/and its nested duplicate; now gitignored..env.example,lib/supabase.ts,001_initial_schema.sql, and an ops "Useful Links" block that still listed a Vercel dashboard.scripts/ci/no-hosted-supabase.sh, wired intoverify.The gate
Fixing today's copies only clears today's copies.
check:selfhostfails onsupabase.com/dashboard,app.supabase.com, pooler URLs and real project refs; allowssupabase.com/docs, since the product documentation is still correct for us; exemptsdocs/archive/so history can stay honest.Proven to fail before shipping: it catches an injected dashboard link and an injected project ref, and leaves the
your-project.supabase.coplaceholder alone.Verification
npm run verifygreen end to end — prettier, eslint, tsc,check:selfhost, 240 tests passed,next buildclean.Facts checked against production, not memory: ledger holds 11 applied tags, the
botsmannschema holds 13 tables,supabase.orangecat.ch/returns 401 behind Kong basic auth, and PostgREST answersPGRST205on the defaultpublicprofile but 200 withAccept-Profile: botsmann.Follow-up (not in this PR)
The same sweep is owed on the rest of the fleet — printcraft is the other
supabase:<schema>app. This gate is repo-local by design; a fleetcrown-wide version would be the better home.