passing the OPG.04 request body through unchanged. OEG writes no `operations` row and holds
no federation state — the only state is the in-flight HTTP call awaiting FM.
([fm/requirements-and-design.md §L.3b](/fm/requirements-and-design.md)), passing the OPG.04
request body through unchanged. OEG writes no `operations` row and holds no federation state
— the only state is the in-flight HTTP call awaiting FM.
3. FM performs all OPG.04 parsing, validation, agreement checks, persistence (`partner_ops`,
`federation_agreements`, `federation_contexts`), topology hiding, and — for establishment —
the outbound `CreateFederation` / `ZoneSubscribe` handshake with the partner's FM.
@@ -318,7 +318,7 @@ These assumptions are necessary for the architecture to work as written.
| E3 | Keycloak JWKS reachable from OEG at startup (cached). | `/readyz` fails if JWKS unhealthy. Medium risk. |
| E4 | App Providers register callback URLs out-of-band (Portal) or via API — HTTPS only in production. | Callback delivery fails. Medium risk. |
| E5 | OEG and SRM share identical JSON semantics for `command.srm.*` payloads via `oop-commons` event schemas. | Messages rejected by SRM. High risk. |
| E6 | FM exposes internal HTTP endpoints (`http://fm:8082/internal/...`) for the federation-lifecycle and zone-subscription operations OEG fronts, accepting the unmodified OPG.04 body and replying synchronously (ADR-0045). | OEG cannot proxy federation establishment; inbound `POST /partner` fails. Medium risk. |
| E6 | FM exposes internal HTTP endpoints for the federation-lifecycle and zone-subscription operations OEG fronts (RD §L.3b), accepting the unmodified OPG.04 body and replying synchronously (ADR-0045). | OEG cannot proxy federation establishment; inbound `POST /partner` fails. Medium risk. |