---
project: acdl
milestone: v1.24
generated_at: 2026-08-12
generator: lead-developer
verification_toolchain:
  typecheck: "python3 -m py_compile core/env_transition.py tests/test_env_transition.py tests/test_run_platform_env_transition.py"
  test: "pytest tests/test_env_transition.py tests/test_run_platform_env_transition.py tests/test_consumer_guide_per_env_section.py tests/test_adapter.py tests/test_contract_resolver.py tests/test_deploy_workflow_env_input.py tests/test_pipeline.py -v"
  lint: "ruff check core/env_transition.py tests/test_env_transition.py tests/test_run_platform_env_transition.py 2>/dev/null || python3 -m py_compile core/env_transition.py"
  note: |
    v1.24 is the Consumer Guide Accuracy & Env-Promotion Lifecycle
    Enforcement milestone — a mixed docs+feat+test milestone. Two active
    personas: lead-developer (consumer-guide.md edits + guide test
    updates), backend-engineer (core/env_transition.py + run_platform.sh
    Step 0b + deploy.yml + adapter doc comment + env_transition tests +
    pipeline tests). frontend-engineer stays deactivated (no UI). No
    data-engineer (no schema changes — the nova-contracts table already
    exists). No new personas.
---

# ACDL — Persona Roster (v1.24 Consumer Guide Accuracy & Env-Promotion Lifecycle Enforcement)

> v1.24 roster. Two active personas + two deactivated. This is a mixed
> docs+feat+test milestone: the work is consumer-guide accuracy fixes
> (lead-developer), a new env-transition detect-and-destroy platform
> feature (backend-engineer), and test coverage for both (split).

## Active personas

### lead-developer
- **Domain:** coordination + docs
- **Frameworks:** []
- **Constraints:** ["pragmatic", "battle-tested defaults", "docs match code"]
- **Territory:**
  - `docs/consumer-guide.md`
  - `tests/test_consumer_guide_per_env_section.py`
  - `.ciagent/*.md` (PLAN.md, RESEARCH.md, etc.)
- **Reason:** Owns the consumer guide narrative — the 5 accuracy fixes
  (stale fields table, inconsistent caller, "dev only" phrasing, Step 8
  rewrite with destroy semantics, reference table wording) and the
  consumer-guide test updates (rename + new destroy-on-env-change test).
  No UI work (frontend-engineer deactivated). No Python/bash platform
  code (backend-engineer territory).

### backend-engineer
- **Domain:** backend (Python + bash + YAML)
- **Frameworks:** ["boto3", "terraform"]
- **Constraints:** ["api-first", "fail-closed", "no orphan paths", "state-key determinism"]
- **Territory:**
  - `core/env_transition.py` (NEW)
  - `scripts/run_platform.sh` (Step 0b insert + record-applied-env)
  - `.github/workflows/deploy.yml` (NOVA_CONSUMER_REPO env)
  - `adapters/terraform/adapter.py` (doc comment only)
  - `tests/test_env_transition.py` (NEW)
  - `tests/test_run_platform_env_transition.py` (NEW)
- **Reason:** Owns the env-transition detect-and-destroy feature: the new
  `core/env_transition.py` module (DynamoDB query + record), the
  `run_platform.sh` Step 0b orchestrator (re-resolve + terraform destroy +
  evidence event + fail-closed), the deploy.yml env var passthrough, and
  the two new test files. Uses boto3 (DynamoDB) + terraform (destroy) +
  bash (pipeline orchestration).

## Deactivated personas

### frontend-engineer
- **Active:** false
- **Reason:** No UI work in v1.24. The consumer guide is markdown docs
  (lead-developer territory). Deactivated per v1.17/v1.18/v1.22/v1.23
  precedent.

### data-engineer
- **Active:** false
- **Reason:** No schema changes in v1.24. The `nova-contracts` DynamoDB
  table already exists with the right shape (PK `consumerRepo`, SK
  `contractId#submittedAt`). The env-transition module only adds a new
  `#LAST_APPLIED` SK suffix — no schema migration, no ORM, no new tables.
  The backend-engineer handles the boto3 queries.

## Phase-specific notes

- No phase-specific personas. Both active personas span P1-P3.
- P4 (final review + audit + ship) is lead-developer territory
  (orchestration + docs completion).