Category: spec-conformance Severity: blocker
Location: messages/types.go:7-15
Spec: ARCP v1.1 §6.7
What
Spec §6.7 mandates the client send session.close and the runtime acknowledge with session.closed. The Go SDK ships only session.bye and the server never sends a closed acknowledgement (dispatch for TypeSessionBye just sets gracefulBye and cancels). A spec-conformant peer that sends session.close will be answered with 'unknown envelope type' instead of session.closed.
Evidence
TypeSessionHello = "session.hello"
TypeSessionWelcome = "session.welcome"
TypeSessionError = "session.error"
TypeSessionBye = "session.bye"
TypeSessionPing = "session.ping"
TypeSessionPong = "session.pong"
TypeSessionAck = "session.ack"
TypeSessionListJobs = "session.list_jobs"
TypeSessionJobs = "session.jobs"
Proposed fix
Rename TypeSessionBye to TypeSessionClose ("session.close") and add TypeSessionClosed ("session.closed"); have the server emit a session.closed envelope back to the client on receipt before cancelling.
Acceptance criteria
Category: spec-conformance Severity: blocker
Location:
messages/types.go:7-15Spec: ARCP v1.1 §6.7
What
Spec §6.7 mandates the client send
session.closeand the runtime acknowledge withsession.closed. The Go SDK ships onlysession.byeand the server never sends aclosedacknowledgement (dispatch for TypeSessionBye just sets gracefulBye and cancels). A spec-conformant peer that sendssession.closewill be answered with 'unknown envelope type' instead ofsession.closed.Evidence
Proposed fix
Rename TypeSessionBye to TypeSessionClose ("session.close") and add TypeSessionClosed ("session.closed"); have the server emit a
session.closedenvelope back to the client on receipt before cancelling.Acceptance criteria
session.closeenvelope receives asession.closedenvelope before the transport drops; the literalsession.byeis removed from the wire.