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

7.8 KiB


personas:

  • name: lead-developer domain: coordination active: true frameworks:
    • python
    • bash
    • terraform
    • jsonschema
    • pytest
    • boto3 constraints:
    • pragmatic
    • battle-tested defaults
    • engine-agnostic core
    • acdl structural conventions preserved with 9 locked deviations (D-012, D-013, D-015, D-017, D-018, D-019, D-022, D-023, D-025, D-027)
    • no security/identity/CI-workflow (out of scope)
    • local shell reproducibility over CI territory:
    • ".ciagent/**"
    • "README.md"
    • "pyproject.toml"
    • "requirements-test.txt"
    • ".gitignore"
    • "docs/architecture.md"
    • "docs/consumer-guide.md"
  • name: data-engineer domain: data active: true frameworks:
    • terraform
    • hcl
    • jsonschema
    • json constraints:
    • schema-first
    • type-safe
    • migration-driven
    • engine terms only in adapters/terraform/ + modules/*/terraform/ + terraform/
    • module interface shape: {name, version, kind, type, description, inputs, outputs, resources[]}
    • registry entry shape: {interface, terraform_dir, published_at, deprecated, kind}
    • L2 is opaque (D-012): interface.json + terraform/main.tf composes L1 internally
    • state key convention: spike/<stack_name>//terraform.tfstate
    • tag convention: nova:owner/nova:contract/nova:environment/nova:cost-center territory:
    • "modules/**"
    • "terraform/**"
    • "schemas/stack.schema.json"
    • "schemas/environment.schema.json"
    • "docs/modules/**"
    • "docs/environments/**"
    • "**/*.tf"
    • "**/*.tf.json"
  • name: backend-engineer domain: backend active: true frameworks:
    • python
    • pyyaml
    • jsonschema
    • boto3
    • pytest
    • moto
    • bash constraints:
    • api-first
    • strict-typing
    • dependency-injection
    • engine-agnostic core (no aws_*/terraform/module "/provider "/resource " strings outside adapters/terraform/)
    • resolve() is pure: no network/side-effects; local file reads for module metadata permitted (D-011)
    • adapt() is a stateless assembler: no terraform invocation, no state files, no plan files
    • named exceptions: ModuleNotFoundError, VersionNotFoundError, EnvironmentNotFoundError
    • NOVA_* env var prefix (D-032): NOVA_AWS_* -> AWS_* copy in run_platform.sh
    • no CLI package (D-027): scripts invoked via shell territory:
    • "core/**"
    • "adapters/terraform/adapter.py"
    • "adapters/terraform/__init__.py"
    • "schemas/contract.schema.json"
    • "contracts/**"
    • "scripts/**"
    • "tests/**"
    • "**/*.py"
  • name: frontend-engineer domain: frontend active: false frameworks:
    • react
    • next.js constraints:
    • component-first
    • server-components
    • minimal-client-js territory:
    • "/components/"
    • "/pages/"
    • "/hooks/"
    • "/styles/"
    • "**/*.tsx"
    • "**/*.css"
    • "**/*.vue" reason: Nova Platform has no frontend. Deactivated (D-006). phase_personas: []

Personas — Nova Platform v1.0

Active personas for all execution phases. The 3 active personas cover the full v1.0 scope (contract surface + resolution + engine adapter + module catalog + Terraform bootstrap + shell reproducibility + tests + docs). No phase-specific personas are needed.

Roster

Persona Domain Active Lead coverage
lead-developer coordination yes cross-cutting: .ciagent/, root config, architecture docs
data-engineer data (terraform/modules) yes modules/, terraform/, stack/environment schemas, module docs
backend-engineer backend (python) yes core/, adapters/terraform/*.py, contract schema, contracts/, scripts/, tests/
frontend-engineer frontend NO (D-006)

Framework alignment

The project has NO JavaScript/frontend runtime. Frameworks overridden from config.json defaults to match actual project deps:

  • lead-developer: python, bash, terraform, jsonschema, pytest, boto3.
  • data-engineer: terraform, hcl, jsonschema, json (was ["terraform"] — expanded; dropped nothing).
  • backend-engineer: python, pyyaml, jsonschema, boto3, pytest, moto, bash (was ["python", "fastapi"]dropped fastapi (no HTTP API; shell-invoked); added actual deps).
  • frontend-engineer: unchanged (deactivated).

Territory alignment

Territory globs overridden to match actual file structure. The reference's nova/, pipelines/, metrics/, .github/workflows/, mcp/, skills/, workflows-src/, platform/ dirs do NOT exist.

  • lead-developer: .ciagent/**, README.md, pyproject.toml, requirements-test.txt, .gitignore, docs/architecture.md, docs/consumer-guide.md.
  • data-engineer: modules/**, terraform/**, schemas/stack.schema.json, schemas/environment.schema.json, docs/modules/**, docs/environments/**, **/*.tf, **/*.tf.json. NOTE: schemas/contract.schema.json is backend-engineer territory.
  • backend-engineer: core/**, adapters/terraform/adapter.py, adapters/terraform/__init__.py, schemas/contract.schema.json, contracts/**, scripts/**, tests/**, **/*.py. NOTE: adapters/terraform/policy/ is OOS.
  • frontend-engineer: unchanged (deactivated).

Constraint alignment

Shared constraints (all active personas)

  • engine-agnostic core: no aws_* / terraform / module " / provider " / resource " strings outside adapters/terraform/ (verified by tests/test_engine_boundary.py).
  • acdl structural conventions preserved with 9 locked deviations: directory names, file roles, module interface shape, registry format, banner strings, state key convention, tag convention. Deviations locked in CLARIFY.md (D-012, D-013, D-015, D-017, D-018, D-019, D-022, D-023, D-025, D-027).
  • no security/identity/CI-workflow: kyverno, Wiz, Checkov, PolicyEngine, confidence_signal, outbox_writer, ABAC, PAT, JWS, KMS signing, SoD, HITL, attestation, submission_readiness, env_transition, decommission, mode_resolver, onboarding flow beyond bootstrap, metrics, pipelines, .github/workflows/ — ALL out of scope. Do NOT implement.

Persona-specific constraints

  • lead-developer: pragmatic, battle-tested defaults, engine-agnostic core, acdl structural conventions, no security/identity/CI-workflow, local shell reproducibility over CI.
  • data-engineer: schema-first, type-safe, migration-driven, engine terms only in adapters/terraform/ + modules/*/terraform/ + terraform/, module interface shape, registry entry shape, L2 opaque per D-012, state key spike/<stack_name>/<environment>/terraform.tfstate, tag convention.
  • backend-engineer: api-first (contract schema is the API), strict-typing, dependency-injection, resolve() pure (D-011), adapt() stateless assembler, named exceptions, NOVA_* env prefix (D-032), no CLI package (D-027).

Phase-specific personas

None. The 3 active personas cover all 6 execution phases:

  • Phase 1 (Contract Surface + Schemas + Resolver): backend-engineer.
  • Phase 2 (Terraform Adapter + Engine Boundary): backend-engineer.
  • Phase 3 (L1 Primitives + Registry): data-engineer (registry + interfaces + terraform), backend-engineer (registry-loading code).
  • Phase 4 (L2 Patterns + Terraform Bootstrap + Platform): data-engineer (L2 terraform, bootstrap terraform, platform/ci-vpc/microservice/onboarding terraform), backend-engineer (bootstrap python scripts).
  • Phase 5 (Shell Reproducibility + Test Suite + Docs): backend-engineer (scripts, tests), lead-developer (README, docs, pyproject), data-engineer (docs/modules, docs/environments).
  • Phase 6 (Final Review + Ship): lead-developer.