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/_cierre.md

88 lines
9.0 KiB

# Cierre del programa — re-auditoría de componentes + fase de fixes
**Estado: COMPLETO.** Auditoría: 2026-07-07 (91 fichas, profundidad piloto).
Checkpoint de veredictos: 2026-07-07 ([`_veredictos.md`](./_veredictos.md)).
Ejecución de fixes: 2026-07-08 → 2026-07-11. Rama `alpha-0.1-sec-dom`.
## Resultado final (gates del 2026-07-11)
| Puerta | Estado |
| -------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| Matriz de aceptación (`component-audit.ts`) | **134 PASS · 0 NEEDS-WORK · 0 BROKEN** (de 81 PASS al arrancar la ejecución) |
| Guards de capa (`contracts.test.ts`) | **37/37 verde** (primera vez; partía con 13 fallos) |
| Vocabulario morfo (`morfo-vocabulary-check`) | exit 0 (1 WARN conocido: `cropper.commit-crop`, descubribilidad) |
| Baseline de tipos (fuera de `alpha\|words\|palabras\|chronos`) | **57** — invariante durante todo el programa (59→57 en P7) |
| eidos-lint (catálogo) | 0 selectores inválidos · 0 class-hooks en lo tocado |
## Recorrido por paquetes (hashes)
| Paquete | Contenido | Commits |
| ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
| P0–P3 | Doctrina · guardas · contratos morfo · 13 packs | `53b6f629` (lote inicial) |
| P4 naming N1–N10 | `selectionMode` · `onValueCommit` · `deselectable` · delays · razones tipadas… | `53b6f629` |
| P5 sistema | S1 codemod class-hooks · S5 outline · depth · touch · **S6 Field composition** (16 fields + poda 199 tokens + de-alias) · S8 calendar-surface | `5eb92132..d1670caa` · `83e13be6` |
| P6 | C6 `getWeekInfo` · C7 D13 textarea+censo · B.11 splitter bindable | `3b02fd11` · `444e05eb` · `0f0feb4f` |
| P7 baseline + S7 | 2 errores mandados (59→57) · papeleo pasivos/capas | `c0ae3de1` · `fe844c62` |
| **S4 dossiers** (5 lotes + drag-drop) | 30 READMEs eidos a forma dossier + README soma field-langs → **E-2.3 = 0** | `7b82aa79` · `20e2e7a1` |
| One-liners + §37 | delegated/apg/archetype + docblocks · **§37 resuelto (a)-con-nota** | `dd0637f6` · `bf573430` |
| compile.test | Test stale post dialog-001 adjudicado + guard nuevo | `e8f12aa1` |
| **S9 iniciativas** | gradient-\* (graduación ACTIVE_DEV_TRACK) · ntp integral (válvula `literal:` R-2.1 + README soma + suite 12/12) · metrics+suite (puente interno + helper + suites 7/7) | `45ae3691` · `dd249eac` · `8e3a67bd` |
| Censo contracts | 12→3: knob barrel+README · puentes internos · 6 barrels→`internals.ts` · track-filter · data-archetype + 4 morfos field-trigger | `cb554ae2` |
| Demos fuera del fix | **Decisión de producto (2026-07-10): frame NUEVO para las demos del sistema** → reglas D-\* verdict-neutral | `e53bf0e8` |
| Convergencia runtime | field `commit-submit` al Enter (doctrina de familia) · float-panel `writeProperty`/`uix.timers` + kb-gestos con handle-events · A-3.7 a acciones distintas · puerto media-provider exento → **contracts 37/37** | `33f346ed` · `bdd17f04` |
| Censo R-1.x | badge al velo §38 (fix real) + 8 exceptions con evidencia (pin-input ya pintaba en `[data-active]`) | `ee9786bc` |
| Lote 6 final | Los 5 últimos dossiers + apg timeline + literales anotados → **134/0/0** | `7f2bcc28` |
## Método canonizado (reutilizable)
- **Dossier = plantilla date-field**: `## Baseline` · `## Comparativa` ≥3
refs · `## Decisiones` · `## Gaps` con disposición
(implementar/diferir/descartar) · `## Passive justification` si pasivo.
- **`R-x.y exception:` SOLO con evidencia leída** (dónde pinta de verdad:
capa compartida, compuesto, o vehículo de state-attr propio). Si no pinta
en ningún sitio: gap real a `## Gaps`, nunca exception.
- **No-cascada**: un componente → verificar (`component-audit --only`) → el
siguiente. Gates completos al cierre de cada paquete.
- **Válvulas de la máquina**: `/* literal: <razón> */` en línea (R-2.1/R-2.7/
R-4.x — physically-fixed); `SOMA_INTERNAL_PRIMITIVES` (puentes sin
Provider que declaran 'soma' con verdad); A-3.7 cuenta acciones DISTINTAS;
D-\* verdict-neutral hasta el frame nuevo de demos.
- **Verificación observable**: cambios de runtime se prueban con gesto/tecla
real en navegador (drag píxel-perfecto, stamps `data-event*`), no solo con
suites.
## Hallazgos registrados que trascienden el programa
- Marcas holiday/event de range-calendar MUERTAS (2 tokens emitidos bajo
`[data-calendar]`, no resuelven bajo `[data-range-calendar]`) — en su
`## Gaps`.
- Asimetría de naming entre gemelos tree (`value`+`expanded` vs
`selectedValue`+`expandedValue`) — decisión N4 de espejo pendiente.
- Invalid de RANGO sin pintar en los dos range-fields (los endpoints no
reciben el invalid de rango) — gap compartido documentado.
- class-hooks preexistentes fuera del codemod S1: color-picker(2) ·
time-picker(8) · time-range-picker(12).
fix(morfo)!: tags-input habla UN patron ARIA - layout grid, cierra F-1 El AX hablaba tres dialectos rotos a la vez (medido por CDP): dos listbox anidados (las opciones eran hijas del Control; el Provider no tenia ninguna), button DENTRO de option (rol hoja: el nombre se fundia - "svelte Eliminar etiqueta" como una sola cosa) y un combobox sin aria-expanded/aria-controls apuntando activedescendant a etiquetas commiteadas. F-1, adjudicado 2026-07-07; el registro de ayer era una re-deteccion parcial. Estructura B (firmada): Control = grid de UNA fila - etiquetas = gridcell (conservan el aria-selected -> stateRef de 2ce43db56; gridcell lo admite) - el boton de borrar CONVIVE en la celda de su etiqueta ("a cell contains one widget... link, button" - lo que lo prohibia era option, Children Presentational) - el input en celda propia como TEXTBOX nativo (combobox EXIGE controls/expanded y no hay popup) - el Provider pierde su listbox. Dos partes privadas nuevas (Row, InputCell) con display:contents: grid solo posee filas, row solo celdas. - Teclado: la navegacion estaba MUERTA (ArrowLeft x2 avanzaba 0) y ahora camina; el resalte mueve foco DOM - la CONDICION de retirar el activedescendant (su destino debe ser descendiente y era hermano). Tabulacion sigue en UNA parada. - aria-orientation RETIRADO (no es propiedad de grid; Chrome no la expone, medido): se conserva como comportamiento, no como atributo. - Pixel CERO: sonda 2.496 valores por identidad de nodo, 0 diffs, geometria al centesimo; capturas byte-identicas. CSS: 7 lineas display:contents. - Gates: morfo 222/222 - soma tags-input - attr-audit con el techo APRETADO 1->0 - eidos 443+1 ajeno - morfo:check PASA - check 0 propios - docs 0/0. - Registro: F-1 CERRADO (ficha de componente, nota fechada) - el item 12.5 del tono MOVIDO de 13 a 12 con sus dos cifras corregidas ((0,4,0); gana el BLOQUE de archetypes) - abiertos: tag-group filas sin celdas (el "precedente" refutado midiendo: CERO gridcell), search-field F-1, y la regla del censo de citas APG - demo: 3 filas de su tabla a11y actualizadas para no mentir sobre los roles nuevos. - Trampa nueva anotada: `const state = Provider.create()` SOMBREA la runa $state (compila y revienta en render); un error SSR no llega al navegador - se caza navegando por el router desde otra pagina. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 month ago
- **`tags-input` F-1 — CERRADO el 2026-08-25**, mes y medio después del
programa, por la firma «el árbol ARIA de `tags-input` habla UN patrón»: se
eligió UNO (el layout grid que su `apg` ya citaba) y se retiró el rol
duplicado Provider/Control y el `combobox` sin popup. Detalle fechado en su
[ficha](./tags-input.md). Deja vivo el censo de citas APG erróneas que la
ficha alimenta: `search-field` F-1 (misma clase) y `tag-group` (mismo `apg`,
filas SIN celdas) — ver [`_system.md`](./_system.md).
## Fuera del programa (dueños nuevos)
- **Demos**: frame nuevo de sistema (decisión 2026-07-10) — las reglas D-\*
se reescriben contra él cuando exista.
- **Pistas activas**: `words/**` · `palabras/**` · `chronos` (rotas por N1,
decisión de dejarlas — `ACTIVE_DEV_TRACK`).
- **Follow-ups**: `task_d66356de` (trp data-size a endpoints) · Task #31
(pickers → `PickerProvider<TValue>` genérico) · `FieldLangsSnippetProps`
exportado sin uso.
- **Sucesora**: la auditoría clean-room del 2026-07-10
([`docs/audit-new-10-july/audit-active-uix.md`](../../audit-new-10-july/audit-active-uix.md))
— su tabla §9 es la cola nueva; el arranque está en
[`docs/process/continue-cleanroom-fixes-2026-07.md`](../../process/continue-cleanroom-fixes-2026-07.md).
Nota: su P1 **SOM-5 ya quedó cerrado** por este programa (field
`33f346ed` · float-panel `bdd17f04`, posteriores a su snapshot).

Powered by TurnKey Linux.