Case
aiosendspin -> aiosendspin
Start the server first, then the client. The client advertises a listener and a PCM player capability, the server connects in, and both adapters record spec-revision-pinned evidence for the handshake, role activation, initial state, stream negotiation, and timestamped player chunks. Media decoding and rendered audio are explicitly outside this test.
Server
aiosendspin
Client
aiosendspin
Status
Passed
Passed 5 protocol assertions
Inspection
Summaries, logs, and builds
Matrix result
RAW{
"case_dir": "artifacts/results/data/macos__server-initiated-protocol-baseline-v1__aiosendspin__to__aiosendspin",
"client_exit_code": 0,
"client_impl": "aiosendspin",
"reason": "Passed 5 protocol assertions",
"scenario_id": "server-initiated-protocol-baseline-v1",
"server_exit_code": 0,
"server_impl": "aiosendspin",
"status": "passed"
}Server summary (JSON)
RAW{
"client": {
"active_roles": [
"player@v1"
],
"client_id": "rFgILqo5YfPor8oK13GTFmECUaxYcW46Q1TFv8F38Xg",
"name": "aiosendspin-client",
"supported_roles": [
"player@v1"
]
},
"discovery_method": "registry_fallback",
"implementation": "aiosendspin",
"initiator_role": "server",
"peer_hello": {
"payload": {
"name": "aiosendspin-client",
"player@v1_support": {
"buffer_capacity": 2000000,
"supported_commands": [
"volume",
"mute"
],
"supported_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 44100
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 48000
}
]
},
"supported_pair_methods": [
{
"method": "pairing_psk"
}
],
"supported_roles": [
"player@v1"
],
"trust_level": "user",
"unpaired_access": {
"enabled": false
}
},
"type": "client/hello"
},
"preferred_codec": "pcm",
"protocol": {
"assertions": {
"CORE-001": {
"detail": "Noise handshake completed; driver enforces strict frame ordering",
"events": [
{
"end_ts": 1788591077.203028,
"event": "handshake_completed",
"handshake_hash": "8b2ff1d60fad32ce29d113ae8e672e1d9f10dcef9e8646505d0822f5f50c5d9a",
"peer_id": "rFgILqo5YfPor8oK13GTFmECUaxYcW46Q1TFv8F38Xg",
"psk_category": "long_term",
"start_ts": 1788591076.168662,
"timestamp": 1788591077.2030551
}
],
"status": "passed"
},
"CORE-002": {
"detail": "Server ran with allow_noncompliant_clients=False; no early-message compliance error was raised before activation",
"events": [
{
"active_roles": [
"player@v1"
],
"event": "connection_established_without_compliance_error",
"timestamp": 1788591077.2030652
}
],
"status": "passed"
},
"CORE-003": {
"detail": "Active roles are a subset of the negotiated role set",
"events": [
{
"active_role_ids": [
"player@v1"
],
"event": "server_activate_scoped_to_negotiated_roles",
"negotiated_role_ids": [
"player@v1"
],
"requested_roles": [
"player@v1"
],
"timestamp": 1788591077.2030668
}
],
"status": "passed"
},
"CORE-004": {
"detail": "Connection reached the active state, which requires the initial client/state to have already been accepted",
"events": [
{
"detail": "SendspinConnection gates role binary data behind the initial client/state and flags noncompliance otherwise",
"event": "initial_client_state_gate_satisfied",
"timestamp": 1788591077.203068
}
],
"status": "passed"
},
"PLAYER-001": {
"detail": "Selected an advertised format and streamed 200 timestamped chunks in order",
"events": [
{
"advertised_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 44100
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 48000
}
],
"event": "stream_start_observed",
"negotiated_format": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
},
"timestamp": 1788591083.4713862
},
{
"chunk_count": 200,
"event": "audio_chunks_observed",
"first_timestamp_us": 476707361,
"last_timestamp_us": 481682361,
"timestamp": 1788591083.4714198
}
],
"status": "passed"
}
},
"spec_revision": "8c9577ea8719ad082d051ec13cc73ef15ed68948"
},
"role": "server",
"scenario_id": "server-initiated-protocol-baseline-v1",
"server_id": "dsIlKLOY1OqUfE4ig1m3id0r6yr2D5_3R-FJLQZI30I",
"server_name": "aiosendspin server",
"status": "ok"
}Server log
RAWINFO:aiosendspin.server.server:Starting Sendspin server on port 18959
INFO:aiosendspin.server.server:Sendspin server started successfully on 127.0.0.1:18959
WARNING:aiosendspin.server.server:No IP addresses available for mDNS advertising. Clients may not be able to discover this server. Consider specifying addresses manually via advertise_addresses.
{
"client": {
"active_roles": [
"player@v1"
],
"client_id": "rFgILqo5YfPor8oK13GTFmECUaxYcW46Q1TFv8F38Xg",
"name": "aiosendspin-client",
"supported_roles": [
"player@v1"
]
},
"discovery_method": "registry_fallback",
"implementation": "aiosendspin",
"initiator_role": "server",
"peer_hello": {
"payload": {
"name": "aiosendspin-client",
"player@v1_support": {
"buffer_capacity": 2000000,
"supported_commands": [
"volume",
"mute"
],
"supported_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 44100
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 48000
}
]
},
"supported_pair_methods": [
{
"method": "pairing_psk"
}
],
"supported_roles": [
"player@v1"
],
"trust_level": "user",
"unpaired_access": {
"enabled": false
}
},
"type": "client/hello"
},
"preferred_codec": "pcm",
"protocol": {
"assertions": {
"CORE-001": {
"detail": "Noise handshake completed; driver enforces strict frame ordering",
"events": [
{
"end_ts": 1788591077.203028,
"event": "handshake_completed",
"handshake_hash": "8b2ff1d60fad32ce29d113ae8e672e1d9f10dcef9e8646505d0822f5f50c5d9a",
"peer_id": "rFgILqo5YfPor8oK13GTFmECUaxYcW46Q1TFv8F38Xg",
"psk_category": "long_term",
"start_ts": 1788591076.168662,
"timestamp": 1788591077.2030551
}
],
"status": "passed"
},
"CORE-002": {
"detail": "Server ran with allow_noncompliant_clients=False; no early-message compliance error was raised before activation",
"events": [
{
"active_roles": [
"player@v1"
],
"event": "connection_established_without_compliance_error",
"timestamp": 1788591077.2030652
}
],
"status": "passed"
},
"CORE-003": {
"detail": "Active roles are a subset of the negotiated role set",
"events": [
{
"active_role_ids": [
"player@v1"
],
"event": "server_activate_scoped_to_negotiated_roles",
"negotiated_role_ids": [
"player@v1"
],
"requested_roles": [
"player@v1"
],
"timestamp": 1788591077.2030668
}
],
"status": "passed"
},
"CORE-004": {
"detail": "Connection reached the active state, which requires the initial client/state to have already been accepted",
"events": [
{
"detail": "SendspinConnection gates role binary data behind the initial client/state and flags noncompliance otherwise",
"event": "initial_client_state_gate_satisfied",
"timestamp": 1788591077.203068
}
],
"status": "passed"
},
"PLAYER-001": {
"detail": "Selected an advertised format and streamed 200 timestamped chunks in order",
"events": [
{
"advertised_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 44100
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 48000
}
],
"event": "stream_start_observed",
"negotiated_format": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
},
"timestamp": 1788591083.4713862
},
{
"chunk_count": 200,
"event": "audio_chunks_observed",
"first_timestamp_us": 476707361,
"last_timestamp_us": 481682361,
"timestamp": 1788591083.4714198
}
],
"status": "passed"
}
},
"spec_revision": "8c9577ea8719ad082d051ec13cc73ef15ed68948"
},
"role": "server",
"scenario_id": "server-initiated-protocol-baseline-v1",
"server_id": "dsIlKLOY1OqUfE4ig1m3id0r6yr2D5_3R-FJLQZI30I",
"server_name": "aiosendspin server",
"status": "ok"
}
Client summary (JSON)
RAW{
"audio": {
"audio_chunk_count": 200,
"received_pcm_sha256": "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e",
"received_sample_count": 40000
},
"client_id": "rFgILqo5YfPor8oK13GTFmECUaxYcW46Q1TFv8F38Xg",
"client_name": "aiosendspin-client",
"implementation": "aiosendspin",
"initiator_role": "server",
"peer_hello": null,
"preferred_codec": "pcm",
"protocol": {
"assertions": {
"CORE-001": {
"detail": "Noise handshake completed; driver enforces strict frame ordering",
"events": [
{
"end_ts": 1788591077.118648,
"event": "handshake_completed",
"handshake_hash": "8b2ff1d60fad32ce29d113ae8e672e1d9f10dcef9e8646505d0822f5f50c5d9a",
"peer_id": null,
"psk_category": null,
"start_ts": 1788591077.1006641,
"timestamp": 1788591083.4723961
}
],
"status": "passed"
},
"CORE-002": {
"detail": "Client only began sending application messages once activated",
"events": [
{
"event": "client_connected_without_early_messages",
"server_id": null,
"timestamp": 1788591083.4724
}
],
"status": "passed"
},
"CORE-003": {
"detail": "Client accepted the server/activate role/version set it received",
"events": [
{
"event": "server_activate_accepted",
"roles": [
"player@v1"
],
"timestamp": 1788591083.472405
}
],
"status": "passed"
},
"CORE-004": {
"detail": "Client sent the initial client/state before any role binary data",
"events": [
{
"detail": "SendspinConnection sends the initial client/state immediately after activation",
"event": "initial_client_state_sent",
"timestamp": 1788591083.472406
}
],
"status": "passed"
},
"PLAYER-001": {
"detail": "Selected an advertised format and streamed 200 timestamped chunks in order",
"events": [
{
"advertised_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 44100
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 48000
}
],
"event": "stream_start_observed",
"negotiated_format": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
},
"timestamp": 1788591083.4724128
},
{
"chunk_count": 200,
"event": "audio_chunks_observed",
"first_timestamp_us": 476707361,
"last_timestamp_us": 481682361,
"timestamp": 1788591083.472426
}
],
"status": "passed"
}
},
"spec_revision": "8c9577ea8719ad082d051ec13cc73ef15ed68948"
},
"role": "client",
"scenario_id": "server-initiated-protocol-baseline-v1",
"server": null,
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"codec_header": null,
"sample_rate": 8000
}
}Client log
RAWINFO:aiosendspin.client.listener:ClientListener started on port 19959, path /sendspin
INFO:aiosendspin.client.connection:Stream started with codec pcm
INFO:aiohttp.access:127.0.0.1 [05/Sep/2026:06:51:17 +0000] "GET /sendspin HTTP/1.1" 101 0 "-" "Python/3.12 aiohttp/3.14.3"
INFO:aiosendspin.client.listener:ClientListener stopped
{
"audio": {
"audio_chunk_count": 200,
"received_pcm_sha256": "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e",
"received_sample_count": 40000
},
"client_id": "rFgILqo5YfPor8oK13GTFmECUaxYcW46Q1TFv8F38Xg",
"client_name": "aiosendspin-client",
"implementation": "aiosendspin",
"initiator_role": "server",
"peer_hello": null,
"preferred_codec": "pcm",
"protocol": {
"assertions": {
"CORE-001": {
"detail": "Noise handshake completed; driver enforces strict frame ordering",
"events": [
{
"end_ts": 1788591077.118648,
"event": "handshake_completed",
"handshake_hash": "8b2ff1d60fad32ce29d113ae8e672e1d9f10dcef9e8646505d0822f5f50c5d9a",
"peer_id": null,
"psk_category": null,
"start_ts": 1788591077.1006641,
"timestamp": 1788591083.4723961
}
],
"status": "passed"
},
"CORE-002": {
"detail": "Client only began sending application messages once activated",
"events": [
{
"event": "client_connected_without_early_messages",
"server_id": null,
"timestamp": 1788591083.4724
}
],
"status": "passed"
},
"CORE-003": {
"detail": "Client accepted the server/activate role/version set it received",
"events": [
{
"event": "server_activate_accepted",
"roles": [
"player@v1"
],
"timestamp": 1788591083.472405
}
],
"status": "passed"
},
"CORE-004": {
"detail": "Client sent the initial client/state before any role binary data",
"events": [
{
"detail": "SendspinConnection sends the initial client/state immediately after activation",
"event": "initial_client_state_sent",
"timestamp": 1788591083.472406
}
],
"status": "passed"
},
"PLAYER-001": {
"detail": "Selected an advertised format and streamed 200 timestamped chunks in order",
"events": [
{
"advertised_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 44100
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 48000
}
],
"event": "stream_start_observed",
"negotiated_format": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
},
"timestamp": 1788591083.4724128
},
{
"chunk_count": 200,
"event": "audio_chunks_observed",
"first_timestamp_us": 476707361,
"last_timestamp_us": 481682361,
"timestamp": 1788591083.472426
}
],
"status": "passed"
}
},
"spec_revision": "8c9577ea8719ad082d051ec13cc73ef15ed68948"
},
"role": "client",
"scenario_id": "server-initiated-protocol-baseline-v1",
"server": null,
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"codec_header": null,
"sample_rate": 8000
}
}
Shared build log · python-adapters · built · 0.05s
RAWListing 'src'... Listing 'src/conformance'... Listing 'src/conformance/adapters'... Compiling 'src/conformance/adapters/__init__.py'... Compiling 'src/conformance/adapters/_aiosendspin_pairing.py'... Compiling 'src/conformance/adapters/_aiosendspin_protocol_evidence.py'... Compiling 'src/conformance/adapters/aiosendspin_client.py'... Compiling 'src/conformance/adapters/aiosendspin_server.py'... Compiling 'src/conformance/adapters/placeholder.py'... Compiling 'src/conformance/adapters/sendspin_jvm_client.py'... Compiling 'src/conformance/cli.py'... Compiling 'src/conformance/merge.py'... Compiling 'src/conformance/registry.py'... Listing 'src/sendspin_conformance.egg-info'... Listing 'scripts'... Compiling 'scripts/detect_regressions.py'... Compiling 'scripts/merge_results.py'... Compiling 'scripts/run_all.py'... Compiling 'scripts/setup_repositories.py'... Compiling 'scripts/setup_workspace.py'...