dec-0014

Vista generada de dec-0014: Frontera Bun↔Zig

ImplementadoSin versión del tren todavía· generada desde docs/decisions/dec-0014-frontera-bun-zig.md
track/docsdec-0124track/docs:DC10

Vista generada desde docs/decisions/dec-0014-frontera-bun-zig.md. 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.

CampoValor
EstadoLOCKED (migrado de un rNN por gate-3: el fichero no declara estado)
Referencia legadar22-L3
Ficherodocs/decisions/dec-0014-frontera-bun-zig.md

Enmienda a: r21

Por qué importa (del frontmatter del ADR):

Citado por r23 (Canonical Media Factory - frontera Bun↔Zig), r25 (federated runtime - bytes multimedia nunca cruzan NATS ni JavaScript), styx.model.yml

Nodos del roadmap que lo citan en refs: ninguno.

Páginas de la documentación que lo citan: Planos y servicios (implementado)

Texto del ADR

Leído de docs/decisions/dec-0014-frontera-bun-zig.md, el fichero canónico.

Frontera Bun↔Zig

Frontera Bun↔Zig = IPC Unix domain socket, NO FFI por cada read; el cliente conecta directo al daemon Zig por descriptor. FFI/C-ABI se reserva para Zig↔libav, matizando r07.

Por qué pasa gate-3

  • Hard-to-reverse: Cambiar IPC socket a FFI por cada read requiere reescribir arquitectura de comunicación, riesgo de bloquear runtime Bun con lifetimes cruzados
  • Surprising sin contexto: Sin el ADR, se asumiría FFI como frontera default entre Bun y Zig - el patrón socket daemon no es obvio sin contexto
  • Trade-off real: Alternativa rechazada: 'Bun → FFI por cada read → Zig → callback → Bun' descartada por overhead, riesgo de bloquear runtime Bun, complejidad lifetimes cruzados

Procedencia

Split de docs/decisions/r22-pivot-zig-first-owned-data-plane-2026-06-20.md (lock r22-L3) durante PASO 7 (2026-07-16). Ver el fichero padre para el contexto completo del pack original.