Category: spec-conformance Severity: major
Location: src/Arcp.Core/Messages/MessageTypeNames.cs:19-20
Spec: ARCP v1.1 §6.7
What
Spec §6.7 defines a client-sent session.close acknowledged by a runtime-sent session.closed. The implementation defines neither; it uses a single session.bye in both directions (SessionState.CloseAsync emits it at SessionState.cs:112, DispatchAsync handles inbound session.bye at SessionState.Dispatch.cs:77). A spec-compliant peer that sends session.close hits the default 'Unhandled inbound type' branch and is never closed gracefully, and this runtime's session.bye is not recognizable as session.closed.
Evidence
/// <summary>Gets the session bye.</summary>
public const string SessionBye = "session.bye";
Proposed fix
Rename to the spec wire types: accept inbound session.close and emit session.closed as the acknowledgement (keep session.bye only as a deprecated alias if back-compat is needed).
Acceptance criteria
Category: spec-conformance Severity: major
Location:
src/Arcp.Core/Messages/MessageTypeNames.cs:19-20Spec: ARCP v1.1 §6.7
What
Spec §6.7 defines a client-sent session.close acknowledged by a runtime-sent session.closed. The implementation defines neither; it uses a single session.bye in both directions (SessionState.CloseAsync emits it at SessionState.cs:112, DispatchAsync handles inbound session.bye at SessionState.Dispatch.cs:77). A spec-compliant peer that sends session.close hits the default 'Unhandled inbound type' branch and is never closed gracefully, and this runtime's session.bye is not recognizable as session.closed.
Evidence
Proposed fix
Rename to the spec wire types: accept inbound session.close and emit session.closed as the acknowledgement (keep session.bye only as a deprecated alias if back-compat is needed).
Acceptance criteria