dec-0054

Vista generada de dec-0054: TransportSignals

ImplementadoSin versión del tren todavía· generada desde docs/decisions/dec-0054-transportsignals-data-plane-reporta-rtt.md
track/docsdec-0124track/docs:DC10

Vista generada desde docs/decisions/dec-0054-transportsignals-data-plane-reporta-rtt.md. No se edita a mano: bun run docs:gen la regenera y bun run docs:check falla si difiere. El estado aquí es el del model: si discrepa con otra página, manda el model.

CampoValor
EstadoLOCKED (migrado de un rNN por gate-3: el fichero no declara estado)
Referencia legadar40-L3
Ficherodocs/decisions/dec-0054-transportsignals-data-plane-reporta-rtt.md

Enmendado o sustituido por: r46, r60, r61

Por qué importa (del frontmatter del ADR):

native/zig/media-core/observability/transport_signals.zig (código real, usado en media-daemon/main.zig, ipc/control.zig, moqt_*). Además r60 §D3 (2026-07-15) RECHAZA explícitamente 'Runtime Optimizer' como entidad cross-plane citando textualmente violación de 'r40 TransportSignals report-not-decide' — es la evidencia más fuerte de las 5: un ADR posterior defendió activamente este invariante contra una propuesta competidora.

Nodos del roadmap que lo citan en refs: ninguno.

Páginas de la documentación que lo citan: ninguna todavía.

Texto del ADR

Leído de docs/decisions/dec-0054-transportsignals-data-plane-reporta-rtt.md, el fichero canónico.

TransportSignals

TransportSignals: data plane REPORTA (rtt/loss/bps), control plane DECIDE (TAKE from iroh-live)

Por qué pasa gate-3

  • Hard-to-reverse: La separación estricta report/decide está codificada en la arquitectura de IPC entre daemon Zig (exponer señales) y Bun (PlaybackPlanner decide). Hacer que el data plane decida por su cuenta violaría la separación de planos r02 y requeriría mover lógica de decisión al daemon Zig.
  • Surprising sin contexto: Un ingeniero podría esperar que el data plane ajuste bitrate automáticamente (ABR clásico como Jellyfin). El invariante 'data plane NUNCA hace ABR-downgrade por su cuenta' NO es inferible sin el ADR y el contraste explícito con Jellyfin MaxStreamingBitrate=8Mbps hardcodeado.
  • Trade-off real: Alternativa rechazada explícita: ABR clásico (data plane decide downgrade como Jellyfin). Trade-off: complejidad de IPC + PlaybackPlanner que debe interpretar señales vs simplicidad de 'data plane auto-ajusta'. Se rechazó porque el downgrade sin medir el link (Jellyfin) es ignorancia de condiciones reales de red.

Procedencia

Split de docs/decisions/r40-scheduler-cache-mechanics-harvest-2026-06-30.md (lock r40-L3) durante PASO 7 (2026-07-16). Ver el fichero padre para el contexto completo del pack original.