Context
Backups and replicas already landed in the one AWS region, but nothing stopped an environment serving a region of another jurisdiction from backing up there. Partners (payment providers, banks, government gateways) allow-list the addresses our services call from. ADR 0185 places the status page in@stackra/infra-observability. No OS service could
deploy through the AWS runtime stack on its own. The contracts HealthIndicator port had no infra driver. Commerce
drops need a waiting room and per-shopper limits on hot items at the edge, set per campaign by the tenant.
Decision
- Backups stay in the jurisdiction.
awsBaselineConfigrefuses an environment with backups or replicated files whose AWS regions are not the foundation’s region; such a region gets its own account and stack (0354 decision 2). The config names the jurisdiction from the runwayregions, for residency evidence. - Static egress addresses.
environments.<env>.shared.network.egress.staticIpsholds that many Elastic IPs in the environment’s account, retained on delete, and the stack exports their addresses for partner allow-lists and their allocation ids for the network’s NAT gateways. - Status page.
observability.statusPage(subdomain, company, time zone, custom domain,published, the environments shown) becomes a Better Stack status page with one section per environment and an entry per heartbeat. - Per-service runtime stack.
awsRuntimeStackreads the runways, narrows the plan to the members one stack deploys, and takes the cache network fromshared.network(subnetIds,securityGroupIds, ids orref:). - Health drivers. Each infra package ships a
HealthIndicatordriver of its dependency: one GET bounded by a timeout to a target the wiring passes from runway data (the AWS or GCP region’s endpoint, an edge host, the GitHub API, the ZITADEL discovery document, the EAS update endpoint, the telemetry endpoint). A failure isdown, never a throw, and its detail names the host only. - Storefront edge. A storefront’s campaign settings (
parseStorefront: shopper cookie or header; per campaign a waiting room with thresholds, window andenabled, and hot-item limits) become a Cloudflare waiting room and event per campaign, suspended while the room is off, and per-shopper rate-limit rules appended to the zone’s rate-limit entry point. The thresholds are tenant settings the storefront exports; none is in code.
Consequences
- A region in another jurisdiction cannot share an account’s backups by mistake.
- Allow-listed addresses survive stack changes; releasing one is a deliberate owner step.
- The status page starts unpublished or published as the runway says, at the first external customer.
- Waiting rooms need a Cloudflare plan that includes them, and cookie or header rate-limit keys need Advanced Rate Limiting; both are owner steps.
Enforcement
The unit tests beside each subject:infra-aws (aws-baseline-config, aws-baseline), infra-aws-runtime
(plan-for-members, runtime-network, aws-runtime-stack), infra-observability (observability-plan,
observability-stack), infra-cloudflare (parse-storefront, shopper-limit-rules, storefront-edge,
cloudflare-core-stack) and each package’s *-health-indicator.driver.test.ts, under Pulumi’s mocks where they declare
resources.
Supersedes and sources
Supersedes: none. Sources: STA-733, STA-735, STA-738, STA-741; COM-335;notes/handover/stackra-package-needs.md;
notes/handover/package-audit-2026-10-25.md.