SessionDriveChangedParams
Experimental
session/driveChanged params: the session’s drive holder
changed. A command-plane broadcast on the session/statusChanged
pattern — delivered to every connection on the host, subscribed or not;
a connection’s optOutNotificationMethods suppresses it — so the
previous holder and every observer learn who drives now. Not a view
event: no viewCursor, no sourceRange (it reflects live registry
state, no durable record). The embedded single-connection host never
emits it (ADR 58706-drive-handover D6). Experimental tier.
Fields and variants
Section titled “Fields and variants”driveHolder— ExperimentalpreviousDriveHolder— Experimentalreason— ExperimentalsessionId— ExperimentalyouDrive— Experimental
Source
schema/msp/experimental/msp.schema.json#/types/SessionDriveChangedParams
{ "description": "`session/driveChanged` params: the session's drive holder\nchanged. A command-plane broadcast on the `session/statusChanged`\npattern — delivered to every connection on the host, subscribed or not;\na connection's `optOutNotificationMethods` suppresses it — so the\nprevious holder and every observer learn who drives now. Not a view\nevent: no `viewCursor`, no `sourceRange` (it reflects live registry\nstate, no durable record). The embedded single-connection host never\nemits it (ADR 58706-drive-handover D6). **Experimental tier**.", "properties": { "driveHolder": { "$ref": "#/$defs/ClientInfo", "description": "The handshake `ClientInfo` (name and version, never `title`) of the\nlive connection that holds the drive after this change — the value\n`Session.driveHolder` serves (ADR 58706-bridged-client-attribution\nD2), so the read and the push are one shape. Omitted when nobody\nholds it; never `null`." }, "previousDriveHolder": { "$ref": "#/$defs/ClientInfo", "description": "The handshake of the connection that held the drive before this\nchange: the displaced holder on `requested`, the releaser on\n`released`, the dropped holder on `lapsed`. Omitted when nobody held\n(every `resumed` take included); never `null`." }, "reason": { "$ref": "#/$defs/DriveChangedReason", "description": "Why the holder changed (open enum)." }, "sessionId": { "description": "The owning session.", "type": "string" }, "youDrive": { "description": "Set per recipient copy: `true` exactly for the connection that now\nholds the drive. A handshake is not a connection id (two windows of\none client send the same `clientInfo`), so a client never learns it\nlost the drive by comparing `driveHolder` to its own handshake; it reads this flag.", "type": "boolean" } }, "required": [ "reason", "sessionId", "youDrive" ], "type": "object", "x-msp-descriptor": "session/driveChanged", "x-msp-stability": "experimental"}