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 maindev 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.