Los tres SDK que Styx consume en lugar de reimplementar, cómo se fijan y qué hace cada uno.
Implementado. Los tres SDK viven en repositorios propios y Styx los consume en sus caminos de producción. La API de cada uno se genera de sus comentarios
///bajoreferencia/zig/.
La regla es de dec-0103: lo genérico del data plane no se reimplementa en Styx. Si una
primitiva es útil fuera de Styx, vive en una biblioteca, se fija por versión y se consume. Dos
cosas lo hacen cumplir: check:zkit-no-reimpl falla si un fichero del daemon declara un símbolo
con nombre de zkit que no es un alias o llama directamente a la libc que zkit envuelve, y los
SDK no se copian ni se vendorizan.
| SDK | Qué es | Dónde lo usa Styx |
|---|---|---|
zkit | Primitivas de Zig: tiempo, sincronización, ficheros fd-relativos, handles, presupuestos, lectores acotados, safety | Todo el daemon y media-core |
spire | SDK de mensajería y comunicaciones seguras: sobre firmado, políticas, transportes, verificador de capacidades | Socket de control del daemon, bus NATS de los servicios (@styx/bus), emisión de eventos del daemon |
conduit | Protocolo de ingesta de ficheros: servidor y cliente Zig, wire v1 con vectores de conformidad | IngestSink del daemon y el CLI styx-upload |
Los primeros símbolos de zkit nacieron en un experimento de este mismo repositorio (el spike
del byte runtime, ya retirado): Styx es origen de la extracción, no consumidor original.
native/zig/build.zig.zon. Un
cambio de versión es un cambio visible en esa tabla.@spire/bus entra por una dependencia de commit en los package.json.docs/references/quic-zig, fork MKS2508/quic-zig, ruta de
build.zig.zon), con su política de versiones en dec-0105. En un clon nuevo hay que inicializar
el submódulo antes de compilar.media-core sin QUIC: ficheros, entorno, relojes, aleatoriedad y locks
vienen de zkit, y del fork sólo se usan los sockets.zkit.safety es la capa que impone los invariantes de seguridad del data plane:
Root), sin API que acepte una ruta absoluta;spire es el punto único de seguridad de las comunicaciones (dec-0119, dec-0120):
spire.cap en Zig, @spire/bus/sct en TS) con una sola
implementación por lenguaje;@styx/api-contracts sale el espejo Zig del daemon,
con vectores de conformidad y fuzz diferencial entre TS y Zig.Detalle de cómo se usa en bus y contratos y de qué protege en comunicaciones entre procesos.
conduit define el protocolo de subida (dec-0121). El servidor es independiente del transporte y
exige autorización en cada petición, con cuotas, preparación fd-relativa y hash en streaming. En
Styx:
IngestSink), apagado
mientras no se configure una raíz de ingesta;styx-upload (native/zig/cli/styx_upload.zig), que renueva la capacidad
antes de que caduque y reanuda tras un corte;playback-svc decide quién sube y firma la capacidad SCT de alcance
ingest; el alta en el catálogo viaja por el bus y es idempotente.El código de los SDK está fuera de la auditoría audit:safety de Styx (zig-pkg/ es código no
de producción para el guard). Auditar las fuentes fijadas de los SDK con el mismo guard es un
seguimiento declarado en dec-0121.