dec-0071

Vista generada de dec-0071: Cancellation has two observable levels

ImplementadoSin versión del tren todavía· generada desde docs/decisions/dec-0071-cancellation-has-two-observable-levels.md
track/docsdec-0124track/docs:DC10

Vista generada desde docs/decisions/dec-0071-cancellation-has-two-observable-levels.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 legadar54-D2.4
Ficherodocs/decisions/dec-0071-cancellation-has-two-observable-levels.md

Por qué importa (del frontmatter del ADR):

AC-D2.4 mandates two separate counters (logical_invalidations_total / physical_cancellations_total); TKT-039 M3 delivers them; ownership-map.md cites the exact metric names 'styx.client_core.cancellation.{logical_invalidations,physical_interrupts}_total per r54 §AC-D2.4'; gate W3 ('seek storm does not append obsolete data') depends on this split.

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-0071-cancellation-has-two-observable-levels.md, el fichero canónico.

Cancellation has two observable levels

Cancellation has two observable levels: logical invalidation (block a stale result from mutating active session) and physical cancellation (actually stop fetch/read/demux/append at the producer)

Por qué pasa gate-3

  • Hard-to-reverse: Requiere cambios en metrics (AC-D2.4 exige counters separados), en primitives de cancelación y en toda la cadena de productores
  • Surprising sin contexto: Diferenciación sutil: logical invalidation ≠ physical cancellation; un ingeniero podría asumir que 'cancelar' es solo ignorar resultado; rejected alternative 'Ignorar resultados obsoletos sin intentar cancelar producers'
  • Trade-off real: Rejected alternative explicit: 'Ignorar resultados obsoletos sin intentar cancelar producers' (linea 148); coste visible = complexity de dos niveles vs efficiency de detener fetch real

Procedencia

Split de docs/decisions/r54-presentation-authority-runtime-boundaries-2026-07-15.md (lock r54-D2.4) durante PASO 7 (2026-07-16). Ver el fichero padre para el contexto completo del pack original.