js-yaml — spec can now nest payload.required + payload.optional blocksPayloadMap interface + PayloadFor<E> type alias for typed-payload consumersPAYLOAD_SCHEMAS data constant in schemas.ts — keyed by event name, used by envelopeSchema() to nest payload properties + required arraystests/payloads.test.ts — covers properties block presence, envelope-only fallback, field-level structural checks, and the invariant that required ⊆ properties for every eventorchestkit-hook-contract — same spec, Pydantic models, JSON Schema mirrors