# PLAN — Reproductor de sonido (`AudioPlayer`) > **⛔ GATE RECHAZADO — PLAN SUSPENDIDO (2026-07-31).** La cuarta presentación > se presentó y el usuario la **rechazó de raíz**: el sistema de sonido sobre el > que este plan se apoya está mal planteado — nació de los diseños de otros > módulos (sema, media-player) y se parchea en función de lo que había, en vez > de partir de su función: **orquestador de todos los aspectos del sonido del > framework**, al nivel de `motion` / `timers`. El sonido se rediseña clean-room > como módulo independiente ([`PLAN-sound-redesign.md`](./PLAN-sound-redesign.md)) > y los consumidores se adaptan a él. Este plan se re-planteará DESPUÉS, sobre > el servicio nuevo; nada de lo de abajo se implementa. Las **mediciones** de F0 > (§8.5–§8.7: H-1, H-9, H-10, segmentos 1 de 6) siguen siendo hechos válidos > del terreno y el plan nuevo las hereda como conocimiento. > > **El re-plan EXISTE (2026-07-31): [`PLAN-audio-player-v2.md`](./PLAN-audio-player-v2.md)** > — anclado al servicio, con su gate D-AP2.1…13. Este fichero queda como > ARCHIVO de los hechos y el análisis que el v2 referencia (§2 matriz · §6 > formas · §7 contrato · §8.5–§8.7 evidencia). > **Tipo**: plan de creación por fases (process — efímero, NO fuente de verdad). > **Fecha**: 2026-07-30 · **Estado**: **🔏 EN EL GATE, CONSOLIDADO (3.ª pasada)** — > `$sound` existe y su invariante está medida ([`PLAN-sound-engine.md`](./PLAN-sound-engine.md)); > las verificaciones de F0 están **HECHAS**, con su evidencia (§8.5 · §8.6 · §8.7). > Decisiones **D-AP.1…D-AP.13 SIN FIRMAR** — y el gate **ya no se mueve**: tres > pasadas lo movieron tres veces (D-AP.7 corregida dos veces, D-AP.12 → v2, > D-AP.13 al final); la cuarta presentación **se firma o se rechaza, no se > re-excava**. No se escribe una línea de código antes de la firma. > **Kickoff para sesión nueva**: *"Lee `docs/process/PLAN-audio-player.md` y > presenta el gate de §4 — las verificaciones ya están hechas; re-auditar antes > de la firma está prohibido."* > > ### ✅ Correcciones incorporadas (sesión 2026-07-30) > > Las 5 correcciones que colgaban de esta cabecera **ya están en el cuerpo**: > > | # | Corrección | Dónde aterrizó | > | --- | --- | --- | > | 1 | Faltaba la reproducción de **segmentos** entera — y **Vidstack la tiene** (`clipStartTime`/`clipEndTime`), luego es **paridad pendiente, no superación** | fila nueva en la matriz §2 · **D-AP.12** · contrato §7.5 · §10 | > | 2 | **G-2** (pista secundaria del `Slider`) sube a **BLOQUEANTE** de v1: tres consumidores (buffer · ventana de clip · capítulos) | §8 · F1 | > | 3 | **D-AP.11** se reescribe contra el art: su premisa («no hay motor») era falsa | **D-AP.11** en §4 | > | 4 | Dos invariantes al contrato: `prefs.sound` **nunca** toca el volumen del contenido · el silencio de UI debe alcanzar al `Slider` compuesto | §7.6 | > | 5 | **D-AP.7** deja de ser regla de cascada y pasa a **ducking**, capacidad del motor | **D-AP.7** reescrita | > > Y las de la **segunda pasada (F0, 2026-07-30)**, también ya en el cuerpo: > H-1 ✅ con stamp real (→ G-4) · **H-9**: `sustain-loading` es un evento sin > emisor (decisión en D-AP.10) · **H-10** medido y re-diagnosticado → **G-5** > (el commit debe disparar en el RESULTADO, no en el clic) · segmentos = **1 de > 6** → **D-AP.12 pasa a v2** · **D-AP.7 corregida dos veces** (mecanismo: > resta de gain, no `channels`; criterio: incongruencia, no frecuencia) · > **D-AP.13** nueva: el scrubber duplica el contrato del `Slider` (§8.7). > > **Antes de escribir una línea de código**: presentar al usuario las decisiones > de §4 y obtener firma. Lo de aquí son **propuestas razonadas, no decisiones > tomadas** — regla A32 (`component-guide.md`) + §0.5 de > [`component-audit.md`](../guides/component-audit.md) ("Get the user's sign-off > on scope before writing any code"). > > **Precondición cumplida**: corpus doctrinal leído completo antes de auditar > (regla dura `feedback_read_full_doctrine_before_auditing`): README · overview · > active-architecture · CANON · morfo · sema · soma(+architecture) · eidos · > active-uix · active-app · packs · blocks · agent · TSC · recipe-contract · > vocabularies · component-guide · completion-checklist · component-audit · > demo-authoring · theming(reference/guide/notes/motion/motion-guide/channels/ > gradient-finish) · los 7 RFCs · book-deviations · design-text-effects · > design-chat-block · glossary · comparison · authoring · testing-and-tooling · > next-features · decisions · book-map · guía histórica · veredictos/_system/ > _naming/_cierre de la auditoría · `eidos/components/README.md` · `arts/README.md`. --- ## 0. Contexto — qué existe hoy y qué NO El ecosistema **ya tiene un reproductor**: `media-player`, genérico `