Skip to content

session/statusChanged

A loaded session’s (status, attention) flipped; command-plane broadcast, cursor-stamped, not subscription-gated (ADR 31983 D2).

Type: SessionStatusChangedParams

session/statusChanged params: a loaded session’s projected (status, attention) value flipped. A command-plane broadcast — delivered to every connection regardless of its view subscription set, never gated, no sourceRange; the same facts live on the Session object, which is how a client seeds its table (no initial burst on connect).

Field Type Stability Presence Description
attention AttentionFlag[] optional Attention flags after the transition; present only when at least one flag is set.
permissionState EffectivePermissionState Experimental optional The folded effective permission state — the same object the Session carries as permissionState. Additive- optional: a loaded session carries it; a "notLoaded" unload frame and an older host omit it (the attention precedent), and absence is unknown, never active. A projection of the ONE stored attach face session/read and the session/list rows serve, never a restatement. Part of the change gate: a change in ONLY this answer — with (status, attention) unchanged — is a publishable change, deduped only when value-identical, carried on the next session/statusChanged frame.
sessionId string required The owning session.
status SessionStatus required Load state after the transition (the closed enum, unchanged).
viewCursor string | null required The causing record’s view cursor (ADR 31983 D4). Required-nullable: null exactly when the paired session/closed’s cursor is null (the unload fold-failure arm); a definite cursor everywhere else.
Source

schema/msp/experimental/msp.schema.json#/notifications/session~2FstatusChanged

{
"description": "A loaded session's (status, attention) flipped; command-plane broadcast, cursor-stamped, not subscription-gated (ADR 31983 D2).",
"params": {
"$ref": "#/$defs/SessionStatusChangedParams"
}
}