|
|
# 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).
|