# 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.