docs(clarify): v1.11 RESTART — 10 binding decisions, 0 escalations (full autonomy)
CLARIFY stage. Autonomy=full, budget=10, threshold=0.6. All decisions
were user-confirmed during the planning conversation (no ambiguities
escalated beyond budget).
Binding decisions (all user-confirmed, confidence >= 0.8):
D-097 (0.95): v1.11 restart branches off v1.10.2 (clean), not main.
The failed first attempt (phase/56 + phase/57) is abandoned; the
restart preserves the audit trail of what went wrong. Branch:
milestone/v1.11-restart.
D-098 (0.90): The terraform adapter becomes a stateless assembler.
Each L1 module ships a real terraform/ module dir (versions/
variables/locals/main/outputs.tf) owning its resource shape, nested
blocks, and defaults. The adapter deletes TYPE_MAP/INPUT_MAP/
OUTPUT_MAP and all 39 type-specific branches, becoming a ~80-line
assembler that emits module-instantiation blocks. interface.json
stays engine-agnostic; the terraform dir is the engine binding.
D-099 (0.90): Per-module terraform is a proper module, not crammed
into main.tf. locals.tf is used heavily to centralize interpolation
of variables against their sensible defaults. Multi-resource modules
get the full split; trivial single-resource modules may inline locals
in main.tf.
D-100 (0.85): Defaults (CIDR blocks, assume_role_policy JSON, ECR/
logs inline policy, Fargate requires_compatibilities, assign_public_ip)
move into the module terraform (locals.tf variable defaults or
hardcoded in the resource block). The adapter passes only resolved
contract inputs. If a default is wrong, fix the module, not the
adapter.
D-101 (0.90): Terraform owns lifecycle. run_platform.sh gains --apply
and --destroy modes. Python never runs terraform. verify_deploy_
microservice.py is deleted. Python only orchestrates the shell; boto3
read-only verify probes are deferred to a future QA milestone.
D-102 (0.85): Testing is pipeline-driven. A modules-lifecycle pipeline
(Gitea + GitHub, byte-identical) matrix-runs each L1 module's
examples/{simple,complex}.yml contracts through apply→modify→destroy
against live AWS. No per-module Python/pytest. The 'test' = the pipeline
cell going green.
D-103 (0.85): Modify lifecycle = apply simple → apply complex (same
state key, terraform modifies) → destroy. Uses the module's own
existing example contracts as the modify variants. No extra contract
files needed.
D-104 (0.80): Lifecycle pipeline triggers on pull_request to main +
workflow_dispatch. AWS creds via CI secrets. Cost ~$1/PR (28 apply→
destroy cells). Pipeline enforces destroy as the last step. Fall back
to manual-dispatch-only if cost is too high.
D-105 (0.90): Single platform VPC. terraform/platform owns ONE VPC;
the microservice composition drops its vpc child and references the
platform VPC via data source. The standalone vpc L1 module stays
(consumers deploy their own VPCs). No per-contract VPC ever again.
D-106 (0.90): L2 = composition only. No L2 terraform files. The
composition must be deterministic: same contract → same resolved stack
→ same state key (spike/{id}/{env}/terraform.tfstate), every time.
State keys are env-aware and stable across apply/modify/destroy.
D-107 (0.85): P56 split into P56a (adapter rewrite + s3 reference
module, proves the design) + P56b (author remaining 11 L1 module
terraform subdirs). Keeps phases atomic.
No ambiguities escalated beyond budget.
---ci---
project: acdl
phase: 0
milestone: v1.11
status: clarify
decisions:
- id: D-097
decision: v1.11 restart branches off v1.10.2 (clean), not main.
confidence: 0.95
- id: D-098
decision: Adapter becomes a stateless assembler; each L1 ships a terraform/ module dir.
confidence: 0.90
- id: D-099
decision: Per-module terraform is a proper module with heavy locals.tf for default interpolation.
confidence: 0.90
- id: D-100
decision: Defaults move into the module terraform (locals.tf), not the adapter.
confidence: 0.85
- id: D-101
decision: Terraform owns lifecycle; Python never runs terraform; verify_deploy_microservice.py deleted.
confidence: 0.90
- id: D-102
decision: Testing is pipeline-driven (apply→modify→destroy); no per-module Python.
confidence: 0.85
- id: D-103
decision: Modify = apply simple → apply complex (same state) → destroy.
confidence: 0.85
- id: D-104
decision: Lifecycle pipeline triggers on PR + workflow_dispatch.
confidence: 0.80
- id: D-105
decision: Single platform VPC; standalone vpc L1 stays.
confidence: 0.90
- id: D-106
decision: L2 = composition only; deterministic state keys.
confidence: 0.90
- id: D-107
decision: P56 split into P56a (adapter + s3 reference) + P56b (11 remaining modules).
confidence: 0.85
---/ci---
This commit is contained in: