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

164 lines
7.8 KiB
Markdown

---
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>/<environment>/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.