# time-field — ficha de auditoría (RE-AUDITADA 2026-07-07, profundidad piloto) - **Familia**: fields (trío de segmentos) · **Método**: solo análisis; evidencia por dimensión · demos fuera - **Capas leídas**: [morfo](../../../src/uix/morfo/components/time-field.ts) completo (1-100+teclado) · [soma types](../../../src/uix/soma/components/time-field/types.ts) completo · provider dirigido (commit wiring :436) · [wrapper eidos](../../../src/uix/eidos/components/time-field/time-field.svelte) completo · css/recipe (censo familia: focus o2/b1, alturas, marker compartido) · sema: sin pack, **declarado** (`expression: "family-default"`, morfo :8) - **Máquina**: PASS limpio · tests ✓ · README ×2 ✓ ## Dimensiones (evidencia leída) | # | Dimensión | Estado | Evidencia | |---|---|---|---| | 1 | Composición | ✓ | Partes compositivas (Provider/Input/Segment/Label/HiddenInput); snippet `segments` ordenado (types :20-22) | | 2 | Naming | ✓ conforme | `value/onValueChange` + `placeholder/onPlaceholderChange` (types :30-36); `validate/onInvalid`, `minValue/maxValue`, `readonlySegments`, `granularity`, `hideTimeZone`, `errorMessageId`, `locale/dir/hourCycle` (:38-67) — fila conforme en [_naming.md](./_naming.md) | | 3 | Coherencia semántica | **hallazgo de trío** | Solo `commit-set` (morfo :14-25) — **date-field además emite `commit-reset`** al limpiar: vaciar un time-field no produce señal semántica → F-1. `intent: neutral`, `sequence: post` ✓ canon | | 4 | API | ✓ | Espejo exacto de date-field (sin `kind`, correcto: no aplica a horas); bindables declarados; fallbacks reactivos documentados (types :59-67) | | 5 | Tokens | ✓ con dup | Recipe canónico; `height-{k}` re-declara el bundle (SYS-6, evidencia matriz familia) | | 6 | Sema | declarado, cuestionado | `family-default` EXPLÍCITO en morfo — el trío roto es elección declarada, no olvido; la pregunta SYS-3 pasa a ser: ¿debe el trío compartir UNA expression (los tres pack o los tres default)? El provider usa `targetOverride` en el trigger (:436 ✓ el fix de partes doble-registradas) | | 7 | Animaciones | ✓ | Sin keyframes; transición solo-background heredada del patrón de familia | | 8 | Contrato morfo | ✓ más rico que su hermano | APG spinbutton ✓; teclado 5 teclas (verificado — sin Home/End, F-2); **su bloque ARIA del Input es MÁS completo que el de date-field**: añade `aria-readonly` ariaBoolean + `aria-invalid` condicional (morfo :76-90) que date-field no tiene → F-3 (unificar el trío al bloque rico) | | 9 | A11y | ✓ con F-2 | aria-value\* por segmento, labelledby condicional; falta Home/End | | 10 | Theming | censo | Focus outline (o2/b1) → SYS-5; segment marker compartido ✓ (state-layer llega) | | 11 | Composición interna | mandato | Sin wrapper `[data-field]` (SYS-6/B.1 — fue LA sonda en vivo de esta familia); wrapper eidos espejo exacto de date-field (leído) | | 12 | Estados | ✓ | invalid/disabled/readonly/required + readonlySegments granular; hidden-input forms ✓ | | 13 | Runtime | ✓ | Sin timers/listeners crudos en lo dirigido; targetOverride ✓ | | 14 | Docs+tests | ✓ | README ×2, suite ✓ | | 15 | i18n | ✓ | texts morfo; formatter por locale reactivo; `$libs/days` ✓ | ## Hallazgos y propuestas | ID | Hallazgo | Propuesta | |---|---|---| | **F-1** | Falta `commit-reset` (date-field lo tiene; limpiar no suena) | Añadir el evento al morfo + wiring en provider (espejo de date-field) — como parte del veredicto de trío SYS-3 | | **F-2** | Sin Home/End (APG spinbutton) | Pass de familia de segmentos (con date/color) | | **F-3** | ARIA del Input asimétrico en el trío (este es el RICO) | Unificar: date-field adopta aria-readonly/aria-invalid de time-field | | **F-4** | `height-{k}` duplicadas | SYS-6 | ## Escalan al sistema SYS-3 **matizado con evidencia nueva**: el trío declara expressions distintas a propósito (`pack` vs `family-default` ×2) — el veredicto es de COHERENCIA declarada, no de olvido. · SYS-5 · SYS-6. ## Veredictos *(pendiente — checkpoint post-barrido)*