track/identity

Vista generada del nodo track/identity de styx.model.yml: estado, dependencias, gate, cola y páginas de documentación que lo citan.

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

Vista generada desde styx.model.yml. 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.

track/identity — identity-svc OIDC

estado: in_progress · kind: track · zona: services

Depende de: outcome/foundation/a2

ReferenciaTítuloEstado
r17Microservicios split-durolocked
r18Bus NATS JetStreamlocked
r20F0.A architecture correction pass: 6 bloqueantes + 3-división + matiz r19 port Ziglocked
r27Nodes + NATS + plugins + acquisitionlocked
r28Parallelization correction passlocked

Gate (manifest docs/track/identity/evidence/gate.manifest.yml):

ItemVerdictClasePáginas que lo citan
I1opencontracts-envelope—
I2opensvc-5layer-real—
I3openoidc-flow-real—
I4opensessions-valkey-ratelimit—
I5openplayback-principal—
I6opennats-min-featureset-pinned—
I7partialinvitations-simpleInvitaciones (implementado)
I8partialcli-device-grant-patConectar la TV y el CLI (especificado)
Entrar con el CLI (implementado)
I9openapi-keys-scopedAPI keys (especificado)
I10openquick-connectConectar la TV y el CLI (especificado)
I11openhouseholds-profilesHogares y perfiles (especificado)

Cola (docs/track/identity/tickets/):

TicketTítuloEstadoPrioridad
track/identity#01identity-svc OIDC real: contratos, servicio 5-layer, sesiones Valkey, principal en playback, spike NATSopenP0
track/identity#02Cookies __Host-, sesión de navegador sin tokens portadores (BFF) y CSRF de doble barreraopenP0
track/identity#03Revocación completa (por actor y por admin), tope de sesiones y re-autenticación recienteopenP1
track/identity#05Errores sin fuga: problem+json de Elysia 2 en prod, sin eco de la entradadoneP1
track/identity#06Mínimo privilegio en datos: rol Postgres propio y ACL Valkey para identity-svcopenP1
track/identity#07qry.identity.session sólo para servicios autorizados (spire + NATS NKeys/ACL)openP1
track/identity#08Clave de firma desde fichero y rotación con kid (JWKS actual + siguiente)openP2
track/identity#09Audit log de seguridad estructurado y alertas en identity-svcdoneP1

Páginas que lo citan: Dispositivos, mando y handoff (especificado), Servidores conectados y Jellyfin (especificado), Modo público y Styx como plataforma (especificado), Sesiones, BFF y autorización (implementado), API para agentes y MCP (especificado), Subir ficheros (especificado), Comandos del CLI (especificado), API keys (especificado), Conectar la TV y el CLI (especificado), Hogares y perfiles (especificado), Iniciar sesión (especificado), Invitaciones (implementado), Entrar con el CLI (implementado), Instalar (especificado), Visión (especificado), Primer arranque (especificado)

track/identity/invitations — Invitaciones simples estilo Wizarr ligadas al login sellado (un admin + testers, sin perfiles ni hogares)

estado: in_progress

Depende de: track/identity/sec

ReferenciaTítuloEstado
dec-0125Cuentas, hogares y perfiles opcionales, invitaciones estilo Wizarr, passwordless OIDC (Pocket ID u otro) con password local sólo por flag, API keys con scopes, device grant RFC 8628 para CLI y quick connect, paridad headless; estado por perfil transferido a playback-svc y catalog-svclocked
dec-0118Seguridad por diseño parte 2 — control plane TS, identidad y web (BFF sin tokens portadores, cookies __Host-, CSRF doble barrera, policy deny-by-default, IDOR, CSP+TT, mínimo privilegio, audit)locked

Cola (docs/track/identity/invitations/tickets/):

TicketTítuloEstadoPrioridad
track/identity/invitations#01Invitaciones simples (un admin + testers): crear, canjear en el login OIDC, listar y revocar, con role_source y CLIdoneP1

Páginas que lo citan: Invitaciones (implementado)

track/identity/cli-auth — Auth del CLI: device grant RFC 8628 en identity-svc (styx login) y PAT mínimo

estado: in_progress

Depende de: track/identity/sec

