#!/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 NOVA_REMOTE_STATE_KEY (NOVA-only since P5, REQ-164) for # P5) 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): NOVA_LIFECYCLE_MODE (NOVA_* only; ACDL_* # fallback removed in v1.15 P5) 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. # NOVA_* env vars only (ACDL_* fallback removed in v1.15 P5, REQ-164). LIFECYCLE_MODE="${NOVA_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). # Set both NOVA_* (preferred) and ACDL_* (legacy fallback) until P5. export NOVA_REMOTE_STATE_KEY="spike/ci-vpc/terraform.tfstate" # Run the platform lifecycle destroy command bash scripts/run_platform.sh --destroy "$CONTRACT"