Decisiones

Vista generada de los ADR de Styx desde docs/decisions/.

ImplementadoSin versión del tren todavía· generada desde docs/decisions/
track/docsdec-0124track/docs:DC10

Vista generada desde docs/decisions/. 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.

Una página por ADR dec-NNNN. El texto de cada decisión vive en docs/decisions/; aquí están su estado, sus enmiendas y qué páginas y nodos la citan. Las decisiones históricas rNN están en docs/archive/ y en docs/decisions/ con su nombre de fichero.

ADRTítuloEstadoFecha
dec-0001r15 — El proyecto se llama StyxLOCKED2026-06-20
dec-0002Topología split-duroLOCKED (migrado)
dec-0003Bounded-contextsLOCKED (migrado)
dec-0004Observability es cross-cutting (cada servicio emite OTel spans directamente al collector), explícitamente NO…LOCKED (migrado)
dec-0005NATS JetStream como bus event-driven obligatorio para TODA comunicación inter-servicio (commands…LOCKED (migrado)
dec-0006Separacion de responsabilidad Valkey (stateLOCKED (migrado)
dec-0007Fusionar Styx + MKS-IPTV-App en un solo proyecto con Styx como SSOTLOCKED (migrado)
dec-0008Styx es la familia completaLOCKED (migrado)
dec-0009App Swift se mueve físicamente al monorepo Styx como apps/apple/ (forma exacta decidida en F-FUSION vía…LOCKED (migrado)
dec-0010Naming unificadoLOCKED (migrado)
dec-0011r15 ampliado para cubrir la familia entera (backend + app + crown jewels), no supersede sino extensión del…LOCKED (migrado)
dec-0012Data plane Zig owned e2eLOCKED (migrado)
dec-0013F0.B reframed como 'First Owned Media Path (Zig)'LOCKED (migrado)
dec-0014Frontera Bun↔ZigLOCKED (migrado)
dec-0015El daemon expone múltiples adapters de delivery (HTTP/3 Range, HLS/CMAF, WebTransport raw, MOQT sobre WT/QUIC…LOCKED (migrado)
dec-0016quic-zig all-in como implementación principal detrás de una interfaz TransportServer mínima sustituible; el…LOCKED (migrado)
dec-0017MOQT (F0.C) se reframea como adapter del daemon Zig existente (no spike separado como en r21 A9), corriendo…LOCKED (migrado)
dec-0018Familia de runtimes nativos sobre contratos comunes (Apple/Android/Browser/Windows/Linux, decoder/render…LOCKED (migrado)
dec-0019r23 — Canonical Media Factory (arquitectura codec-agnostic + pipeline)LOCKED2026-06-21
dec-0020NVMe como working set (30-80GB), no biblioteca; el streaming vive en Storage Box.LOCKED (migrado)
dec-0021ByteSource abstraction (size/availability/readAt/request/cancel(requestId)) — nivel debajo de…LOCKED (migrado)
dec-0022ReadIntent taxonomy (10 tiposLOCKED (migrado)
dec-0023ResidencyMap (7 estados incl. 'missing' explícito) + ExtentMap + AvailabilityMap.LOCKED (migrado)
dec-0024TieredPieceStore (tiers RAM/NVMe/remote) con integrity hash verify.LOCKED (migrado)
dec-0025Multi-source reads (RAM/NVMe/SFTP/WebDAV/peers/HTTP) scored por 6 dimensiones + hedged reads.LOCKED (migrado)
dec-0026IPTV live encaja en el mismo Byte Runtime (ByteSource unbounded sequential time-addressed + rolling buffer),…LOCKED (migrado)
dec-0027F-BYTE-RUNTIME como fase nueva, separada de los backends, que implementa el CORE abstracto…LOCKED (migrado)
dec-0028F3 reencuadradoLOCKED (migrado)
dec-0029native/zig/ se parte en crates independientes por capability (7 listadosLOCKED (migrado)
dec-0030Storage Box se queda como durable-primary (no Object Storage/VPS HDD); Styx no busca storage mejor, diseña…LOCKED (migrado)
dec-0031Styx Node first-classLOCKED (migrado)
dec-0032NATS leaf hub-and-spoke (home node tras CGNAT abre OUTBOUND al VPS, el hub nunca dialea) + accounts NATS…LOCKED (migrado)
dec-0033Plugin SDK NO genéricoLOCKED (migrado)
dec-0034Acquisition Runtime sustituye funcionalmente Sonarr/Radarr/Prowlarr/Bazarr con plataforma unificada…LOCKED (migrado)
dec-0035JellyfinLOCKED (migrado)
dec-0036Xtream-directo en la app SwiftLOCKED (migrado)
dec-0037Fold-split sin fase nuevaLOCKED (migrado)
dec-0038Principio de harvest selectivoLOCKED (migrado)
dec-0039Spawn ffprobe/ffmpeg sigue siendo v1 sancionada (r07) pero la migración a FFI/libav es prioritaria, no deuda…LOCKED (migrado)
dec-0040Reclasificación honesta de gates F0.FLOCKED (migrado)
dec-0041Wave de cierre obligatoria y secuencial (TKT-009 liveness/security → TKT-011 soak redux → TKT-010 governance…LOCKED (migrado)
dec-0042Accept-loop IPC del daemon ZigLOCKED (migrado)
dec-0043F-REFERENCE-HARVESTLOCKED (migrado)
dec-0044Governance reconciliationLOCKED (migrado)
dec-0045r32 — Bitrate NUNCA es gate de elegibilidad de direct-playLOCKED2026-06-24
dec-0046El planner modela direct-play con tres estados ortogonales — DIRECT_ELIGIBLE (codec/container decodificable),…LOCKED (migrado)
dec-0047Enum qualityPolicy con 4 valores nombrados (PRESERVE_SOURCE | ADAPT_IF_NEEDED | FAIL_IF_UNSUSTAINABLE |…LOCKED (migrado)
dec-0048Lane 2 pivot a optimización multi-cliente F1+ - cambiar de 'PR upstream sofisticado + fix A fork branch' a…LOCKED (migrado)
dec-0049Root cause REAL del leak G4LOCKED (migrado)
dec-0050MOQT scopeLOCKED (migrado)
dec-0051M1 (F0.C.1) scopeLOCKED (migrado)
dec-0052Block bufferLOCKED (migrado)
dec-0053Backpressure waker-based segmentado, NUNCA polling (ADAPT from MoQ kio + iroh-live)LOCKED (migrado)
dec-0054TransportSignalsLOCKED (migrado)
dec-0055Priority híbrida acotadaLOCKED (migrado)
dec-0056Lifecycle de buffersLOCKED (migrado)
dec-0057r43 — D5-01: migrar a zig 0.17 en vez de vendorizar el dev build muertoLOCKED2026-07-02
dec-0058L1 RAM (~256MB, path ~ns) usa política recency-dominante (LRU-ish) con bookkeeping O(1)LOCKED (migrado)
dec-0059L2 NVMe (~8GB, path ~µs) usa coste-de-regeneración dominante (evictLOCKED (migrado)
dec-0060Invariante cross-tier (de r44/Candidate H)LOCKED (migrado)
dec-0061TKT-021 se rescopeaLOCKED (migrado)
dec-0062r52 — Eden Treaty App type: runtime-first (bypass de contract-first)LOCKED (migrado)
dec-0063Styx implementa Web Player y Web Engine first-party; ninguna runtime externa…LOCKED (migrado)
dec-0064MediaBunny es la única dependencia multimedia de alto nivel inicial; ownership matrix delega…LOCKED (migrado)
dec-0065MSE + HTMLVideoElement es el backend de producción inicial; WebCodecs queda como backend first-class futuro,…LOCKED (migrado)
dec-0066InvarianteLOCKED (migrado)
dec-0067Authorities matrixLOCKED (migrado)
dec-0068PresentationSink monolithic contract split into PresentationBufferSink (buffer only) + PlaybackSurface…LOCKED (migrado)
dec-0069Client Session Controller is the single creator of LogicalGenerationId; sink/engine/ByteRuntime only…LOCKED (migrado)
dec-0070Handoff semantics amendLOCKED (migrado)
dec-0071Cancellation has two observable levelsLOCKED (migrado)
dec-0072styx-client-core adoptado en 4 capas L0(algebra)->L1(contracts)->L2(state machines)->L3(session…LOCKED (migrado)
dec-0073ABI rules v0 candidateLOCKED (migrado)
dec-0074ABI NO se declara estable hasta (1) consumer WASM real en F-WEB-PLAYER-ENGINE, (2) consumer nativo real en…LOCKED (migrado)
dec-0075(Mismo contenido que D4.1, fila L3) — 'L3 permanece DIFERIDA mientras consumer_count<2', con su propio…LOCKED (migrado)
dec-0076(Restatement de D4.2) 'Zig structs NO cruzan el ABI boundary' — ya es el bullet 'no Zig structs in public…LOCKED (migrado)
dec-0077(Restatement de D4.2) 'Allocator ownership NO cruza la ABI boundary' — ya es el bullet 'no allocator…LOCKED (migrado)
dec-0078(Restatement de D4.2) 'Una sola versión canónica de conformance fixtures, bytes idénticos WASM/native' — ya…LOCKED (migrado)
dec-0079Cliente se descompone en 6 piezas ortogonalesLOCKED (migrado)
dec-0080Default backends por familiaLOCKED (migrado)
dec-0081Restricted platform profile (Tizen/webOS/vendor Smart TVs)LOCKED (migrado)
dec-0082Platform Adapter responsibilitiesLOCKED (migrado)
dec-0083Reconciliación con r48/r49LOCKED (migrado)
dec-0084r58 — Styx Experience Contract (renderer-agnostic) + Raspberry Pi 3 como reference efficiency platformLOCKED (migrado)
dec-0085Split F-APPLIANCE-PI3 (producto cliente) vs F-APPLIANCE-OS (lifecycle sistema)LOCKED (migrado)
dec-0086Development sequence regla duraLOCKED (migrado)
dec-0087Identity boundaryLOCKED (migrado)
dec-0088Tracks condicionales (F-PS4-HOMEBREW, F-PLAYSTATION-OFFICIAL, F-XBOX, F-TV-VENDOR) viven en experiments[], NO…LOCKED (migrado)
dec-0089Mesh role mappingLOCKED (migrado)
dec-0090Handoff single-authority semanticsLOCKED (migrado)
dec-0091Runtime Optimizer REJECTED como entidad cross-plane con autoridad directa; reformulado a signals-driver…LOCKED (migrado)
dec-0092Styx DoctorLOCKED (migrado)
dec-0093Placement PlannerLOCKED (migrado)
dec-0094StyxCapsule 4-primitive taxonomy with qualified naming 'Styx Capsule' prefix to avoid collision with RFC 9297…LOCKED (migrado)
dec-00950-RTT replay-safe policy as annex to F-IDENTITYLOCKED (migrado)
dec-0096Transport drafts (MSF/CMSF/LOC) NO leak to canonical domain contracts (@styx/api-contracts), per r20 §2.3 +…LOCKED (migrado)
dec-0097Mesh placement is policy over execution/storage location (what node runs what, where stored), DOES NOT mutate…LOCKED (migrado)
dec-0098Amend r28 §3: excepción nominada para track/offline-continuityLOCKED2026-07-16
dec-0099Pausa de Styx para la fundación de AxonSUPERSEDED2026-07-17
dec-0100Locks pre-M0 de la fundación de AxonLOCKED2026-07-17
dec-0101Locks M1 de la CLI axonLOCKED2026-07-17
dec-0102Cierre de la pausa de Styx (dec-0099)LOCKED2026-08-27
dec-0103La promoción de Candidate H consume zkit como dependencia realLOCKED2026-08-27
dec-0104MOQT: política de colas VOD sin pérdida, live conserva drop-oldestLOCKED2026-09-27
dec-0105quic-zig upstream (fork = endel + capa 0.17) y MoQT draft-17 completoLOCKED2026-09-28
dec-0106ExtentMap: disponibilidad parcial por rangos, y FETCH de objetos publicados por el browserPROPOSED2026-09-28
dec-0107Discriminante live/VOD: LiveService paralelo a Work, y Work queda como media finitaLOCKED2026-09-28
dec-0108R-08: la producción de bytes sale del hilo del loop QUIC y avanza por capacidad de envíoPROPOSED2026-09-28
dec-0109Placement mediakit: facts en @styx/domain, parser en native/zig/media-core, policy en…LOCKED2026-09-28
dec-0110Motor de medios dual: demux/remux/packaging propio en Zig y libav (FFmpeg 8) como librería, configurableLOCKED2026-09-28
dec-0111ABI v0 de styx-client-core: core sin heap, longitudes u32, ubicación y bindingsPROPOSED2026-09-28
dec-0112La suite WC-JF12-xx contra Jellyfin 12 es gate obligatorio de todo diferencialLOCKED2026-09-28
dec-0113Modelo de tokens de identity-svcPROPOSED2026-09-28
dec-0114Escaneo e identificación por contenido como plugin sobre plugin-seamsLOCKED2026-09-28
dec-0115TypeBox sustituye a Arktype en los contratos contract-firstSUPERSEDED2026-09-28
dec-0116Contratos contract-first en TypeBox 1.x y salto a Elysia 2 beta, Arktype fueraLOCKED2026-09-28
dec-0117Seguridad por diseño, parte 1: threat model y arquitectura del data plane ZigLOCKED2026-09-28
dec-0118Seguridad por diseño, parte 2: control plane TS, identidad y webLOCKED2026-09-28
dec-0119spire, punto único de seguridad de las comunicacionesLOCKED2026-09-28
dec-0120styx consume spire: control Bun↔daemon (session-ipc v2) y bus NATSLOCKED2026-09-30
dec-0121Ingesta de ficheros con el SDK Zig de conduitLOCKED2026-09-30
dec-0122MoQT VOD: backlog acotado por suscriptor y corte EXCESSIVE_LOAD del lento (enmienda dec-0104)LOCKED2026-10-01
dec-0123Release engineering: tren versionado + componentes SemVer, artefactos únicos, manifiesto firmado, canales…LOCKED2026-10-01
dec-0124Documentación como contrato: Fumadocs, Diátaxis, frontmatter de contrato, referencia generada y guards que…PROPOSED2026-10-01
dec-0125Cuentas, hogares, perfiles, invitaciones y acceso de dispositivosLOCKED2026-10-01
dec-0126Metadatos incrustados en el propio fichero: plugin metadata-embed, escritura en el daemon y huella que los…LOCKED2026-10-01
dec-0127Modelo de datos: el fichero es la fuente de verdad, el catálogo es un índice derivadoLOCKED2026-10-01
dec-0128Dispositivos, presencia, mando remoto, handoff y capa de castPROPOSED2026-10-01
dec-0129Transferencias como columna vertebral: subidas, descargas, offline, p2p y adquisición en un solo planoLOCKED2026-10-01
dec-0130Modo público y Styx como plataforma: registro abierto o con aprobación, roles atados al registro, entrega por…PROPOSED2026-10-01
dec-0131Federación entre servidores: pares emparejados, concesiones acotadas que se canjean por SCT, contenido remoto…PROPOSED2026-10-01
dec-0132Styx multi-tipo: asset genérico, plugins de tipo de contenido, acciones y pipelines por kindLOCKED2026-10-02
dec-0133Entidad release en el modelo del roadmap: releases: ordenado por dependencias, publicado por su definition…LOCKED2026-10-02
dec-0134Origen TCP del daemon (delivery-edge): HTTPS HTTP/1.1 en Zig con Alt-Svc hacia HTTP/3PROPOSED2026-10-03
dec-0135Telemetría correlacionada de extremo a extremo: TTFF desde la intención y una traza del clic al daemonPROPOSED2026-10-04