Case
aiosendspin -> SendspinKit
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
SendspinKit
Status
Passed
Artwork bytes match
Inspection
Summaries, logs, and builds
Matrix result
RAW{
"case_dir": "artifacts/results/data/macos__server-initiated-artwork__aiosendspin__to__SendspinKit",
"client_exit_code": 0,
"client_impl": "SendspinKit",
"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": [],
"client_id": "SendspinKit-client-id",
"name": "SendspinKit-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"
}
]
},
"client_id": "SendspinKit-client-id",
"device_info": {
"manufacturer": "Apple",
"product_name": "Mac",
"software_version": "Version 26.4 (Build 25E246)"
},
"name": "SendspinKit-client",
"supported_roles": [
"artwork@v1"
],
"trust_level": "none",
"unpaired_access": {
"enabled": false
},
"version": 1
},
"type": "client/hello"
},
"preferred_codec": "none",
"role": "server",
"scenario_id": "server-initiated-artwork",
"server_id": "a0rCxwjd0lzyLz_T0KuJNko3vt72aY7KQWZONmWsmRo",
"server_name": "aiosendspin server",
"status": "ok"
}Server log
RAWINFO:aiosendspin.server.server:Starting Sendspin server on port 18982
INFO:aiosendspin.server.server:Sendspin server started successfully on 127.0.0.1:18982
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.connection.unknown-client:Accepting unencrypted legacy connection (transition mode)
INFO:aiosendspin.server.client.SendspinKit-client-id:non-compliant client: client/state used the legacy top-level 'state' field
WARNING:aiosendspin.server.connection.SendspinKit-client-id:WebSocket closed, close_code=1006
{
"artwork": {
"byte_count": 5533,
"channel": 0,
"encoded_sha256": "3ba7248e8b655fe0858c027053f0ef0a800d91ba87586c28f1d4cdad9f880ced",
"format": "jpeg",
"height": 256,
"source": "album",
"width": 256
},
"client": {
"active_roles": [],
"client_id": "SendspinKit-client-id",
"name": "SendspinKit-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"
}
]
},
"client_id": "SendspinKit-client-id",
"device_info": {
"manufacturer": "Apple",
"product_name": "Mac",
"software_version": "Version 26.4 (Build 25E246)"
},
"name": "SendspinKit-client",
"supported_roles": [
"artwork@v1"
],
"trust_level": "none",
"unpaired_access": {
"enabled": false
},
"version": 1
},
"type": "client/hello"
},
"preferred_codec": "none",
"role": "server",
"scenario_id": "server-initiated-artwork",
"server_id": "a0rCxwjd0lzyLz_T0KuJNko3vt72aY7KQWZONmWsmRo",
"server_name": "aiosendspin server",
"status": "ok"
}
Client summary (JSON)
RAW{
"artwork": {
"byte_count": 5533,
"channel": 0,
"received_count": 1,
"received_sha256": "3ba7248e8b655fe0858c027053f0ef0a800d91ba87586c28f1d4cdad9f880ced"
},
"client_id": "SendspinKit-client-id",
"client_name": "SendspinKit-client",
"implementation": "SendspinKit",
"initiator_role": "server",
"peer_hello": {
"payload": {
"connection_reason": "playback",
"name": "aiosendspin server",
"server_id": "a0rCxwjd0lzyLz_T0KuJNko3vt72aY7KQWZONmWsmRo",
"version": 1
},
"type": "server/hello"
},
"preferred_codec": "none",
"role": "client",
"scenario_id": "server-initiated-artwork",
"server": {
"connection_reason": "playback",
"name": "aiosendspin server",
"server_id": "a0rCxwjd0lzyLz_T0KuJNko3vt72aY7KQWZONmWsmRo",
"version": 1
},
"status": "ok"
}Client log
RAW[ADAPTER] Listening for server connection on ws://127.0.0.1:19982/sendspin
[ADAPTER] Connected to server: aiosendspin server
[ADAPTER] Artwork received: channel=0 bytes=5533
{
"artwork" : {
"byte_count" : 5533,
"channel" : 0,
"received_count" : 1,
"received_sha256" : "3ba7248e8b655fe0858c027053f0ef0a800d91ba87586c28f1d4cdad9f880ced"
},
"client_id" : "SendspinKit-client-id",
"client_name" : "SendspinKit-client",
"implementation" : "SendspinKit",
"initiator_role" : "server",
"peer_hello" : {
"payload" : {
"connection_reason" : "playback",
"name" : "aiosendspin server",
"server_id" : "a0rCxwjd0lzyLz_T0KuJNko3vt72aY7KQWZONmWsmRo",
"version" : 1
},
"type" : "server\/hello"
},
"preferred_codec" : "none",
"role" : "client",
"scenario_id" : "server-initiated-artwork",
"server" : {
"connection_reason" : "playback",
"name" : "aiosendspin server",
"server_id" : "a0rCxwjd0lzyLz_T0KuJNko3vt72aY7KQWZONmWsmRo",
"version" : 1
},
"status" : "ok"
}
[ADAPTER] Summary written to artifacts/results/data/macos__server-initiated-artwork__aiosendspin__to__SendspinKit/client-summary.json
Server build log · python-adapters · built · 0.20s
RAWListing 'src'... Listing 'src/conformance'... Listing 'src/conformance/adapters'... Compiling 'src/conformance/adapters/__init__.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'...
Client build log · SendspinKit-client · built · 41.07s
RAWtaPlaneCommand.swift [35/73] Compiling SendspinKit DataPlaneSink.swift [36/73] Compiling SendspinKit NoOpAudioOutput.swift [37/73] Compiling SendspinKit PCMRingBuffer.swift [38/73] Compiling SendspinKit SyncCorrection.swift [39/73] Compiling SendspinKit VolumeController.swift [40/73] Compiling SendspinKit ArtworkConfiguration.swift [41/73] Compiling SendspinKit ClientTypes.swift [42/73] Compiling SendspinKit ClockSyncStats.swift [43/73] Compiling SendspinKit ConnectionEvent.swift [44/73] Compiling SendspinKit ConnectionState.swift [45/73] Compiling SendspinKit ControlEventSink.swift [46/73] Compiling SendspinKit PlayerConfiguration.swift [47/73] Compiling SendspinKit SendspinClient+ClockSync.swift [48/73] Compiling SendspinKit SendspinClient+Commands.swift [49/73] Compiling SendspinKit SendspinClient+Discovery.swift [50/73] Compiling SendspinKit ClientRole.swift [51/73] Compiling SendspinKit ClientStateMessages.swift [52/73] Compiling SendspinKit CommandMessages.swift [53/73] Compiling SendspinKit GoodbyeMessage.swift [54/73] Compiling SendspinKit HelloMessages.swift [55/73] Compiling SendspinKit SendspinMessage.swift [56/73] Compiling SendspinKit ServerStateMessages.swift [57/73] Compiling SendspinKit StreamMessages.swift [58/73] Compiling SendspinKit TimeMessages.swift [59/73] Compiling SendspinKit SendspinKit.swift [60/73] Compiling SendspinKit ClockSyncProtocol.swift [61/73] Compiling SendspinKit ClockSynchronizer.swift [62/73] Compiling SendspinKit MonotonicClock.swift [63/73] Compiling SendspinKit SendspinTimeFilter.swift [64/73] Compiling SendspinKit TimeFilterSnapshot.swift [65/73] Compiling SendspinKit FrameInbox.swift [66/73] Compiling SendspinKit NWWebSocketTransport.swift [67/73] Compiling SendspinKit SendspinEncoding.swift [68/73] Compiling SendspinKit SendspinTransport.swift [69/73] Compiling SendspinKit TransportError.swift [70/73] Compiling SendspinKit WatermarkedSink.swift [71/75] Compiling ConformanceSendspinKitClient main.swift [72/75] Emitting module ConformanceSendspinKitClient [72/75] Write Objects.LinkFileList [73/75] Linking ConformanceSendspinKitClient [74/75] Applying ConformanceSendspinKitClient Build complete! (30.21s) Fetching https://github.com/sbooth/flac-binary-xcframework.git Fetching https://github.com/sbooth/ogg-binary-xcframework.git [1/32] Fetching flac-binary-xcframework [33/55] Fetching flac-binary-xcframework, ogg-binary-xcframework Fetched https://github.com/sbooth/ogg-binary-xcframework.git from cache (0.43s) Fetched https://github.com/sbooth/flac-binary-xcframework.git from cache (0.43s) Fetching https://github.com/alta/swift-opus.git [1/783] Fetching swift-opus Fetched https://github.com/alta/swift-opus.git from cache (0.50s) Creating working copy for https://github.com/sbooth/flac-binary-xcframework.git Creating working copy for https://github.com/sbooth/ogg-binary-xcframework.git Creating working copy for https://github.com/alta/swift-opus.git Working copy of https://github.com/sbooth/ogg-binary-xcframework.git resolved at 0.1.3 Working copy of https://github.com/sbooth/flac-binary-xcframework.git resolved at 0.2.0 Working copy of https://github.com/alta/swift-opus.git resolved at 0.0.2 Downloading binary artifact https://github.com/sbooth/ogg-binary-xcframework/releases/download/0.1.3/ogg.xcframework.zip Downloading binary artifact https://github.com/sbooth/flac-binary-xcframework/releases/download/0.2.0/FLAC.xcframework.zip [32768/3922418] Downloading https://github.com/sbooth/flac-binary-xcframework/releases/download/0.2.0/FLAC.xcframework.zip [65518/4541165] Downloading https://github.com/sbooth/flac-binary-xcframework/releases/download/0.2.0/FLAC.xcframework.zip, https://github.com/sbooth/ogg-binary-xcframework/releases/download/0.1.3/ogg.xcframework.zip Downloaded https://github.com/sbooth/ogg-binary-xcframework/releases/download/0.1.3/ogg.xcframework.zip (0.64s) Downloaded https://github.com/sbooth/flac-binary-xcframework/releases/download/0.2.0/FLAC.xcframework.zip (0.81s)