dec-0042

Vista generada de dec-0042: Accept-loop IPC del daemon Zig

ImplementadoSin versión del tren todavía· generada desde docs/decisions/dec-0042-accept-loop-ipc-daemon-zig.md
track/docsdec-0124track/docs:DC10

Vista generada desde docs/decisions/dec-0042-accept-loop-ipc-daemon-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 legadaD3
Ficherodocs/decisions/dec-0042-accept-loop-ipc-daemon-zig.md

Enmendado o sustituido por: r32, r47

Por qué importa (del frontmatter del ADR):

native/zig/media-daemon/ipc/control.zig:1046-1141 — implementación REAL verificada línea por línea (CLIENT_RCVTIMEO_SEC=30, ACCEPT_POLL_TIMEOUT_MS, poll()-based accept loop que reemplaza el accept bloqueante viejo, comentarios citando explícitamente el mecanismo P0); TKT-009 (status: superseded by TKT-013 M1 (G7, 71a847e) + TKT-035 (G8, 153f6c6/c529e2f), ref explícita 'r31 D2/D3')

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-0042-accept-loop-ipc-daemon-zig.md, el fichero canónico.

Accept-loop IPC del daemon Zig

Accept-loop IPC del daemon Zig = P0 fix-now: de síncrono single-client con read bloqueante sin timeout, a poll + SO_RCVTIMEO + deadline por operación + CloseReply explícito (no log.warn silencioso) para 2º Close/sesión desconocida.

Por qué pasa gate-3

  • Hard-to-reverse: Es un cambio de arquitectura IPC de sincrono single-client a con timeout/deadline; revertir significaria volver al liveness bug fundacional
  • Surprising sin contexto: El hallazgo accept-loop P0 no es obvio sin analisis forense del soak; un ingeniero no inferiria que IPC esta congelado por cliente lento sin este ADR
  • Trade-off real: La alternativa era vivir con el bug (liveness roto) o refactor completo IPC (re-trabajo mayor); se eligio fix quirurgico P0 ahora, refactor completo diferido

Procedencia

Split de docs/decisions/r31-foundation-closure-v2-reference-harvest-2026-06-23.md (lock D3) durante PASO 7 (2026-07-16). Ver el fichero padre para el contexto completo del pack original.