dec-0039

Vista generada de dec-0039: Spawn ffprobe/ffmpeg sigue siendo v1 sancionada (r07) pero la migración a FFI/libav es prioritaria, no deuda diferida indefinidamente; el interface MediaProbe/StreamExtractor se diseña desde día 1 pensando en el swap.

ImplementadoSin versión del tren todavía· generada desde docs/decisions/dec-0039-spawn-ffprobe-ffmpeg-sigue-siendo.md
track/docsdec-0124track/docs:DC10

Vista generada desde docs/decisions/dec-0039-spawn-ffprobe-ffmpeg-sigue-siendo.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 legadar29-D3
Ficherodocs/decisions/dec-0039-spawn-ffprobe-ffmpeg-sigue-siendo.md

Enmendado o sustituido por: dec-0110

Por qué importa (del frontmatter del ADR):

roadmap.spec.yml goal de F2 (línea ~478-483): 'v1 subprocess (r07) → swap FFI libav CUANTO ANTES (no diferir indefinida — nota waxin)' — cita textual directa.

Nodos del roadmap que lo citan en refs: ninguno.

Páginas de la documentación que lo citan: ninguna todavía.

Texto del ADR

Leído de docs/decisions/dec-0039-spawn-ffprobe-ffmpeg-sigue-siendo.md, el fichero canónico.

Spawn ffprobe/ffmpeg sigue siendo v1 sancionada (r07) pero la migración a FFI/libav es prioritaria, no deuda diferida indefinidamente; el interface MediaProbe/StreamExtractor se diseña desde día 1 pensando en el swap.

ENMENDADO 2026-09-28 por dec-0110 (lock de waxin vía AskUserQuestion): FFmpeg nunca se invoca como proceso; sólo como librería (libavformat/libavcodec/libavutil de FFmpeg 8) vía C interop dentro del daemon Zig, como uno de los dos motores configurables (engine=zig|libav). El spawn deja de ser v1 sancionada y el existente se retira. El texto de abajo se conserva como registro de su época.

Spawn ffprobe/ffmpeg sigue siendo v1 sancionada (r07) pero la migración a FFI/libav es prioritaria, no deuda diferida indefinidamente; el interface MediaProbe/StreamExtractor se diseña desde día 1 pensando en el swap.

Por qué pasa gate-3

  • Hard-to-reverse: El cambio de subprocess a FFI es structurally costly (requiere interface MediaProbe/StreamExtractor diseñado desde día 1). Ya lockeado en r25 como swap futuro.
  • Surprising sin contexto: r07 dice 'FFmpeg como proceso, no FFI de inicio', lo cual podría interpretarse como 'deuda técnica que se paga cuando sea'. El matiz 'PRIORITARIO, no diferido indefinido' es sorprendente sin contexto.
  • Trade-off real: Alternativa rechazada = dejar spawn pudrir (deuda técnica eterna). Waxin pickó migración prioritaria con nota in-vivo: 'no vamos a alargar mucho el spawn, cuanto antes FFI mejor'.

Procedencia

Split de docs/decisions/r29-mediakit-harvest-2026-06-21.md (lock r29-D3) durante PASO 7 (2026-07-16). Ver el fichero padre para el contexto completo del pack original.