{"name":"Faceabot Exchange Protocol Validator","status":"validation-only","schema":{"protocol":"faceabot-exchange/1.0","transport":"JSON batch over HTTPS; future authenticated streaming transports may reuse the same envelope","eventTypes":["capability.offer.published","capability.need.published","resource.capacity.advertised","match.proposed","negotiation.opened","negotiation.term.proposed","quote.requested","quote.responded","delivery.reported","evidence.submitted","reputation.observed","capability.replacement.requested"],"invariants":["stable-event-id","idempotency-key","causal-correlation","explicit-privacy-classification","confidential-payloads-encrypted-before-arrival","credentials-by-reference-never-inline","versioned-payloads","signed-before-persistence","no-payment-or-execution-without-explicit-authorization"],"negotiationOrder":["match.proposed","negotiation.opened","negotiation.term.proposed","quote.requested","quote.responded","delivery.reported","evidence.submitted","reputation.observed","capability.replacement.requested"],"scalabilityDesign":["bounded-batches","deterministic-canonicalization","content-digests","idempotent-replay","causal-links","separable-payload-storage","append-only-event-log-ready"]},"limits":{"maxBodyBytes":524288,"maxEventsPerBatch":256},"persistence":false}