Case
sendspin-go -> 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
sendspin-go
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__sendspin-go__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": "sendspin-go",
"status": "passed"
}Server summary (JSON)
RAW{
"audio": {
"bit_depth": 24,
"channels": 1,
"clip_seconds": 5,
"duration_seconds": 5,
"fixture": "/Users/runner/work/conformance/conformance/repos/sendspin-cli/tests/fixtures/almost_silent.flac",
"frame_count": 40000,
"sample_rate": 8000,
"sent_audio_chunk_count": 1,
"sent_codec_header_sha256": "f7c0c5cea7e7afcc5cad7f40b3c292c811132bd60d65f8a55c383722ce6c1edb",
"sent_encoded_byte_count": 14698,
"sent_encoded_sha256": "7bc1b2ee421ee57d7ea84fee6b2a8301c83c56264081475e2c3f4ca7bd53a070",
"source_flac_sha256": "8fdda8244e318c63cd8b699fe461cd7cdddbb729327a0ba00d1bfdbe2192fe17",
"source_pcm_sha256": "f9ae8fe5e6c34fc6baa67cbb4a97224d777a0bfacf6d996449be1054824f66bf"
},
"client": {
"client_id": "sendspin-jvm-client-id",
"name": "sendspin-jvm-client",
"supported_roles": [
"player@v1",
"metadata@v1",
"artwork@v1",
"controller@v1"
]
},
"discovery_method": "registry_advertised",
"implementation": "sendspin-go",
"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",
"controller@v1_support": {},
"device_info": {
"manufacturer": "conformance",
"product_name": "conformance-client",
"software_version": "1.0"
},
"metadata@v1_support": {},
"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": "sendspin-go-server",
"server_name": "sendspin-go server",
"status": "ok",
"stream": {
"bit_depth": 24,
"channels": 1,
"codec": "flac",
"codec_header": "ZkxhQ4AAACICQAJAAAAMAADIAfQBcAAHkwCKnZ7FLvzY30lWx+3k6wJC",
"sample_rate": 8000
}
}Server log
RAW{
"audio": {
"bit_depth": 24,
"channels": 1,
"clip_seconds": 5,
"duration_seconds": 5,
"fixture": "/Users/runner/work/conformance/conformance/repos/sendspin-cli/tests/fixtures/almost_silent.flac",
"frame_count": 40000,
"sample_rate": 8000,
"sent_audio_chunk_count": 1,
"sent_codec_header_sha256": "f7c0c5cea7e7afcc5cad7f40b3c292c811132bd60d65f8a55c383722ce6c1edb",
"sent_encoded_byte_count": 14698,
"sent_encoded_sha256": "7bc1b2ee421ee57d7ea84fee6b2a8301c83c56264081475e2c3f4ca7bd53a070",
"source_flac_sha256": "8fdda8244e318c63cd8b699fe461cd7cdddbb729327a0ba00d1bfdbe2192fe17",
"source_pcm_sha256": "f9ae8fe5e6c34fc6baa67cbb4a97224d777a0bfacf6d996449be1054824f66bf"
},
"client": {
"client_id": "sendspin-jvm-client-id",
"name": "sendspin-jvm-client",
"supported_roles": [
"player@v1",
"metadata@v1",
"artwork@v1",
"controller@v1"
]
},
"discovery_method": "registry_advertised",
"implementation": "sendspin-go",
"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",
"controller@v1_support": {},
"device_info": {
"manufacturer": "conformance",
"product_name": "conformance-client",
"software_version": "1.0"
},
"metadata@v1_support": {},
"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": "sendspin-go-server",
"server_name": "sendspin-go server",
"status": "ok",
"stream": {
"bit_depth": 24,
"channels": 1,
"codec": "flac",
"codec_header": "ZkxhQ4AAACICQAJAAAAMAADIAfQBcAAHkwCKnZ7FLvzY30lWx+3k6wJC",
"sample_rate": 8000
}
}
Client summary (JSON)
RAW{
"audio": {
"audio_chunk_count": 1,
"received_encoded_sha256": "7bc1b2ee421ee57d7ea84fee6b2a8301c83c56264081475e2c3f4ca7bd53a070",
"received_pcm_sha256": null,
"received_sample_count": 4899
},
"client_id": "sendspin-jvm-client-id",
"client_name": "sendspin-jvm-client",
"implementation": "sendspin-jvm",
"initiator_role": "server",
"peer_hello": {
"active_roles": [
"player@v1",
"metadata@v1"
],
"connection_reason": "playback",
"name": "sendspin-go server",
"server_id": "sendspin-go-server",
"version": 1
},
"preferred_codec": "flac",
"role": "client",
"scenario_id": "server-initiated-flac",
"server": null,
"status": "ok",
"stream": {
"bit_depth": 24,
"channels": 1,
"codec": "flac",
"codec_header": "ZkxhQ4AAACICQAJAAAAMAADIAfQBcAAHkwCKnZ7FLvzY30lWx+3k6wJC",
"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:32 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinServerHost: listening on port 20020
May 16, 2026 5:36:32 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinServerHost: incoming connection from /127.0.0.1:49426
May 16, 2026 5:36:32 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinServerHost: activating server 'sendspin-go server' (id=sendspin-go-server reason=playback)
May 16, 2026 5:36:32 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinClient: server hello from 'sendspin-go server' reason=playback
May 16, 2026 5:36:33 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinClient: stream/start codec=flac
May 16, 2026 5:36:33 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinClient: server/state title='Almost Silent'
May 16, 2026 5:36:33 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinClient: first audio chunk — ts=1228115 size=14698 bufferSize=0
May 16, 2026 5:36:33 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinServerHost: connection closed (1000 done)
May 16, 2026 5:36:33 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinClient: server socket closed (1000 done)
{
"server": null,
"initiator_role": "server",
"role": "client",
"preferred_codec": "flac",
"stream": {
"codec": "flac",
"codec_header": "ZkxhQ4AAACICQAJAAAAMAADIAfQBcAAHkwCKnZ7FLvzY30lWx+3k6wJC",
"sample_rate": 8000,
"channels": 1,
"bit_depth": 24
},
"peer_hello": {
"active_roles": [
"player@v1",
"metadata@v1"
],
"name": "sendspin-go server",
"connection_reason": "playback",
"server_id": "sendspin-go-server",
"version": 1
},
"implementation": "sendspin-jvm",
"audio": {
"audio_chunk_count": 1,
"received_encoded_sha256": "7bc1b2ee421ee57d7ea84fee6b2a8301c83c56264081475e2c3f4ca7bd53a070",
"received_pcm_sha256": null,
"received_sample_count": 4899
},
"client_name": "sendspin-jvm-client",
"client_id": "sendspin-jvm-client-id",
"scenario_id": "server-initiated-flac",
"status": "ok"
}
Server build log · sendspin-go-server · built · 1.01s
RAWNo build detail was recorded.
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