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.
4.1 KiB
4.1 KiB
textarea — 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 completo (eventos+partes íntegros) · soma types completo · provider dirigido (autosize :130-177, call-sites :238/:290/:313, oninput :306-313) · pack ✓
- Máquina: NEEDS-WORK —
E-2.3(sin README eidos) · tests 0
Dimensiones (evidencia leída)
| # | Dimensión | Estado | Evidencia |
|---|---|---|---|
| 1 | Composición | ✓ | Input + Count compositivos (morfo :9-13) |
| 2 | Naming | ✓ conforme | value/onValueChange ✓; onSubmit crudo (3ª ocurrencia del patrón (b) → _naming); submitOn: 'enter'|'shift+enter'|'mod+enter'|false (types :5-6, :77-84 — shortcut flexible con semántica de newline documentada); autosize/minRows/maxRows/rows/resize |
| 3 | Coherencia semántica | ✓ referencia | Doctrina teclear≠commit citada VERBATIM con el incidente (morfo :25-30 — 3ª ocurrencia: canonizada de facto en la familia); signal-warn-count-overflow = signal.warn + risk con persistence: 'untilFix' (libro §6.2 citado), clear vía clearTarget al bajar del límite, y a11ySemantic.requiresPersistentTrace (:42-66) — segundo contrato de evento de referencia del catálogo (con el caps de password) |
| 4 | API | ✓ | Overflow: el value bindable NUNCA excede maxLength (types :86-91); clamp en el elemento para no saltar el cursor (provider :307-310); snippet expone count/max/isOverflow/clear (:11-26) |
| 5 | Tokens | ✓ | Sin duplicación de alturas (multiline n/a); recipe canónico |
| 6 | Sema | ✓ | Pack ✓ + los dos eventos con carácter |
| 7 | Animaciones | ✓ | Sin keyframes |
| 8 | Contrato morfo | ✓ con perla | data-resize ENUM con la nota del compilador documentada in-place (sin values sería presence-flag y el valor no llegaría a eidos — :84-92); flags autosize/focused/empty ✓; APG textbox correcto |
| 9 | A11y | ✓ | Count con aria-live: polite + data-overflow (verificado); el overflow anuncia con traza persistente por contrato |
| 10 | Theming | ✓ | Focus outline (censo SYS-5) |
| 11 | Composición interna | ✓ | OR-merge Field (types :33-35); describedBy vía field |
| 12 | Estados | ✓ | resize suprimido bajo autosize (documentado :71-74); overflow como estado proyectado |
| 13 | Runtime | VIOLACIÓN | F-1: measureAutosize() = write-then-read (height→auto :159, scrollHeight :173, getComputedStyle :177) llamado SÍNCRONO en oninput (:313, tras clamp+commit) y en clear (:238) y mount (:290) — cero dom.measure/raf en el fichero: reflow forzado POR TECLA con autosize activo — la clase exacta que la doctrina "[Violation] Forced reflow" prohíbe y que uix.perf detecta. Además reescribe el style attr completo (comentado :349) |
| 14 | Docs+tests | gap doble | Sin README eidos; cero tests — el contrato de overflow untilFix+clearTarget sin suite que lo proteja |
| 15 | i18n | ✓ | count: '{{count}} of {{max}}' interpolado (morfo :21) |
Hallazgos y propuestas
| ID | Hallazgo | Propuesta |
|---|---|---|
| F-1 | Autosize mide síncrono en oninput (reflow por tecla) | Diferir a frame coalescido: dom.measure(() => …, el) (el vehículo sancionado) — una medición por frame, no por tecla; el write (height:auto) y el read quedan dentro del mismo callback de frame. Verificable con el reflowDetector de uix.perf antes/después |
| F-2 | Cero tests | Suite: overflow (clamp + signal untilFix + clear al bajar), submitOn ×3 modos, autosize min/max — SYS-2 |
| F-3 | Sin README eidos | SYS-4 |
| F-4 | onSubmit crudo |
Veredicto _naming |
Escalan al sistema
Dimensión 13 gana su primer censo real: buscar la clase write-then-read-síncrono en el resto (scroll-area, cropper, splitter, float-panel, virtual-* son los candidatos naturales) · SYS-2 · SYS-4 · _naming.
Veredictos
(pendiente — checkpoint post-barrido)