Case
sendspin-go -> sendspin-jvm
Start the server first, then the client. The client advertises a listener, the server connects in, observes controller state, receives a control command, disconnects, and the matrix verifies the recorded command.
Server
sendspin-go
Client
sendspin-jvm
Status
Passed
Controller command matched (next)
Inspection
Summaries, logs, and builds
Matrix result
RAW{
"case_dir": "artifacts/results/data/macos__server-initiated-controller__sendspin-go__to__sendspin-jvm",
"client_exit_code": 0,
"client_impl": "sendspin-jvm",
"reason": "Controller command matched (next)",
"scenario_id": "server-initiated-controller",
"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"
]
},
"controller": {
"expected_command": {
"command": "next"
},
"muted": false,
"received_command": {
"command": "next"
},
"supported_commands": [
"next"
],
"volume": 100
},
"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": "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-controller",
"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"
]
},
"controller": {
"expected_command": {
"command": "next"
},
"muted": false,
"received_command": {
"command": "next"
},
"supported_commands": [
"next"
],
"volume": 100
},
"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": "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-controller",
"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",
"controller": {
"received_state": {
"muted": false,
"supported_commands": [
"next"
],
"volume": 100
},
"sent_command": {
"command": "next"
}
},
"implementation": "sendspin-jvm",
"initiator_role": "server",
"peer_hello": {
"active_roles": [
"controller@v1"
],
"connection_reason": "playback",
"name": "sendspin-go server",
"server_id": "sendspin-go-server",
"version": 1
},
"preferred_codec": "none",
"role": "client",
"scenario_id": "server-initiated-controller",
"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:36:07 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinServerHost: listening on port 20004
May 16, 2026 5:36:07 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinServerHost: incoming connection from /127.0.0.1:49414
May 16, 2026 5:36:07 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinServerHost: activating server 'sendspin-go server' (id=sendspin-go-server reason=playback)
May 16, 2026 5:36:07 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinClient: server hello from 'sendspin-go server' reason=playback
May 16, 2026 5:36:07 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinServerHost: connection closed (1000 done)
May 16, 2026 5:36:07 AM com.sendspin.protocol.ProtocolLog i
INFO: SendSpinClient: server socket closed (1000 done)
{
"server": null,
"initiator_role": "server",
"controller": {
"received_state": {
"volume": 100,
"supported_commands": ["next"],
"muted": false
},
"sent_command": {"command": "next"}
},
"role": "client",
"preferred_codec": "none",
"peer_hello": {
"active_roles": ["controller@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-controller",
"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