Case
aiosendspin -> aiosendspin
Start the server first, then the client. The client advertises a listener, the server connects in, streams album artwork, disconnects, and the matrix compares the received bytes against the server's encoded artwork.
Server
aiosendspin
Client
aiosendspin
Status
Passed
Artwork bytes match
Inspection
Summaries, logs, and builds
Matrix result
RAW{
"case_dir": "artifacts/results/data/macos__server-initiated-artwork__aiosendspin__to__aiosendspin",
"client_exit_code": 0,
"client_impl": "aiosendspin",
"reason": "Artwork bytes match",
"scenario_id": "server-initiated-artwork",
"server_exit_code": 0,
"server_impl": "aiosendspin",
"status": "passed"
}Server summary (JSON)
RAW{
"artwork": {
"byte_count": 5533,
"channel": 0,
"encoded_sha256": "3ba7248e8b655fe0858c027053f0ef0a800d91ba87586c28f1d4cdad9f880ced",
"format": "jpeg",
"height": 256,
"source": "album",
"width": 256
},
"client": {
"active_roles": [
"artwork@v1"
],
"client_id": "rFgILqo5YfPor8oK13GTFmECUaxYcW46Q1TFv8F38Xg",
"name": "aiosendspin-client",
"supported_roles": [
"artwork@v1"
]
},
"discovery_method": "registry_fallback",
"implementation": "aiosendspin",
"initiator_role": "server",
"peer_hello": {
"payload": {
"artwork@v1_support": {
"channels": [
{
"format": "jpeg",
"media_height": 256,
"media_width": 256,
"source": "album"
}
]
},
"name": "aiosendspin-client",
"supported_pair_methods": [
{
"method": "pairing_psk"
}
],
"supported_roles": [
"artwork@v1"
],
"trust_level": "user",
"unpaired_access": {
"enabled": false
}
},
"type": "client/hello"
},
"preferred_codec": "none",
"role": "server",
"scenario_id": "server-initiated-artwork",
"server_id": "dsIlKLOY1OqUfE4ig1m3id0r6yr2D5_3R-FJLQZI30I",
"server_name": "aiosendspin server",
"status": "ok"
}Server log
RAWINFO:aiosendspin.server.server:Starting Sendspin server on port 18991
INFO:aiosendspin.server.server:Sendspin server started successfully on 127.0.0.1:18991
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.
WARNING:aiosendspin.server.client.rFgILqo5YfPor8oK13GTFmECUaxYcW46Q1TFv8F38Xg:non-compliant client: did not send the required initial client/state in time
{
"artwork": {
"byte_count": 5533,
"channel": 0,
"encoded_sha256": "3ba7248e8b655fe0858c027053f0ef0a800d91ba87586c28f1d4cdad9f880ced",
"format": "jpeg",
"height": 256,
"source": "album",
"width": 256
},
"client": {
"active_roles": [
"artwork@v1"
],
"client_id": "rFgILqo5YfPor8oK13GTFmECUaxYcW46Q1TFv8F38Xg",
"name": "aiosendspin-client",
"supported_roles": [
"artwork@v1"
]
},
"discovery_method": "registry_fallback",
"implementation": "aiosendspin",
"initiator_role": "server",
"peer_hello": {
"payload": {
"artwork@v1_support": {
"channels": [
{
"format": "jpeg",
"media_height": 256,
"media_width": 256,
"source": "album"
}
]
},
"name": "aiosendspin-client",
"supported_pair_methods": [
{
"method": "pairing_psk"
}
],
"supported_roles": [
"artwork@v1"
],
"trust_level": "user",
"unpaired_access": {
"enabled": false
}
},
"type": "client/hello"
},
"preferred_codec": "none",
"role": "server",
"scenario_id": "server-initiated-artwork",
"server_id": "dsIlKLOY1OqUfE4ig1m3id0r6yr2D5_3R-FJLQZI30I",
"server_name": "aiosendspin server",
"status": "ok"
}
Client summary (JSON)
RAW{
"artwork": {
"byte_count": 5533,
"channel": 0,
"received_count": 1,
"received_sha256": "3ba7248e8b655fe0858c027053f0ef0a800d91ba87586c28f1d4cdad9f880ced"
},
"client_id": "rFgILqo5YfPor8oK13GTFmECUaxYcW46Q1TFv8F38Xg",
"client_name": "aiosendspin-client",
"implementation": "aiosendspin",
"initiator_role": "server",
"peer_hello": null,
"preferred_codec": "none",
"role": "client",
"scenario_id": "server-initiated-artwork",
"server": null,
"status": "ok",
"stream": {
"channels": [
{
"format": "jpeg",
"height": 256,
"source": "album",
"width": 256
}
]
}
}Client log
RAWINFO:aiosendspin.client.listener:ClientListener started on port 19991, path /sendspin
INFO:aiohttp.access:127.0.0.1 [05/Sep/2026:06:52:45 +0000] "GET /sendspin HTTP/1.1" 101 0 "-" "Python/3.12 aiohttp/3.14.3"
INFO:aiosendspin.client.listener:ClientListener stopped
{
"artwork": {
"byte_count": 5533,
"channel": 0,
"received_count": 1,
"received_sha256": "3ba7248e8b655fe0858c027053f0ef0a800d91ba87586c28f1d4cdad9f880ced"
},
"client_id": "rFgILqo5YfPor8oK13GTFmECUaxYcW46Q1TFv8F38Xg",
"client_name": "aiosendspin-client",
"implementation": "aiosendspin",
"initiator_role": "server",
"peer_hello": null,
"preferred_codec": "none",
"role": "client",
"scenario_id": "server-initiated-artwork",
"server": null,
"status": "ok",
"stream": {
"channels": [
{
"format": "jpeg",
"height": 256,
"source": "album",
"width": 256
}
]
}
}
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'...