Case
aiosendspin -> sendspin-jvm
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
sendspin-jvm
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__sendspin-jvm",
"client_exit_code": 0,
"client_impl": "sendspin-jvm",
"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",
"controller@v1",
"metadata@v1",
"artwork@v1"
],
"client_id": "sendspin-jvm-client-id",
"name": "sendspin-jvm-client",
"supported_roles": [
"player@v1",
"metadata@v1",
"artwork@v1",
"controller@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": "sendspin-jvm-client-id",
"device_info": {
"manufacturer": "conformance",
"product_name": "conformance-client",
"software_version": "1.0"
},
"name": "sendspin-jvm-client",
"player@v1_support": {
"buffer_capacity": 262144,
"supported_commands": [
"volume",
"mute"
],
"supported_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "flac",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "flac",
"sample_rate": 48000
}
]
},
"supported_roles": [
"player@v1",
"metadata@v1",
"artwork@v1",
"controller@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 19012
INFO:aiosendspin.server.server:Sendspin server started successfully on 127.0.0.1:19012
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.
{
"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",
"controller@v1",
"metadata@v1",
"artwork@v1"
],
"client_id": "sendspin-jvm-client-id",
"name": "sendspin-jvm-client",
"supported_roles": [
"player@v1",
"metadata@v1",
"artwork@v1",
"controller@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": "sendspin-jvm-client-id",
"device_info": {
"manufacturer": "conformance",
"product_name": "conformance-client",
"software_version": "1.0"
},
"name": "sendspin-jvm-client",
"player@v1_support": {
"buffer_capacity": 262144,
"supported_commands": [
"volume",
"mute"
],
"supported_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "flac",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "flac",
"sample_rate": 48000
}
]
},
"supported_roles": [
"player@v1",
"metadata@v1",
"artwork@v1",
"controller@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_pcm_sha256": null,
"received_sample_count": 1908
},
"client_id": "sendspin-jvm-client-id",
"client_name": "sendspin-jvm-client",
"implementation": "sendspin-jvm",
"initiator_role": "server",
"peer_hello": {
"active_roles": [
"player@v1",
"controller@v1",
"metadata@v1",
"artwork@v1"
],
"connection_reason": "playback",
"name": "aiosendspin server",
"server_id": "aiosendspin-server",
"version": 1
},
"preferred_codec": "flac",
"role": "client",
"scenario_id": "server-initiated-flac",
"server": null,
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "flac",
"codec_header": "ZkxhQ4AAACICQAJAAAAAAASVAfQA8AAAAAAAAAAAAAAAAAAAAAAAAAAA",
"sample_rate": 8000
}
}Client log
RAWSLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
May 16, 2026 5:36:17 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinServerHost: listening on port 20012
May 16, 2026 5:36:17 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinServerHost: incoming connection from /127.0.0.1:49418
May 16, 2026 5:36:17 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinServerHost: activating server 'aiosendspin server' (id=aiosendspin-server reason=playback)
May 16, 2026 5:36:17 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinClient: server hello from 'aiosendspin server' reason=playback
May 16, 2026 5:36:17 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinClient: stream/start codec=flac
May 16, 2026 5:36:17 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinClient: first audio chunk — ts=941856217 size=11 bufferSize=0
May 16, 2026 5:36:23 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinServerHost: connection closed (1000 )
May 16, 2026 5:36:23 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinClient: server socket closed (1000 )
{
"server": null,
"initiator_role": "server",
"role": "client",
"preferred_codec": "flac",
"stream": {
"codec": "flac",
"codec_header": "ZkxhQ4AAACICQAJAAAAAAASVAfQA8AAAAAAAAAAAAAAAAAAAAAAAAAAA",
"sample_rate": 8000,
"channels": 1,
"bit_depth": 16
},
"peer_hello": {
"active_roles": [
"player@v1",
"controller@v1",
"metadata@v1",
"artwork@v1"
],
"name": "aiosendspin server",
"connection_reason": "playback",
"server_id": "aiosendspin-server",
"version": 1
},
"implementation": "sendspin-jvm",
"audio": {
"audio_chunk_count": 69,
"received_encoded_sha256": "a4be5550140f2e9d7a631318496eab0f63ca6b09ce6ff0e148b50d0364ffe49a",
"received_pcm_sha256": null,
"received_sample_count": 1908
},
"client_name": "sendspin-jvm-client",
"client_id": "sendspin-jvm-client-id",
"scenario_id": "server-initiated-flac",
"status": "ok"
}
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 · sendspin-jvm-client · built · 77.84s
RAWDownloading https://services.gradle.org/distributions/gradle-9.4.1-bin.zip .............10%.............20%.............30%.............40%.............50%.............60%..............70%.............80%.............90%.............100% Starting a Gradle Daemon (subsequent builds will be faster) > Task :checkKotlinGradlePluginConfigurationErrors SKIPPED > Task :sendspin-protocol:checkKotlinGradlePluginConfigurationErrors SKIPPED > Task :processResources NO-SOURCE > Task :sendspin-protocol:kspKotlin > Task :sendspin-protocol:processResources > Task :sendspin-protocol:compileKotlin > Task :sendspin-protocol:compileJava NO-SOURCE > Task :sendspin-protocol:classes > Task :sendspin-protocol:jar > Task :compileKotlin > Task :compileJava NO-SOURCE > Task :classes UP-TO-DATE > Task :jar [Incubating] Problems report is available at: file:///Users/runner/work/conformance/conformance/adapters/sendspin-jvm/client/build/reports/problems/problems-report.html Deprecated Gradle features were used in this build, making it incompatible with Gradle 10. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/9.4.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD SUCCESSFUL in 1m 15s 6 actionable tasks: 6 executed Consider enabling configuration cache to speed up this build: https://docs.gradle.org/9.4.1/userguide/configuration_cache_enabling.html