Skip to content

RTC-02 — Mezcla compartida dirigida por facilitación con handoff suave #98

Description

@nicoechaniz

Problema

La mezcla Beacon/Sesión hoy es personal. Durante momentos dramaturgicos concretos, facilitación necesita conducir temporalmente ese balance para toda la audiencia sin producir saltos, dobles fuentes ni pérdida de control local posterior.

Resultado

Un override de mezcla session-scoped, temporal, explícito y observable. Mientras está activo, cada participante ve el valor dirigido y entiende por qué su control personal no gobierna. Al liberarse o expirar, la app vuelve suavemente al valor local que la persona ya tenía.

Diseño de estado antes de código

  • Comparar transporte y persistencia (estado durable + canal de actualización) y documentar por qué la opción elegida reconcilia refresh, reconnect y clientes tardíos.
  • Estado mínimo: sessionId, valor normalizado, revisión monotónica, actor/capability, activación, vencimiento y estado released/expired; sin PII en broadcast.
  • Sólo el facilitador asignado o FACILITATOR_OP asignado puede dirigir la mezcla; admin conserva únicamente liberación de emergencia según UX-02 — Define capabilities and add FACILITATOR_OP safely #66.
  • El valor local nunca se destruye. Override y preferencia personal son estados separados y producen un único effectiveMix.
  • Eventos stale/out-of-order no pueden restaurar un override vencido. Ausencia de conectividad converge al estado durable actual.
  • Release, expiry, cierre de evento y pérdida de autorización convergen al mix personal mediante una rampa acotada y medible, no un salto.

Experiencia

  • Cockpit: control con valor, duración/estado y acción clara de liberar.
  • Participante: mensaje ES/EN “La facilitación está guiando el balance”, valor visible y control personal preservado pero temporalmente no efectivo.
  • El cambio nunca vuelve a pedir activación de audio, remonta rooms ni crea elementos/tracks adicionales.
  • Reduced motion no elimina la rampa acústica necesaria para evitar discontinuidad.

Bucle reproducir → medir → implementar → verificar

  • Prototipo de estados active/released/expired/offline aprobado antes de tocar runtime acústico.
  • Unit tests cubren curva/rampa, extremos, release, expiry, revisiones stale y conservación del mix personal.
  • Integración cubre dos clientes, late join, refresh, reconexión y reloj desfasado.
  • E2E instrumentado exige un room por propósito, un elemento por track, cero disconnects y una sola activación durante múltiples overrides.
  • Escucha física en iPhone Safari, Android Chrome y escritorio confirma transición audible, predecible y sin clicks/saltos.
  • Al cerrar/revocar evento no queda override huérfano.

Guardrail obligatorio

Este trabajo modifica gain/crossfader compartido: lleva audio-touching, requiere evidencia acústica y aprobación explícita de Nico antes de merge/deploy. No cambiar codec, bitrate, sample rate o buffer como efecto lateral.

Relaciones

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

audio-touchingTouches frozen audio behavior and requires Nico approvaldesign-researchExperience concept or prototype required before implementationenhancementNew feature or requestux-professionalizationProfessional Harmonic Beacon product experience and UI/UXws2-session-room

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions