session.opennames an embodiment (or none, for observer sessions), one time model, requested channel subscriptions with rates, requested action-type grants, requested administrative operations, and optionally the task.- The world resolves each request to a granted subset and MUST enumerate the outcome exactly in
session.ready(granted channels with actual rates, granted action types, granted admin operations, active envelopes). Silence is not a grant.[AWP-NEG-001] - The world MUST reject
session.open(not silently downgrade) when the requested time model is unsupported or the embodiment is unavailable:AWP_TIME_MODEL_UNSUPPORTED,AWP_EMBODIMENT_UNAVAILABLE.[AWP-NEG-002] - Channel rates MAY be granted lower than requested; action types are granted whole or not at all.
[AWP-NEG-003] - Renegotiation:
obs.subscribeadds or re-rates channels andobs.unsubscriberemoves them mid-session; both return the session’s complete channel grant list after the change. A channel the manifest does not declare fails withAWP_CHANNEL_UNKNOWN; a declared channel the session may not read fails withAWP_FORBIDDEN. Grants for action types are fixed for the session.[AWP-NEG-004]
Layer 1 — Session & capabilities
Negotiation
Subset selection rules, rejection codes, and mid-session renegotiation.