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.
8.2 KiB
8.2 KiB
natural-time-picker — ficha de auditoría (RE-AUDITADA 2026-07-07, profundidad piloto)
- Familia: pickers (reloj natural: cielo/astros) · Método: solo análisis; evidencia por dimensión · demos fuera
- Capas leídas: morfo COMPLETO (117 líneas) · delegación verificada en picker genérico
- Máquina: NEEDS-WORK —
A-1.4(sin URL APG) ·R-2.1(9 colores crudos) ·R-1.3/R-1.4(readonly/invalid sin estilo) ·E-2.3(sin README) · tests 0 - CORRECCIÓN MAYOR sobre el pass superficial: el "A-3.1 interactivo con 0 eventos = sema ciego por diseño roto" era INJUSTO. El header del morfo (:4-19) documenta la composición completa (Picker genérico = host transaccional Listo/Cancelar/Borrar + deferValue · TimeField segmentado · Slider banda · Button steppers/chips · PickerShell footer) y la razón: "Open/close are delegated to the composed Popover, so this morfo declares no dialog semantics and no events".
scope: ['soma','eidos'](sin sema :23) — coherente. La delegación es REAL y está escrita… pero ver F-1: el eslabón transaccional delega en un Picker que AÚN no tiene eventos.
Dimensiones (evidencia leída)
| # | Dimensión | Estado | Evidencia |
|---|---|---|---|
| 1 | Composición | ✓ documentada | Header :10-15: solo el gradiente daylight es bespoke; todo lo demás compone primitivos del sistema — el espíritu "compose existing components" cumplido y ESCRITO |
| 3 | Coherencia semántica | gap heredado, no propio | F-1: la cadena semántica tiene un eslabón hueco — el valor comete por TimeField (commit-set ✓ del embebido), pero Listo/Cancelar/Borrar fluyen por el Picker genérico cuyo morfo declara 0 eventos (deuda RECONOCIDA en picker :18-19 "candidate commit-* events for a later sema pass"). El "Listo" de un picker (el gesto más commit del patrón) suena a Button contact genérico |
| 5 | Tokens | hallazgo matizado | Los 9 hex (R-2.1) son los CIELOS — la excepción physically-fixed existe justo para esto PERO exige anotación /* literal: … */ línea a línea y no la llevan → F-2 (anotar, NO tokenizar) |
| 8 | Contrato morfo | ✓ moderno | data-state CON values ['open','closed'] enumerados (:39,:75,:96 — el patrón que calendar F-3 pide) + data-starting-style/data-ending-style condicionales (:97-106, hooks de motion) + flags disabled/readonly/required/invalid |
| 9 | A11y | gap menor | Trigger completo (haspopup dialog + expanded + label vía translationRef ✓ :76-85); Content con Escape/Tab trap (:109-113); F-3: sin cita APG (A-1.4) — la razón "Popover posee el diálogo" merece la cita del patrón compuesto como hace date-picker (apg ×2) |
| 12 | Estados | hallazgo máquina | R-1.3/R-1.4 readonly/invalid sin materializar |
| 14 | Docs+tests | gap triple | Sin README (ninguno de los dos niveles), sin tests |
| 15 | i18n | ✓ | texts + translationRef localizados (:24-27,:82) |
Hallazgos y propuestas
| ID | Hallazgo | Propuesta |
|---|---|---|
| F-1 | El footer transaccional no tiene semántica (deuda del Picker genérico, reconocida allí) | Resolver EN el Picker genérico (commit-set fulfill en Accept / commit-cancel neutral / commit-clear neutral) — ntp y los 5 pickers a migrar lo heredan gratis; NO declarar eventos propios aquí (rompería la delegación correcta) |
| F-2 | 9 hex sin anotación (R-2.1) | Anotar cada uno /* literal: physically-fixed sky/astro color */; NO tokenizar |
| F-3 | Sin cita APG (A-1.4) | Citar el patrón compuesto (dialog vía Popover) como date-picker; valorar además slider APG para la banda |
| F-4 | readonly/invalid sin estilo | Patrón familia |
| F-5 | Sin README ×2, sin tests | Paquete de estándares completo (SYS-9: iniciativa a medias) |
Escalan al sistema
SYS-2 · SYS-4 · SYS-9 · corrección del censo A-3.1: ntp EXONERADO con matiz (delegación documentada; la deuda vive en picker :18-19) — pin-input queda como el único caso desnudo · la máquina debe leer scope-sin-sema + header de composición antes de flaguear A-3.1.
Veredictos
(pendiente — checkpoint post-barrido)