ui:navigate
ui family
Move the CALLER'S OWN reader to a same-origin path. Two independent checks, because one of them runs in code an untrusted caller can reach: (1) the SERVER addresses only the session that made this call — authority comes off the attested ctx, there is NO field naming a principal — `viewer`, `viewerId`, `actorId`, `actor`, `target`, `targetViewer`, `targetActor`, `session`, `sessionId`, `userId`, `uid`, `ownerSlug`, `audience` — and a payload carrying any of them is REFUSED outright rather than silently stripped (`workspace`/`slug` are NOT refused: they scope, they cannot name a reader); (2) the BROWSER independently drops any command that did not arrive on a stream it opened itself, so a command that somehow escaped (1) still moves nobody. Same-origin PATHS only — an absolute URL, a scheme, or a protocol-relative href is refused, never rewritten.
- Effect
- ask
- Awaits an outcome — the call returns the response below.
- Caller
- session
- The class of authority the caller must already hold, decided from the attested context with no round trip.
- Cost
- free
- What one call costs, so you can budget before acting.
- Reversible
- yes
- The effect can be undone by a later call.
- Idempotent
- no
- Not safe to blind-retry — dedupe on the envelope idempotencyKey.