2443909362
---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).
7.8 KiB
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"]— droppedfastapi(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.jsonis 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 outsideadapters/terraform/(verified bytests/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 keyspike/<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.