#!/usr/bin/env bash # scripts/run_l2_lifecycle_destroy.sh — run a single L2 module lifecycle destroy. # # Usage: run_l2_lifecycle_destroy.sh # # Wraps run_platform.sh for L2 composition modules in the modules-lifecycle # pipeline. Sets ACDL_REMOTE_STATE_KEY to point to the CI VPC state. # # NOTE: unlike the L1 scripts (run_lifecycle_destroy.sh), the L2 path does # NOT take a ci-vpc-outputs.json argument. L2 compositions reference the # platform VPC via terraform_remote_state (a data source), not by injecting # VPC outputs into the contract. The workflow passes 2 positional args for # parity with the L1 matrix, but $2 is accepted-but-ignored here (documented, # not a bug). # # Lifecycle mode (REQ-134): ACDL_LIFECYCLE_MODE default "plan" = no-op # (plan mode never applies resources, so there is nothing to destroy). # Set to "full" for the real `--destroy` against live AWS. set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$ROOT" MODULE="$1" # Lifecycle mode: "plan" (default) skips destroy; "full" runs the real destroy. LIFECYCLE_MODE="${ACDL_LIFECYCLE_MODE:-plan}" if [ "$LIFECYCLE_MODE" != "full" ]; then echo "lifecycle mode=$LIFECYCLE_MODE — nothing to destroy (plan-only run), exiting 0" exit 0 fi CONTRACT="modules/l2/${MODULE}/examples/complex.yml" # Point terraform_remote_state to the CI VPC state (not the platform VPC) export ACDL_REMOTE_STATE_KEY="spike/ci-vpc/terraform.tfstate" # Run the platform lifecycle destroy command bash scripts/run_platform.sh --destroy "$CONTRACT"