Skip to content

chore(scripts): delete a seed script aimed at a database we retired - #30

Merged
github-actions[bot] merged 1 commit into
mainfrom
chore/drop-hosted-seed-script
Aug 28, 2026
Merged

chore(scripts): delete a seed script aimed at a database we retired#30
github-actions[bot] merged 1 commit into
mainfrom
chore/drop-hosted-seed-script

Conversation

@catomean

Copy link
Copy Markdown
Collaborator

scripts/seed-roli-project.ts hardcoded https://ckpynkpsfnuqndplaapc.supabase.co — the managed-cloud project this app left when the fleet moved to self-hosted Supabase on bitbaum. Nothing references it: no package.json script, no docs, no workflow.

Deleting rather than repointing, because repointing is the dangerous option. The script builds its client with no db: { schema }, so aimed at the box with a working service-role key it would write Roli's project rows into public — orangecat's schema, not printcraft's. A one-off seeding script for one customer's project isn't worth carrying with that edge on it; git remembers it if the figures are ever needed.

Found by a fleet-wide sweep for hosted-Supabase references, prompted by botsmann serving PGRST205 for months because its docs described a hosted project that no longer existed (bitbaum/botsmann#143).

npm run verify green.

scripts/seed-roli-project.ts hardcoded https://ckpynkpsfnuqndplaapc.supabase.co
— the managed-cloud project this app left when the fleet moved to the
self-hosted Supabase on bitbaum. Nothing references it: no package.json script,
no docs, no workflow.

Deleting rather than repointing, because repointing is the dangerous option. The
script also creates its client with no `db: { schema }`, so aimed at the box
with a working service-role key it would write Roli's project rows into
`public` — which is orangecat's schema, not printcraft's. A one-off seeding
script for one customer's project is not worth carrying with that edge on it;
git remembers it if the figures are ever needed again.

Found by a fleet-wide sweep for hosted-Supabase references, prompted by
botsmann serving PGRST205 for months because its docs described a hosted
project that no longer existed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018waGt1ieA9TjpscqrbrnGb
@github-actions
github-actions Bot merged commit b265d65 into main Aug 28, 2026
1 check passed
@github-actions
github-actions Bot deleted the chore/drop-hosted-seed-script branch August 28, 2026 08:47
catomean added a commit to bitbaum/fleet that referenced this pull request Aug 28, 2026
The fleet self-hosts Supabase on bitbaum. Two managed-cloud projects are dead —
orangecat's ohkueislstxomdjavyhs, retired 2026-06, and botsmann's
jkjmhtirxwhljpkcfxqe before it. The repos kept describing them in the present
tense.

botsmann's setup doc opened with "Completed Setup" for its dead project and
said to apply migrations by pasting SQL into a supabase.com dashboard. Two
scripts printed the same instruction, one handing out a psql string against
pooler.supabase.com, and the CLI's cache with the old project ref was committed
twice. Nobody pasted anything, its eleven migrations were never applied, and
/api/health served PGRST205 for months while every deploy went green. The docs
were not stale clutter; they were 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.

The first live sweep found one more of the same shape, which is the argument
for auditing rather than trusting the cleanup: printcraft's seed script
hardcoded the retired host AND omitted `db: { schema }`, so repointing it
naively at the box would have written one customer's rows into orangecat's
`public`. Deleted in bitbaum/printcraft#30.

Central, not a copy per repo — the rule this repo exists to keep. Three repos
use Supabase and thirty do not. botsmann additionally keeps a local
check:selfhost in its own verify, deliberately: it is the repo the outage
happened in, and blocking the commit beats finding it a week later.

Two judgements decide whether this is useful or merely loud, and both are
pinned by 28 tests. It allows supabase.com/docs, because the product
documentation is still correct for us, and your-project.supabase.co, because a
placeholder misleads nobody — a gate that fires on either gets muted. And
legitimate mentions, like a decommission runbook naming what it
decommissioned, live in the baseline WITH A REASON rather than widening the
pattern: a ratchet that may fall or hold, never rise.

Unlike verify-floor-audit.sh this reads local checkouts, because it is a
full-text sweep and GitHub code search returns nothing for these repos — even a
known-present token finds no hit. So the workflow shallow-clones the fleet and
runs the same script unchanged. When it sweeps nothing it says SKIPPED, loudly,
rather than printing a tick: a vacuous pass reads exactly like coverage, which
is the failure this audit exists to prevent.


Claude-Session: https://claude.ai/code/session_018waGt1ieA9TjpscqrbrnGb

Co-authored-by: Mao Nakamoto <41178744+maonakamoto@users.noreply.github.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant