- Sessions operate default-deny: only explicitly granted action types, channels, embodiments, and administrative operations are usable; everything else returns
AWP_FORBIDDEN.[AWP-PRM-001] - Grants are enumerated exactly in
session.readyand are immutable for the session except channel subscriptions (negotiation).[AWP-PRM-002] - Grants MAY carry
expires_at(monotonic ns); expired grants behave as never granted, and the world emitsworld.event: grant_expired.[AWP-PRM-003] - Worlds MAY scope grants further per action type (e.g.
move_to_poselimited to a named spatial region); such scopes appear in the granted schema.[AWP-PRM-004]
Administrative mutations
Some control-channel methods change state that other sessions observe or depend on. They form a fourth grant class,admin, requested in session.open (admin: string[]) and enumerated in session.ready (granted.admin):
- Administrative operations are default-deny like everything else. A world that hosts a single session MAY grant
adminoperations by default; a world that hosts several MUST grantrestore,reset, and (withtick_authority: "any_session")tickto at most one session at a time, or to none.[AWP-PRM-005] world.restoreandworld.resetMUST: (1) emitworld.event: world_resettingto every session, naming the initiating session id; (2) transition every non-terminal action in every session tocancelled(reasonworld_reset;executingactions throughcancelling); (3) perform the state change; (4) in lockstep, deliver a fresh frame on every subscribed per-tick channel of every session (as AWP-TIM-009) with the restoredtick. Sessions, grants, tokens, and subscriptions persist across a reset. Snapshot tokens remain valid after a restore.[AWP-PRM-006]task.updatechanges only the calling session’s task and requires no admin grant (AWP-TSK-003).