Category: spec-conformance Severity: minor
Location: src/Arcp.Core/Messages.fs:12-29
Spec: ARCP v1.1 §6.3
What
Spec §6.3 describes resume as a distinct message: 'A client reconnecting after a transport drop presents last_event_seq and its most recent resume_token in session.resume.' The SDK piggybacks resume on session.hello.payload.resume, which is not the wire shape the spec defines. Listed as minor because §6.3's wire example is brief; pair this with f-0041 (no runtime handling at all).
Evidence
/// Payload of `session.hello.payload.resume` (spec §6.3).
type ResumeRequest =
{
SessionId: string
ResumeToken: string
LastEventSeq: int64
}
/// `session.hello` payload (spec §6.1, §6.2).
type SessionHelloPayload =
{
Client: ClientIdentity
Auth: AuthPayload
Capabilities: HelloCapabilities
Resume: ResumeRequest option
}
Proposed fix
Introduce a Message.SessionResume/session.resume case with its own payload and remove the Resume field from SessionHelloPayload.
Acceptance criteria
Category: spec-conformance Severity: minor
Location:
src/Arcp.Core/Messages.fs:12-29Spec: ARCP v1.1 §6.3
What
Spec §6.3 describes resume as a distinct message: 'A client reconnecting after a transport drop presents
last_event_seqand its most recentresume_tokeninsession.resume.' The SDK piggybacks resume onsession.hello.payload.resume, which is not the wire shape the spec defines. Listed as minor because §6.3's wire example is brief; pair this with f-0041 (no runtime handling at all).Evidence
Proposed fix
Introduce a
Message.SessionResume/session.resumecase with its own payload and remove theResumefield fromSessionHelloPayload.Acceptance criteria
session.resume, not as a nested field insidesession.hello.