-
Notifications
You must be signed in to change notification settings - Fork 0
Catalogo de ADRs
RTMS Bot / Joaquin Yarsky edited this page Oct 3, 2026
·
2 revisions
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).
| 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 |
| 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. |
- ADR-0001: MediaMTX como Broker Central
- ADR-0002: Formatos DirectShow
- ADR-0003: Cifrado Passphrase SRT
- ADR-0004: Reloj Óptico de Código de Barras
- ADR-0005: Distribución UDP Multicast
- ADR-0006: Asincronía FastAPI y System Tray
- ADR-0007: Priorización Encoders Hardware
- ADR-0008: Sanitización y Descripciones Canónicas
- ADR-0009: Blindaje con Win32 Job Objects
- ADR-0010: Persistencia SQLite WAL
- ADR-0011: Cifrado DPAPI en Reposo
- ADR-0012: Prevención de Suspensión y Reloj 1 ms
- ADR-0013: Named Mutex de Instancia Única
- ADR-0014: Single-Flight Caché DirectShow
- ADR-0015: Hub de Telemetría 10 Hz
- ADR-0016: Admisión MJPEG y Extractor SOI/EOI
- ADR-0017: Taxonomía de Errores y Watchdog
- ADR-0018: Tokens de Seguridad y Tickets
- ADR-0019: Escritorio Nativo WebView2
- ADR-0020: Afinidad P-Cores en CPUs Híbridas
- ADR-0021: Bloqueo Auto-Exposición UVC
- ADR-0022: Ciclo Lazy MediaMTX
- ADR-0023: Canonicidad UDP Unicast LAN
- ADR-0024: Aspect Ratio y Micro-VBV
RTMS (Real-Time Multicam System) — Ingeniería de Sistemas Audiovisuales de Misión Crítica
Desarrollado y mantenido por Joaquín Yarsky (joaquinyarsky@gmail.com)
Repositorio GitHub • Releases & Binarios • Historial de Cambios • Reporte de Seguridad • Licencia MIT
Documentación oficial generada y sincronizada automáticamente desde el repositorio.
- Vistas C4 del Sistema
- Modelo de Concurrencia e Hilos
- Contratos de Interfaz y Red
- Matriz de Trazabilidad
- 📚 Índice y Matriz de ADRs
- ADR-0001: Broker MediaMTX
- ADR-0002: Formatos DirectShow
- ADR-0003: Cifrado SRT AES-128
- ADR-0004: Reloj Óptico E2E
- ADR-0005: Distribución Multicast
- ADR-0006: Asincronía Tray/API
- ADR-0007: Priorización GPU
- ADR-0008: Sanitización de Datos
- ADR-0009: Win32 Job Objects
- ADR-0010: SQLite WAL ACID
- ADR-0011: Cifrado Windows DPAPI
- ADR-0012: Energía y Reloj 1 ms
- ADR-0013: Named Mutex Win32
- ADR-0014: Single-Flight Cache
- ADR-0015: Telemetría 10 Hz
- ADR-0016: Admisión MJPEG
- ADR-0017: FSM y Watchdog
- ADR-0018: Seguridad Tokens
- ADR-0019: WebView2 & Tray
- ADR-0020: Afinidad P-Cores
- ADR-0021: Control UVC 60 FPS
- ADR-0022: Ciclo Lazy MediaMTX
- ADR-0023: Canónico UDP Unicast
- ADR-0024: Aspect Ratio & VBV
- 📚 Índice de RFCs
- RFC-0001: Verificación Óptica
- RFC-0002: Multicámara <100ms
- RFC-0003: SQLite WAL Migrator
- RFC-0004: Previews Zero-Copy
- RFC-0005: Blindaje Resiliente
- RFC-0006: P-Cores & UVC Shutter