--- id: NL-SPEC-FEE98E07 type: spec title: Event-driven audio state --- # Event-driven audio state ## Outcome The shell reports audio, playback, and privacy facts without continuously capturing audio samples. Idle audio devices remain free to suspend. ## Requirements - Output and input activity reflect active audio-graph links and mute state. - Playback activity reflects the active media player's playback state. - Volume and mute remain live, controllable properties. - Microphone and camera privacy indication retains its behavior. - The shell owns no continuous amplitude capture stream and performs no periodic level smoothing. - No state contract exposes amplitude levels or describes nonexistent peak capture. - Link presence is an acceptable activity proxy even when device suspension follows later. ## Acceptance - An idle shell creates no peak-monitor capture node and causes no audio-level polling wakeup. - Media energy is `1` while playing and `0` while paused or stopped. - Audio controls, default-device selection, and mute controls work. - Microphone and camera indicators follow live use. - Audio and media state serialize without missing-property or load errors. - With no playback, the sink can become idle or suspended and sustained shell CPU remains below the former baseline. ## Out of scope - Amplitude meters, waveforms, and VU displays. - Resource polling unrelated to audio.