Vista generada de dec-0098: Amend r28 §3: excepción nominada para `track/offline-continuity`
docs/decisions/dec-0098-amend-r28-anti-especulativo-offline-continuity.mdVista generada desde
docs/decisions/dec-0098-amend-r28-anti-especulativo-offline-continuity.md. No se edita a mano:bun run docs:genla regenera ybun run docs:checkfalla si difiere. El estado aquí es el del model: si discrepa con otra página, manda el model.
| Campo | Valor |
|---|---|
| Estado | LOCKED |
| Fecha | 2026-07-16 |
| Fichero | docs/decisions/dec-0098-amend-r28-anti-especulativo-offline-continuity.md |
Enmienda a: r28
Por qué importa (del frontmatter del ADR):
r28 §3 (anti-especulativo) está citado como invariante global en CLAUDE.md («Cada layer termina en un consumer/workload real (r28, principio anti-especulativo): no crees skeletons/empty layers sin responsabilidad concreta») y gobierna GUARD 7 check:consumer. Este amend abre UNA excepción nominada; no relaja el principio.
Nodos del roadmap que lo citan en refs: track/offline-continuity
Páginas de la documentación que lo citan: ninguna todavía.
Leído de docs/decisions/dec-0098-amend-r28-anti-especulativo-offline-continuity.md, el fichero canónico.
track/offline-continuitytrack/offline-continuity se crea como nodo del roadmap (status: queued) pese a no tener
consumer real, como excepción consciente y nominada a r28 §3.
r28 §3 (docs/decisions/r28-parallelization-correction-pass-2026-06-21.md:74) dice, literal:
Toda foundation phase arranca solo cuando tiene un consumer real que la valida; nunca infra especulativa.
El nodo que se crea aquí no lo cumple, y el conflicto es explícito, no interpretativo:
Defer rationale: r28 §3 anti-speculative (skeleton sin consumer real), y sus constraints duros
abren con DEFERRED per r28 §3.track/web-player-v1 entero está
queued; (c) ≥1 consumer real probado (≥100 sesiones staging o 1 sesión real documentada) ❌.track/offline-continuity. NO relaja r28 §3 para ningún otro nodo.check:consumer (GUARD 7, r28 anti-especulativo a nivel de símbolos) sigue vigente sin
excepción: este amend cubre el nodo del roadmap, NO permite mergear código sin consumer.r28 §3 es de los invariantes más citados del repo. Agujerearlo por un ticket P2 diferido tiene un
coste real de precedente, y waxin lo aceptó con el trade-off delante (AskUserQuestion PASO 8.3,
opción «Crear las 2 + amend explícito a r28», elegida sobre la alternativa que respetaba r28
colgando TKT-051 de track/web-player-v1 —de donde su propio dependsOn dice que está gated—).
La alternativa rechazada queda aquí escrita para que el coste sea auditable, no folclore oral.
track/observability NO necesita este amendtrack/observability se crea en el mismo paso pero no es una excepción: r60 §D6 lockea Styx
Doctor como observer/recommender transversal, TKT-052 está desbloqueado (blockedBy: r60 D6 locked (DONE 2026-07-15)), es P1, y tiene gate concreto con entregables reales (doctor-svc per r17,
probes builtin per r48 §3.1, contratos Arktype per r52). Tiene mandato lockeado y consumer.
Si los triggers de TKT-051 no se cumplen antes de que track/web-player-v1 cierre W3, este dec y
el nodo se revisan: o el nodo gana consumer, o se borra (DELETE > @deprecated).
dec-0097
Vista generada de dec-0097: Mesh placement is policy over execution/storage location (what node runs what, where stored), DOES NOT mutate Work/Edition/MediaAsset/SourceBinding per r08 catalog federated semantics. Placement is derived from capabilities + load + topology, not identity mutation.
dec-0099
Vista generada de dec-0099: Pausa de Styx para la fundación de Axon