feat(ops): audit what is DEPLOYED, not what is committed - #439
Merged
Conversation
bitbaum/fleet already has hosted-supabase-audit.sh, whose stated job is "does
any repo still point at a Supabase we retired?". It ran on 2026-08-28 and
reported SUCCESS while printcraft returned 500 in production, pointing at a
hosted project whose DNS no longer resolved.
It missed because it runs `git grep` over repo checkouts, and the reference
lived in /opt/printcraft/shared/.env — not in git, deliberately, because the
box is the environment SSOT. The gate was scoped to the wrong substrate: it
checked the artifact while the configuration lived in the running system. A
check that looks in the wrong place is worse than no check, because it answers.
The rule this implements: SOURCE audits run in CI against git, RUNTIME audits
run on the box against what is actually deployed. The fleet had a good
collection of the first kind and none of the second.
Five checks, each a shape that has already bitten:
- an env still naming a retired managed host (supabase.co, neon, planetscale)
- a configured host that no longer resolves
- a process running with keys its .env can no longer provide — config broken
on disk for hours while the process holds the old values, which is exactly
how 25 vitareba cron jobs died at the next restart
- a declared node engine the box cannot satisfy
- an app unit that is not active
Found on its first run, before it was committed:
revamp-info declares node >=22, box runs 20.20.2 — and it IS deployed
revampit points at a dead trycloudflare.com quick-tunnel host
aoz-demo unit inactive
Alerts per finding, never one aggregate: host-check spent six weeks unable to
fire because one permanently-failed unit pinned a single boolean at `bad`.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UvjGNAS9CMfEGNW26tUR4P
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.
bitbaum/fleetalready hashosted-supabase-audit.sh, whose stated job is "does any repo still point at a Supabase we retired?". It ran on 2026-08-28 and reported success while printcraft returned 500 in production, pointing at a hosted project whose DNS no longer resolved.It missed because it runs
git grepover repo checkouts, and the reference lived in/opt/printcraft/shared/.env— not in git, deliberately, because the box is the environment SSOT. The gate was scoped to the wrong substrate: it checked the artifact while the configuration lived in the running system. A check that looks in the wrong place is worse than no check, because it answers.The rule: source audits run in CI against git; runtime audits run on the box against what is actually deployed. The fleet had a good collection of the first kind and none of the second.
Five checks, each a shape that has already bitten:
.envcannot provideFound on its first run, before this was committed:
Alerts per finding, never one aggregate — host-check spent six weeks unable to fire because one permanently-failed unit pinned a single boolean at
bad. "Could not look" gets its own key so it can never be mistaken for clean.🤖 Generated with Claude Code
https://claude.ai/code/session_01UvjGNAS9CMfEGNW26tUR4P