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

12 KiB

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