From e0d82a9044e2a68d8aaae6abb80bfc57bddede19 Mon Sep 17 00:00:00 2001 From: dev Date: Sun, 12 Jul 2026 23:10:41 +0200 Subject: [PATCH] =?UTF-8?q?docs(theming):=20close=20F4-D=20queue=20?= =?UTF-8?q?=E2=80=94=20anti-CLS=20shipped,=20container-query=20dogfood=20d?= =?UTF-8?q?eclined?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Record the last two F4-D optionals as resolved: (1) anti-CLS metric fallbacks shipped (efc3f4c3); (2) the container-query dogfood is DECLINED — the framework sizes via explicit `data-size` (79 components), zero are container-aware, so routing a shipped recipe through `@container` would introduce a paradigm the framework does not use (speculative, against CLAUDE.md §2). The seam stays a documented reserved axis, already exercised by the test's synthetic recipe; dogfood it when a real container-relative layout need arises. F4-D queue empty. Co-Authored-By: Claude Opus 4.8 --- docs/process/continue-cleanroom-fixes-2026-07.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/process/continue-cleanroom-fixes-2026-07.md b/docs/process/continue-cleanroom-fixes-2026-07.md index 80e28568f..7315aed81 100644 --- a/docs/process/continue-cleanroom-fixes-2026-07.md +++ b/docs/process/continue-cleanroom-fixes-2026-07.md @@ -803,7 +803,7 @@ next/font · Fontsource) + pasada adversarial. Constante: **casi cero deuda real | **assets-variables** | Ejecutar (era trabajo real) | ✅ **HECHO** `7d4f9500` — defaults (Instrument Sans/Lora/Azeret Mono, **identidad intacta**) → variable woff2 + API de ejes arbitrarios (wdth/slnt/custom + `variationSettings`). Gap-3 (auto-métricas anti-CLS) = ergonomía opcional pendiente. | | **layer-4** (`--{c}-{role}-{slot}`) | **KEEP** | Tier deliberado del modelo de 7 capas (`reference.md:387-425`), config-backed. La premisa del audit («sin consumidores», §9:424) es **STALE**: lo consumen banner (06-01), toast (10 tokens `color-mix` sin equivalente en L3), avatar-ring, editable, words + el fallback THM-2. MD3 `comp.*`/SLDS/DTCG mantienen el tier 1:1. El ataque «slim» sobre-generalizó (lo confundió con la purga de font-size de accordion/Field). | | **jaula depth-z** | **KEEP** (reserved) | Proyección de `--z-index-*` sobre planos; excluido del bundle a propósito (stacking va por `--{c}-content-z`). Deuda real = 1 comentario falso en `render-css.ts:1170` → ✅ **corregido** este pase. | -| **jaula container-queries** | **KEEP** (open cage) | `[data-container]{container-type}` + emisor `@container` por-recipe, ya en `tsc.md` como eje reservado (Tailwind v4 envía CQ en core). Opcional: dogfoodear 1 recipe → «tested end-to-end». | +| **jaula container-queries** | **KEEP** (open cage) · dogfood **declinado** | `[data-container]{container-type}` + emisor `@container` por-recipe, ya en `tsc.md` como eje reservado (Tailwind v4 envía CQ en core). **Dogfood evaluado 07-12 y declinado**: el framework dimensiona por `data-size` explícito (79 componentes), 0 son container-aware; retrofitear CQ en un recipe shipped introduciría un paradigma que el framework no usa → especulativo/contrived (regla «nada especulativo»). El emisor ya está probado por el recipe sintético `widget` del test. Se dogfoodea cuando un componente/app tenga una necesidad real de layout relativo-al-contenedor. | | **jaula scrim** | ✅ **PODADO** (07-12) | Analizado con workflow (mapa + 4 disposiciones + estrés): las 4 colapsan en podar vs promover-a-paridad-z; C (cablear) **se hunde** (contradice el precedente z test-lockeado + consenso MD3/Radix/Vaul), D-reubicar invierte el verbo a retener. **Decisión: podar** — scrim NO gana el open-cage de z (z varía por-plano + es impintable-para-siempre; scrim ni varía ni tiene valor que sembrar, su jaula solo duplicaría `--color-overlay` → alias). Quitado de `DepthPlane`/`DEPTH_CUES`/validación/emisor + `applyDepth` doc; RFC enmendado (contrato + Phase-4 + atmósfera). El veil queda en `--{component}-overlay-*` / `--color-overlay` (= referencia). Cambio observable: cero (nunca se emitió). | | **cascada-vs-firmas** (motion) | ✅ **FIJADO + TEST** (07-12) | Workflow (mapa + 4 disposiciones + estrés) **resolvió la dirección**: gana la entrada/stagger, la firma se silencia = **doctrinalmente correcto** (RFC B.2). La lectura «firma gana» del 2º análisis estaba invertida; C (girar) contradice B.2 y su red `channels:[]` es ilusoria; D (`@layer`) se hunde como front-line (pregunta semántica con herramienta global + inversión `!important` en reduced-motion). **Cero bug visible** (select = sonido+háptico; ítem en fade-out). Ejecutado **B**: test de regresión (`motion.test.ts`) que fija el tie (0,3,0) + orden de emisión + ausencia de firma (0,4,0), como **monitor de hazard** (no «precedencia intencionada»); comentario load-bearing en `render-css.ts`; nota en `motion.md`. Endpoint diferido (trackeado): «una firma por evento» / `@layer`, gatillado por un canal visual de commit real. | @@ -813,7 +813,7 @@ next/font · Fontsource) + pasada adversarial. Constante: **casi cero deuda real - **[LIM-TOUCH]** `--touch-target: 44px` es constante ergonómica física (WCAG 2.5.5 AAA / Apple HIG), no valor de tema; token `:root` en `archetypes.css`, deliberadamente fuera del theming (§37). *(Matiz: retunable a nivel `:root`, pero no es un eje de theming.)* - **[LIM-RECIPES]** `ThemeDefinition` expone solo `color`+`shadow`; el ajuste per-componente (`recipes`) vive en `EidosConfig` (boot de app), no en el tema — un tema distribuible no re-tunea componentes sin código de app (§19, portabilidad perceptual). -**Cola F4-D restante:** scrim (decisión de diseño) · motion pin (tras decidir dirección) · gap-3 auto-métricas (opcional) · container-queries dogfood (opcional). +**Cola F4-D restante:** ✅ **VACÍA** — scrim (podado `a52f80ce`) · motion (fijado+test `d8b984bb`) · gap-3 anti-CLS métricas (`efc3f4c3`, capsize) · container-queries dogfood (declinado — paradigma explicit-size). F4-D completo. ---