# ADR 003: Terraform for infrastructure provisioning

- HTML version: https://robbiepalmer.me/projects/personal-engineering-platform/adrs/003-terraform
- Project: Personal Engineering Platform (https://robbiepalmer.me/projects/personal-engineering-platform.md)
- Status: Accepted
- Date: 2026-09-12
- Initiatives: Semi-autonomous Software Development (https://robbiepalmer.me/initiatives/semi-autonomous-software-development.md)

## Context

Projects that create managed resources need reviewable provisioning state.

## Decision

Prefer Terraform when a project activates the infrastructure provisioner
slot.

## Consequences

Terraform makes
[state](https://developer.hashicorp.com/terraform/language/state) part of the
project's operational data. Projects must keep shared state in a protected
remote backend, use state locking where the backend supports it, and recover
state if a write fails. Plans need review for destructive changes. Existing
resources must be imported before Terraform can manage them, and changes made
outside Terraform create drift that later plans must reconcile.

---

Markdown index of this site: https://robbiepalmer.me/llms.txt
