πGitOps
How a change actually ships, by layer. The common thread: author desired state in git, let an operator apply it. Rationale in ADR/0001 GitOps apply model.
Terraform β Atlantis
Open a PR touching a root module β Atlantis autoplans it β review β comment
atlantis applyβ a successful apply automerges the PR.Local
terraform planis inspection-only; applying locally races Atlantis and corrupts locks.
Kubernetes β Flux (+ ArgoCD)
Merge to
mainβ Flux reconcilesclusters/**. ArgoCD deploys apps sourced from external repos (definitions interraform/argo/).flux reconcile kustomization <name> -n flux-systemforces a sync;kubectlis for inspection.
NixOS β nixos-rebuild + auto-upgrade
nixos-rebuild switch/boot --flake .#<host> --target-host <host>is the apply path, and hosts also auto-rebuild from GitHubmainβ so out-of-band or branch deploys silently revert unless merged promptly.
CI workflows
terraform.ymlβ validates changed.tffiles; auto-formats + regenerates terraform-docs on mergecontainers.ymlβ builds container images fromapps/,packages/,images/trivy.ymlβ scans.tfandclusters/**for CRITICAL/HIGH IaC vulnerabilitieswiki.ymlβ builds this wiki fromdocs/and deploys it to Cloudflare Pagespulsifer-ca.ymlβ builds and deploys the Hugo site to GitHub Pagesnixos-deploy.yaml,nix-ci.yaml,nix-image-builder.yamlβ NixOS build/deploy pipelinesRenovate opens PRs for Helm charts, container images, Terraform providers, and GitHub Actions
The bootstrap exceptions
Two places where a layer reaches into another: the Flux bootstrap (
clusters/<site>/bootstrap/Terraform installsflux-operator/flux-instance), and the Atlantis β ArgoCD auth wiring (see Runbooks/Kubernetes GitOps Change for token rotation).
Linked references 5
Everything ships the same way: open a PR, let the operators apply it. See Architecture/GitOps.
When a runbook procedure changes the fleet's desired state, the change still ships via git β see Architecture/GitOps.
Architecture/GitOps β how a change actually ships, layer by layer