Case
sendspin-server-cpp -> SendspinKit
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
SendspinKit
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__SendspinKit",
"client_exit_code": 0,
"client_impl": "SendspinKit",
"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": "8qwBuoD3m2kBRq2EvEZg31qMKjCE-oja3acHOG6UFmI",
"name": "SendspinKit-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": {
"manufacturer": "Apple",
"product_name": "Mac",
"software_version": "Version 26.6.2 (Build 25G83)"
},
"name": "SendspinKit-client",
"player@v1_support": {
"buffer_capacity": 960000,
"supported_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
}
]
},
"supported_pair_methods": {
"pairing_psk": {
"locations": [
"operator"
]
}
},
"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": 750878935,
"last_timestamp_us": 755778935
}
],
"status": "passed"
}
},
"spec_revision": "8c9577ea8719ad082d051ec13cc73ef15ed68948"
},
"role": "server",
"scenario_id": "server-initiated-protocol-baseline-v1",
"server_id": "cwwnSKz1hngj0G3mCWrN2jHH0PokV67qshTGjC-2LTg",
"server_name": "sendspin-server-cpp server",
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
},
"time_exchange": [
{
"payload": {
"client_transmitted": 750285005
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 750285005,
"server_received": 750285208,
"server_transmitted": 750285275
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 750367685
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 750367685,
"server_received": 750368024,
"server_transmitted": 750368108
},
"type": "server/time"
},
{
"type": "other-sent"
},
{
"payload": {
"client_transmitted": 751379949
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 751379949,
"server_received": 751380267,
"server_transmitted": 751380358
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 752450993
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 752450993,
"server_received": 752451316,
"server_transmitted": 752453520
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 753514576
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 753514576,
"server_received": 753514910,
"server_transmitted": 753515035
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 754646431
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 754646431,
"server_received": 754646714,
"server_transmitted": 754646821
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 755682633
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 755682633,
"server_received": 755682990,
"server_transmitted": 755683086
},
"type": "server/time"
},
{
"type": "other-sent"
}
]
}Server log
RAWsendspin-server-cpp: dialing ws://127.0.0.1:19962/sendspin for playback
sendspin-server-cpp: "SendspinKit-client" at 127.0.0.1:19962 connected
listener: client SendspinKit-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": "cwwnSKz1hngj0G3mCWrN2jHH0PokV67qshTGjC-2LTg",
"discovery_method": "registry",
"peer_hello": {
"type": "client/hello",
"payload": {
"name": "SendspinKit-client",
"supported_pair_methods": {
"pairing_psk": {
"locations": [
"operator"
]
}
},
"device_info": {
"product_name": "Mac",
"manufacturer": "Apple",
"software_version": "Version 26.6.2 (Build 25G83)"
},
"unpaired_access": {
"enabled": true
},
"supported_roles": [
"player@v1"
],
"player@v1_support": {
"supported_formats": [
{
"channels": 1,
"sample_rate": 8000,
"codec": "pcm",
"bit_depth": 16
}
],
"buffer_capacity": 960000
}
}
},
"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": [
{
"payload": {
"client_transmitted": 750285005
},
"type": "client/time"
},
{
"type": "server/time",
"payload": {
"client_transmitted": 750285005,
"server_received": 750285208,
"server_transmitted": 750285275
}
},
{
"payload": {
"client_transmitted": 750367685
},
"type": "client/time"
},
{
"type": "server/time",
"payload": {
"client_transmitted": 750367685,
"server_received": 750368024,
"server_transmitted": 750368108
}
},
{
"type": "other-sent"
},
{
"payload": {
"client_transmitted": 751379949
},
"type": "client/time"
},
{
"type": "server/time",
"payload": {
"client_transmitted": 751379949,
"server_received": 751380267,
"server_transmitted": 751380358
}
},
{
"payload": {
"client_transmitted": 752450993
},
"type": "client/time"
},
{
"type": "server/time",
"payload": {
"client_transmitted": 752450993,
"server_received": 752451316,
"server_transmitted": 752453520
}
},
{
"payload": {
"client_transmitted": 753514576
},
"type": "client/time"
},
{
"type": "server/time",
"payload": {
"client_transmitted": 753514576,
"server_received": 753514910,
"server_transmitted": 753515035
}
},
{
"payload": {
"client_transmitted": 754646431
},
"type": "client/time"
},
{
"type": "server/time",
"payload": {
"client_transmitted": 754646431,
"server_received": 754646714,
"server_transmitted": 754646821
}
},
{
"payload": {
"client_transmitted": 755682633
},
"type": "client/time"
},
{
"type": "server/time",
"payload": {
"client_transmitted": 755682633,
"server_received": 755682990,
"server_transmitted": 755683086
}
},
{
"type": "other-sent"
}
],
"client": {
"client_id": "8qwBuoD3m2kBRq2EvEZg31qMKjCE-oja3acHOG6UFmI",
"name": "SendspinKit-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": [
{
"channels": 1,
"sample_rate": 8000,
"codec": "pcm",
"bit_depth": 16
}
]
},
{
"event": "audio_chunks_observed",
"chunk_count": 50,
"first_timestamp_us": 750878935,
"last_timestamp_us": 755778935
}
]
}
}
}
}
Client summary (JSON)
RAW{
"audio": {
"audio_chunk_count": 50,
"received_pcm_sha256": "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e",
"received_sample_count": 40000
},
"client_id": "SendspinKit-client-id",
"client_name": "SendspinKit-client",
"implementation": "SendspinKit",
"initiator_role": "server",
"peer_hello": {
"payload": {
"name": "sendspin-server-cpp server",
"server_id": "cwwnSKz1hngj0G3mCWrN2jHH0PokV67qshTGjC-2LTg"
},
"type": "server/hello"
},
"preferred_codec": "pcm",
"protocol": {
"assertions": {
"CORE-001": {
"detail": "Public hello then activation observed; SDK handshake driver enforces frame ordering and types",
"events": [
{
"event": "handshake_completed",
"evidence_source": "Public serverConnected follows SDK handshake completion",
"server_id": "cwwnSKz1hngj0G3mCWrN2jHH0PokV67qshTGjC-2LTg",
"timestamp": 1792567267.0285192
},
{
"active_roles": [
"player@v1"
],
"event": "server_activate_accepted",
"timestamp": 1792567267.028657
},
{
"event": "initial_client_state_gate_satisfied",
"evidence_source": "SDK activation sends initial client/state before admitting role data",
"timestamp": 1792567267.028661
},
{
"event": "first_audio_chunk",
"server_timestamp_us": 750878935,
"timestamp": 1792567267.113724
},
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"event": "stream_start_observed",
"sample_rate": 8000,
"timestamp": 1792567267.512831
}
],
"status": "passed"
},
"CORE-002": {
"detail": "No player stream observed before activation; SDK gates application messages",
"events": [
{
"event": "handshake_completed",
"evidence_source": "Public serverConnected follows SDK handshake completion",
"server_id": "cwwnSKz1hngj0G3mCWrN2jHH0PokV67qshTGjC-2LTg",
"timestamp": 1792567267.0285192
},
{
"active_roles": [
"player@v1"
],
"event": "server_activate_accepted",
"timestamp": 1792567267.028657
},
{
"event": "initial_client_state_gate_satisfied",
"evidence_source": "SDK activation sends initial client/state before admitting role data",
"timestamp": 1792567267.028661
},
{
"event": "first_audio_chunk",
"server_timestamp_us": 750878935,
"timestamp": 1792567267.113724
},
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"event": "stream_start_observed",
"sample_rate": 8000,
"timestamp": 1792567267.512831
}
],
"status": "passed"
},
"CORE-003": {
"detail": "Activated roles match advertised roles with configured support objects",
"events": [
{
"event": "handshake_completed",
"evidence_source": "Public serverConnected follows SDK handshake completion",
"server_id": "cwwnSKz1hngj0G3mCWrN2jHH0PokV67qshTGjC-2LTg",
"timestamp": 1792567267.0285192
},
{
"active_roles": [
"player@v1"
],
"event": "server_activate_accepted",
"timestamp": 1792567267.028657
},
{
"event": "initial_client_state_gate_satisfied",
"evidence_source": "SDK activation sends initial client/state before admitting role data",
"timestamp": 1792567267.028661
},
{
"event": "first_audio_chunk",
"server_timestamp_us": 750878935,
"timestamp": 1792567267.113724
},
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"event": "stream_start_observed",
"sample_rate": 8000,
"timestamp": 1792567267.512831
}
],
"status": "passed"
},
"CORE-004": {
"detail": "SDK sends initial client/state during activation before admitting role binary data; no public outbound-state trace is available",
"events": [
{
"event": "handshake_completed",
"evidence_source": "Public serverConnected follows SDK handshake completion",
"server_id": "cwwnSKz1hngj0G3mCWrN2jHH0PokV67qshTGjC-2LTg",
"timestamp": 1792567267.0285192
},
{
"active_roles": [
"player@v1"
],
"event": "server_activate_accepted",
"timestamp": 1792567267.028657
},
{
"event": "initial_client_state_gate_satisfied",
"evidence_source": "SDK activation sends initial client/state before admitting role data",
"timestamp": 1792567267.028661
},
{
"event": "first_audio_chunk",
"server_timestamp_us": 750878935,
"timestamp": 1792567267.113724
},
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"event": "stream_start_observed",
"sample_rate": 8000,
"timestamp": 1792567267.512831
}
],
"status": "passed"
},
"PLAYER-001": {
"detail": "Selected advertised PCM format and observed monotonically timestamped audio chunks",
"events": [
{
"event": "handshake_completed",
"evidence_source": "Public serverConnected follows SDK handshake completion",
"server_id": "cwwnSKz1hngj0G3mCWrN2jHH0PokV67qshTGjC-2LTg",
"timestamp": 1792567267.0285192
},
{
"active_roles": [
"player@v1"
],
"event": "server_activate_accepted",
"timestamp": 1792567267.028657
},
{
"event": "initial_client_state_gate_satisfied",
"evidence_source": "SDK activation sends initial client/state before admitting role data",
"timestamp": 1792567267.028661
},
{
"event": "first_audio_chunk",
"server_timestamp_us": 750878935,
"timestamp": 1792567267.113724
},
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"event": "stream_start_observed",
"sample_rate": 8000,
"timestamp": 1792567267.512831
}
],
"status": "passed"
}
},
"spec_revision": "8c9577ea8719ad082d051ec13cc73ef15ed68948"
},
"role": "client",
"scenario_id": "server-initiated-protocol-baseline-v1",
"server": {
"name": "sendspin-server-cpp server",
"server_id": "cwwnSKz1hngj0G3mCWrN2jHH0PokV67qshTGjC-2LTg"
},
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"codec_header": null,
"sample_rate": 8000
}
}Client log
RAW[ADAPTER] Listening for server connection on ws://127.0.0.1:19962/sendspin
[ADAPTER] Connected to server: sendspin-server-cpp server
[ADAPTER] Stream started: pcm 8000Hz 1ch 16bit
[ADAPTER] Transport receive error: POSIXErrorCode(rawValue: 96): No message available on STREAM
[ADAPTER] Stream ended
{
"audio" : {
"audio_chunk_count" : 50,
"received_pcm_sha256" : "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e",
"received_sample_count" : 40000
},
"client_id" : "SendspinKit-client-id",
"client_name" : "SendspinKit-client",
"implementation" : "SendspinKit",
"initiator_role" : "server",
"peer_hello" : {
"payload" : {
"name" : "sendspin-server-cpp server",
"server_id" : "cwwnSKz1hngj0G3mCWrN2jHH0PokV67qshTGjC-2LTg"
},
"type" : "server\/hello"
},
"preferred_codec" : "pcm",
"protocol" : {
"assertions" : {
"CORE-001" : {
"detail" : "Public hello then activation observed; SDK handshake driver enforces frame ordering and types",
"events" : [
{
"event" : "handshake_completed",
"evidence_source" : "Public serverConnected follows SDK handshake completion",
"server_id" : "cwwnSKz1hngj0G3mCWrN2jHH0PokV67qshTGjC-2LTg",
"timestamp" : 1792567267.0285192
},
{
"active_roles" : [
"player@v1"
],
"event" : "server_activate_accepted",
"timestamp" : 1792567267.028657
},
{
"event" : "initial_client_state_gate_satisfied",
"evidence_source" : "SDK activation sends initial client\/state before admitting role data",
"timestamp" : 1792567267.028661
},
{
"event" : "first_audio_chunk",
"server_timestamp_us" : 750878935,
"timestamp" : 1792567267.113724
},
{
"bit_depth" : 16,
"channels" : 1,
"codec" : "pcm",
"event" : "stream_start_observed",
"sample_rate" : 8000,
"timestamp" : 1792567267.512831
}
],
"status" : "passed"
},
"CORE-002" : {
"detail" : "No player stream observed before activation; SDK gates application messages",
"events" : [
{
"event" : "handshake_completed",
"evidence_source" : "Public serverConnected follows SDK handshake completion",
"server_id" : "cwwnSKz1hngj0G3mCWrN2jHH0PokV67qshTGjC-2LTg",
"timestamp" : 1792567267.0285192
},
{
"active_roles" : [
"player@v1"
],
"event" : "server_activate_accepted",
"timestamp" : 1792567267.028657
},
{
"event" : "initial_client_state_gate_satisfied",
"evidence_source" : "SDK activation sends initial client\/state before admitting role data",
"timestamp" : 1792567267.028661
},
{
"event" : "first_audio_chunk",
"server_timestamp_us" : 750878935,
"timestamp" : 1792567267.113724
},
{
"bit_depth" : 16,
"channels" : 1,
"codec" : "pcm",
"event" : "stream_start_observed",
"sample_rate" : 8000,
"timestamp" : 1792567267.512831
}
],
"status" : "passed"
},
"CORE-003" : {
"detail" : "Activated roles match advertised roles with configured support objects",
"events" : [
{
"event" : "handshake_completed",
"evidence_source" : "Public serverConnected follows SDK handshake completion",
"server_id" : "cwwnSKz1hngj0G3mCWrN2jHH0PokV67qshTGjC-2LTg",
"timestamp" : 1792567267.0285192
},
{
"active_roles" : [
"player@v1"
],
"event" : "server_activate_accepted",
"timestamp" : 1792567267.028657
},
{
"event" : "initial_client_state_gate_satisfied",
"evidence_source" : "SDK activation sends initial client\/state before admitting role data",
"timestamp" : 1792567267.028661
},
{
"event" : "first_audio_chunk",
"server_timestamp_us" : 750878935,
"timestamp" : 1792567267.113724
},
{
"bit_depth" : 16,
"channels" : 1,
"codec" : "pcm",
"event" : "stream_start_observed",
"sample_rate" : 8000,
"timestamp" : 1792567267.512831
}
],
"status" : "passed"
},
"CORE-004" : {
"detail" : "SDK sends initial client\/state during activation before admitting role binary data; no public outbound-state trace is available",
"events" : [
{
"event" : "handshake_completed",
"evidence_source" : "Public serverConnected follows SDK handshake completion",
"server_id" : "cwwnSKz1hngj0G3mCWrN2jHH0PokV67qshTGjC-2LTg",
"timestamp" : 1792567267.0285192
},
{
"active_roles" : [
"player@v1"
],
"event" : "server_activate_accepted",
"timestamp" : 1792567267.028657
},
{
"event" : "initial_client_state_gate_satisfied",
"evidence_source" : "SDK activation sends initial client\/state before admitting role data",
"timestamp" : 1792567267.028661
},
{
"event" : "first_audio_chunk",
"server_timestamp_us" : 750878935,
"timestamp" : 1792567267.113724
},
{
"bit_depth" : 16,
"channels" : 1,
"codec" : "pcm",
"event" : "stream_start_observed",
"sample_rate" : 8000,
"timestamp" : 1792567267.512831
}
],
"status" : "passed"
},
"PLAYER-001" : {
"detail" : "Selected advertised PCM format and observed monotonically timestamped audio chunks",
"events" : [
{
"event" : "handshake_completed",
"evidence_source" : "Public serverConnected follows SDK handshake completion",
"server_id" : "cwwnSKz1hngj0G3mCWrN2jHH0PokV67qshTGjC-2LTg",
"timestamp" : 1792567267.0285192
},
{
"active_roles" : [
"player@v1"
],
"event" : "server_activate_accepted",
"timestamp" : 1792567267.028657
},
{
"event" : "initial_client_state_gate_satisfied",
"evidence_source" : "SDK activation sends initial client\/state before admitting role data",
"timestamp" : 1792567267.028661
},
{
"event" : "first_audio_chunk",
"server_timestamp_us" : 750878935,
"timestamp" : 1792567267.113724
},
{
"bit_depth" : 16,
"channels" : 1,
"codec" : "pcm",
"event" : "stream_start_observed",
"sample_rate" : 8000,
"timestamp" : 1792567267.512831
}
],
"status" : "passed"
}
},
"spec_revision" : "8c9577ea8719ad082d051ec13cc73ef15ed68948"
},
"role" : "client",
"scenario_id" : "server-initiated-protocol-baseline-v1",
"server" : {
"name" : "sendspin-server-cpp server",
"server_id" : "cwwnSKz1hngj0G3mCWrN2jHH0PokV67qshTGjC-2LTg"
},
"status" : "ok",
"stream" : {
"bit_depth" : 16,
"channels" : 1,
"codec" : "pcm",
"codec_header" : null,
"sample_rate" : 8000
}
}
[ADAPTER] Summary written to artifacts/results/data/macos__server-initiated-protocol-baseline-v1__sendspin-server-cpp__to__SendspinKit/client-summary.json
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 · SendspinKit-client · built · 44.96s
RAWdspinKit DiscoveredServer.swift [73/110] Compiling SendspinKit ServerDiscovery.swift [74/110] Compiling SendspinKit Log.swift [75/110] Compiling SendspinKit ActivateMessages.swift [76/110] Compiling SendspinKit ArtworkModels.swift [77/110] Compiling SendspinKit AudioCodec.swift [78/110] Compiling SendspinKit AudioFormatSpec.swift [79/110] Compiling SendspinKit BinaryMessage.swift [80/110] Compiling SendspinKit ClientRole.swift [81/110] Compiling SendspinKit ClientStateMessages.swift [82/110] Compiling SendspinKit CommandMessages.swift [83/110] Compiling SendspinKit GoodbyeMessage.swift [84/110] Compiling SendspinKit HelloMessages.swift [85/110] Compiling SendspinKit InitMessages.swift [86/110] Compiling SendspinKit LeaveMessage.swift [87/110] Compiling SendspinKit PairingMessages.swift [88/110] Compiling SendspinKit SendspinMessage.swift [89/110] Compiling SendspinKit ServerStateMessages.swift [90/110] Compiling SendspinKit StreamMessages.swift [91/110] Compiling SendspinKit TimeMessages.swift [92/110] Compiling SendspinKit VisualizerBinaryPayload.swift [93/110] Compiling SendspinKit SaturatingArithmetic.swift [94/110] Compiling SendspinKit SendspinKit.swift [95/110] Compiling SendspinKit ClockSyncProtocol.swift [96/110] Compiling SendspinKit ClockSynchronizer.swift [97/110] Compiling SendspinKit MonotonicClock.swift [98/110] Compiling SendspinKit SendspinTimeFilter.swift [99/110] Compiling SendspinKit TimeFilterSnapshot.swift [100/110] Compiling SendspinKit FrameInbox.swift [101/110] Compiling SendspinKit NWWebSocketTransport.swift [102/110] Compiling SendspinKit NoiseChannel.swift [103/110] Compiling SendspinKit NoiseSessionEstablisher.swift [104/110] Compiling SendspinKit SendspinEncoding.swift [105/110] Compiling SendspinKit SendspinTransport.swift [106/110] Compiling SendspinKit TransportError.swift [107/110] Compiling SendspinKit WatermarkedSink.swift [108/112] Compiling ConformanceSendspinKitClient main.swift [109/112] Emitting module ConformanceSendspinKitClient [109/112] Write Objects.LinkFileList [110/112] Linking ConformanceSendspinKitClient [111/112] Applying ConformanceSendspinKitClient Build complete! (32.67s) Fetching https://github.com/sbooth/ogg-binary-xcframework.git Fetching https://github.com/sbooth/flac-binary-xcframework.git [1/23] Fetching ogg-binary-xcframework [24/55] Fetching ogg-binary-xcframework, flac-binary-xcframework Fetched https://github.com/sbooth/flac-binary-xcframework.git from cache (0.68s) Fetched https://github.com/sbooth/ogg-binary-xcframework.git from cache (0.69s) Fetching https://github.com/jedisct1/swift-sodium.git [1/5013] Fetching swift-sodium Fetched https://github.com/jedisct1/swift-sodium.git from cache (4.94s) Creating working copy for https://github.com/sbooth/ogg-binary-xcframework.git Creating working copy for https://github.com/jedisct1/swift-sodium.git Creating working copy for https://github.com/sbooth/flac-binary-xcframework.git Working copy of https://github.com/sbooth/flac-binary-xcframework.git resolved at 0.2.0 Working copy of https://github.com/sbooth/ogg-binary-xcframework.git resolved at 0.1.3 Working copy of https://github.com/jedisct1/swift-sodium.git resolved at 0.9.1 Downloading binary artifact https://github.com/sbooth/flac-binary-xcframework/releases/download/0.2.0/FLAC.xcframework.zip Downloading binary artifact https://github.com/sbooth/ogg-binary-xcframework/releases/download/0.1.3/ogg.xcframework.zip [15516/618747] Downloading https://github.com/sbooth/ogg-binary-xcframework/releases/download/0.1.3/ogg.xcframework.zip [80803/4541165] Downloading https://github.com/sbooth/ogg-binary-xcframework/releases/download/0.1.3/ogg.xcframework.zip, https://github.com/sbooth/flac-binary-xcframework/releases/download/0.2.0/FLAC.xcframework.zip Downloaded https://github.com/sbooth/ogg-binary-xcframework/releases/download/0.1.3/ogg.xcframework.zip (0.52s) Downloaded https://github.com/sbooth/flac-binary-xcframework/releases/download/0.2.0/FLAC.xcframework.zip (0.71s)