ReferenciaTítuloEstado
dec-0125Cuentas, hogares y perfiles opcionales, invitaciones estilo Wizarr, passwordless OIDC (Pocket ID u otro) con password local sólo por flag, API keys con scopes, device grant RFC 8628 para CLI y quick connect, paridad headless; estado por perfil transferido a playback-svc y catalog-svclocked
dec-0118Seguridad por diseño parte 2 — control plane TS, identidad y web (BFF sin tokens portadores, cookies __Host-, CSRF doble barrera, policy deny-by-default, IDOR, CSP+TT, mínimo privilegio, audit)locked

Cola (docs/track/identity/cli-auth/tickets/):

TicketTítuloEstadoPrioridad
track/identity/cli-auth#01Auth del CLI: device authorization grant (RFC 8628) en identity-svc, styx login y API keys personales mínimasdoneP1

Páginas que lo citan: Conectar la TV y el CLI (especificado), Entrar con el CLI (implementado)

track/identity/api-keys — API keys styx_pat_/styx_sat_ con scopes ⊆ permisos, caducidad obligatoria y canje por JWT en el borde

estado: queued

Depende de: track/identity/cli-auth

ReferenciaTítuloEstado
dec-0125Cuentas, hogares y perfiles opcionales, invitaciones estilo Wizarr, passwordless OIDC (Pocket ID u otro) con password local sólo por flag, API keys con scopes, device grant RFC 8628 para CLI y quick connect, paridad headless; estado por perfil transferido a playback-svc y catalog-svclocked
dec-0118Seguridad por diseño parte 2 — control plane TS, identidad y web (BFF sin tokens portadores, cookies __Host-, CSRF doble barrera, policy deny-by-default, IDOR, CSP+TT, mínimo privilegio, audit)locked

Páginas que lo citan: API keys (especificado)

track/identity/quick-connect — Quick connect de TV (8 dígitos + QR) sobre el device grant, con aprobación y elección de perfil

estado: in_progress

Depende de: track/identity/cli-auth

ReferenciaTítuloEstado
dec-0125Cuentas, hogares y perfiles opcionales, invitaciones estilo Wizarr, passwordless OIDC (Pocket ID u otro) con password local sólo por flag, API keys con scopes, device grant RFC 8628 para CLI y quick connect, paridad headless; estado por perfil transferido a playback-svc y catalog-svclocked
dec-0118Seguridad por diseño parte 2 — control plane TS, identidad y web (BFF sin tokens portadores, cookies __Host-, CSRF doble barrera, policy deny-by-default, IDOR, CSP+TT, mínimo privilegio, audit)locked

Cola (docs/track/identity/quick-connect/tickets/):

TicketTítuloEstadoPrioridad
track/identity/quick-connect#01Quick connect de TV: cliente styx-tv, techo de scopes, tope propio de dispositivos y presupuesto de fallos del user_codeopenP1

Páginas que lo citan: Conectar la TV y el CLI (especificado)

track/identity/accounts-households-profiles — Cuentas con varias identidades, hogares opcionales con roles, perfiles con PIN, madurez y concesiones de biblioteca

estado: queued

Depende de: track/identity/invitations

ReferenciaTítuloEstado
dec-0125Cuentas, hogares y perfiles opcionales, invitaciones estilo Wizarr, passwordless OIDC (Pocket ID u otro) con password local sólo por flag, API keys con scopes, device grant RFC 8628 para CLI y quick connect, paridad headless; estado por perfil transferido a playback-svc y catalog-svclocked
dec-0118Seguridad por diseño parte 2 — control plane TS, identidad y web (BFF sin tokens portadores, cookies __Host-, CSRF doble barrera, policy deny-by-default, IDOR, CSP+TT, mínimo privilegio, audit)locked

Páginas que lo citan: Hogares y perfiles (especificado)

track/identity/local-password — Contraseña local por flag (argon2id, NIST 800-63B-4, TOTP, sin ROPC)

estado: queued

Depende de: track/identity/accounts-households-profiles

ReferenciaTítuloEstado
dec-0125Cuentas, hogares y perfiles opcionales, invitaciones estilo Wizarr, passwordless OIDC (Pocket ID u otro) con password local sólo por flag, API keys con scopes, device grant RFC 8628 para CLI y quick connect, paridad headless; estado por perfil transferido a playback-svc y catalog-svclocked
dec-0118Seguridad por diseño parte 2 — control plane TS, identidad y web (BFF sin tokens portadores, cookies __Host-, CSRF doble barrera, policy deny-by-default, IDOR, CSP+TT, mínimo privilegio, audit)locked

