dec-0053

Vista generada de dec-0053: Backpressure waker-based segmentado, NUNCA polling (ADAPT from MoQ kio + iroh-live)

ImplementadoSin versión del tren todavía· generada desde docs/decisions/dec-0053-backpressure-waker-based-segmentado-nunca-polling.md
track/docsdec-0124track/docs:DC10

Vista generada desde docs/decisions/dec-0053-backpressure-waker-based-segmentado-nunca-polling.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 legadar40-L2
Ficherodocs/decisions/dec-0053-backpressure-waker-based-segmentado-nunca-polling.md

Enmendado o sustituido por: r46, r60, r61

Por qué importa (del frontmatter del ADR):

native/zig/media-core/sync/backpressure_waker.zig (código real) + citado por r41 (implementación F0.C.1), r42 (spike Cathedral reusa backpressure_waker.zig), r55 §2 D... y AMENDADO por r46 §4.

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-0053-backpressure-waker-based-segmentado-nunca-polling.md, el fichero canónico.

Backpressure waker-based segmentado, NUNCA polling (ADAPT from MoQ kio + iroh-live)

Backpressure waker-based segmentado, NUNCA polling (ADAPT from MoQ kio + iroh-live)

Por qué pasa gate-3

  • Hard-to-reverse: Requiere waker-lists segmentadas por tipo de evento + SPSC rings lock-free en el core del scheduler. Cambiar a polling (Jellyfin-style Task.Delay(50ms)) sería una reescritura completa de la contrapresión del sistema, no un toggle de config.
  • Surprising sin contexto: Sin el contexto del harvest, un ingeniero viendo waiter-lists segmentadas (waiters_value/waiters_closed/waiters_consumer) podría pensar que es overengineering vs un simple sleep/poll. El contraste explícito con Jellyfin polling NO es inferible del código solo.
  • Trade-off real: Alternativa rechazada explícita: Jellyfin Task.Delay(50ms) polling (mete jitter, waste CPU). Trade-off: complejidad de waker-lists segmentadas vs simplicidad de polling + jitter constante. La evidencia CODE_VERIFIED de MoQ/iroh-live demostró que el waker-based es O(1) RSS y no jitter.

Procedencia

Split de docs/decisions/r40-scheduler-cache-mechanics-harvest-2026-06-30.md (lock r40-L2) durante PASO 7 (2026-07-16). Ver el fichero padre para el contexto completo del pack original.