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