feat(P39): refresh design docs + parameterize adapter (P1-1)

---ci---
project: acdl
phase: 39
milestone: v1.9
status: execute
---/ci---

Phase 39 — design-doc-refresh-and-p1-1-parameterization:

Design docs (REQ-100, REQ-101):
- hitl_matrix_design.md: 'dev-only spike'/'v1.2 wires the gates' framing
  replaced with v1.9 wired-gates reality; 8-concern matrix marked
  implemented (offline-testable subset + signed evidence artifacts,
  D-084); v1.9 wiring section cross-references hitl_gates.py +
  attestation_matrix.py; approver_dr noted.
- audit_ledger_design.md: outbox marked shipped+production since v1.8;
  S3 Object Lock + JWS + async worker + DLQ + daily checkpoints clearly
  labeled 'Deferred to a future milestone (D-083)'; RPO/RTO table updated;
  approver fields note v1.9 hitl_gates.attest.

P1-1 adapter parameterization (REQ-102, D-085):
- ecs-service interface.json: desired_count (default 1), launch_type
  (FARGATE), family (app) inputs added.
- alb interface.json: load_balancer_type (application), target_type (ip).
- adapter.py: hardcoded defaults replaced with inputs.get(<name>, <default>);
  hardcoded 'acdl-microservice-rt'/'acdl-microservice-igw' Name tags
  derive from the VPC name input.
- contract_resolver.py: child_input_map routes wires to the sub-resource
  that declares the input (desired_count → aws:ecs:service, family →
  aws:ecs:task_definition, target_type → targetgroup, etc.).
- microservice composition.json: wires added for the new inputs.

Tests: +21 (test_p1_1_adapter_parameterization.py, test_design_docs_current.py).
371 passed; run_ci.sh green; run_platform.sh --check-only green; v1.1 S3
regression preserved.
This commit is contained in:
Jon Chery
2026-07-23 04:24:25 +00:00
parent 58100c485e
commit e1be05287b
12 changed files with 1045 additions and 67 deletions
+8 -1
View File
@@ -15,6 +15,8 @@
],
"wires": [
{"from": "contract.inputs.bucket_name", "to": "vpc.inputs.cidr", "default": "10.0.0.0/16"},
{"from": "contract.inputs.name", "to": "vpc.inputs.name", "default": "app"},
{"from": "contract.inputs.name", "to": "alb.inputs.name", "default": "app"},
{"from": "contract.inputs.region", "to": "vpc.inputs.region"},
{"from": "contract.inputs.region", "to": "cluster.inputs.region"},
{"from": "contract.inputs.region", "to": "ecr.inputs.region"},
@@ -28,7 +30,12 @@
{"from": "roles.outputs.role_arn", "to": "service.inputs.security_group"},
{"from": "alb.outputs.target_group_arn", "to": "service.inputs.lb_target_group_arn"},
{"from": "contract.inputs.region", "to": "kms.inputs.region"},
{"from": "kms.outputs.kms_key_arn", "to": "ecr.inputs.kms_key_arn"}
{"from": "kms.outputs.kms_key_arn", "to": "ecr.inputs.kms_key_arn"},
{"from": "contract.inputs.desired_count", "to": "service.inputs.desired_count", "default": 1},
{"from": "contract.inputs.launch_type", "to": "service.inputs.launch_type", "default": "FARGATE"},
{"from": "contract.inputs.family", "to": "service.inputs.family", "default": "app"},
{"from": "contract.inputs.load_balancer_type", "to": "alb.inputs.load_balancer_type", "default": "application"},
{"from": "contract.inputs.target_type", "to": "alb.inputs.target_type", "default": "ip"}
],
"outputs": [
{"from": "alb.outputs.lb_arn", "to": "stack.outputs.lb_arn"},