# Platform-managed environments This directory holds environment definitions used by the onboarding scaffold. Each file is a named environment the platform owns (an AWS account or scoped partition, a network, a state backend, and an IAM role surfaced to the consumer via ABAC). A consumer never provides an AWS account, VPC, subnet, S3 state bucket, or runner key — the platform manages all of that here. ## Files - `dev.json` — the default dev environment (autonomous, confidence >= 0.50). - `qa.json` — QA environment (attested, QA HITL gate, confidence >= 0.75). Placeholder binding (replace account_id with the real QA account). - `prod.json` — Production environment (attested, SRE HITL gate, confidence >= 0.90). Placeholder binding. - `dr.json` — DR environment (attested, SRE HITL gate, confidence >= 0.95). Placeholder binding. All files validate against `schemas/environment.schema.json`. The qa/prod/dr placeholders use `account_id: 000000000000` with a stderr warning at load time (prompts real binding before deploying). ## How it is used `core/environment_check.py` reads a contract's `environment` field and looks up the matching `.json` in this directory. If no matching file exists, the check prints a friendly onboarding prompt and exits non-zero, halting the pipeline before any work is done. ## Adding an environment A new environment is a platform-team action: provision the AWS account / network / state backend / IAM role, then add a `.json` here and bind it to the consumer repo. **P19 (REQ-183):** the *request* step is now self-service. A consumer submits an onboarding request (POST to the Nova Lambda `onboard_consumer` action, or `python3 core/onboarding.py --request '{...}'`) and the platform generates a `.json` binding file from the request + opens a PR. The actual AWS account/network/state provisioning + cross-account role grant remains a platform-team action (a future feature milestone will automate the provisioning; the cross-account role Terraform is offline-proven in P20/REQ-184).