Case
aiosendspin -> SendspinKit
Start the server first, then the client. The server loads the PCM audio derived from almost_silent.flac, the client advertises a listener and FLAC as its only supported audio format, the server connects in, uses the SDK to encode the PCM into FLAC, streams it to the client, and the matrix compares the transported FLAC header and chunk bytes as received by the client.
Server
aiosendspin
Client
SendspinKit
Status
Passed
FLAC header and chunk bytes match exactly
Inspection
Summaries, logs, and builds
Matrix result
RAW{
"case_dir": "artifacts/results/data/macos__server-initiated-flac__aiosendspin__to__SendspinKit",
"client_exit_code": 0,
"client_impl": "SendspinKit",
"reason": "FLAC header and chunk bytes match exactly",
"scenario_id": "server-initiated-flac",
"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": 4.968,
"fixture": "/Users/runner/work/conformance/conformance/repos/sendspin-cli/tests/fixtures/almost_silent.flac",
"frame_alignment_samples": 576,
"frame_count": 39744,
"sample_rate": 8000,
"sent_audio_chunk_count": 69,
"sent_codec_header_sha256": "cf785f756a60586c95243e827c384663e8dc4be893f3eb79a5b092b4df511214",
"sent_encoded_byte_count": 3817,
"sent_encoded_sha256": "a4be5550140f2e9d7a631318496eab0f63ca6b09ce6ff0e148b50d0364ffe49a",
"source_flac_sha256": "8fdda8244e318c63cd8b699fe461cd7cdddbb729327a0ba00d1bfdbe2192fe17",
"source_pcm_sha256": "ea4a8f1ced7d3ad85d46da1dea8cf98cd2cf75dbf305fb11cffea11b1e180952",
"trimmed_source_frames": 256
},
"client": {
"active_roles": [
"player@v1"
],
"client_id": "SendspinKit-client-id",
"name": "SendspinKit-client",
"supported_roles": [
"player@v1"
]
},
"discovery_method": "registry_fallback",
"implementation": "aiosendspin",
"initiator_role": "server",
"peer_hello": {
"payload": {
"client_id": "SendspinKit-client-id",
"device_info": {
"manufacturer": "Apple"
},
"name": "SendspinKit-client",
"player@v1_support": {
"buffer_capacity": 960000,
"supported_commands": [],
"supported_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "flac",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "flac",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 1,
"codec": "flac",
"sample_rate": 44100
},
{
"bit_depth": 16,
"channels": 2,
"codec": "flac",
"sample_rate": 44100
},
{
"bit_depth": 16,
"channels": 1,
"codec": "flac",
"sample_rate": 48000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "flac",
"sample_rate": 48000
}
]
},
"supported_roles": [
"player@v1"
],
"version": 1
},
"type": "client/hello"
},
"preferred_codec": "flac",
"role": "server",
"scenario_id": "server-initiated-flac",
"server_id": "aiosendspin-server",
"server_name": "aiosendspin server",
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "flac",
"codec_header": "ZkxhQ4AAACICQAJAAAAAAASVAfQA8AAAAAAAAAAAAAAAAAAAAAAAAAAA",
"codec_header_sha256": "cf785f756a60586c95243e827c384663e8dc4be893f3eb79a5b092b4df511214",
"sample_rate": 8000
}
}Server log
RAWINFO:aiosendspin.server.server:Starting Sendspin server on port 19014
INFO:aiosendspin.server.server:Sendspin server started successfully on 127.0.0.1:19014
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
{
"audio": {
"bit_depth": 16,
"channels": 1,
"clip_seconds": 5.0,
"duration_seconds": 4.968,
"fixture": "/Users/runner/work/conformance/conformance/repos/sendspin-cli/tests/fixtures/almost_silent.flac",
"frame_alignment_samples": 576,
"frame_count": 39744,
"sample_rate": 8000,
"sent_audio_chunk_count": 69,
"sent_codec_header_sha256": "cf785f756a60586c95243e827c384663e8dc4be893f3eb79a5b092b4df511214",
"sent_encoded_byte_count": 3817,
"sent_encoded_sha256": "a4be5550140f2e9d7a631318496eab0f63ca6b09ce6ff0e148b50d0364ffe49a",
"source_flac_sha256": "8fdda8244e318c63cd8b699fe461cd7cdddbb729327a0ba00d1bfdbe2192fe17",
"source_pcm_sha256": "ea4a8f1ced7d3ad85d46da1dea8cf98cd2cf75dbf305fb11cffea11b1e180952",
"trimmed_source_frames": 256
},
"client": {
"active_roles": [
"player@v1"
],
"client_id": "SendspinKit-client-id",
"name": "SendspinKit-client",
"supported_roles": [
"player@v1"
]
},
"discovery_method": "registry_fallback",
"implementation": "aiosendspin",
"initiator_role": "server",
"peer_hello": {
"payload": {
"client_id": "SendspinKit-client-id",
"device_info": {
"manufacturer": "Apple"
},
"name": "SendspinKit-client",
"player@v1_support": {
"buffer_capacity": 960000,
"supported_commands": [],
"supported_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "flac",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "flac",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 1,
"codec": "flac",
"sample_rate": 44100
},
{
"bit_depth": 16,
"channels": 2,
"codec": "flac",
"sample_rate": 44100
},
{
"bit_depth": 16,
"channels": 1,
"codec": "flac",
"sample_rate": 48000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "flac",
"sample_rate": 48000
}
]
},
"supported_roles": [
"player@v1"
],
"version": 1
},
"type": "client/hello"
},
"preferred_codec": "flac",
"role": "server",
"scenario_id": "server-initiated-flac",
"server_id": "aiosendspin-server",
"server_name": "aiosendspin server",
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "flac",
"codec_header": "ZkxhQ4AAACICQAJAAAAAAASVAfQA8AAAAAAAAAAAAAAAAAAAAAAAAAAA",
"codec_header_sha256": "cf785f756a60586c95243e827c384663e8dc4be893f3eb79a5b092b4df511214",
"sample_rate": 8000
}
}
Client summary (JSON)
RAW{
"audio": {
"audio_chunk_count": 69,
"received_encoded_sha256": "a4be5550140f2e9d7a631318496eab0f63ca6b09ce6ff0e148b50d0364ffe49a",
"received_sample_count": 0
},
"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": "aiosendspin-server",
"version": 1
},
"type": "server/hello"
},
"preferred_codec": "flac",
"role": "client",
"scenario_id": "server-initiated-flac",
"server": {
"connection_reason": "playback",
"name": "aiosendspin server",
"server_id": "aiosendspin-server",
"version": 1
},
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "flac",
"codec_header": "ZkxhQ4AAACICQAJAAAAAAASVAfQA8AAAAAAAAAAAAAAAAAAAAAAAAAAA",
"sample_rate": 8000
}
}Client log
RAW[ADAPTER] Listening for server connection on ws://127.0.0.1:20014/sendspin
[ADAPTER] Connected to server: aiosendspin server
[ADAPTER] Stream started: flac 8000Hz 1ch 16bit
[ADAPTER] Stream ended
{
"audio" : {
"audio_chunk_count" : 69,
"received_encoded_sha256" : "a4be5550140f2e9d7a631318496eab0f63ca6b09ce6ff0e148b50d0364ffe49a",
"received_sample_count" : 0
},
"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" : "aiosendspin-server",
"version" : 1
},
"type" : "server\/hello"
},
"preferred_codec" : "flac",
"role" : "client",
"scenario_id" : "server-initiated-flac",
"server" : {
"connection_reason" : "playback",
"name" : "aiosendspin server",
"server_id" : "aiosendspin-server",
"version" : 1
},
"status" : "ok",
"stream" : {
"bit_depth" : 16,
"channels" : 1,
"codec" : "flac",
"codec_header" : "ZkxhQ4AAACICQAJAAAAAAASVAfQA8AAAAAAAAAAAAAAAAAAAAAAAAAAA",
"sample_rate" : 8000
}
}
[ADAPTER] Summary written to artifacts/results/data/macos__server-initiated-flac__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