# ADR 051: TFLint (Terraform Linting)

- HTML version: https://robbiepalmer.me/projects/recipe-site/adrs/055-tflint
- Project: Recipe Site (https://robbiepalmer.me/projects/recipe-site.md)
- Status: Accepted
- Date: 2026-07-20
- Inherited from project: personal-site (https://robbiepalmer.me/projects/personal-site/adrs/051-tflint.md)

# Additional Context for Recipe Site

The recipe site's infrastructure — Neon Postgres, Hyperdrive, and the
recipe-api/recipe-ingest Workers — is defined in the same `infra/` Terraform
root, so it is covered by the same TFLint configuration and CI job (see
[personal-site ADR 051](/projects/personal-site/adrs/051-tflint)).

The hygiene rules matter most where the Terraform churns fastest, and that is
the recipe-site backend: preview environments, database branches, and Worker
bindings have driven most recent infra changes. Unused declarations and
deprecated syntax left behind by that churn are exactly what the
`recommended` preset flags.

# Consequences

## Positive

* The most actively edited Terraform (recipe-site backend resources) gains a
  blocking correctness lint on every PR, before the plan job needs secrets.

## Negative

* No Neon provider ruleset exists, so Neon-specific argument mistakes still
  surface only at `terraform plan`.

## Notes for Recipe Site

# Additional Context for Recipe Site

The recipe site's infrastructure — Neon Postgres, Hyperdrive, and the
recipe-api/recipe-ingest Workers — is defined in the same `infra/` Terraform
root, so it is covered by the same TFLint configuration and CI job (see
[personal-site ADR 051](/projects/personal-site/adrs/051-tflint)).

The hygiene rules matter most where the Terraform churns fastest, and that is
the recipe-site backend: preview environments, database branches, and Worker
bindings have driven most recent infra changes. Unused declarations and
deprecated syntax left behind by that churn are exactly what the
`recommended` preset flags.

# Consequences

## Positive

* The most actively edited Terraform (recipe-site backend resources) gains a
  blocking correctness lint on every PR, before the plan job needs secrets.

## Negative

* No Neon provider ruleset exists, so Neon-specific argument mistakes still
  surface only at `terraform plan`.

---

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