Skip to content

Catalogo de ADRs

RTMS Bot / Joaquin Yarsky edited this page Oct 3, 2026 · 2 revisions

Catálogo de Registros de Decisión Arquitectónica (ADRs)

Este catálogo documenta las 24 decisiones técnicas formales que gobiernan la arquitectura, seguridad, concurrencia y persistencia de RTMS. Cada ADR sigue el estándar de ingeniería MADR (Markdown Architectural Decision Records).


📊 Matriz Resumen de Decisiones

ID Título de la Decisión Estado Subsistema Impactado Decisión Clave
ADR-0001 Adopción de MediaMTX como Broker Central Accepted Red & Ingesta Uso de broker Go mono-binario para multiplexión 1-a-N sin duplicar transcodificación.
ADR-0002 Negociación Dinámica de Formatos DirectShow Accepted Captura USB Priorización de entrada MJPEG sobre RAW para reducir uso del bus USB 2.0/3.0.
ADR-0003 Cifrado Simétrico Passphrase SRT Accepted Seguridad en Red Cifrado AES-128 nativo en sockets SRT sin degradación de latencia.
ADR-0004 Verificador Ineludible por Reloj Óptico Accepted Verificación E2E Código de barras óptico binario de 64 bits para auditar latencia con precisión de 1 ms.
ADR-0005 Distribución UDP Multicast LAN Accepted Red Local Mapeo determinista en rango 239.255.0.x y paquetes MTU de 1316 bytes.
ADR-0006 Desacoplamiento FastAPI y System Tray Accepted Concurrencia Ejecución de FastAPI y WebView2 en hilos separados sincronizados vía callbacks thread-safe.
ADR-0007 Priorización de Encoders por Hardware Accepted Codificación Detección única en arranque: NVENC > QSV > AMF > CPU libx264.
ADR-0008 Sanitización y Descripciones Canónicas Accepted Gobernanza Git Catálogo inmutable de 32 elementos raíz con longitud estricta <45 caracteres.
ADR-0009 Blindaje Kernel con Win32 Job Objects Accepted Ciclo de Vida Flag KILL_ON_JOB_CLOSE para erradicación determinista de procesos zombies en caídas.
ADR-0010 Persistencia Transaccional SQLite WAL Accepted Almacenamiento Migración de config.json a rtms.db bajo WAL con respaldo inmutable previo.
ADR-0011 Cifrado en Reposo con Windows DPAPI Accepted Seguridad Local Cifrado de passphrases en reposo usando CryptProtectData ligado a la cuenta del SO.
ADR-0012 Prevención de Suspensión y Reloj 1 ms Accepted Kernel & SO SetThreadExecutionState, timeBeginPeriod(1) y PnPCapabilities = 24.
ADR-0013 Control de Instancia Única Named Mutex Accepted Sistema Operativo Mutex Global\RTMS_SingleInstance_Mutex para evitar colisiones de puertos y hardware.
ADR-0014 Coalescencia Single-Flight DirectShow Accepted Hardware USB Caché con TTL de 4 segundos y suscripción concurrente para evitar ráfagas en USB.
ADR-0015 Hub Reactivo de Telemetría a 10 Hz Accepted WebSockets Ticker asíncrono que solo consume CPU cuando hay al menos 1 suscriptor WebSocket conectado.
ADR-0016 Control de Admisión MJPEG On-Demand Accepted Multimedia Semáforo de admisión (máx 3 slots) y extractor de cuadros binario SOI/EOI con tope 4 MB.
ADR-0017 Taxonomía de Errores, FSM y Watchdog Accepted Tolerancia a Fallos Clasificación semántica de excepciones y watchdog a 2 Hz con backoff $T = \min(2^k, 30)$ s.
ADR-0018 Seguridad Tokens y Tickets Efímeros Accepted Seguridad API Tokens URLSafe de 32 bytes, prohibición de query tokens y tickets efímeros single-use.
ADR-0019 Interfaz WebView2 y System Tray Accepted UI de Escritorio Ventana nativa Edge Chromium desacoplada con bomba de mensajes Win32 y VSync a 60 FPS.
ADR-0020 Afinidad P-Cores en CPUs Híbridas Accepted Kernel & Silicio Pinning de FFmpeg/MediaMTX en P-Cores con GetLogicalProcessorInformationEx y HIGH_PRIORITY_CLASS.
ADR-0021 Bloqueo Auto-Exposición DirectShow UVC Accepted Captura Óptica Shutter manual <= 1/60s via COM IAMCameraControl erradicando caída invisible a 15-20 FPS.
ADR-0022 Ciclo Lazy y Apagado Suave MediaMTX Accepted Recursos & Broker Inicio bajo demanda para SRT/WebRTC con gracia de 20s reduciendo RAM ociosa en >75%.
ADR-0023 Canonicidad UDP Unicast LAN Accepted Red & Protocolos UDP Unicast punto a punto recomendado en LAN (P50 <= 40 ms), sintaxis OBS limpia y VLC 300 ms.
ADR-0024 Preservación de Aspect Ratio y Micro-VBV Accepted FFmpeg & Video Prioridad MJPEG en 1080p, filtro padding 16:9 y micro-búfer VBV a 1.5 cuadros eliminando bufferbloat.

🔍 Navegación Directa a Registros

Clone this wiki locally