Case
sendspin-server-cpp -> sendspin-cpp
Start the server first, then the client. The client advertises a listener and PCM player support. The server connects, and both adapters record the handshake, role activation, initial state, stream negotiation, and timestamped player chunks for checks against the pinned spec revision. This test does not check audio decoding or playback.
Server
sendspin-server-cpp
Client
sendspin-cpp
Status
Passed
Passed 5 protocol assertions
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.
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.
1 of 3
2 of 3
3 of 3
Inspection
Summaries, logs, and builds
Matrix result
RAW{
"case_dir": "artifacts/results/data/macos__server-initiated-protocol-baseline-v1__sendspin-server-cpp__to__sendspin-cpp",
"client_exit_code": 0,
"client_impl": "sendspin-cpp",
"reason": "Passed 5 protocol assertions",
"scenario_id": "server-initiated-protocol-baseline-v1",
"scenario_revision": 5,
"server_exit_code": 0,
"server_impl": "sendspin-server-cpp",
"status": "passed",
"unsupported": false
}Server summary (JSON)
RAW{
"activation": {
"payload": {
"active_roles": [
"player@v1"
],
"activities": [
"playback"
]
},
"type": "server/activate"
},
"audio": {
"bit_depth": 16,
"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,
"source_flac_sha256": "8fdda8244e318c63cd8b699fe461cd7cdddbb729327a0ba00d1bfdbe2192fe17",
"source_pcm_sha256": "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e"
},
"availability_trace": [
{
"available": true,
"type": "client/state"
},
{
"phase": "sending",
"roles": [
"player"
],
"type": "stream/start"
},
{
"phase": "sent",
"roles": [
"player"
],
"type": "stream/start"
}
],
"client": {
"active_roles": [
"player@v1"
],
"client_id": "fC8iNQUfyvqk_8-4NErY3zY4LpheH_mhvf0J-S-2tgs",
"name": "sendspin-cpp-client",
"supported_roles": [
"player@v1"
]
},
"discovery_method": "registry",
"group_updates": [
{
"payload": {
"group_id": "1",
"group_name": "sendspin-server-cpp server",
"playback_state": "stopped"
},
"type": "group/update"
},
{
"payload": {
"group_id": "1",
"group_name": "sendspin-server-cpp server",
"playback_state": "playing"
},
"type": "group/update"
},
{
"payload": {
"group_id": "1",
"group_name": "sendspin-server-cpp server",
"playback_state": "stopped"
},
"type": "group/update"
}
],
"implementation": "sendspin-server-cpp",
"initiator_role": "server",
"peer_hello": {
"payload": {
"device_info": {
"mac_address": "9e:1f:65:cd:d6:b8",
"manufacturer": "Sendspin Conformance",
"product_name": "sendspin-cpp Conformance Client",
"software_version": "0.2.0"
},
"name": "sendspin-cpp-client",
"player@v1_support": {
"buffer_capacity": 621312,
"supported_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
}
]
},
"supported_pair_methods": {
"pairing_psk": {}
},
"supported_roles": [
"player@v1"
],
"unpaired_access": {
"enabled": true
}
},
"type": "client/hello"
},
"preferred_codec": "pcm",
"protocol": {
"assertions": {
"CORE-001": {
"detail": "the trace shows the seven handshake messages in order, the cleartext ones in text frames and the encrypted ones in binary frames",
"events": [
{
"direction": "inbound",
"event": "handshake_message",
"frame": "text",
"message_type": "client/init"
},
{
"direction": "outbound",
"event": "handshake_message",
"frame": "text",
"message_type": "server/init"
},
{
"direction": "outbound",
"event": "handshake_message",
"frame": "text",
"message_type": "noise/handshake"
},
{
"direction": "inbound",
"event": "handshake_message",
"frame": "text",
"message_type": "noise/handshake"
},
{
"direction": "outbound",
"event": "handshake_message",
"frame": "binary",
"message_type": "server/hello"
},
{
"direction": "inbound",
"event": "handshake_message",
"frame": "binary",
"message_type": "client/hello"
},
{
"direction": "outbound",
"event": "handshake_message",
"frame": "binary",
"message_type": "server/activate"
}
],
"status": "passed"
},
"CORE-002": {
"detail": "only handshake messages preceded the first server/activate",
"events": [
{
"direction": "inbound",
"event": "message_before_activation",
"frame": "text",
"message_type": "client/init"
},
{
"direction": "outbound",
"event": "message_before_activation",
"frame": "text",
"message_type": "server/init"
},
{
"direction": "outbound",
"event": "message_before_activation",
"frame": "text",
"message_type": "noise/handshake"
},
{
"direction": "inbound",
"event": "message_before_activation",
"frame": "text",
"message_type": "noise/handshake"
},
{
"direction": "outbound",
"event": "message_before_activation",
"frame": "binary",
"message_type": "server/hello"
},
{
"direction": "inbound",
"event": "message_before_activation",
"frame": "binary",
"message_type": "client/hello"
},
{
"direction": "outbound",
"event": "message_before_activation",
"frame": "binary",
"message_type": "server/activate"
}
],
"status": "passed"
},
"CORE-003": {
"detail": "every active role was advertised, with the support object its role requires",
"events": [
{
"active_roles": [
"player@v1"
],
"event": "server_activate_checked_against_client_hello",
"support_objects": [
"player@v1_support"
],
"supported_roles": [
"player@v1"
]
}
],
"status": "passed"
},
"CORE-004": {
"detail": "the initial client/state preceded the first role binary data",
"events": [
{
"direction": "outbound",
"event": "server_activate",
"frame": "binary",
"message_type": "server/activate"
},
{
"direction": "inbound",
"event": "initial_client_state",
"frame": "binary",
"message_type": "client/state"
},
{
"direction": "outbound",
"event": "first_role_binary_data",
"frame": "binary",
"message_type": "binary:4"
}
],
"status": "passed"
},
"PLAYER-001": {
"detail": "selected an advertised format and sent 50 audio chunks in timestamp order",
"events": [
{
"advertised_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
}
],
"event": "stream_start_observed",
"negotiated_format": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
}
},
{
"chunk_count": 50,
"event": "audio_chunks_observed",
"first_timestamp_us": 728162754,
"last_timestamp_us": 733062754
}
],
"status": "passed"
}
},
"spec_revision": "8c9577ea8719ad082d051ec13cc73ef15ed68948"
},
"role": "server",
"scenario_id": "server-initiated-protocol-baseline-v1",
"server_id": "u9hev1XgGvexIv-ugxx1aTrMRYWwHkjMTlerv90KHxU",
"server_name": "sendspin-server-cpp server",
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
},
"time_exchange": [
{
"payload": {
"client_transmitted": 727650928
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 727650928,
"server_received": 727651035,
"server_transmitted": 727651101
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 727651220
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 727651220,
"server_received": 727651252,
"server_transmitted": 727651287
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 727651363
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 727651363,
"server_received": 727651390,
"server_transmitted": 727651503
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 727651632
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 727651632,
"server_received": 727651686,
"server_transmitted": 727651721
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 727651826
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 727651826,
"server_received": 727651861,
"server_transmitted": 727651907
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 727652054
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 727652054,
"server_received": 727652085,
"server_transmitted": 727652127
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 727652211
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 727652211,
"server_received": 727652263,
"server_transmitted": 727652300
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 727652393
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 727652393,
"server_received": 727652427,
"server_transmitted": 727652464
},
"type": "server/time"
},
{
"type": "other-sent"
}
]
}Server log
RAWsendspin-server-cpp: dialing ws://127.0.0.1:19958/sendspin for playback
sendspin-server-cpp: "sendspin-cpp-client" at 127.0.0.1:19958 connected
listener: client sendspin-cpp-client disconnected: server stopped
{
"status": "ok",
"implementation": "sendspin-server-cpp",
"role": "server",
"server_name": "sendspin-server-cpp server",
"scenario_id": "server-initiated-protocol-baseline-v1",
"initiator_role": "server",
"preferred_codec": "pcm",
"server_id": "u9hev1XgGvexIv-ugxx1aTrMRYWwHkjMTlerv90KHxU",
"discovery_method": "registry",
"peer_hello": {
"type": "client/hello",
"payload": {
"name": "sendspin-cpp-client",
"device_info": {
"product_name": "sendspin-cpp Conformance Client",
"manufacturer": "Sendspin Conformance",
"software_version": "0.2.0",
"mac_address": "9e:1f:65:cd:d6:b8"
},
"supported_pair_methods": {
"pairing_psk": {}
},
"unpaired_access": {
"enabled": true
},
"supported_roles": [
"player@v1"
],
"player@v1_support": {
"supported_formats": [
{
"codec": "pcm",
"channels": 1,
"sample_rate": 8000,
"bit_depth": 16
}
],
"buffer_capacity": 621312
}
}
},
"activation": {
"type": "server/activate",
"payload": {
"activities": [
"playback"
],
"active_roles": [
"player@v1"
]
}
},
"group_updates": [
{
"type": "group/update",
"payload": {
"playback_state": "stopped",
"group_id": "1",
"group_name": "sendspin-server-cpp server"
}
},
{
"type": "group/update",
"payload": {
"playback_state": "playing",
"group_id": "1",
"group_name": "sendspin-server-cpp server"
}
},
{
"type": "group/update",
"payload": {
"playback_state": "stopped",
"group_id": "1",
"group_name": "sendspin-server-cpp server"
}
}
],
"availability_trace": [
{
"type": "client/state",
"available": true
},
{
"type": "stream/start",
"phase": "sending",
"roles": [
"player"
]
},
{
"type": "stream/start",
"phase": "sent",
"roles": [
"player"
]
}
],
"time_exchange": [
{
"type": "client/time",
"payload": {
"client_transmitted": 727650928
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 727650928,
"server_received": 727651035,
"server_transmitted": 727651101
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 727651220
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 727651220,
"server_received": 727651252,
"server_transmitted": 727651287
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 727651363
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 727651363,
"server_received": 727651390,
"server_transmitted": 727651503
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 727651632
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 727651632,
"server_received": 727651686,
"server_transmitted": 727651721
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 727651826
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 727651826,
"server_received": 727651861,
"server_transmitted": 727651907
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 727652054
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 727652054,
"server_received": 727652085,
"server_transmitted": 727652127
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 727652211
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 727652211,
"server_received": 727652263,
"server_transmitted": 727652300
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 727652393
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 727652393,
"server_received": 727652427,
"server_transmitted": 727652464
}
},
{
"type": "other-sent"
}
],
"client": {
"client_id": "fC8iNQUfyvqk_8-4NErY3zY4LpheH_mhvf0J-S-2tgs",
"name": "sendspin-cpp-client",
"supported_roles": [
"player@v1"
],
"active_roles": [
"player@v1"
]
},
"stream": {
"codec": "pcm",
"sample_rate": 8000,
"channels": 1,
"bit_depth": 16
},
"audio": {
"fixture": "/Users/runner/work/conformance/conformance/repos/sendspin-cli/tests/fixtures/almost_silent.flac",
"source_flac_sha256": "8fdda8244e318c63cd8b699fe461cd7cdddbb729327a0ba00d1bfdbe2192fe17",
"source_pcm_sha256": "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e",
"clip_seconds": 5,
"sample_rate": 8000,
"channels": 1,
"bit_depth": 16,
"frame_count": 40000,
"duration_seconds": 5
},
"protocol": {
"spec_revision": "8c9577ea8719ad082d051ec13cc73ef15ed68948",
"assertions": {
"CORE-001": {
"status": "passed",
"detail": "the trace shows the seven handshake messages in order, the cleartext ones in text frames and the encrypted ones in binary frames",
"events": [
{
"event": "handshake_message",
"direction": "inbound",
"message_type": "client/init",
"frame": "text"
},
{
"event": "handshake_message",
"direction": "outbound",
"message_type": "server/init",
"frame": "text"
},
{
"event": "handshake_message",
"direction": "outbound",
"message_type": "noise/handshake",
"frame": "text"
},
{
"event": "handshake_message",
"direction": "inbound",
"message_type": "noise/handshake",
"frame": "text"
},
{
"event": "handshake_message",
"direction": "outbound",
"message_type": "server/hello",
"frame": "binary"
},
{
"event": "handshake_message",
"direction": "inbound",
"message_type": "client/hello",
"frame": "binary"
},
{
"event": "handshake_message",
"direction": "outbound",
"message_type": "server/activate",
"frame": "binary"
}
]
},
"CORE-002": {
"status": "passed",
"detail": "only handshake messages preceded the first server/activate",
"events": [
{
"event": "message_before_activation",
"direction": "inbound",
"message_type": "client/init",
"frame": "text"
},
{
"event": "message_before_activation",
"direction": "outbound",
"message_type": "server/init",
"frame": "text"
},
{
"event": "message_before_activation",
"direction": "outbound",
"message_type": "noise/handshake",
"frame": "text"
},
{
"event": "message_before_activation",
"direction": "inbound",
"message_type": "noise/handshake",
"frame": "text"
},
{
"event": "message_before_activation",
"direction": "outbound",
"message_type": "server/hello",
"frame": "binary"
},
{
"event": "message_before_activation",
"direction": "inbound",
"message_type": "client/hello",
"frame": "binary"
},
{
"event": "message_before_activation",
"direction": "outbound",
"message_type": "server/activate",
"frame": "binary"
}
]
},
"CORE-003": {
"status": "passed",
"detail": "every active role was advertised, with the support object its role requires",
"events": [
{
"event": "server_activate_checked_against_client_hello",
"active_roles": [
"player@v1"
],
"supported_roles": [
"player@v1"
],
"support_objects": [
"player@v1_support"
]
}
]
},
"CORE-004": {
"status": "passed",
"detail": "the initial client/state preceded the first role binary data",
"events": [
{
"event": "server_activate",
"direction": "outbound",
"message_type": "server/activate",
"frame": "binary"
},
{
"event": "initial_client_state",
"direction": "inbound",
"message_type": "client/state",
"frame": "binary"
},
{
"event": "first_role_binary_data",
"direction": "outbound",
"message_type": "binary:4",
"frame": "binary"
}
]
},
"PLAYER-001": {
"status": "passed",
"detail": "selected an advertised format and sent 50 audio chunks in timestamp order",
"events": [
{
"event": "stream_start_observed",
"negotiated_format": {
"codec": "pcm",
"sample_rate": 8000,
"channels": 1,
"bit_depth": 16
},
"advertised_formats": [
{
"codec": "pcm",
"channels": 1,
"sample_rate": 8000,
"bit_depth": 16
}
]
},
{
"event": "audio_chunks_observed",
"chunk_count": 50,
"first_timestamp_us": 728162754,
"last_timestamp_us": 733062754
}
]
}
}
}
}
Client summary (JSON)
RAW{
"audio": {
"audio_chunk_count": 50,
"received_encoded_sha256": "b3481a3f75dea856a961e7842d12f8344c7147b3925f9f0b67c5445700bd4cf2",
"received_pcm_sha256": "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e",
"received_sample_count": 40000
},
"client_id": "fC8iNQUfyvqk_8-4NErY3zY4LpheH_mhvf0J-S-2tgs",
"client_name": "sendspin-cpp-client",
"implementation": "sendspin-cpp",
"initiator_role": "server",
"peer_hello": {
"payload": {
"name": "sendspin-server-cpp server",
"source@v1_support": {
"supported_codecs": [
"pcm",
"flac",
"opus"
]
}
},
"type": "server/hello"
},
"preferred_codec": "pcm",
"protocol": {
"assertions": {
"CORE-001": {
"detail": "the trace shows the seven handshake messages in order, the cleartext ones in text frames and the encrypted ones in binary frames",
"events": [
{
"direction": "outbound",
"event": "handshake_message",
"frame": "text",
"message_type": "client/init"
},
{
"direction": "inbound",
"event": "handshake_message",
"frame": "text",
"message_type": "server/init"
},
{
"direction": "inbound",
"event": "handshake_message",
"frame": "text",
"message_type": "noise/handshake"
},
{
"direction": "outbound",
"event": "handshake_message",
"frame": "text",
"message_type": "noise/handshake"
},
{
"direction": "inbound",
"event": "handshake_message",
"frame": "binary",
"message_type": "server/hello"
},
{
"direction": "outbound",
"event": "handshake_message",
"frame": "binary",
"message_type": "client/hello"
},
{
"direction": "inbound",
"event": "handshake_message",
"frame": "binary",
"message_type": "server/activate"
}
],
"status": "passed"
},
"CORE-002": {
"detail": "only handshake messages preceded the first server/activate",
"events": [
{
"direction": "outbound",
"event": "message_before_activation",
"frame": "text",
"message_type": "client/init"
},
{
"direction": "inbound",
"event": "message_before_activation",
"frame": "text",
"message_type": "server/init"
},
{
"direction": "inbound",
"event": "message_before_activation",
"frame": "text",
"message_type": "noise/handshake"
},
{
"direction": "outbound",
"event": "message_before_activation",
"frame": "text",
"message_type": "noise/handshake"
},
{
"direction": "inbound",
"event": "message_before_activation",
"frame": "binary",
"message_type": "server/hello"
},
{
"direction": "outbound",
"event": "message_before_activation",
"frame": "binary",
"message_type": "client/hello"
},
{
"direction": "inbound",
"event": "message_before_activation",
"frame": "binary",
"message_type": "server/activate"
}
],
"status": "passed"
},
"CORE-003": {
"detail": "every active role was advertised, with the support object its role requires",
"events": [
{
"active_roles": [
"player@v1"
],
"event": "server_activate_checked_against_client_hello",
"support_objects": [
"player@v1_support"
],
"supported_roles": [
"player@v1"
]
}
],
"status": "passed"
},
"CORE-004": {
"detail": "the initial client/state preceded the first role binary data",
"events": [
{
"direction": "inbound",
"event": "server_activate",
"frame": "binary",
"message_type": "server/activate"
},
{
"direction": "outbound",
"event": "initial_client_state",
"frame": "binary",
"message_type": "client/state"
},
{
"direction": "inbound",
"event": "first_role_binary_data",
"frame": "binary",
"message_type": "binary:4"
}
],
"status": "passed"
},
"PLAYER-001": {
"detail": "the server selected an advertised format and sent 50 audio chunks in timestamp order",
"events": [
{
"advertised_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
}
],
"event": "stream_start_observed",
"negotiated_format": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
}
},
{
"chunk_count": 50,
"event": "audio_chunks_observed",
"first_timestamp_us": 728162754,
"last_timestamp_us": 733062754
}
],
"status": "passed"
}
},
"spec_revision": "8c9577ea8719ad082d051ec13cc73ef15ed68948"
},
"reason": null,
"role": "client",
"scenario_id": "server-initiated-protocol-baseline-v1",
"server": {
"connection_reason": null,
"name": "sendspin-server-cpp server",
"server_id": "u9hev1XgGvexIv-ugxx1aTrMRYWwHkjMTlerv90KHxU",
"version": 1
},
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"codec_header": null,
"sample_rate": 8000
}
}Client log
RAWI sendspin.record_store: Provisioned Sendspin Pairing PSK: 9tgw33cHrNMSmBh8rE4UPc0aPsB-g5TXbb5yq7tWhvI
I sendspin.client: Generated ephemeral static keypair (no provider); client_id=fC8iNQUfyvqk_8-4NErY3zY4LpheH_mhvf0J-S-2tgs
I sendspin.ws_server: Starting server on port: 19958 (max connections: 4)
I sendspin.noise_handshake: Noise handshake complete: server_id=u9hev1XgGvexIv-ugxx1aTrMRYWwHkjMTlerv90KHxU psk_category=2
I sendspin.connection: Noise transport active (server_id=u9hev1XgGvexIv-ugxx1aTrMRYWwHkjMTlerv90KHxU, psk_category=2)
I sendspin.conn_mgr: Connection admitted: server_id=u9hev1XgGvexIv-ugxx1aTrMRYWwHkjMTlerv90KHxU
I sendspin.sync_task: Processed new codec header: pcm, 8000 Hz, 1 ch, 16-bit
I sendspin.conn_mgr: Admitted connection lost
{"status":"ok","reason":null,"implementation":"sendspin-cpp","role":"client","scenario_id":"server-initiated-protocol-baseline-v1","initiator_role":"server","preferred_codec":"pcm","client_name":"sendspin-cpp-client","client_id":"fC8iNQUfyvqk_8-4NErY3zY4LpheH_mhvf0J-S-2tgs","server":{"server_id":"u9hev1XgGvexIv-ugxx1aTrMRYWwHkjMTlerv90KHxU","name":"sendspin-server-cpp server","version":1,"connection_reason":null},"peer_hello":{"type":"server/hello","payload":{"name":"sendspin-server-cpp server","source@v1_support":{"supported_codecs":["pcm","flac","opus"]}}},"stream":{"codec":"pcm","sample_rate":8000,"channels":1,"bit_depth":16,"codec_header":null},"audio":{"audio_chunk_count":50,"received_encoded_sha256":"b3481a3f75dea856a961e7842d12f8344c7147b3925f9f0b67c5445700bd4cf2","received_pcm_sha256":"9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e","received_sample_count":40000},"protocol":{"spec_revision":"8c9577ea8719ad082d051ec13cc73ef15ed68948","assertions":{"CORE-001":{"status":"passed","detail":"the trace shows the seven handshake messages in order, the cleartext ones in text frames and the encrypted ones in binary frames","events":[{"event":"handshake_message","direction":"outbound","message_type":"client/init","frame":"text"},{"event":"handshake_message","direction":"inbound","message_type":"server/init","frame":"text"},{"event":"handshake_message","direction":"inbound","message_type":"noise/handshake","frame":"text"},{"event":"handshake_message","direction":"outbound","message_type":"noise/handshake","frame":"text"},{"event":"handshake_message","direction":"inbound","message_type":"server/hello","frame":"binary"},{"event":"handshake_message","direction":"outbound","message_type":"client/hello","frame":"binary"},{"event":"handshake_message","direction":"inbound","message_type":"server/activate","frame":"binary"}]},"CORE-002":{"status":"passed","detail":"only handshake messages preceded the first server/activate","events":[{"event":"message_before_activation","direction":"outbound","message_type":"client/init","frame":"text"},{"event":"message_before_activation","direction":"inbound","message_type":"server/init","frame":"text"},{"event":"message_before_activation","direction":"inbound","message_type":"noise/handshake","frame":"text"},{"event":"message_before_activation","direction":"outbound","message_type":"noise/handshake","frame":"text"},{"event":"message_before_activation","direction":"inbound","message_type":"server/hello","frame":"binary"},{"event":"message_before_activation","direction":"outbound","message_type":"client/hello","frame":"binary"},{"event":"message_before_activation","direction":"inbound","message_type":"server/activate","frame":"binary"}]},"CORE-003":{"status":"passed","detail":"every active role was advertised, with the support object its role requires","events":[{"event":"server_activate_checked_against_client_hello","active_roles":["player@v1"],"supported_roles":["player@v1"],"support_objects":["player@v1_support"]}]},"CORE-004":{"status":"passed","detail":"the initial client/state preceded the first role binary data","events":[{"event":"server_activate","direction":"inbound","message_type":"server/activate","frame":"binary"},{"event":"initial_client_state","direction":"outbound","message_type":"client/state","frame":"binary"},{"event":"first_role_binary_data","direction":"inbound","message_type":"binary:4","frame":"binary"}]},"PLAYER-001":{"status":"passed","detail":"the server selected an advertised format and sent 50 audio chunks in timestamp order","events":[{"event":"stream_start_observed","negotiated_format":{"codec":"pcm","sample_rate":8000,"channels":1,"bit_depth":16},"advertised_formats":[{"codec":"pcm","channels":1,"sample_rate":8000,"bit_depth":16}]},{"event":"audio_chunks_observed","chunk_count":50,"first_timestamp_us":728162754,"last_timestamp_us":733062754}]}}}}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-cpp-client · built · 63.96s
RAW/IXWebSocketPerMessageDeflateCodec.cpp:194:60: warning: unused parameter 'clientNoContextTakeOver' [-Wunused-parameter]
194 | bool clientNoContextTakeOver)
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-cpp/client/build/_deps/ixwebsocket-src/ixwebsocket/IXWebSocketPerMessageDeflateCodec.cpp:209:80: warning: unused parameter 'in' [-Wunused-parameter]
209 | bool WebSocketPerMessageDeflateDecompressor::decompress(const std::string& in, std::string& out)
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-cpp/client/build/_deps/ixwebsocket-src/ixwebsocket/IXWebSocketPerMessageDeflateCodec.cpp:209:97: warning: unused parameter 'out' [-Wunused-parameter]
209 | bool WebSocketPerMessageDeflateDecompressor::decompress(const std::string& in, std::string& out)
| ^
In file included from /Users/runner/work/conformance/conformance/adapters/sendspin-cpp/client/build/_deps/ixwebsocket-src/ixwebsocket/IXWebSocketPerMessageDeflateCodec.cpp:7:
/Users/runner/work/conformance/conformance/adapters/sendspin-cpp/client/build/_deps/ixwebsocket-src/ixwebsocket/IXWebSocketPerMessageDeflateCodec.h:39:13: warning: private field '_flush' is not used [-Wunused-private-field]
39 | int _flush;
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-cpp/client/build/_deps/ixwebsocket-src/ixwebsocket/IXWebSocketPerMessageDeflateCodec.h:40:44: warning: private field '_compressBuffer' is not used [-Wunused-private-field]
40 | std::array<unsigned char, 1 << 14> _compressBuffer;
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-cpp/client/build/_deps/ixwebsocket-src/ixwebsocket/IXWebSocketPerMessageDeflateCodec.h:57:13: warning: private field '_flush' is not used [-Wunused-private-field]
57 | int _flush;
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-cpp/client/build/_deps/ixwebsocket-src/ixwebsocket/IXWebSocketPerMessageDeflateCodec.h:58:44: warning: private field '_compressBuffer' is not used [-Wunused-private-field]
58 | std::array<unsigned char, 1 << 14> _compressBuffer;
| ^
12 warnings generated.
/Users/runner/work/conformance/conformance/adapters/sendspin-cpp/client/build/_deps/ixwebsocket-src/ixwebsocket/IXWebSocketPerMessageDeflateOptions.cpp:17:26: warning: unused variable 'minServerMaxWindowBits' [-Wunused-const-variable]
17 | static const uint8_t minServerMaxWindowBits = 8;
| ^~~~~~~~~~~~~~~~~~~~~~
/Users/runner/work/conformance/conformance/adapters/sendspin-cpp/client/build/_deps/ixwebsocket-src/ixwebsocket/IXWebSocketPerMessageDeflateOptions.cpp:18:26: warning: unused variable 'maxServerMaxWindowBits' [-Wunused-const-variable]
18 | static const uint8_t maxServerMaxWindowBits = 15;
| ^~~~~~~~~~~~~~~~~~~~~~
/Users/runner/work/conformance/conformance/adapters/sendspin-cpp/client/build/_deps/ixwebsocket-src/ixwebsocket/IXWebSocketPerMessageDeflateOptions.cpp:21:26: warning: unused variable 'minClientMaxWindowBits' [-Wunused-const-variable]
21 | static const uint8_t minClientMaxWindowBits = 8;
| ^~~~~~~~~~~~~~~~~~~~~~
/Users/runner/work/conformance/conformance/adapters/sendspin-cpp/client/build/_deps/ixwebsocket-src/ixwebsocket/IXWebSocketPerMessageDeflateOptions.cpp:22:26: warning: unused variable 'maxClientMaxWindowBits' [-Wunused-const-variable]
22 | static const uint8_t maxClientMaxWindowBits = 15;
| ^~~~~~~~~~~~~~~~~~~~~~
4 warnings generated.