Dónde vive cada dato en Styx. La metadata de la obra viaja dentro del fichero, el catálogo es un índice que se reconstruye, y tu estado nunca sale del servidor.
Especificado. Esta página describe el comportamiento objetivo. El diseño está en
dec-0127, que enmiendadec-0126. Los dos se lockearon juntos el 2026-10-02. Todavía no hay código. Lo que dice obliga a la implementación.
El fichero manda. El título, la sinopsis, los ids de TMDb o IMDb, la edición, las referencias al artwork, la portada, las marcas de intro y créditos y tus correcciones manuales viven dentro del propio vídeo. Si descargas ese fichero y lo abres en VLC o lo mandas por AirPlay, ya lleva sus metadatos. Si pierdes la base de datos, Styx la reconstruye leyendo los ficheros.
Dos cosas, escritas juntas por el daemon (cómo se escribe sin tocar el vídeo: Metadatos en el fichero):
styx.json: el documento completo de la obra, en JSON canónico (RFC 8785), siempre con
los mismos bytes para el mismo contenido.
styx.json.----:dev.mks2508.styx:doc dentro de moov/udta/meta/ilst.sha256.©nam, desc, covr… en MP4; TITLE, Attachments… en
Matroska), más la portada. Es lo que leen los reproductores de terceros. Se deriva siempre de
styx.json.Los capítulos de intro y créditos se escriben como capítulos nativos del contenedor.
| Clase | Dónde manda | Ejemplos | Si se pierde la base de datos |
|---|---|---|---|
| Fichero | styx.json | títulos, fechas, géneros, sinopsis, ids externos, edición, artwork, marcas, locks manuales | se reconstruye |
| Facts de contenido | los bytes del vídeo | pistas, códecs, duración, keyframes, huella | se recalcula |
| Derivado | cachés direccionadas por hash | tamaños de póster, miniaturas de trickplay | se regenera |
| Servidor | catalog-svc y sources-svc | raíces, rutas, cola de revisión, historial de cambios, colecciones del servidor | necesita backup |
| Tuyo | playback-svc y catalog-svc, por cuenta y perfil | progreso y sesiones (playback); visto, favoritos, valoraciones y listas (catalog) | necesita backup o exportación |
| Caché del cliente | la web o la app, validada por hash | lo último que viste del catálogo | se revalida |
Nada tuyo viaja en el fichero: ni progreso, ni perfil, ni hogar, ni rutas.
El catálogo guarda un índice derivado de los ficheros: lo justo para listar, buscar, ordenar y filtrar, más el documento completo como caché.
Cada documento tiene un metadataHash (BLAKE3 de styx.json), guardado en el índice.
Qué pasa entonces:
| Situación | Resultado |
|---|---|
Cambió styx.json (otra instancia de Styx, una copia, una restauración) | gana el fichero: el índice se actualiza solo |
| Una herramienta de tags cambió el título estándar | si el valor es válido, Styx lo adopta como decisión tuya; si es basura, lo descarta; sólo te pregunta si cambió la identidad sin poder confirmarla o si choca con un campo que bloqueaste (configurable por raíz) |
| Cambió el fichero y había una edición tuya pendiente de escribir | conflicto: lo eliges tú en la cola de revisión |
| El fichero no se puede escribir (remoto, sólo lectura, sembrando) | el catálogo guarda el documento como overlay visible, y se escribe en el fichero cuando Styx pueda |
ETag con el hash. Si el cliente ya lo tiene, recibe un 304 sin
cuerpo.library.changes, con una revisión que sólo avanza) dice qué cambió
desde la última vez. Además llega empujado por tiempo real.sha256). Sólo la
portada viaja además dentro del fichero./art/<sha256>/<variante>, con URLs que nunca cambian y caché
"inmutable" en el navegador. Una imagen nueva es una URL nueva.workUid guardado en styx.json.Todo lo que descargas de Styx lleva su styx.json y su portada, también si pides otro formato o
códec y Styx lo genera al vuelo. Un fichero descargado se describe solo, también sin conexión.
Las preguntas de dec-0127 §13 se cerraron el 2026-10-02:
styx.json entero, direccionado por su hash, y de ahí proyecta lo que hace
falta para listar;