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/pin-input.md

34 lines
3.4 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.

# pin-input — ficha de auditoría (RE-AUDITADA 2026-07-07, profundidad piloto)
- **Familia**: fields (OTP/pin) · **Método**: solo análisis; evidencia por dimensión · demos fuera
- **Capas leídas**: [morfo](../../../src/uix/morfo/components/pin-input.ts) (eventos+partes verificados por grep exhaustivo) · [soma types](../../../src/uix/soma/components/pin-input/types.ts) superficie · [provider](../../../src/uix/soma/components/pin-input/pin-input-provider.svelte.ts) dirigido (:18,:99) + su test (:115)
- **Máquina**: PASS limpio · tests ✓ · README ×2 ✓
- **Chequeo de delegación** (lección date-range): compone `FieldProvider.get()` (:99, OR-merge de flags ✓) pero el morfo de Field TAMPOCO tiene eventos commit (field F-2) → no hay delegación semántica posible; F-1 se sostiene sin excusa composicional
## Dimensiones (evidencia leída)
| # | Dimensión | Estado | Evidencia |
|---|---|---|---|
| 1 | Composición | ✓ | Patrón OTP estándar: UN `<input>` real invisible + celdas fake renderizadas (`PinInputCellData`: char/isActive/isFilled/**hasFakeCaret** — types) — el input-único preserva autofill de SMS/gestores ✓ |
| 2 | Naming | **dato de censo** | `PinInputType: numeric\|alphanumeric\|alphabetic\|custom`; cells en snippet; `value` string; **`onComplete`** (test provider :115 "fires onComplete once") — CUARTO nombre de callback terminal del catálogo (vs onValueCommit/onSubmit/solo-evento) → _naming fila 22 |
| 3 | Coherencia semántica | **GAP GRAVE (elevado desde el pass superficial)** | **F-1**: `semantic:` = 0 confirmado (77 líneas) Y el header del morfo (:7-9) PROMETE lo contrario: "Sound for **commit-fill** (when the input reaches its length) comes from the `commit` family base — no per-component cascade needed" — pero no existe evento `commit-fill` alguno y `scope: ['soma','eidos']` (:10) NI SIQUIERA incluye sema: el sonido prometido es FÍSICAMENTE imposible. Comentario y contrato se contradicen en el mismo fichero. Tras el censo de delegaciones de la familia pickers (ntp exonerado, Picker con deuda declarada), pin-input queda como **el único 0-eventos desnudo del catálogo** |
| 4 | API | ✓ | Tipos de entrada, celdas derivadas, fake caret |
| 8 | Contrato morfo | con F-1 | APG textbox ✓ correcto para el input único |
| 9 | A11y | verificar en fixes | El anuncio del progreso (celda N de M) — revisar cuando F-1 defina los eventos |
| 10-15 | | ✓ | Focus outline; tests ✓; README ×2 ✓; sin señales de indisciplina |
## Hallazgos y propuestas
| ID | Hallazgo | Propuesta |
|---|---|---|
| **F-1** | Interactivo sin contrato semántico (0 eventos; `onComplete` dispara JS crudo sin commit) | Declarar: `commit-set` (+fulfill) al completar todas las celdas (donde hoy dispara `onComplete`) · opcional `signal-warn-reject` untilFix si el consumidor marca el código inválido (el patrón de la familia: textarea/tags/form) · luego pack o family-default razonado. Es EL gap de contrato de la familia junto a natural-time-picker |
| **F-2** | Composición Field: soma OR-merge ✓ verificado (:99,:136 inputId al hidden) | Queda solo verificar el wrapper eidos (label/error del OTP) con el pass SYS-6 |
## Escalan al sistema
Censo A-3.1-de-facto (interactivos sin eventos): natural-time-picker + **pin-input** — y pregunta al guard: ¿por qué la máquina no lo flaguea aquí? (afinar la regla A-3.1) · SYS-6.
## Veredictos
*(pendiente — checkpoint post-barrido)*

Powered by TurnKey Linux.