Case
sendspin-go -> sendspin-jvm
Start the server first, then the client. The client advertises a listener, the server connects in, sends a metadata state update, disconnects, and the matrix compares a normalized metadata snapshot.
Server
sendspin-go
Client
sendspin-jvm
Status
Passed
Metadata snapshot matches
Inspection
Summaries, logs, and builds
Matrix result
RAW{
"case_dir": "artifacts/results/data/macos__server-initiated-metadata__sendspin-go__to__sendspin-jvm",
"client_exit_code": 0,
"client_impl": "sendspin-jvm",
"reason": "Metadata snapshot matches",
"scenario_id": "server-initiated-metadata",
"server_exit_code": 0,
"server_impl": "sendspin-go",
"status": "passed"
}Server summary (JSON)
RAW{
"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",
"metadata": {
"expected": {
"album": "Protocol Fixtures",
"album_artist": "Sendspin",
"artist": "Sendspin Conformance",
"artwork_url": "https://example.invalid/almost-silent.jpg",
"progress": {
"playback_speed": 1000,
"track_duration": 180000,
"track_progress": 12000
},
"repeat": "all",
"shuffle": false,
"title": "Almost Silent",
"track": 1,
"year": 2026
}
},
"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": "pcm",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 48000
}
]
},
"supported_roles": [
"player@v1",
"metadata@v1",
"artwork@v1",
"controller@v1"
],
"version": 1
},
"type": "client/hello"
},
"preferred_codec": "none",
"role": "server",
"scenario_id": "server-initiated-metadata",
"server_id": "sendspin-go-server",
"server_name": "sendspin-go server",
"status": "ok"
}Server log
RAW{
"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",
"metadata": {
"expected": {
"album": "Protocol Fixtures",
"album_artist": "Sendspin",
"artist": "Sendspin Conformance",
"artwork_url": "https://example.invalid/almost-silent.jpg",
"progress": {
"playback_speed": 1000,
"track_duration": 180000,
"track_progress": 12000
},
"repeat": "all",
"shuffle": false,
"title": "Almost Silent",
"track": 1,
"year": 2026
}
},
"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": "pcm",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 48000
}
]
},
"supported_roles": [
"player@v1",
"metadata@v1",
"artwork@v1",
"controller@v1"
],
"version": 1
},
"type": "client/hello"
},
"preferred_codec": "none",
"role": "server",
"scenario_id": "server-initiated-metadata",
"server_id": "sendspin-go-server",
"server_name": "sendspin-go server",
"status": "ok"
}
Client summary (JSON)
RAW{
"client_id": "sendspin-jvm-client-id",
"client_name": "sendspin-jvm-client",
"implementation": "sendspin-jvm",
"initiator_role": "server",
"metadata": {
"received": {
"album": "Protocol Fixtures",
"album_artist": "Sendspin",
"artist": "Sendspin Conformance",
"artwork_url": "https://example.invalid/almost-silent.jpg",
"progress": {
"playback_speed": 1000,
"track_duration": 180000,
"track_progress": 12000
},
"repeat": "all",
"shuffle": false,
"title": "Almost Silent",
"track": 1,
"year": 2026
},
"update_count": 1
},
"peer_hello": {
"active_roles": [
"metadata@v1"
],
"connection_reason": "playback",
"name": "sendspin-go server",
"server_id": "sendspin-go-server",
"version": 1
},
"preferred_codec": "none",
"role": "client",
"scenario_id": "server-initiated-metadata",
"server": null,
"status": "ok"
}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:35:55 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinServerHost: listening on port 19972
May 16, 2026 5:35:56 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinServerHost: incoming connection from /127.0.0.1:49388
May 16, 2026 5:35:56 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinServerHost: activating server 'sendspin-go server' (id=sendspin-go-server reason=playback)
May 16, 2026 5:35:56 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinClient: server hello from 'sendspin-go server' reason=playback
May 16, 2026 5:35:56 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinClient: server/state title='Almost Silent'
May 16, 2026 5:35:56 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinServerHost: connection closed (1000 done)
May 16, 2026 5:35:56 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinClient: server socket closed (1000 done)
{
"server": null,
"initiator_role": "server",
"metadata": {
"update_count": 1,
"received": {
"artwork_url": "https://example.invalid/almost-silent.jpg",
"artist": "Sendspin Conformance",
"album_artist": "Sendspin",
"year": 2026,
"album": "Protocol Fixtures",
"repeat": "all",
"progress": {
"track_progress": 12000,
"playback_speed": 1000,
"track_duration": 180000
},
"title": "Almost Silent",
"track": 1,
"shuffle": false
}
},
"role": "client",
"preferred_codec": "none",
"peer_hello": {
"active_roles": ["metadata@v1"],
"name": "sendspin-go server",
"connection_reason": "playback",
"server_id": "sendspin-go-server",
"version": 1
},
"implementation": "sendspin-jvm",
"client_name": "sendspin-jvm-client",
"client_id": "sendspin-jvm-client-id",
"scenario_id": "server-initiated-metadata",
"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