docs(theming): close THM-4 — 5 hotspots adjudicated, only 1 real debt item

Adjudicate color-picker (29), avatar (28), time-range-picker (26): all
0 debt — composition (de-dialoged pickers compose Popover; avatar's
per-role color now lives in the shared layer after the THM-2 migration;
sliders/toggle composed), behavioral (sema last-action, format, endpoint,
loading status), and per-file-lint blind spots (recipe-token variant
rules). Across the 5 biggest hotspots (156 unused) the only real debt was
stepper's dual-representation API, now consolidated. Confirms the doctrine:
the unused column stays informational, no machine rule warranted. THM-4
closed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
menubar-v4-safe
dev 3 months ago
parent 75fa94005b
commit 34d1d46bdb

@ -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]`

Loading…
Cancel
Save

Powered by TurnKey Linux.