From 5e21fd1ef108b0291ad6b816d3cafb0933e90eac Mon Sep 17 00:00:00 2001 From: dev Date: Fri, 3 Jul 2026 19:24:31 +0200 Subject: [PATCH] =?UTF-8?q?docs(stumbles):=20#7=20A2=20grep=20cross-check?= =?UTF-8?q?=20proven=20ambiguous;=20provider=E2=86=92recipe=20needs=20A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Empirically confirmed the grep approach can't distinguish a provider-written functional var from a consumer-override alias (identical in CSS), and providers publish API-hook vars the recipe doesn't consume (17 such, none read by var()). Only A1 (morfo cssVars declaration) can close the provider→recipe direction. Co-Authored-By: Claude Opus 4.8 --- STUMBLES.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) 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