# thermograph monorepo — agent instructions

Reunified monorepo (2026-07-22): `backend/`, `frontend/`, `infra/`,
`observability/` — each a former split repo subtree-merged with history.
`thermograph-docs` remains a separate repo; cross-cutting decision docs and
operator runbooks belong there, not here.

- **Each domain keeps its own `CLAUDE.md`** — read the one for the domain you
  touch. They still use repo-era wording ("this repo", sibling-repo names);
  mentally map `thermograph-backend` → `backend/` etc., and fix wording as you
  touch files near it.
- **CI lives only in root `.forgejo/workflows/`**, path-filtered per domain
  (see README). Never re-add workflows under a domain's own `.forgejo/` — they
  are inert there and become a trap.
- Images are `emi/thermograph/backend` and `emi/thermograph/frontend`
  (`sha-<12hex>`). Deploy = `infra/deploy/deploy.sh` over SSH, per-service.
- The compose project name is pinned (`name: thermograph` in
  `infra/docker-compose.yml`); LAN dev overrides via
  `COMPOSE_PROJECT_NAME=thermograph-dev`. Don't remove either half.
- Cross-domain rules that still bind: FE/BE ship independently → keep the
  `/api/version` contract and `PAYLOAD_VER` discipline (see
  `backend/CLAUDE.md`); anything named "prefetch" must never spend the
  Open-Meteo quota; Nominatim ≤ 1 req/s; secrets only via the SOPS vault
  (`infra/deploy/secrets/`).
- `CUTOVER-NOTES.md` is the source of truth for what is and isn't live yet.
- Commits/PRs: concise and technical; never mention AI/assistants/automated
  authorship.
