Case
sendspin-server-cpp -> sendspin-js
Start the server first, then the client. The client advertises a listener and PCM as its only supported audio format, the server connects in and streams audio derived from almost_silent.flac, and both adapters record each audio frame as it crossed the transport. The matrix verifies that every frame is message type 4 behind the 13-byte header (type, int64 timestamp, uint32 send_ahead), that the client read the same 13 bytes off each one, and that no chunk lasted longer than 150 ms or, the final chunk aside, less than 15 ms. This test does not compare the audio, and does not judge send_ahead saturation, which no adapter can observe.
Server
sendspin-server-cpp
Client
sendspin-js
Status
Failed
Server adapter reported: the client sent client/hello but never took the connection with a client/state after server/activate; handshake failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin
Server activation
Initial server/activate
What the sendspin-server-cpp server's own adapter recorded for its first server/activate on this connection, reported as sent. The case fails when none was sent, when its activities are not unique values from playback and pairing, or when it omits active_roles. Nothing else in it is checked against the specification: which activities and roles the matched PSK allows is not judged. A recording that cannot be read as that message is shown whole and not judged either.
No server/activate observed
The sendspin-server-cpp server sent no server/activate on this connection, according to its adapter.
Server group state
Every group/update after activation
What the sendspin-server-cpp server's own adapter recorded for each group/update it sent after its first server/activate on this connection, in order and reported as sent. The case fails when none followed, or when in any of them playback_state is not playing or stopped, or group_id or group_name is missing or not a string. How soon the first followed is not judged, because the specification says promptly and gives no bound, so one sent at any point in the case counts. Whether a change to a field produced a further message is not judged either. A recording of anything other than that message is shown whole and fails the case as a harness gap.
No group/update observed after a server/activate
The sendspin-server-cpp server sent no group/update after a first server/activate on this connection, according to its adapter. One sent on a connection that never carried a server/activate is not recorded here.
Inspection
Summaries, logs, and builds
Matrix result
RAW{
"case_dir": "artifacts/results/data/macos__server-initiated-audio-chunk-framing__sendspin-server-cpp__to__sendspin-js",
"client_exit_code": 0,
"client_impl": "sendspin-js",
"reason": "Server adapter reported: the client sent client/hello but never took the connection with a client/state after server/activate; handshake failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin",
"scenario_id": "server-initiated-audio-chunk-framing",
"scenario_revision": 4,
"server_exit_code": 1,
"server_impl": "sendspin-server-cpp",
"status": "failed",
"unsupported": false
}Server summary (JSON)
RAW{
"activation": null,
"availability_trace": [],
"group_updates": [],
"implementation": "sendspin-server-cpp",
"initiator_role": "server",
"peer_hello": {
"payload": {
"device_info": {
"manufacturer": "Unknown",
"software_version": "Node.js/22"
},
"name": "sendspin-js-client",
"player@v1_support": {
"buffer_capacity": 5760000,
"supported_commands": [
"volume",
"mute"
],
"supported_formats": [
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 48000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 44100
}
]
},
"supported_pair_methods": [],
"supported_roles": [
"player@v1",
"controller@v1",
"metadata@v1"
],
"trust_level": "none",
"unpaired_access": {
"enabled": true
}
},
"type": "client/hello"
},
"preferred_codec": "pcm",
"reason": "the client sent client/hello but never took the connection with a client/state after server/activate; handshake failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin",
"role": "server",
"scenario_id": "server-initiated-audio-chunk-framing",
"server_id": "J6-Qcik8woacJBDeT3Icl8q6g6JXUVFpbKiiRi6RbVM",
"server_name": "sendspin-server-cpp server",
"status": "error",
"time_exchange": []
}Server log
RAWsendspin-server-cpp: dialing ws://127.0.0.1:20110/sendspin for playback
sendspin-server-cpp: handshake with ws://127.0.0.1:20110/sendspin failed: a protocol error
listener: handshake failed for ws://127.0.0.1:20110/sendspin
sendspin-server-cpp: next dial to ws://127.0.0.1:20110/sendspin in 999 ms (1 failed in a row)
sendspin-server-cpp: dialing ws://127.0.0.1:20110/sendspin for playback
sendspin-server-cpp: dial to ws://127.0.0.1:20110/sendspin failed: the connection failed
listener: dial failed for ws://127.0.0.1:20110/sendspin
sendspin-server-cpp: next dial to ws://127.0.0.1:20110/sendspin in 1999 ms (2 failed in a row)
sendspin-server-cpp: dialing ws://127.0.0.1:20110/sendspin for playback
sendspin-server-cpp: dial to ws://127.0.0.1:20110/sendspin failed: the connection failed
listener: dial failed for ws://127.0.0.1:20110/sendspin
sendspin-server-cpp: next dial to ws://127.0.0.1:20110/sendspin in 3999 ms (3 failed in a row)
sendspin-server-cpp: dialing ws://127.0.0.1:20110/sendspin for playback
sendspin-server-cpp: dial to ws://127.0.0.1:20110/sendspin failed: the connection failed
listener: dial failed for ws://127.0.0.1:20110/sendspin
sendspin-server-cpp: next dial to ws://127.0.0.1:20110/sendspin in 7999 ms (4 failed in a row)
sendspin-server-cpp: dialing ws://127.0.0.1:20110/sendspin for playback
sendspin-server-cpp: dial to ws://127.0.0.1:20110/sendspin failed: the connection failed
listener: dial failed for ws://127.0.0.1:20110/sendspin
sendspin-server-cpp: next dial to ws://127.0.0.1:20110/sendspin in 15999 ms (5 failed in a row)
sendspin-server-cpp: dialing ws://127.0.0.1:20110/sendspin for playback
sendspin-server-cpp: dial to ws://127.0.0.1:20110/sendspin failed: the connection failed
listener: dial failed for ws://127.0.0.1:20110/sendspin
sendspin-server-cpp: next dial to ws://127.0.0.1:20110/sendspin in 31999 ms (6 failed in a row)
{
"status": "error",
"implementation": "sendspin-server-cpp",
"role": "server",
"server_name": "sendspin-server-cpp server",
"scenario_id": "server-initiated-audio-chunk-framing",
"initiator_role": "server",
"preferred_codec": "pcm",
"reason": "the client sent client/hello but never took the connection with a client/state after server/activate; handshake failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin; dial failed for ws://127.0.0.1:20110/sendspin",
"server_id": "J6-Qcik8woacJBDeT3Icl8q6g6JXUVFpbKiiRi6RbVM",
"peer_hello": {
"type": "client/hello",
"payload": {
"name": "sendspin-js-client",
"supported_roles": [
"player@v1",
"controller@v1",
"metadata@v1"
],
"trust_level": "none",
"supported_pair_methods": [],
"unpaired_access": {
"enabled": true
},
"device_info": {
"manufacturer": "Unknown",
"software_version": "Node.js/22"
},
"player@v1_support": {
"supported_formats": [
{
"codec": "pcm",
"sample_rate": 48000,
"channels": 2,
"bit_depth": 16
},
{
"codec": "pcm",
"sample_rate": 44100,
"channels": 2,
"bit_depth": 16
}
],
"buffer_capacity": 5760000,
"supported_commands": [
"volume",
"mute"
]
}
}
},
"activation": null,
"group_updates": [],
"availability_trace": [],
"time_exchange": []
}
Client summary (JSON)
RAW{
"audio": {
"audio_chunk_count": 0,
"received_chunk_frames": null,
"received_encoded_byte_count": null,
"received_encoded_sha256": null,
"received_pcm_sha256": null,
"received_sample_count": 0
},
"client_id": "sendspin-js-client-id",
"client_name": "sendspin-js-client",
"implementation": "sendspin-js",
"initiator_role": "server",
"peer_hello": null,
"preferred_codec": "pcm",
"role": "client",
"scenario_id": "server-initiated-audio-chunk-framing",
"server": null,
"status": "ok",
"stream": null
}Client log
RAW[Opus] Native decoder not available, falling back to FLAC/PCM
Sendspin: no storage provided, using an ephemeral identity (client_id changes each session, pairing unavailable)
Sendspin: Adopted open WebSocket
Sendspin: Connected to server
[Opus] Native decoder not available, falling back to FLAC/PCM
Sendspin: WebSocket disconnected
Sendspin: Connection closed
{
"status": "ok",
"implementation": "sendspin-js",
"role": "client",
"scenario_id": "server-initiated-audio-chunk-framing",
"initiator_role": "server",
"preferred_codec": "pcm",
"client_id": "sendspin-js-client-id",
"client_name": "sendspin-js-client",
"peer_hello": null,
"server": null,
"stream": null,
"audio": {
"audio_chunk_count": 0,
"received_encoded_sha256": null,
"received_pcm_sha256": null,
"received_sample_count": 0,
"received_encoded_byte_count": null,
"received_chunk_frames": null
}
}
Server build log · sendspin-server-cpp-server · built · 161.45s
RAWp-server.dir/trace_recorder.cpp.o
[100%] Linking CXX executable conformance-sendspin-server-cpp-server
[100%] Built target conformance-sendspin-server-cpp-server
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:6: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
21 | #if (HAS_SIZEOF_INT128_64BIT || HAS_MSVC_64BIT || HAS_GCC_4_4_64BIT)
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:17:34: note: expanded from macro 'HAS_SIZEOF_INT128_64BIT'
17 | #define HAS_SIZEOF_INT128_64BIT (defined(__SIZEOF_INT128__) && defined(__LP64__))
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:6: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:17:64: note: expanded from macro 'HAS_SIZEOF_INT128_64BIT'
17 | #define HAS_SIZEOF_INT128_64BIT (defined(__SIZEOF_INT128__) && defined(__LP64__))
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:33: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
21 | #if (HAS_SIZEOF_INT128_64BIT || HAS_MSVC_64BIT || HAS_GCC_4_4_64BIT)
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:18:25: note: expanded from macro 'HAS_MSVC_64BIT'
18 | #define HAS_MSVC_64BIT (defined(_MSC_VER) && defined(_M_X64))
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:33: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:18:46: note: expanded from macro 'HAS_MSVC_64BIT'
18 | #define HAS_MSVC_64BIT (defined(_MSC_VER) && defined(_M_X64))
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:51: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
21 | #if (HAS_SIZEOF_INT128_64BIT || HAS_MSVC_64BIT || HAS_GCC_4_4_64BIT)
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:19:28: note: expanded from macro 'HAS_GCC_4_4_64BIT'
19 | #define HAS_GCC_4_4_64BIT (defined(__GNUC__) && defined(__LP64__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4))))
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:51: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:19:49: note: expanded from macro 'HAS_GCC_4_4_64BIT'
19 | #define HAS_GCC_4_4_64BIT (defined(__GNUC__) && defined(__LP64__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4))))
| ^
6 warnings generated.Client build log · sendspin-js-adapters · built · 97.70s
RAWNo build detail was recorded.