S42 · Media & Entertainment Control

Declared state: built, not well structured.

This is the repository plan and evidence, not a live health reading. A task marked done may still depend on credentials, devices, deployment or a newer acceptance test.

Dependencies

S15

Tasks and gates

42.F1 · **Stop routes to whichever path is playing** — desktop or music room; the two now ask

Tier F · done · Verification: hermetic-test

Gate: `test_localplay_routing.py`

  • unverified-import · undated · docs/SYSTEMS-DETAILS.md:4138

42.F2 · One playback-state owner, so "what's playing" has a single answer.

Tier F · done · Verification: hermetic-test

Gate: `test_localplay_routing.py` [7]

  • recorded-note · 2026-09-12 · docs/SYSTEMS-DETAILS.md:4140

42.F3 · Volume and mute are the same concepts across paths.

Tier F · done · Verification: hermetic-test

Gate: `test_audio_output_switch.py` [7]

  • recorded-note · 2026-09-12 · docs/SYSTEMS-DETAILS.md:4151

42.R1 · Queue and history — "play that again", "skip", "what was the last one".

Tier R · done · Verification: hermetic-test

Gate: `test_media_queue.py` [history] + [skip] - every browser play is recorded (capped, on disk); play_music last=true names it without playing, again=true reopens it; media_pause action next/previous sends the track keys and an unknown action is refused, not toggled.

  • hermetic-green · 2026-10-17 · bench/test_media_queue.py

42.R2 · Context-aware playback: pause on a call, duck on speech, resume after.

Tier R · open · Verification: planned-test

Gate: new `test_media_queue.py` - planned gate. `test_media_queue.py` [ducking]

    42.R3 · Taste memory feeding S15's media domain. *gate:* `test_recommend.py` [media]

    Tier R · open · Verification: hermetic-test

    Gate: `test_recommend.py` [media]

      42.E1 · A week of daily use with zero "nothing is playing" when something is.

      Tier E · open · Verification: manual

      Gate: media log review.

        HUD screen contracts

        All subsystems · Source: docs/systems-plan.json.