d103a37419
---ci--- project: acdl phase: 14 milestone: v1.2 status: verify verdict: VERIFIED requirements: covered: [REQ-32] ---/ci--- Phase 14 plan-as-execute + verify. scripts/verify_phase14.sh green. l2-microservice composition (6 L1s, 2 wire kinds); contract schema extended (inputs allow objects + healthcheck); resolver extended (array-form wires, child->child refs, multi-resource L1 expansion); adapter extended (ref: interpolation translation). v1.2 IR: 11 resources. v1.1 S3 regression byte-identical. Ready to ship v1.2.4.
91 lines
4.1 KiB
Markdown
91 lines
4.1 KiB
Markdown
# Phase 14 — l2-microservice-and-contract-schema (v1.2) VERIFY
|
|
|
|
**Verdict: Phase 14: VERIFIED**
|
|
**Tag: v1.2.4**
|
|
**Date: 2026-07-21**
|
|
|
|
---
|
|
|
|
## Scope
|
|
|
|
Phase 14 authors the `l2-microservice` thin-composition (references 6 ECS
|
|
L1s, depth 1), extends the contract schema for microservice inputs, extends
|
|
the resolver for child→child wiring + multi-resource L1 expansion, extends
|
|
the adapter for `ref:` interpolation translation, and verifies the full
|
|
resolution path. Requirement covered: **REQ-32**.
|
|
|
|
## Verification layers
|
|
|
|
### 1. Structural
|
|
|
|
- `modules-ir/l2/l2-microservice/composition.json` + `README.md` created (6 children, two wire kinds).
|
|
- `modules-ir/registry.json` lists `l2-microservice@1.0.0`.
|
|
- `schemas/contract.schema.json` extended: `inputs.additionalProperties` allows `object`; `healthcheck` field added.
|
|
- `contracts/microservice.yaml` created (dev, l2-microservice, 9 inputs).
|
|
- `acdl_platform/contract_resolver.py` extended: array-form wires, child→child `ref:` emission, multi-resource L1 expansion.
|
|
- `adapters/terraform/adapter.py` extended: `ref:<ir_resource_id>.<output>` → `${<tf_type>.<id>.<attr>}` translation.
|
|
- `scripts/verify_phase14.sh` exists (+x).
|
|
- `.ciagent/PLAN.md` updated to Phase 14.
|
|
- **PASS.**
|
|
|
|
### 2. Behavioral (`scripts/verify_phase14.sh`)
|
|
|
|
```
|
|
=== Phase 14 verification ===
|
|
composition: OK (6 children)
|
|
registry: l2-microservice@1.0.0 OK
|
|
contract schema: OK (inputs allow objects + healthcheck field)
|
|
microservice.yaml: OK (validates against contract schema)
|
|
py_compile: OK
|
|
v1.1 regression: OK (spike.yaml -> l1-s3 -> aws_s3_bucket)
|
|
v1.2 IR: 11 resources
|
|
types: ['aws:ec2:routetable', 'aws:ec2:subnet', 'aws:ec2:vpc', 'aws:ecr:repository',
|
|
'aws:ecs:cluster', 'aws:ecs:service', 'aws:ecs:task_definition',
|
|
'aws:elbv2:listener', 'aws:elbv2:loadbalancer', 'aws:elbv2:targetgroup',
|
|
'aws:iam:role']
|
|
child->child refs: present
|
|
v1.2 adaptation: OK (11 resources + interpolations in main.tf)
|
|
.ciagent/ consistency: OK
|
|
|
|
=== Phase 14: VERIFIED ===
|
|
```
|
|
|
|
All assertions pass. The v1.2 resolution emits 11 IR resources (the 6 L1s
|
|
expand to 11 due to multi-resource L1s: vpc→3, ecs-service→2, alb→3, +
|
|
3 single-resource L1s). Child→child refs translate to Terraform
|
|
interpolations (`${aws_ecs_cluster.cluster.arn}`, `${aws_subnet.vpc-subnet.id}`,
|
|
`${aws_lb_target_group.alb-targetgroup.arn}`). The v1.1 spike regression
|
|
is byte-identical.
|
|
- **PASS.**
|
|
|
|
### 3. Security
|
|
|
|
- No credentials introduced. The `contracts/microservice.yaml` references an ECR image by URL (no secrets).
|
|
- The `assume_role_policy` in the contract is a standard ECS task execution trust policy (not a secret).
|
|
- The resolver + adapter handle `ref:` strings as interpolation references — no secret leakage.
|
|
- **PASS.**
|
|
|
|
### 4. Quality
|
|
|
|
- The composition's two-wire-kind design (passthrough + child→child) cleanly separates contract-level parameters from infra-internal wiring.
|
|
- The multi-resource L1 id scheme (`<child_id>-<type_suffix>`) keeps ids valid against the IR schema's `^[a-z][a-z0-9-]*$` pattern.
|
|
- The `ref:<ir_resource_id>.<output>` form means the adapter needs no child→resource lookup table — just a `type_by_id` map built once.
|
|
- The v1.1 regression (byte-identical S3 main.tf) confirms the extensions are backward-compatible.
|
|
- **PASS.**
|
|
|
|
## P0 / P1
|
|
|
|
- **P0: none.**
|
|
- **P1: none.**
|
|
|
|
## Requirements covered
|
|
|
|
- **REQ-32:** `l2-microservice` thin-composition exists under `modules-ir/l2/l2-microservice/` referencing the six ECS L1s (depth 1, within max-depth-5). `schemas/contract.schema.json` is extended with microservice inputs (`image: string`, `port: number`, `env: object`, `healthcheck: object`) and validates `contracts/microservice.yaml`. Contract→IR resolution yields a complete target stack (11 resources across all 6 L1s with child→child refs). **VERIFIED.**
|
|
|
|
## Conclusion
|
|
|
|
Phase 14 is VERIFIED. The `l2-microservice` composition + extended
|
|
resolver + extended adapter are ready for Phase 15's `terraform apply`
|
|
against real AWS. The resolution path is complete: contract → IR (11
|
|
resources) → Terraform (11 resource blocks + interpolations). The v1.1
|
|
spike regression passes. |