+8
−4
+23
−11
File changed.
Preview size limit exceeded, changes collapsed.
Loading
Brings the FM spec in line with FM !39, !40 and !41.
Agreements (requirements-and-design, the agreement entity and its
internal API section; ADR-0051's relay table): a partner has one
agreement, edited in place. POST /internal/agreements answers 409
agreement-exists when the partner already has one, and PATCH changes
any field but the partner, with the create checks run on the merged
result. Partners that had several keep the one FM applied; the rest
become expired. Replaces "zones and terms take a new agreement; the
newest valid one applies".
Zone sync (REQ-FED-04): an agreement offers nothing outside valid_from
and valid_until. FM records what each federated partner was last told
and sends ZONES ADD/REMOVE for the difference on every agreement write,
when a validity boundary passes, and on a periodic check that also
resends missed callbacks (FM_ZONE_OFFER_SWEEP_SECONDS). A withdrawn zone
releases its subscription in both directions. The partner's platformCaps
are kept on partner_ops.supported_apis, which is no longer "not built
yet".
Persistence model: the one-agreement-per-partner index (migration 0008),
and partner_ops.supported_apis and federation_contexts.offered_zone_ids
(migration 0009).
Inbound EWBI authentication also checks the token audience: aud must
name federation-manager (FM_KEYCLOAK_AUDIENCE), which our Keycloak's
audience mapper adds to partner tokens. Overview, implementation and
Workflow 1 updated.
Co-Authored-By:
Claude Opus 5.5 <noreply@anthropic.com>
File changed.
Preview size limit exceeded, changes collapsed.