Case
aiosendspin -> SendspinKit
Start the server first, then the client. The client discovers or looks up the server, initiates the WebSocket connection, advertises PCM as its only supported audio format, streams audio derived from almost_silent.flac, and compares canonical PCM hashes.
Server
aiosendspin
Client
SendspinKit
Status
Passed
PCM hashes match exactly
Inspection
Summaries, logs, and builds
Matrix result
RAW{
"case_dir": "artifacts/results/data/macos__client-initiated-pcm__aiosendspin__to__SendspinKit",
"client_exit_code": 0,
"client_impl": "SendspinKit",
"reason": "PCM hashes match exactly",
"scenario_id": "client-initiated-pcm",
"server_exit_code": 0,
"server_impl": "aiosendspin",
"status": "passed"
}Server summary (JSON)
RAW{
"audio": {
"bit_depth": 16,
"channels": 1,
"clip_seconds": 5.0,
"duration_seconds": 5.0,
"fixture": "/Users/runner/work/conformance/conformance/repos/sendspin-cli/tests/fixtures/almost_silent.flac",
"frame_alignment_samples": null,
"frame_count": 40000,
"sample_rate": 8000,
"sent_audio_chunk_count": 200,
"sent_codec_header_sha256": null,
"sent_encoded_byte_count": 80000,
"sent_encoded_sha256": "b3481a3f75dea856a961e7842d12f8344c7147b3925f9f0b67c5445700bd4cf2",
"source_flac_sha256": "8fdda8244e318c63cd8b699fe461cd7cdddbb729327a0ba00d1bfdbe2192fe17",
"source_pcm_sha256": "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e",
"trimmed_source_frames": 0
},
"client": {
"active_roles": [
"player@v1"
],
"client_id": "SendspinKit-client-id",
"name": "SendspinKit-client",
"supported_roles": [
"player@v1"
]
},
"discovery_method": "registry_advertised",
"implementation": "aiosendspin",
"initiator_role": "client",
"peer_hello": {
"payload": {
"client_id": "SendspinKit-client-id",
"device_info": {
"manufacturer": "Apple",
"product_name": "Mac",
"software_version": "Version 15.7.4 (Build 24G517)"
},
"name": "SendspinKit-client",
"player@v1_support": {
"buffer_capacity": 960000,
"supported_commands": [],
"supported_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 44100
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 44100
},
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 48000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 48000
}
]
},
"supported_roles": [
"player@v1"
],
"version": 1
},
"type": "client/hello"
},
"preferred_codec": "pcm",
"role": "server",
"scenario_id": "client-initiated-pcm",
"server_id": "aiosendspin-server",
"server_name": "aiosendspin server",
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"codec_header": null,
"sample_rate": 8000
}
}Server log
RAWINFO:aiosendspin.server.server:Starting Sendspin server on port 18934
INFO:aiosendspin.server.server:Sendspin server started successfully on 127.0.0.1:18934
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.SendspinKit-client-id:Client sent volume field without declaring 'volume' in supported_commands
WARNING:aiosendspin.server.client.SendspinKit-client-id:Client sent muted field without declaring 'mute' in supported_commands
WARNING:aiosendspin.server.client.SendspinKit-client-id:Client sent volume field without declaring 'volume' in supported_commands
WARNING:aiosendspin.server.client.SendspinKit-client-id:Client sent muted field without declaring 'mute' in supported_commands
WARNING:aiosendspin.server.connection.SendspinKit-client-id:WebSocket closed, close_code=1006
INFO:aiohttp.access:127.0.0.1 [16/May/2026:05:35:19 +0000] "GET /sendspin HTTP/1.1" 101 0 "-" "-"
{
"audio": {
"bit_depth": 16,
"channels": 1,
"clip_seconds": 5.0,
"duration_seconds": 5.0,
"fixture": "/Users/runner/work/conformance/conformance/repos/sendspin-cli/tests/fixtures/almost_silent.flac",
"frame_alignment_samples": null,
"frame_count": 40000,
"sample_rate": 8000,
"sent_audio_chunk_count": 200,
"sent_codec_header_sha256": null,
"sent_encoded_byte_count": 80000,
"sent_encoded_sha256": "b3481a3f75dea856a961e7842d12f8344c7147b3925f9f0b67c5445700bd4cf2",
"source_flac_sha256": "8fdda8244e318c63cd8b699fe461cd7cdddbb729327a0ba00d1bfdbe2192fe17",
"source_pcm_sha256": "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e",
"trimmed_source_frames": 0
},
"client": {
"active_roles": [
"player@v1"
],
"client_id": "SendspinKit-client-id",
"name": "SendspinKit-client",
"supported_roles": [
"player@v1"
]
},
"discovery_method": "registry_advertised",
"implementation": "aiosendspin",
"initiator_role": "client",
"peer_hello": {
"payload": {
"client_id": "SendspinKit-client-id",
"device_info": {
"manufacturer": "Apple",
"product_name": "Mac",
"software_version": "Version 15.7.4 (Build 24G517)"
},
"name": "SendspinKit-client",
"player@v1_support": {
"buffer_capacity": 960000,
"supported_commands": [],
"supported_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 44100
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 44100
},
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 48000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 48000
}
]
},
"supported_roles": [
"player@v1"
],
"version": 1
},
"type": "client/hello"
},
"preferred_codec": "pcm",
"role": "server",
"scenario_id": "client-initiated-pcm",
"server_id": "aiosendspin-server",
"server_name": "aiosendspin server",
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"codec_header": null,
"sample_rate": 8000
}
}
Client summary (JSON)
RAW{
"audio": {
"audio_chunk_count": 200,
"received_pcm_sha256": "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e",
"received_sample_count": 40000
},
"client_id": "SendspinKit-client-id",
"client_name": "SendspinKit-client",
"implementation": "SendspinKit",
"initiator_role": "client",
"peer_hello": {
"payload": {
"connection_reason": "discovery",
"name": "aiosendspin server",
"server_id": "aiosendspin-server",
"version": 1
},
"type": "server/hello"
},
"preferred_codec": "pcm",
"role": "client",
"scenario_id": "client-initiated-pcm",
"server": {
"connection_reason": "discovery",
"name": "aiosendspin server",
"server_id": "aiosendspin-server",
"version": 1
},
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"codec_header": null,
"sample_rate": 8000
}
}Client log
RAW[ADAPTER] Connecting to server at ws://127.0.0.1:18934/sendspin
[ADAPTER] Connected to server: aiosendspin server
[ADAPTER] Stream started: pcm 8000Hz 1ch 16bit
[ADAPTER] Stream ended
{
"audio" : {
"audio_chunk_count" : 200,
"received_pcm_sha256" : "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e",
"received_sample_count" : 40000
},
"client_id" : "SendspinKit-client-id",
"client_name" : "SendspinKit-client",
"implementation" : "SendspinKit",
"initiator_role" : "client",
"peer_hello" : {
"payload" : {
"connection_reason" : "discovery",
"name" : "aiosendspin server",
"server_id" : "aiosendspin-server",
"version" : 1
},
"type" : "server\/hello"
},
"preferred_codec" : "pcm",
"role" : "client",
"scenario_id" : "client-initiated-pcm",
"server" : {
"connection_reason" : "discovery",
"name" : "aiosendspin server",
"server_id" : "aiosendspin-server",
"version" : 1
},
"status" : "ok",
"stream" : {
"bit_depth" : 16,
"channels" : 1,
"codec" : "pcm",
"codec_header" : null,
"sample_rate" : 8000
}
}
[ADAPTER] Summary written to artifacts/results/data/macos__client-initiated-pcm__aiosendspin__to__SendspinKit/client-summary.json
Server build log · python-adapters · built · 0.07s
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 · 44.65s
RAWmpiling SendspinKit MonotonicClock.swift
[207/215] Compiling SendspinKit SendspinTimeFilter.swift
[208/215] Compiling SendspinKit TimeFilterSnapshot.swift
[209/215] Compiling SendspinKit NWWebSocketTransport.swift
[210/215] Compiling SendspinKit SendspinEncoding.swift
[211/215] Compiling SendspinKit SendspinTransport.swift
[212/215] Compiling SendspinKit WebSocketTransport.swift
[213/217] Compiling ConformanceSendspinKitClient main.swift
/Users/runner/work/conformance/conformance/adapters/SendspinKit/client/Sources/ConformanceSendspinKitClient/main.swift:176:13: warning: variable 'copy' was never mutated; consider changing to 'let' constant
174 |
175 | func hexdigest() -> String {
176 | var copy = hasher
| `- warning: variable 'copy' was never mutated; consider changing to 'let' constant
177 | return copy.finalize().map { String(format: "%02x", $0) }.joined()
178 | }
/Users/runner/work/conformance/conformance/adapters/SendspinKit/client/Sources/ConformanceSendspinKitClient/main.swift:236:13: warning: variable 'copy' was never mutated; consider changing to 'let' constant
234 |
235 | func hexdigest() -> String {
236 | var copy = hasher
| `- warning: variable 'copy' was never mutated; consider changing to 'let' constant
237 | return copy.finalize().map { String(format: "%02x", $0) }.joined()
238 | }
[214/217] Emitting module ConformanceSendspinKitClient
[214/217] Write Objects.LinkFileList
[215/217] Linking ConformanceSendspinKitClient
[216/217] Applying ConformanceSendspinKitClient
Build complete! (39.10s)
Fetching https://github.com/sbooth/flac-binary-xcframework.git
Fetching https://github.com/daltoniam/Starscream.git
[1/32] Fetching flac-binary-xcframework
[33/5140] Fetching flac-binary-xcframework, starscream
Fetched https://github.com/daltoniam/Starscream.git from cache (0.79s)
Fetched https://github.com/sbooth/flac-binary-xcframework.git from cache (0.79s)
Fetching https://github.com/sbooth/ogg-binary-xcframework.git
Fetching https://github.com/alta/swift-opus.git
[1/23] Fetching ogg-binary-xcframework
[24/806] Fetching ogg-binary-xcframework, swift-opus
Fetched https://github.com/alta/swift-opus.git from cache (0.53s)
Fetched https://github.com/sbooth/ogg-binary-xcframework.git from cache (0.53s)
Creating working copy for https://github.com/daltoniam/Starscream.git
Working copy of https://github.com/daltoniam/Starscream.git resolved at 4.0.8
Creating working copy for https://github.com/sbooth/ogg-binary-xcframework.git
Working copy of https://github.com/sbooth/ogg-binary-xcframework.git resolved at 0.1.3
Creating working copy for https://github.com/sbooth/flac-binary-xcframework.git
Working copy of https://github.com/sbooth/flac-binary-xcframework.git resolved at 0.2.0
Creating working copy for https://github.com/alta/swift-opus.git
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
[98277/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 (2.50s)
Downloaded https://github.com/sbooth/flac-binary-xcframework/releases/download/0.2.0/FLAC.xcframework.zip (2.94s)
warning: 'starscream': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
/Users/runner/work/conformance/conformance/adapters/SendspinKit/client/.build/checkouts/Starscream/Sources/Info.plist