Files
acdl/.ciagent/PLAN.md
T
grimacing 00d0043866 ship: phase-02 l1-modules (v1.0.2)
Squash merge of phase/02-l1-modules into milestone/v1.0-initial; 8 L1 stub modules created; verify_phase02.sh green.
2026-07-21 13:18:12 +00:00

4.0 KiB

phase, name, milestone, milestone_type, status, requirements, must_haves, verification
phase name milestone milestone_type status requirements must_haves verification
02 l1-modules v1.0 feature planned
REQ-02
REQ-03
All 8 L1 module folders exist under modules/l1/ with the exact names from REQ-02
Each L1 has a manifest.yaml matching the schema in ARCHITECTURE.md (name, kind: l1, description, inputs: map of string keys)
Each L1 has a mock_apply.sh that echoes '[L1: <name>] applying...', sleeps 1s, echoes '[L1: <name>] OK', exits 0 (D-007)
All mock_apply.sh are executable (chmod +x) and bash -n clean
All manifest.yaml files parse as valid YAML
scripts/verify_phase02.sh passes: enumerates 8 L1s, validates each manifest, runs each mock_apply.sh, confirms exit 0 + expected output
typecheck test build
bash -n modules/l1/*/mock_apply.sh scripts/*.sh && python3 -c 'import yaml; [yaml.safe_load(open(f)) for f in glob.glob("modules/l1/*/manifest.yaml")]' scripts/verify_phase02.sh no-op

Phase 02 — l1-modules PLAN

Goal

Create the 8 L1 stub modules under modules/l1/. Each module has a manifest.yaml (declared inputs, flat string map per D-017) and a uniform mock_apply.sh (echo + 1s sleep + exit 0 per D-007/D-018). After this phase, Phase 03 can compose L1s into L2 modules and mock_executor.sh can iterate over an L2's L1 references.

Requirements covered

  • REQ-02: 8 L1 module folders exist (exact names)
  • REQ-03: each L1 has manifest.yaml + mock_apply.sh with the uniform behavior

Waves (vertical slices)

Wave 1 — infra-stub-engineer (creates the 8 L1s)

Tasks:

  • T-2.1 Create modules/l1/l1-eks-fargate/{manifest.yaml, mock_apply.sh}
  • T-2.2 Create modules/l1/l1-iam-role/{manifest.yaml, mock_apply.sh}
  • T-2.3 Create modules/l1/l1-lambda/{manifest.yaml, mock_apply.sh}
  • T-2.4 Create modules/l1/l1-api-gateway/{manifest.yaml, mock_apply.sh}
  • T-2.5 Create modules/l1/l1-eventbridge/{manifest.yaml, mock_apply.sh}
  • T-2.6 Create modules/l1/l1-sqs/{manifest.yaml, mock_apply.sh}
  • T-2.7 Create modules/l1/l1-s3/{manifest.yaml, mock_apply.sh}
  • T-2.8 Create modules/l1/l1-cloudwatch/{manifest.yaml, mock_apply.sh}

Each L1's manifest.yaml declares 1-3 plausible inputs for that primitive (e.g., l1-s3 declares bucket_name, region, retention_days; l1-iam-role declares role_name, trust_policy). Each mock_apply.sh follows the exact uniform template from ARCHITECTURE.md.

Files owned (territory): modules/l1/**

Commits: one per task, ---ci--- block has phase: 2, status: plan-as-execute, persona: infra-stub-engineer, task: T-2.x, requirements.covered: [REQ-02, REQ-03].

Wave 2 — lead-developer (verification script + traceability)

Tasks:

  • T-2.9 Create scripts/verify_phase02.sh. It:
    1. Enumerates modules/l1/*/ and confirms exactly 8 folders with the 8 expected names.
    2. For each L1: confirms manifest.yaml exists and parses as YAML with name matching the folder, kind: l1, and an inputs: map.
    3. For each L1: confirms mock_apply.sh is executable, bash -n clean, runs in <2s, exits 0, and its stdout contains the [L1: <name>] applying... and [L1: <name>] OK markers.
    4. Prints a PASS/FAIL summary; exits 0 on full success.
  • T-2.10 Update .ciagent/REQUIREMENTS.md (REQ-02/03 → covered pending VERIFY) and .ciagent/ROADMAP.md (Phase 02 → executing). No README change.

Files owned (territory): scripts/verify_phase02.sh, .ciagent/REQUIREMENTS.md, .ciagent/ROADMAP.md

Commits: one per task, ---ci--- block has phase: 2, status: plan-as-execute, persona: lead-developer, task: T-2.9/2.10.

Wave ordering

  • Wave 1 (infra-stub-engineer) creates all 8 L1s. A single subagent gets all 8 tasks; it commits per task.
  • Wave 2 (lead-developer) adds the verify script and traceability after the L1s exist.

backend-engineer, data-engineer, frontend-engineer have 0 tasks this phase.

Dependencies

  • Depends on Phase 01 (the modules/l1/.gitkeep from T-1.1 is replaced by real folders).
  • Phase 03 depends on this phase for L1 references in L2 compositions.