Fix: populate config["stream"] from SOL_STREAM for muse hooks
dream.py passes the stream name as SOL_STREAM env var but not as a
top-level request key. prepare_config() merges request fields into the
agent config, but hooks reading config.get("stream") got None — causing
segment_path() to resolve the wrong directory (missing the stream layer).
This broke speaker_attribution's stub write: the hook found no .npz at
the wrong path and silently skipped writing speaker_labels.json, even
though the segment had embeddings at the correct stream-qualified path.
Fix: read SOL_STREAM in prepare_config() and set config["stream"] if
not already present. Same pattern used by _load_transcript() and output
path resolution.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>