707d8a1e39
---ci--- project: acdl phase: 0 milestone: v1.26 status: research requirements: [REQ-310..REQ-322] personas: [lead-developer, backend-engineer, data-engineer, policy-engineer, blockchain-engineer] ---/ci---
169 lines
8.9 KiB
Markdown
169 lines
8.9 KiB
Markdown
---
|
|
project: acdl
|
|
milestone: v1.26
|
|
generated_at: 2026-08-12
|
|
generator: lead-developer
|
|
verification_toolchain:
|
|
typecheck: "python3 -m py_compile core/confidence_signal.py core/metrics/outcome_backfill.py adapters/terraform/adapter.py modules/l1/dynamodb/terraform/main.tf"
|
|
test: "pytest tests/test_adapter.py tests/test_contract_resolver.py tests/test_confidence_signal.py tests/test_outcome_backfill.py tests/test_settlement_finality_policy.py tests/test_pilot_readiness_policy.py tests/test_block.py tests/test_order_book.py tests/test_settlement.py -v"
|
|
lint: "ruff check core/metrics/outcome_backfill.py adapters/kyverno-json/policies/pilot-readiness/ adapters/kyverno-json/policies/settlement-finality/ 2>/dev/null || python3 -m py_compile core/metrics/outcome_backfill.py"
|
|
note: |
|
|
v1.26 is the Live Pilot Estate Activation milestone — a feat
|
|
milestone. Four active personas: lead-developer (coordination +
|
|
docs + ARCHITECTURE.md §12.8), backend-engineer (confidence_signal.py
|
|
escalation reason + outcome_backfill.py + run_platform.sh wiring +
|
|
env-JSON state_backend reconciliation), data-engineer (DynamoDB L1
|
|
primitive + metrics cold store outcome backfill), policy-engineer
|
|
(kyverno-json pilot-readiness + settlement-finality policies), +
|
|
blockchain-engineer (custom, phase-specific — chain core + order
|
|
engine + settlement). frontend-engineer is deactivated (no UI).
|
|
Territory enforcement: warn (the pilot is cross-territory by
|
|
nature — the consumer repo + the platform repo share the milestone).
|
|
---
|
|
|
|
# PERSONAS — v1.26 Live Pilot Estate Activation
|
|
|
|
> Generated by the lead-developer at the end of RESEARCH. Assesses the
|
|
> project domains, activates/deactivates personas, creates custom
|
|
> personas for domains beyond the default four, aligns frameworks +
|
|
> territory + constraints to the actual project structure.
|
|
|
|
## Active Roster (5)
|
|
|
|
### 1. lead-developer (active)
|
|
- **active:** true
|
|
- **phase_specific:** false
|
|
- **reason:** Coordinates task decomposition + resolves conflicts between
|
|
engineering personas. Owns the milestone narrative (PROJECT.md,
|
|
ROADMAP.md, ARCHITECTURE.md §12.8). Final architectural decisions when
|
|
personas disagree (e.g. where the outcome-backfill emitter lives).
|
|
- **domain:** project coordination, milestone narrative, cross-persona
|
|
conflict resolution.
|
|
- **frameworks:** none (coordination role).
|
|
- **territory:** `.ciagent/`, `docs/METRICS.md`, `adapters/README.md`,
|
|
`modules/README.md`, `modules/STANDARDS.md`.
|
|
- **constraints:** does not write Python/Terraform (delegates to
|
|
backend/data-engineer); does not author policies (delegates to
|
|
policy-engineer); does not author chain code (delegates to
|
|
blockchain-engineer).
|
|
|
|
### 2. backend-engineer (active)
|
|
- **active:** true
|
|
- **phase_specific:** false
|
|
- **reason:** Owns the platform-side Python changes: confidence signal
|
|
escalation reason (REQ-318), outcome-backfill emitter (REQ-317),
|
|
env-JSON state_backend wiring (REQ-319), adapter test updates for
|
|
DynamoDB (REQ-322), regression CAP-025 (REQ-316).
|
|
- **domain:** core Python (confidence_signal.py, metrics/, adapter.py,
|
|
regression_verify.py, contract_resolver.py), run_platform.sh wiring.
|
|
- **frameworks:** Python 3.12, pytest, boto3, SQLite, DynamoDB.
|
|
- **territory:** `core/confidence_signal.py`, `core/metrics/`,
|
|
`adapters/terraform/adapter.py`, `core/regression_verify.py`,
|
|
`core/environments/`, `scripts/run_platform.sh`, `tests/test_adapter.py`,
|
|
`tests/test_confidence_signal.py`, `tests/test_outcome_backfill.py`,
|
|
`tests/test_regression_pilot.py`.
|
|
- **constraints:** does not change `schemas/policy_check_result.schema.json`
|
|
(v1.25 moat, D-211); does not change `schemas/contract.schema.json`
|
|
(no schema breaks, D-213); does not author Terraform modules
|
|
(delegates to data-engineer for DynamoDB); does not author policies
|
|
(delegates to policy-engineer); does not author chain code (delegates
|
|
to blockchain-engineer).
|
|
|
|
### 3. data-engineer (active)
|
|
- **active:** true
|
|
- **phase_specific:** false
|
|
- **reason:** Owns the DynamoDB L1 primitive (REQ-322) — the single
|
|
platform-side module build-out. Owns the metrics cold store
|
|
outcome-backfill integration (REQ-317, the `fact_decision.outcome`
|
|
column + `backfilled_at` timestamp). Owns the env-JSON data updates
|
|
(REQ-319, `core/environments/*.json` account_id + state_backend.bucket).
|
|
- **domain:** Terraform modules (`modules/l1/`), schema definitions
|
|
(`interface.json`), registry (`modules/registry.json`), metrics cold
|
|
store (`metrics/nova_metrics.db`, `core/metrics/collector.py`).
|
|
- **frameworks:** Terraform, JSON, SQLite, DynamoDB, boto3.
|
|
- **territory:** `modules/l1/dynamodb/`, `modules/registry.json`,
|
|
`modules/README.md`, `core/environments/*.json`,
|
|
`core/metrics/collector.py`, `tests/test_adapter.py` (DynamoDB
|
|
emission test).
|
|
- **constraints:** does not change the adapter (stateless, v1.11);
|
|
follows the v1.8 NFR defaults (encryption + deletion protection +
|
|
PITR); follows the module standards (`modules/STANDARDS.md`).
|
|
|
|
### 4. policy-engineer (active, custom — added in v1.25)
|
|
- **active:** true
|
|
- **phase_specific:** false
|
|
- **reason:** Owns the kyverno-json policy authoring for the pilot:
|
|
settlement-finality (REQ-315), pilot-readiness (REQ-320). Extends
|
|
v1.25's policy engine to the securities domain.
|
|
- **domain:** declarative policies (kyverno-json ValidatingPolicy YAML),
|
|
JMESPath assertions, policy tests.
|
|
- **frameworks:** kyverno-json, JMESPath, JSON, pytest.
|
|
- **territory:** `adapters/kyverno-json/policies/pilot-readiness/`,
|
|
`adapters/kyverno-json/policies/settlement-finality/`,
|
|
`tests/test_settlement_finality_policy.py`,
|
|
`tests/test_pilot_readiness_policy.py`.
|
|
- **constraints:** policies are declarative (no imperative Python);
|
|
`is_configured()` guard skips gracefully when `kj` absent; follows
|
|
the v1.25 policy-authoring standard (`modules/STANDARDS.md` policy
|
|
section + `adapters/kyverno-json/README.md`).
|
|
|
|
### 5. blockchain-engineer (active, custom, phase-specific — added in v1.26)
|
|
- **active:** true
|
|
- **phase_specific:** true (created for v1.26 P1; removed after P1
|
|
unless the chain has ongoing work in P2..P4)
|
|
- **reason:** The pilot introduces a homegrown blockchain — a domain
|
|
beyond the default four personas. Owns the chain core (block, ledger,
|
|
validator, REQ-310), the order-matching engine (REQ-311), the
|
|
settlement service (REQ-312), and the consumer `contract.yaml`
|
|
(REQ-313) + deploy invocation (REQ-314).
|
|
- **domain:** blockchain consensus (PoA, single validator), order
|
|
matching (limit order book, price-time priority), settlement
|
|
(T+1, finality = block commit), consumer-repo deploy model.
|
|
- **frameworks:** Python 3.12 (the chain is Python, not Solidity/Go —
|
|
it's a homegrown ledger, not a smart-contract platform), pytest,
|
|
YAML (contract.yaml), GitHub Actions / Gitea Actions (deploy.yml
|
|
invocation).
|
|
- **territory:** `/root/nova-blockchain-exchange/` (the consumer repo:
|
|
`chain/`, `engine/`, `settlement/`, `contract.yaml`,
|
|
`contracts/*.yml`, `.github/workflows/deploy.yml`,
|
|
`.gitea/workflows/deploy.yml`, `tests/`).
|
|
- **constraints:** the chain is deterministic (same inputs → same block)
|
|
— it is automation, not AI (NORTH_STAR Objective #2 tenet); equities
|
|
only (D-200); single validator PoA (D-201); the consumer deploy MUST
|
|
go through `deploy.yml@v1.25` (no direct terraform apply); the
|
|
contract MUST validate against `schemas/contract.schema.json`.
|
|
|
|
## Deactivated (1)
|
|
|
|
### frontend-engineer (inactive)
|
|
- **active:** false
|
|
- **phase_specific:** false
|
|
- **reason:** The pilot has no UI — the blockchain exchange is a
|
|
backend service (matching engine + settlement). The consumer repo
|
|
has no web/frontend. Reactivated if a future milestone adds a trading
|
|
dashboard.
|
|
|
|
## Phase-Specific Notes
|
|
|
|
- **blockchain-engineer** is created for v1.26 P1 (blockchain core +
|
|
order engine + settlement). If P2..P4 have no chain changes, the
|
|
persona is removed after P1 (the chain is a stable substrate for the
|
|
pilot run). If P2 (consumer-contract-and-deploy) requires chain
|
|
adjustments, the persona stays through P2.
|
|
- **policy-engineer** is active for P3 (pilot-metrics-and-policies) +
|
|
may consult on P4 (pilot run policy verification).
|
|
- **data-engineer** is active for P3 (DynamoDB primitive + outcome
|
|
backfill + env-JSON) + P4 (regression CAP-025 may touch the registry).
|
|
|
|
## Territory Enforcement
|
|
|
|
- **Mode:** `warn` (the pilot is cross-territory by nature — the
|
|
consumer repo + the platform repo share the milestone; the
|
|
blockchain-engineer works in the consumer repo, backend/data/policy
|
|
engineers work in the platform repo).
|
|
- **Cross-territory collisions:** REQ-322 (DynamoDB primitive) is
|
|
data-engineer territory, but the adapter test update
|
|
(`tests/test_adapter.py` `EXPECTED_L1_KEYS`) is backend-engineer
|
|
territory. The lead-developer resolves: data-engineer authors the
|
|
module + registry; backend-engineer updates the test assertion
|
|
(the test is backend territory, the module is data territory). |