Problem
The spec defines controller.volume (0-100) and controller.muted (bool) in the server/state controller object. The harness:
- Surfaces them in
client_summary.controller.received_state.volume / muted (see aiosendspin_client.py:151-158 _normalize_controller_state).
- Surfaces them on the server side too (
aiosendspin_server.py:497-502).
- Never compares them —
runner.py:684-697 _compare_controller_summaries only asserts expected == received == sent for the command.
So a server that lies about volume (or omits muted) passes the controller scenario.
Proposed fix
- Extend
_compare_controller_summaries to assert the client's received_state.volume and muted equal the server's reported values.
- Parameterize the controller scenario (or add new scenarios) to cover non-default values —
volume=37, muted=true, etc.
Spec references
- "Server → Client:
server/state controller object"
- "Reading group volume" / "Reading group mute"
Problem
The spec defines
controller.volume(0-100) andcontroller.muted(bool) in theserver/statecontroller object. The harness:client_summary.controller.received_state.volume / muted(seeaiosendspin_client.py:151-158 _normalize_controller_state).aiosendspin_server.py:497-502).runner.py:684-697 _compare_controller_summariesonly assertsexpected == received == sentfor the command.So a server that lies about volume (or omits muted) passes the controller scenario.
Proposed fix
_compare_controller_summariesto assert the client'sreceived_state.volumeandmutedequal the server's reported values.volume=37,muted=true, etc.Spec references
server/statecontroller object"