97d2ddd573
Root cause of 'no sound', found via the live readout: the operator's /api/ring returned the ring WITHOUT the per-scale audio field (a server process predating the audio code) → soundtrackUrl() was null → the element never got a src (readyState 0, no error). The native test player proved the file itself plays. Fix: client falls back to a scale-id→soundtrack map (mirrors build_pool_manifest.SCALE_AUDIO) so audio works without a server restart. Verified: stale-ring sim now plays; audio-first-then- video leaves both on. +2 E2E regression tests (7 total). Chromium + WebKit clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>