Skip to main content

"staging" is a second real-money production environment, and the only path into main

Hannibal is adding a third deployed environment, strykr-staging (46.101.30.145), named "staging" despite carrying real money — real Bifrost settlement, a dedicated real Betfair account (pending), real user-equivalent data — because it is operationally identical to prod in every way financial-security.md cares about. The name was kept as "staging" everywhere (not prod2/prod-b) for consistency, even though this breaks the common industry assumption that "staging" implies no real financial consequences. Anyone touching Bifrost/Betfair provider routing, alerting, or financial-security.md checks must treat "staging" as a full real-money surface, not a test tier.

Alongside this, the branch flow changes from dev → main (direct) to dev → staging → main: staging becomes the only branch restrict-main-base.yml permits as the head branch for PRs into main — dev can no longer PR directly into main. Hotfixes push directly to staging first (skip dev), get tested there, then backport to dev and forward into main. staging is a protected branch with the same push-allowlist as dev/main (bhargav-forsyt, pmalik, heypran only).

Considered options​

  • Name the new environment prod2/prod-b to make its real-money nature obvious from the name alone. Rejected — the user wants uniform "staging" naming across code, docs, CI, and skills; the risk is managed by treating "staging" as real-money by convention/documentation instead (this ADR, plus CLAUDE.local.md's environment table).
  • Keep dev → main direct and add staging as a parallel, non-gating deploy target. Rejected — the explicit intent is for staging to be the mandatory build-qualification gate before main.

Consequences​

  • A stale, unrelated environment already named "staging" exists in docs/infra/DEV-ENVIRONMENTS.md (hannibaldev.forsyt.io, old hanndev VPS) — that doc set must be archived/removed as part of this rollout so it isn't mistaken for guidance on the real strykr-staging environment.
  • Every Claude skill and infra file that hardcodes the environment set as dev/dev1/dev2/prod (server-inspect, betfair-api-inspector, bifrost-api-inspector, roanuz-api-inspector, ops-hannibal, restrict-main-base.yml, docker-compose.*.yml, infra/monitoring/prometheus/prometheus.yml) needs a staging entry — silent fallthrough to a dev default on an unrecognized "staging" arg is a live risk until each is updated.