dec-0092

Vista generada de dec-0092: Styx Doctor

ImplementadoSin versión del tren todavía· generada desde docs/decisions/dec-0092-styx-doctor.md
track/docsdec-0124track/docs:DC10

Vista generada desde docs/decisions/dec-0092-styx-doctor.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 legadar60-D6
Ficherodocs/decisions/dec-0092-styx-doctor.md

Enmienda a: r17, r27, r40, r45, r52, r54, r59

Por qué importa (del frontmatter del ADR):

TKT-052 (F-OBSERVABILITY sub-fase Doctor, gate 'r60-D6-code', status open) + referencia en roadmap.spec.yml. Código (doctor-actions.ts, plugins/builtin-probes/) aún no existe (verificado con find), pero el ticket es consumer concreto en la cola ejecutable.

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-0092-styx-doctor.md, el fichero canónico.

Styx Doctor

Styx Doctor = observer/recommender transversal (NO plane #6 per r02); recovery actions via typed vocabulary single-owner; probes builtin trust r48 §3.1; contracts Arktype per r52.

Por qué pasa gate-3

  • Hard-to-reverse: Si lo implementamos como plane #6 con autoridad directa para ejecutar recovery actions (retry, switch_transport, invalidate_cache), revertir a observer/recommender requiere eliminar autoridad y cambiar contrato.
  • Surprising sin contexto: El nombre 'Styx Doctor' sugiere autoridad médica directa (puede 'recetar' y ejecutar), pero el ADR reformula a observer que recomienda con vocabulary typed. Sin el ADR, parecería un god-object con power.
  • Trade-off real: Alternativa rejected explícitamente: Doctor como plane #6 con autoridad directa para ejecutar recovery actions destructivos (switch_transport, invalidate_cache, download_first) sin confirmación. Coste visible: viola r02 5 planos (no plane #6) + reintroduce god-object pattern + riesgo de acciones destructivas auto-executed. Reformulación: observer + typed vocabulary + single-owner table + confirmation explícita para destructivas.

Procedencia

Split de docs/decisions/r60-boundary-authorities-2026-07-15.md (lock r60-D6) durante PASO 7 (2026-07-16). Ver el fichero padre para el contexto completo del pack original.