diff --git a/STUMBLES.md b/STUMBLES.md index 65e6f1317..c7cf39412 100644 --- a/STUMBLES.md +++ b/STUMBLES.md @@ -128,8 +128,20 @@ selectors vía `style` no, pero soma+eidos ya son 2). > exentas por construcción. El guard cazó **3 fantasmas reales** además de los > del Knob — `card-group --color-content-default`→`-primary`, `link-preview > --leading-body`→`-normal`, `textarea --font-family-body`→`-primary` — -> arreglados. Queda solo la dirección **provider→recipe** (opción A): declarar -> las vars del provider en el morfo (`cssVars`) o un grep-cross-check. +> arreglados. Queda solo la dirección **provider→recipe** (opción A). +> +> **A2 (grep) descartado — probado ambiguo (2026-07-03).** Un `var(--{c}-x)` que +> el recipe lee es indistinguible entre (1) var funcional escrita-por-provider y +> (2) alias override-por-consumidor: idénticas en el CSS. Y muchos providers +> **publican** vars como hook de API que el recipe por defecto NO consume +> (`--drawer-progress`, `--dialog-depth`, `--toast-swipe-*`, `--scroll-area-*` — +> 17, ninguna leída por `var()` en componentes). Así que ni "provider escribe → +> recipe lee" ni el inverso distinguen un rename de un hook legítimo; un grep +> cross-check da ~17 falsos positivos. **Solo A1 lo cierra**: declarar +> `cssVars: [...]` en el morfo (fuente de verdad de qué vars SON el contrato) + +> guard "el provider escribe cada `cssVar` declarada" (un rename deja de +> escribir la declarada → se detecta). Coste: morfo types+schema+compile + +> declarar en cada morfo con vars publicadas + guard. Pendiente de decisión. ## 8. Dos docs imprescindibles no estaban en el paquete