diff --git a/AGENTS.md b/AGENTS.md index 13827a8..ec55a46 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -114,6 +114,17 @@ All require a valid `X-Recap-Operator-Key`. Defined in `routes/user-tier.js`. - `POST /:id/repolish` — re-runs `runSummaryPolish` with the CURRENT names (no re-inference). Synchronous; needs hardware analyze online; 400 if no named speakers. - `DELETE /:id`. +### Cross-repo changes (sibling: `../recap`) + +This repo and the Recaps app (`../recap`) share a live client/server contract — the +`/relay/*` endpoints, the `X-Recap-*` headers, request/response shapes, and tier/credit +semantics. **Before finishing any change that touches that boundary, check whether +`../recap` needs a matching change.** If you add/rename/remove an endpoint, alter a payload +shape or header, or shift tier/credit/billing behavior, update the consumer side too — and +reflect it in BOTH repos' `AGENTS.md` (the contract docs) and `ROADMAP.md` (if it's staged +work). Purely internal changes (diarization tuning, dashboard layout, packaging) don't need +this. When unsure whether a change is contract-affecting, assume it is and check. + ## Conventions for this codebase specifically - **A saved meeting record stores the per-chunk TitaNet fingerprints in `rec.diarization`.** Because the audio is gone, this is what makes re-clustering possible *offline* — no re-upload, no Spark Control round-trip.