RUDPClient/openspec/specs/multi-session-lifecycle/spec.md

3.5 KiB

multi-session-lifecycle Specification

Purpose

Define the shared orchestration model for hosts that manage multiple concurrent network sessions while preserving the existing per-session lifecycle vocabulary.

Requirements

Requirement: Multi-session hosts manage per-peer lifecycle state

The shared networking core SHALL provide a multi-session lifecycle coordinator for hosts that manage multiple concurrent remote peers. The coordinator MUST maintain distinct per-session lifecycle state keyed by remote identity rather than collapsing all peers into one runtime-level state.

Scenario: Server tracks two peers independently

  • WHEN a server host accepts transport activity from two different remote peers
  • THEN the multi-session coordinator creates or resolves two distinct managed sessions
  • THEN lifecycle changes for one peer do not overwrite or hide the state of the other peer

Requirement: Multi-session hosts can observe and evaluate each managed session

The multi-session lifecycle coordinator SHALL expose per-session lookup or enumeration and MUST evaluate timeout, heartbeat, login, and reconnect rules for each managed session independently using the shared session lifecycle vocabulary.

Scenario: Timeout affects only one managed session

  • WHEN one managed session stops receiving liveness updates while another session continues receiving heartbeat or message activity
  • THEN the timed-out session transitions through timeout or reconnect states according to policy
  • THEN the active session remains in its current healthy state

Scenario: Host can inspect current managed sessions

  • WHEN server-side code needs to inspect the current connection state of connected peers
  • THEN it can look up or enumerate managed sessions through the multi-session coordinator
  • THEN each entry exposes the shared session lifecycle state for that specific peer

Requirement: Session removal is explicit and does not corrupt remaining peers

The multi-session lifecycle coordinator SHALL support explicit removal or disconnection handling for one managed session without resetting unrelated sessions that remain active.

Scenario: Disconnect removes one session only

  • WHEN one remote peer disconnects or is evicted by the host
  • THEN the coordinator updates or removes that peer's managed session
  • THEN other managed sessions remain queryable and keep their own lifecycle state

Requirement: Multi-session server lifecycle can be owned by a runtime entry point

The multi-session lifecycle model SHALL support being created, owned, and torn down through a concrete server runtime entry point. Starting the entry point MUST provide access to the MultiSessionManager through the hosted ServerNetworkHost, and stopping the entry point MUST clear managed sessions without requiring callers to remove peers individually.

Scenario: Entry point startup exposes multi-session lifecycle ownership

  • WHEN a server runtime entry point starts successfully
  • THEN the hosted ServerNetworkHost exposes its MultiSessionManager for per-peer lifecycle observation
  • THEN callers do not need to manually construct or inject a separate multi-session coordinator

Scenario: Entry point shutdown clears all managed peers

  • WHEN the server runtime entry point is stopped while one or more managed sessions exist
  • THEN the hosted ServerNetworkHost removes all managed sessions as part of shutdown
  • THEN no unrelated external cleanup step is required to reset multi-session lifecycle state