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.
45 lines
4.3 KiB
45 lines
4.3 KiB
# password-field — ficha de auditoría (RE-AUDITADA 2026-07-07, profundidad piloto)
|
|
|
|
- **Familia**: fields · **Método**: solo análisis; evidencia por dimensión · demos fuera
|
|
- **Capas leídas**: [morfo](../../../src/uix/morfo/components/password-field.ts) completo (1-130+; eventos íntegros) · [soma types](../../../src/uix/soma/components/password-field/types.ts) completo (1-110+) · pack sema ✓ existe · css (censo familia: focus outline, alturas, strength 6px)
|
|
- **Máquina**: NEEDS-WORK — `E-2.3` (sin README eidos) · `R-1.3` (readonly sin estilo) · tests **0**
|
|
|
|
## Dimensiones (evidencia leída)
|
|
|
|
| # | Dimensión | Estado | Evidencia |
|
|
|---|---|---|---|
|
|
| 1 | Composición | ✓ | Surface consensuada contra 5 refs (Ark/Chakra/Mantine/Prime/Ant — documentado morfo :13-20); partes Input/VisibilityTrigger/CapsLockIndicator/StrengthMeter compositivas |
|
|
| 2 | Naming | ✓ conforme | `value/onValueChange` ✓; `visible/onVisibilityChange` (par bindable ✓, types :56-59); `onSubmit` crudo (mismo F-4 de search → _naming); `purpose: 'current'\|'new'` → autocomplete (types :61-66 — API password-manager-aware); `strength` pluggable con default `$libs/secs` (:95-110) |
|
|
| 3 | Coherencia semántica | ✓ **DOCTRINA DE REFERENCIA** | El morfo documenta con INCIDENTE por qué teclear NO es commit (`commit-input` por tecla disparaba pulse 260ms + beep por letra; alineado con editable/number/search/combobox — :40-47); `commit-toggle-visibility` = commit.toggle + affirm con cita cap. 23 (:59-72); **`signal-notify-caps-state` con `persistence: 'stateBound'`** + ciclo clearSignal razonado (el indicador seguiría 240ms y moriría con CapsLock aún activo — :73-93) |
|
|
| 4 | API | ✓ | min/maxLength; strength con resultado estructurado (score/label/warnings) y override zxcvbn/OWASP documentado; snippetProps completos (:17-30) |
|
|
| 5 | Tokens | ✓ con dup | `height-{k}` duplicada (SYS-6); strength-segment 6px = geometría del meter |
|
|
| 6 | Sema | ✓ | Pack ✓ + el contrato de eventos más fino del catálogo |
|
|
| 7 | Animaciones | ✓ | Sin keyframes; el settle del commit lo evitó la doctrina de :40-47 |
|
|
| 8 | Contrato morfo | ✓ ejemplar | APG textbox + ARIA toggle-button del trigger — citas CORRECTAS (:38, :10-11); innovación CapsLock documentada como gap 10/10 refs (:22-26); flags visible/caps-active/focused/empty (:118-121) |
|
|
| 9 | A11y | ✓ resuelto a nivel contrato | **`a11ySemantic: { requiresLiveRegion: true, reducedMotionFallback: 'text' }`** en el evento de caps (:99-102) — el anuncio para AT es parte del CONTRATO, no un extra; aria-label↔Field.Label documentado |
|
|
| 10 | Theming | hallazgo | R-1.3 readonly sin estilo (patrón familia) |
|
|
| 11 | Composición interna | ✓ | OR-merge con Field documentado (types :38-40, :73) |
|
|
| 12 | Estados | ✓ | visible/caps/focused/empty proyectados; purpose para autofill |
|
|
| 13 | Runtime | ✓ | Caps vía `getModifierState` en keydown del propio input (documentado :24-26) — sin listeners globales |
|
|
| 14 | Docs+tests | **gap doble** | Sin README eidos (E-2.3) y **cero tests** — el contrato más rico de la familia sin suite que lo proteja |
|
|
| 15 | i18n | ✓ | texts show/hide/caps-warning localizados (:32-37); warnings del meter traducibles vía langs (documentado types :103-105) |
|
|
|
|
## Hallazgos y propuestas
|
|
|
|
| ID | Hallazgo | Propuesta |
|
|
|---|---|---|
|
|
| **F-1** | Cero tests para el contrato más fino de la familia (toggle+aria, caps stateBound+clearSignal, strength plugable, debounce n/a) | Suite prioritaria en fase de fixes (SYS-2): el stateBound del caps es EXACTAMENTE lo que una regresión rompería en silencio |
|
|
| **F-2** | Sin README eidos | SYS-4 |
|
|
| **F-3** | readonly sin estilo (R-1.3) | Tratamiento único de familia |
|
|
| **F-4** | `onSubmit` crudo (tipado heterogéneo) | Veredicto _naming |
|
|
| **F-5** | `height-{k}` duplicada | SYS-6 |
|
|
| **Nota ✓✓** | La doctrina teclear≠commit (:40-47) y el a11ySemantic del caps son CANON exportable | Citarlos como referencia en el veredicto de field F-2 (Field.Input debe adoptar `commit-submit` al Enter, el patrón que este morfo documenta) y en la doctrina sema |
|
|
|
|
## Escalan al sistema
|
|
|
|
SYS-2 · SYS-4 · SYS-6 · _naming (onSubmit crudo) · **la doctrina de :40-47 resuelve el field F-2 a nivel de familia** (commit-submit-en-Enter como patrón de inputs de texto).
|
|
|
|
## Veredictos
|
|
|
|
*(pendiente — checkpoint post-barrido)*
|