Páginas que lo citan: Hogares y perfiles (especificado)

track/identity/sec — Seguridad del control plane: sesión BFF + CSRF, policy deny-by-default, IDOR, CORS, CSP/TT, mínimo privilegio, NATS por servicio, audit

estado: in_progress

ReferenciaTítuloEstado
dec-0118Seguridad por diseño parte 2 — control plane TS, identidad y web (BFF sin tokens portadores, cookies __Host-, CSRF doble barrera, policy deny-by-default, IDOR, CSP+TT, mínimo privilegio, audit)locked
dec-0119spire, punto único de seguridad de las comunicaciones (identidad de servicio, policy obligatoria, sobre firmado anti-replay, verificador SCT único en spire-zig)locked
dec-0116Contratos contract-first en TypeBox 1.x compilado y salto ya a Elysia 2 beta; Arktype fueralocked
r10Delivery plane separado del control planelocked
r17Microservicios split-durolocked
r20F0.A architecture correction pass: 6 bloqueantes + 3-división + matiz r19 port Ziglocked

Gate (manifest docs/track/identity/sec/evidence/gate.manifest.yml):

ItemVerdictClasePáginas que lo citan
SW10partialroute-policy-deny-by-default—
SW11passresource-authz-idor—
SW12passservices-without-cors—
SW13partialcsp-trusted-types-headers—
SW14openremote-content-no-sinks—
SW15partialleast-privilege-data—
SW16opennats-operator-acl—
SW17openspire-ts-envelope—
SW18partialsecurity-audit-alerts—
SW19partialguards-with-mutants—
SW20partialbff-session—

Cola (docs/track/identity/sec/tickets/):

TicketTítuloEstadoPrioridad
track/identity/sec#10Policy layer deny-by-default en rutas Elysia 2openP0
track/identity/sec#11Autorización por recurso: Authorized<R, A> e IDORdoneP0
track/identity/sec#12CORS: servicios sin CORSdoneP0
track/identity/sec#13CSP con nonces, Trusted Types y cabeceras en la webopenP1
track/identity/sec#14Contenido remoto → DOM sin sinksopenP1
track/identity/sec#15Rol Postgres y ACL Valkey por servicio (todos)openP1
track/identity/sec#16NATS en modo operador: NKeys y ACL generada por servicioopenP1
track/identity/sec#17spire-ts: sobre v2 firmado, anti-replay, validación in/out, límitesopenP1
track/identity/sec#18Audit de seguridad común y alertasopenP1
track/identity/sec#19Guards de dec-0118 §10 con mutantesopenP1
track/identity/sec#20BFF: sesión de navegador y authedServerFnopenP0
track/identity/sec#21playback-svc: el descriptor público no lleva la ruta de disco y cerrar una sesión exige ser su dueñodoneP1
track/identity/sec#22media-daemon-client: errores sin contenido del IPC y resultError tipado por código sin castsdoneP2
track/identity/sec#23AppSec pasadas 1-3, servicios: cupos de reproducción, superficie anónima, alta deny-by-default, coste de auth acotado y dirección de cliente probadadoneP1
track/identity/sec#24AppSec pasada 1, web: XSS del shell SSR por la cookie de theme y CSP/Trusted Types/cabecerasdoneP1
track/identity/sec#25AppSec pasadas 1-2, despliegue y cadena de suministro: infra por defecto cerrada, secretos de fichero, infra viva verificada, CI fijadodoneP1
track/identity/sec#26Integrar AppSec pasada 3 deploy-supply (DS3-01..03) sobre el arreglo TS3-P2-01 ya integradoopenP1
track/identity/sec#27Residuales AppSec del control plane, web y despliegue: P3 verificados y regresiones e2eopenP2
track/identity/sec#28AppSec pasadas 4–7, control plane y web: login sin estado, lectura deny-by-default, cuota de ingesta, presupuesto del BFF y alta acotada en catalogdoneP2
track/identity/sec#29AppSec pasadas 8–12, control plane: el audit agrega por la unidad de cliente del rate-limitdoneP2

Páginas que lo citan: Evidencia y verificación adversarial (implementado), Comunicaciones entre procesos (implementado), Modelo de amenazas (implementado), Sesiones, BFF y autorización (implementado), Iniciar sesión (especificado)