diff --git a/docs/process/continue-cleanroom-fixes-2026-07.md b/docs/process/continue-cleanroom-fixes-2026-07.md index 1d1a626a7..642696c72 100644 --- a/docs/process/continue-cleanroom-fixes-2026-07.md +++ b/docs/process/continue-cleanroom-fixes-2026-07.md @@ -418,13 +418,50 @@ accionable son **decisiones de diseño** (como el dual-API de stepper que el usuario decidió consolidar), no podas mecánicas. Esto CONFIRMA la predicción de la doctrina ("la mayoría son legítimos") y sugiere que **la tasa de deuda NO justifica una regla de máquina** — THM-4 es sobre todo -adjudicación documentada. Restan color-picker/avatar/trp por adjudicar -(probablemente mismo patrón: mayoría legítima + alguna redundancia/decisión). +adjudicación documentada. + +### THM-4 · color-picker (29) + avatar (28) + time-range-picker (26) ✅ ADJUDICADOS 2026-07-12 — 0 deuda + +- **color-picker (29)** → 0 deuda: `data-state='open/closed'` (root/content/ + trigger) = **composición** (de-dialoged, `color-picker-content.svelte` compone + `PopoverContent` — el estado lo pinta el Popover) · `data-last-action=*` = + **sema/dismissal** (escrito por prewrites close-commit/cancel/dismiss, lo + consumen sema packs) · `data-format`/`data-disabled/invalid/readonly/required` + + area/channel-slider/swatch = behavioral + composición (Sliders/Field + compuestos). +- **avatar (28)** → 0 deuda: `[data-avatar][data-color='ROLE']` ×8 = **artefacto + de capa compartida** — mi migración THM-2 movió el color al forward + `[data-avatar][data-color]` presence-guarded, así que los per-rol dejaron de + vivir en avatar.css (viven en la capa) → el count SUBIÓ por una MEJORA, no + deuda · `data-variant='soft/solid'` = lo consume el **recipe token** (generado, + verificado 2 hits) — punto ciego del lint per-fichero (solo ve avatar.css) · + badge `[data-color='ROLE']` ×8 = el matrix consume la forma compuesta + `[variant][color]`, no la per-rol suelta · `data-status=*` = estado de carga + behavioral (loading/idle SÍ se usan; loaded/error = default). +- **time-range-picker (26)** → 0 deuda: `data-state='open/closed'` = composición + (Popover) · `data-last-action`/`data-starting-style`/`data-ending-style` = + sema + motion @starting-style · `*-slider[data-endpoint/disabled]` + + day-period-toggle = composición (Sliders/Toggle) + behavioral (endpoint) · + `data-disabled/required` = form-state. + +### THM-4 — CONCLUSIÓN (5 hotspots adjudicados) + +Los 5 mayores hotspots (156 `unused` juntos) están adjudicados: **media-player, +color-picker, avatar, trp = 0 deuda** (composición + behavioral + capa +compartida); **stepper = 1 redundancia de API, consolidada** (`75fa9400`). +**Deuda real total en los 5 mayores = 1 ítem** (arreglado). Esto CONFIRMA la +doctrina ("la mayoría son legítimos") y sella la decisión: **la columna `unused` +se queda informativa, sin severidad/regla de máquina** — la tasa de deuda no la +justifica. El resto del catálogo (~1140) es la cola larga de las mismas +categorías legítimas. Hallazgo colateral: migrar un componente a la capa +compartida (avatar) SUBE su `unused` (los per-rol pasan a artefacto de capa) — +el count alto no es señal de deuda. **THM-4 CERRADO.** ### Cola pendiente (sin orden fijo — algunas requieren decisión de usuario) - **THM-2 rollout** — CERRADO (ver §THM-2; `Avatar.Badge` fuera por diseño). -- **THM-4 hotspots** — **media-player ✅ adjudicado (0 deuda, dossier arriba)**. - Restan: stepper 30 · color-picker 29 · avatar 28 · trp 26 (dossier c/u). +- **THM-4 hotspots** — **CERRADO**: 5 hotspots adjudicados (media-player/color- + picker/avatar/trp = 0 deuda · stepper = 1 redundancia consolidada `75fa9400`). + Columna `unused` = informativa, sin regla. Dossiers arriba. - **F4-D GAP-\*** — menú de personalización (§7): pendiente de SCOPING del usuario (qué se arranca vs qué se registra como límite deliberado). - **cascada-vs-firmas** (motion) — cola lateral: las reglas `[data-stagger]`