Files
acdl/modules/l1/ecr
Jon Chery 553caf8f1d docs(P21): rewrite README + normalize modules terminology (REQ-52,55,56,57,58,59,60)
---ci---
project: acdl
phase: 21
milestone: v1.6
status: execute
---/ci---

README.md rewrite:
- Remove all .ciagent/ references (links + repository-layout row).
- Remove .gitea/workflows/ row from repository layout.
- Restate repository roles: consumer repo = app code + 1+ contracts +
  CI definitions (thin .github/workflows/*.yml uses:-ing the central
  workflow); platform repo owns modules/adapters/core/schemas/pipelines/
  scripts/workflows.
- Replace Status section with Features list (consumer + platform-engineer
  referenceable) + Roadmap (planned only, no version changelog, no
  internal CIAgent status). Includes the composition-redesign roadmap
  entry (dynamic module creation from a contract).
- Fix the mermaid flowchart: all node text visible (short multi-line
  labels via <br/>), add a security-checks stage before policy checks,
  do not name specific tools (security checks/policy checks/infrastructure
  plan via adapter), add infrastructure-apply stage (dev only, after
  evidence event).
- Remove the environments table (dev/qa/prod/dr) completely; point to
  docs/environments/ for platform-managed environments.
- Credentials section: remove go-gitea/gitea#36988 blocked mention +
  waivers D-039/D-047 language. State OIDC+ABAC default; alternative is a
  static AWS key (GitHub Secrets for platform-runner runs, .env.secrets
  locally) with daily rotation (platform-managed) or out-of-band rotation
  (consumer-managed for local .env.secrets).
- forge -> platform runners / platform-managed throughout.
- Links point to docs/ Pages paths, not .ciagent/.

modules/ terminology:
- modules/README.md: L1 primitives -> primitives, L2 compositions ->
  modules, composition -> pattern (prose); add roadmap note for the
  composition redesign.
- README-TEMPLATE.md: L1 primitive -> primitive.
- All 7 L1 READMEs: L1 primitive -> primitive.
- L2 static-asset + microservice READMEs: L2 composition -> module
  pattern, composition -> pattern, L1 -> primitive; bump stale @v1 ->
  @v1.4 in usage examples; fix CONSUMER_GUIDE.md -> consumer-guide.md
  link.

Verification: grep sweeps for .ciagent/.gitea/forge/go-gitea/waiver/
D-039/D-047/acdl_platform in docs/ README.md modules/ contracts/ all
return 0 hits. Tests: 166 pass. run_ci.sh green.
2026-07-22 18:26:00 +00:00
..

ecr — ECR repository

Module kind: primitive | Version: 1.0.0

A single ECR repository that hosts the container image for the ECS task. The simplest container-registry module — one resource, two inputs, two outputs.

Resources

Resource Type Purpose
repository aws_ecr_repository The ECR repository

Inputs

Name Type Required Default Description
name string yes The ECR repository name
region string yes AWS region the repository is created in

Outputs

Name Type Description
repository_url string The ECR repository URL
repository_arn arn The ECR repository ARN

Usage

{
  "id": "ecr",
  "type": "aws:ecr:repository",
  "module": "ecr@1.0.0",
  "inputs": {
    "name": "acdl-microservice",
    "region": "us-east-1"
  }
}

The repository_url output is used to build the image input for ecs-service (e.g. <repository_url>:latest).

Compliance extension points

  • Image scanning — add image_scanning_configuration { scan_on_push = true } for vulnerability scanning (SOC2 CC7.6, DORA ICT risk testing, HIPAA security monitoring).
  • Encryption — add encryption_configuration { encryption_type = "KMS", kms_key = ... } with a customer-managed key (SOC2 CC6.1, HIPAA §164.312(a)(2)(iv), GDPR Art.32).
  • Image tag immutability — add image_tag_mutability = "IMMUTABLE" to prevent tag overwriting (SOX §802, SOC2 CC6.1 integrity, DORA audit integrity).
  • Lifecycle policy — add aws_ecr_lifecycle_policy to enforce image retention / cleanup (GDPR Art.5(2) data minimization, SOC2 CC5.2).
  • Access policy — add a repository policy restricting pull/push to known roles (SOC2 CC6.1, HIPAA §164.308(a)(4)).

Versioning

1.0.0 — interface MAJOR, behavior MINOR, lifecycle PATCH. MAJOR bumps require a new registry entry (immutable publication); old entries enter a 12-month deprecation window.