--- # pages-ihlp title: OpenTofu infra, deployment docs, project docs polish status: completed type: task priority: normal created_at: 2026-07-13T02:09:09Z updated_at: 2026-07-13T22:38:04Z parent: pages-77lk blocked_by: - pages-jaqz --- infra/ per design §3/§4.4 mirroring ../quotesdb/infra style: providers.tf (cloudflare provider, variables for account_id/zone_id/api_token), r2.tf (pages bucket), d1.tf (pages database), dns.tf (pages.elijah.run record for worker custom domain or route), rate-limits.tf (rule on POST /api/* and /auth/*), every resource/data block commented. infra/README.md: apply order, wrangler deploy step, wrangler secret put GITHUB_CLIENT_SECRET, D1 schema apply command, GitHub OAuth app setup (callback URL). Update wrangler.toml with route/custom-domain + real binding placeholders and comments. tofu fmt + tofu validate (best effort if provider download blocked — say so). Update docs/PLANNING.md work log + README as needed. - [x] infra/*.tf with comments - [x] infra/README.md deployment guide - [x] wrangler.toml finalized - [x] tofu fmt/validate attempted, result recorded - [x] PLANNING.md updated ## Summary of Changes OpenTofu infra + deployment docs by a Sonnet agent; Opus review APPROVE with 2 should-fixes applied: - infra/{providers,variables,r2,d1,dns,rate-limits}.tf (cloudflare ~> 4, AAAA 100:: placeholder + wrangler-owned route, http_ratelimit ruleset), infra/README.md end-to-end deploy guide, infra/.gitignore. - Fixes: zone-entrypoint ruleset guidance corrected (one http_ratelimit ruleset per zone on every plan — merging with quotesdb's is mandatory when both apply); unused var.domain removed. - tofu fmt -check + tofu validate pass; wrangler.toml left with placeholders pending real tofu apply.