Files
CIAgent 2443909362 docs(milestone): complete v1.0-nova-platform (release v0.1.6)
---ci---
project: nova-platform
milestone: v1.0
status: complete
requirements:
  covered: [REQ-01,REQ-02,REQ-03,REQ-04,REQ-05,REQ-06,REQ-07,REQ-08,REQ-09,REQ-10,REQ-11,REQ-12,REQ-13,REQ-14,REQ-15,REQ-16,REQ-17,REQ-18,REQ-19,REQ-20,REQ-21,REQ-22,REQ-23,REQ-24,REQ-25,REQ-26,REQ-27,REQ-28,REQ-29,REQ-30,REQ-31,REQ-32,REQ-33,REQ-34,REQ-35,REQ-36,REQ-37,REQ-38]
  partial: []
---/ci---

v1.0 milestone complete: simplified infrastructure-delivery platform
derived from Nova (acdl). 6 phases (P0-P5 + P6 final). 38 REQ-IDs.
38 decisions (D-001..D-038). 76 tests pass. Engine boundary holds.
Happy paths green (check-only + CI). 13 L1 + 2 L2 modules. 5 terraform
roots. Shell reproducibility. Zero OOS files.

Tags: v0.1.0 (P0) → v0.1.1..v0.1.5 (P1..P5) → v0.1.6 (P6 = milestone
release on v0.1 patch line).
2026-08-25 02:18:35 +00:00

3.9 KiB

Environments

A consumer does not provide an AWS account, a VPC, a subnet, or an S3 state bucket. The platform manages environments.

What an environment is

A named environment is a platform-owned bundle of:

  • An AWS account (or a scoped partition of one).
  • A network (VPC + subnets / AZs).
  • A state backend (an S3 bucket + DynamoDB lock table for Terraform state).

A consumer selects an environment by name in their contract:

environment: dev

The platform resolves the name to the underlying account/network/state backend at run time. The consumer never sees the raw credentials.

Environment definition shape (D-018)

Each environment is a JSON file in core/environments/. The field set is reduced from the reference — the IAM role, autonomy, and confidence threshold fields are out of scope for v1.0.

core/environments/dev.json (the sample):

{
  "name": "dev",
  "description": "Sample dev environment for offline/local testing. account_id placeholder (000000000000) for offline mode.",
  "account_id": "000000000000",
  "region": "us-east-1",
  "state_backend": {
    "bucket": "nova-tfstate-dev-us-east-1",
    "lock_table": "nova-tfstate-locks"
  },
  "network": {
    "vpc_cidr": "10.0.0.0/16",
    "azs": ["us-east-1a", "us-east-1b"]
  }
}

Fields

Field Type Required Description
name string yes The environment name (dev/qa/prod/dr).
description string no Human-readable description.
account_id string yes The AWS account id (placeholder 000000000000 for offline dev).
region string yes The AWS region.
state_backend.bucket string yes The S3 state bucket name.
state_backend.lock_table string yes The DynamoDB lock table name (nova-tfstate-locks per D-022).
network.vpc_cidr string yes The VPC CIDR block.
network.azs array yes The availability zones.

Dropped from the reference (D-018)

  • runner_role_arn — identity/authorization is out of scope.
  • autonomy — human-in-the-loop gates are out of scope.
  • confidence_threshold — the confidence signal is out of scope.

State backend (D-022)

The Terraform state backend uses a dedicated DynamoDB lock table named nova-tfstate-locks (NOT nova-outbox — the audit outbox is out of scope for v1.0). The S3 state bucket is named nova-tfstate-<account>-<region> with versioning enabled. See terraform/bootstrap/README.md for the bootstrap runbook that creates both.

Autonomy by environment

Environment Autonomy Operator action
dev Fully autonomous None — terraform apply -auto-approve runs automatically.
qa Manual An operator runs run_platform.sh against the qa contract.
prod Manual An operator runs run_platform.sh against the prod contract.
dr Manual An operator runs run_platform.sh against the dr contract.

dev is the only autonomous environment. Higher environments require a human operator to invoke the pipeline against the environment's contract variant. There are no automated gates or attestation steps — those are out of scope for v1.0. Staging does not exist.

Onboarding scaffold (current state)

The platform repo ships a minimal onboarding scaffold:

  • core/environments/ — environment definitions (a sample dev.json).
  • core/environment_check.py — checks whether an environment is defined for a given contract's environment name; raises EnvironmentNotFoundError when none is defined (D-019).
  • scripts/run_platform.sh calls the check before contract validation.

The scaffold is minimal: provisioning a new environment is a platform-team action today (bootstrap the state backend + network). Self-service environment provisioning is a future milestone.