Skip to content

README: this service is deployed, deploys from CI, and scales to zero - #7

Merged
Sbussiso merged 3 commits into
masterfrom
docs-accuracy
Sep 10, 2026
Merged

README: this service is deployed, deploys from CI, and scales to zero#7
Sbussiso merged 3 commits into
masterfrom
docs-accuracy

Conversation

@Sbussiso

Copy link
Copy Markdown
Contributor

Documentation only — no code changes.

The Status section said "Not yet deployed — no Postgres instance or Fly app provisioned yet." It has been live since 2026-09-07, on the shared sentinel-postgres cluster in its own role-isolated database. A README that says a running production service doesn't exist is the worst kind of stale, because it reads as authoritative.

The Deploy section was likewise pre-CI and told the reader that provisioning Postgres was still their decision to make.

Adds what wasn't documented anywhere: that the service sleeps between its 30-minute pushes, why that's safe (~3s boot inside Fly's ~8s proxy window, and a fail-soft push whose cursors only advance on confirmed success — so a missed cycle loses nothing), and why it deliberately has no dump job.

🤖 Generated with Claude Code

Sbussiso and others added 3 commits September 9, 2026 14:19
Deploy automation was deferred so a human could watch the first-ever
deploy of new infrastructure, including this family's first Postgres
instance. That rationale expired once the service went live, and leaving
it deferred turned out worse than what it avoided: fly.toml only took
effect if someone remembered to run `fly deploy` by hand.

That failed silently on 2026-09-09. A scale-to-zero change merged with
CI fully green and never reached Fly — the app kept running always-on,
and the config looked applied because the commit was on master. It was
only caught by checking the machine state directly. Config that silently
doesn't apply is more dangerous than no config, because it reads as done.

Deploy runs on push to master only, after the tests pass.

--ha=false because Fly provisions TWO machines by default. It did
exactly that on this service's manual deploy and the extra machine had
to be scaled away by hand.

No --strategy override: this app has no volume, so the default rolling
strategy is fine. The sibling License service needs `immediate` because
it mounts one.

Needed a repo secret that did not exist — this repo had NO secrets at
all, so a deploy job would have failed on its first run. FLY_API_TOKEN
is now set, scoped to sentinel-sync only.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
No Dependabot config existed here. That is the same gap that produced
the Sentinel AI agent's three production breakages in two days: mcp 2.x
renaming a symbol, Starlette removing on_startup, and a ceiling added to
stop the second one silently pinning the service to a Starlette line
carrying 7 advisories. All three surfaced on a rebuild of a repo nobody
had rebuilt since June.

`pip-audit --strict` in CI catches a known advisory against what is
already pinned. It does nothing about a lockfile quietly ageing out of
support, which is the failure that actually happened.

No auto-merge workflow, deliberately. This repo now deploys to Fly on
push to master, and GitHub does not trigger `on: push` workflows for
commits pushed with GITHUB_TOKEN — so an auto-merge would land a bump on
master WITHOUT deploying it, and nothing would report an error. That is
an observed bug in Sentinel-Command, where four frontend bumps merged
and never shipped. A human merge triggers the deploy normally.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The Status section said "Not yet deployed — no Postgres instance or Fly
app provisioned yet". It has been live since 2026-09-07, on the shared
sentinel-postgres cluster in its own role-isolated database. A README
that says a running production service doesn't exist is the worst kind
of stale, because it reads as authoritative.

The Deploy section was likewise pre-CI, and told the reader that
provisioning Postgres was still their decision to make.

Adds what wasn't documented anywhere: that the service now sleeps
between its 30-minute pushes, why that's safe (~3s boot inside Fly's ~8s
proxy window, and a fail-soft push whose cursors only advance on
confirmed success, so a missed cycle loses nothing), and why it
deliberately has no dump job.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Sbussiso
Sbussiso merged commit 1dac40f into master Sep 10, 2026
2 checks passed
@Sbussiso
Sbussiso deleted the docs-accuracy branch September 10, 2026 01:24
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