You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte-kit-vice/docs/audit/components/_veredictos.md

87 lines
12 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Veredictos del checkpoint — auditoría de componentes (2026-07-07)
Checkpoint único post-barrido, resuelto ítem a ítem con el usuario. Este
documento es LA fuente de los veredictos; las fichas (`{kebab}.md`) y los
censos (`_naming.md`, `_system.md`) remiten aquí. Los fixes se ejecutan
DESPUÉS, por paquetes, sobre estas decisiones.
> **Progreso de ejecución (2026-07-08).** P0–P3 ✅ · **P4 (N1–N10) ✅ COMPLETO** ·
> **P5 en curso**: S1 ✅ · S5 ✅ · depth ✅ · touch-rows ✅ · **S6 + S8 pendientes** ·
> P6/P7 ⬜. Detalle, decisiones de método y protocolo de verificación en el handoff
> [`docs/process/continue-audit-fixes-2026-07.md`](../../process/continue-audit-fixes-2026-07.md).
> N9 se extendió a **css-field** (`onInvalid(reason,value,msg?)` con `'parse'|'custom'`)
> por decisión del usuario; touch-rows fija `--touch-target: 44px` (AAA, sobre el
> ÁREA no el visual) tras comparar 5 frameworks.
## Bloque N — Naming / API
| # | Veredicto |
| --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| N1 | **`selectionMode`** en los de selección (migran select, combobox, calendar, toggle-group; listbox/tree-view ya). file-upload conserva `multiple` como **espejo-nativo documentado** (clase accept/name) |
| N2 | **`onValueCommit: OnChangeFn` norma ÚNICA** de callback terminal. pin-input renombra `onComplete`; search/password migran su `onSubmit` crudo; el trío date/time/color AÑADE el callback junto al evento sema |
| N3 | Regla **"`value` salvo palabra de dominio universal"** — `page` (pagination) y `files` (file-upload) se quedan; carousel corrige `value`→`index`/`onIndexChange` |
| N4 | Sufijo **`{eje}Value` SOLO multi-eje** (tree-view queda: `selectedValue`/`expandedValue`); mono-eje = `value` a secas |
| N5 | **`deselectable`** catálogo-completo (calendar migra `preventDeselect`) |
| N6 | **`openDelay`/`closeDelay`** (tooltip migra `delayDuration`; `skipDelayDuration`→`groupSkipDelay`) |
| N7 | Prefijos de capacidad: **adjetivo plano > `allowX` > nunca `allowsX`** (combobox → `allowCustomValue`; `allowHalf` queda) |
| N8 | **`defaultValue` PODADO** de editable y select — `$bindable(inicial)` cubre el caso |
| N9 | Validación nivelada a color-field: **razón tipada + `onInvalid` único** (tags-input migra `validate`-boolean y `onValueInvalid`) |
| N10 | `pending` (derivado, form) vs `loading` (prop del consumidor) — **distinción documentada**; data-attrs quedan |
Las reglas D1–D8 de [\_naming.md](_naming.md) quedan ratificadas en consecuencia.
B.11 (splitter sin par bindable) = verificación dirigida, no veredicto.
## Bloque S — Sistema
| # | Veredicto |
| --- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| S1 | Hooks SIEMPRE `data-{c}-{kebab}` + **guard anti-`.eidos-*`** + codemod de los 22 (cropper 8, button 6, image-picker 6, toggle 1, image-adjustments 1) |
| S2 | Tests **DENTRO del paquete de fixes** de cada componente (goal-driven) |
| S3a | Criterio de pack **canonizado en la doctrina sema**: 3 categorías (pack / default-documentado / delegated) con citas + regla del "yet" (deuda declarada lleva plazo) |
| S3b | **Ascensos a pack: LOS 10** (veredicto del usuario, más allá de la recomendación 1–7): time-field+color-field (1º), range-calendar, Picker genérico (eventos+carácter), clipboard, drag-drop, listbox, media-player (tras renombrar), onion-menu/menu-dial, month-grid/year-grid, table |
| S4 | README dos niveles ratificado: **eidos = puerta del consumidor · soma = contrato headless** (date-field plantilla) + component-guide + pass masivo (28 eidos + soma field-langs + doc capa spin-field) |
| S5 | **CANONIZAR OUTLINE** como el modelo de focus (tras comparativa: Radix Themes/MD3/Chakra v3/RAC = outline; box-shadow = generación Tailwind/Bootstrap). §32 se reescribe con la razón (forced-colors + flicker de segmentos) + nota fechada; el remanente box-shadow de field.css migra |
| S6 | Mandato **Field composition CONFIRMADO**; R-1.3/R-1.4 (readonly/invalid ×9+2) se resuelven DENTRO como tratamiento único; 6 fields matan alturas duplicadas; `--field-segment-height` aterriza |
| S7 | **CAPA y ÁTOMO PASIVO definidos formalmente** (component-guide + markers para la máquina); color-swatch y radio-cards citas canónicas |
| S8 | **calendar-surface CONFIRMADO + tokens de rango como API PÚBLICA** de la capa (drp deja de tunear `--_calendar-range-*` ajenos) |
| S9 | Cierre por **paquetes de iniciativa** (gradient-\* junto; ntp integral; metrics+suite) + **guard de embarque** F-1.x bloqueante SOLO para componentes nuevos |
| S10 | **PODAR el `data-state` muerto** de field (los flags son la representación — anti-alias) + **declarar enums donde hay unión viva** (calendar `data-type` + los que salgan) |
| S11 | Delegación, LAS 4: (a) `expression: 'delegated'` en los 2 field-ranges · (b) A-3.1 afinada · (c) párrafo en CANON con la decisión 2026-05-26 + cita radio-cards · (d) **guard coherencia pack↔expression** (FAIL pack∧≠'pack'; WARN pack∧sin-expression) |
## Bloque C — Censos doctrinales
| # | Veredicto |
| --- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| C1 | Matriz de intent del deshacer **CANONIZADA tal cual** (colección-unselect=affirm ×5 · binario-uncheck=neutral · reset/cancel=neutral) — solo doc |
| C2 | _(reformulado tras corrección del usuario: los 8 verbos emerge son conjunto CERRADO del cap. 26 — eventos DISTINTOS, no drift)_ **Pass de verificación verbo-a-verbo contra el cap. 26** en fixes; cada overlay justifica su elección con cita; accordion (`open/close`) ↔ collapsible (`expand/collapse`) primer caso a adjudicar |
| C3 | Regla de asignación de intent en toggles binarios **ESCRITA**: marcar-hecho = direccional estático (checkbox ejemplar) · conmutar-modo = `fromProp` default neutral (switch ejemplar) |
| C4 | **QUITAR `role='application'`** de los 4 (calendar/range-calendar/month-grid/year-grid) — línea bits/Radix/M3; verificar con lector de pantalla tras el cambio |
| C5 | Campo `apg` admite **`'none — {rationale}'`** + A-1.4 exige URL o none-con-razón (ausente = flag SIEMPRE) + pass de declaración |
| C6 | **`getWeekInfo(locale)` en `$libs/days` AHORA** (fallback sáb/dom documentado); calendar deriva `weekend` + verificar `firstDay` en el mismo fix |
| C7 | D13: fix de textarea **vía el `measure` del ActiveDom DEL CONTEXTO** (precisión del usuario: nunca DOM directo ni import de `$libs/dom` — solo la instancia inyectada) + censo dirigido (scroll-area prioritario, cropper, splitter, float-panel, virtual-\*, carousel) + sonda reflowDetector |
| C8 | Afinar las 4 reglas del script (A-3.1, A-1.4, A-3.6 nombre↔verbo, universo completo con Picker) + **los escapados como fixtures de regresión** del propio script |
## Fixes obvios (aprobados sin veto durante el checkpoint)
`aria-selected` fuera del Day (calendar+range-calendar; month-grid referencia) ·
2 `v.literal` ingleses del drp → commonRef · pin-input: eventos + comentario
embustero · ~~cropper `commit-crop`→gramática~~ **(RETIRADO en P1: `apply` es
verbo canónico — extensión de autor, verbs.ts :97 — y el nombre es etiqueta de
dominio autorizada por el libro cap. 8 §1; el vocab-check ya lo señala como
warn-de-descubribilidad, pulido opcional no mandato)** · media-player 4
nombres → gramática (estos SÍ: `enter-*`/`exit-*` no parsean ni como familia
ni como verbo) · time-range-field `apg:` · touch-row coarse checkbox/switch
(patrón radio-row §37) · pass de depth (tooltip cierra Tier-A, toast,
float-panel, banner-overlay) · float-panel contrato de teclado (drawer
plantilla) · 9 cielos ntp anotados physically-fixed · literales line-height
anotados/tokenizados · errores de tipos baseline (editable, grid-list) ·
breadcrumb/link-preview línea de razón del silencio.
## Lecciones de método registradas durante el checkpoint
- **C2**: anclar en CANON/libro ANTES de presentar cualquier ítem de
vocabulario — presenté una "matriz hipótesis" cuando el cap. 26 ya definía
los 8 verbos como eventos distintos (corrección del usuario).
- **C7**: "dom.measure" se dice completo — la instancia ActiveDom del
contexto, nunca acceso directo (corrección del usuario).

Powered by TurnKey Linux.