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/range-calendar.md

39 lines
8.7 KiB

feat(audit): component re-audit + fixes P0–P5 (P4 complete, P5 in progress) Re-audit of the whole component catalog at pilot depth (91 fichas + the checkpoint verdicts in docs/audit/components/) and the executed fix packages. - P0–P3: doctrine (sema participation, CANON §3 intent, component-guide §5 + API naming, §32 outline), guards (morfo-vocabulary-check S10/S11d, component-audit A-3.1/A-1.4/S9, eidos-lint classHooks), morfo contracts (role=application removed ×4, aria-selected off the Day, drp translationRef, field data-state prune, pin-input commit-set, media-player renames), 13 new sema packs + 12 morfos family-default → pack. - P4 (N1–N10) COMPLETE: selectionMode (select/combobox/toggle-group/calendar); onValueCommit terminal-callback norm (pin-input/search/password/textarea + date/time/color-field add); typed validation reason + onInvalid (tags-input, css-field); index/onIndexChange (carousel); deselectable; openDelay/ groupSkipDelay; allowCustomValue; defaultValue prune. - P5 (in progress): S1 class-hooks codemod (22 hooks → data-attrs across cropper/button/image-picker/toggle/image-adjustments); S5 outline remnant in field.css; depth pass (data-depth=overlay on tooltip/toast/float-panel); touch-rows (--touch-target token, decoupled ::before hit-slop, area-not-visual, 44 AAA). S6 (Field composition) + S8 (calendar-surface) pending. Verification: errors-outside-(alpha|words|palabras|chronos) == 59 (baseline); morfo-vocabulary-check exit 0; eidos-lint class-hooks/invalid 0 on touched components; per-component vitest suites green. Handoff + remaining plan: docs/process/continue-audit-fixes-2026-07.md Excluded (broken by the N1 rename, left broken per user decision, not staged): words/**, palabras/**, chronos, web/routes/alpha/**. Reconciliation pending: the touch-rows ::before for checkbox/switch reverses changelog §37's earlier pseudo-element rejection (WCAG-overlap) that had routed markers to a labeled-row/Field task — flagged for the user in the handoff. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
# range-calendar — ficha de auditoría (RE-AUDITADA 2026-07-07, profundidad piloto)
- **Familia**: calendar (prestatario nº1: 79 tokens de calendar) · **Método**: solo análisis; evidencia por dimensión · demos fuera
- **Capas leídas**: [morfo](../../../src/uix/morfo/components/range-calendar.ts) (324 líneas; eventos :18-56, Cell :242-268, Day :282-317) · estructura contrastada con el donante [calendar](calendar.md)
- **Máquina**: **NEEDS-WORK** — `E-2.3` (falta README eidos) · `R-1.3` (`data-readonly` sin estilo) · tests ✓ · pack **✗**
## Dimensiones (evidencia leída)
| # | Dimensión | Estado | Evidencia |
| ----- | -------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1 | Composición | ✓ | Estructura del donante (Provider/Header/Prev/Next/Grid/Cell/Day) + no-archetype de Day con razón propia (:284 bespoke `[data-range-calendar-day]`) |
| 3 | Coherencia semántica | ✓ **contrato de referencia** con gap de carácter | **La gradación de rango que faltaba en los field-ranges está AQUÍ**: `commit-select-start` (affirm :18-23) → `commit-select-range` (**fulfill** :28-33 — el sellado del par ES el momento fulfill) → `commit-reset` (neutral :38-43) + shift-navigate. Es EL precedente interno para date-range-field/time-range-field F-1 (citarlo en su veredicto). **F-1**: toda esa riqueza suena a `family-default` (:8) — sin pack, el fulfill del rango completo no se distingue del default genérico |
| 6 | Sema | gap | Sin pack (censo: CERO packs en la familia calendar salvo el donante) → SYS-3 con el mejor argumento: eventos ricos YA declarados sin carácter |
| 8 | Contrato morfo | ✓ con herencias | `data-range-start`/`data-range-end` en Cell (:253-254) y Day (:294-295) + data-selected para el tramo — vocabulario de rango coherente; **F-2**: `role='application'` (:64) heredado sin razón (censo familia — 4 morfos) · **F-3**: Day `role='button'` (:289) + `aria-selected` (:317) — el MISMO ARIA inválido del donante (calendar F-2); Cell (:268) la lleva legítimamente |
| 9 | A11y | con F-2/F-3 | Teclado del donante (grid APG) |
| 11 | Composición interna | **borrower** | 79 tokens `--calendar-*` consumidos informalmente + privados de acento re-declarados (8 ✓); marcas holiday/event muertas tras B.2 (el token vive en `[data-calendar]`) → SYS-8, caso TRIVIAL (privados ya declarados) |
| 12 | Estados | hallazgo máquina | R-1.3 readonly sin materializar (patrón familia) |
| 14 | Docs+tests | gap | Sin README eidos (E-2.3); tests ✓ |
| resto | | ✓ / hereda donante | Incluida la cuestión weekend-por-locale (calendar F-4) si comparte la derivación |
feat(audit): component re-audit + fixes P0–P5 (P4 complete, P5 in progress) Re-audit of the whole component catalog at pilot depth (91 fichas + the checkpoint verdicts in docs/audit/components/) and the executed fix packages. - P0–P3: doctrine (sema participation, CANON §3 intent, component-guide §5 + API naming, §32 outline), guards (morfo-vocabulary-check S10/S11d, component-audit A-3.1/A-1.4/S9, eidos-lint classHooks), morfo contracts (role=application removed ×4, aria-selected off the Day, drp translationRef, field data-state prune, pin-input commit-set, media-player renames), 13 new sema packs + 12 morfos family-default → pack. - P4 (N1–N10) COMPLETE: selectionMode (select/combobox/toggle-group/calendar); onValueCommit terminal-callback norm (pin-input/search/password/textarea + date/time/color-field add); typed validation reason + onInvalid (tags-input, css-field); index/onIndexChange (carousel); deselectable; openDelay/ groupSkipDelay; allowCustomValue; defaultValue prune. - P5 (in progress): S1 class-hooks codemod (22 hooks → data-attrs across cropper/button/image-picker/toggle/image-adjustments); S5 outline remnant in field.css; depth pass (data-depth=overlay on tooltip/toast/float-panel); touch-rows (--touch-target token, decoupled ::before hit-slop, area-not-visual, 44 AAA). S6 (Field composition) + S8 (calendar-surface) pending. Verification: errors-outside-(alpha|words|palabras|chronos) == 59 (baseline); morfo-vocabulary-check exit 0; eidos-lint class-hooks/invalid 0 on touched components; per-component vitest suites green. Handoff + remaining plan: docs/process/continue-audit-fixes-2026-07.md Excluded (broken by the N1 rename, left broken per user decision, not staged): words/**, palabras/**, chronos, web/routes/alpha/**. Reconciliation pending: the touch-rows ::before for checkbox/switch reverses changelog §37's earlier pseudo-element rejection (WCAG-overlap) that had routed markers to a labeled-row/Field task — flagged for the user in the handoff. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
## Hallazgos y propuestas
| ID | Hallazgo | Propuesta |
| ------- | ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------- |
| **F-1** | Semántica de rango ejemplar SIN pack (fulfill suena genérico) | SYS-3: si la familia gana packs, este es EL candidato (start affirm suave → range fulfill pleno → reset neutral) |
| **F-2** | `role='application'` heredado sin razón documentada | Resolver JUNTO con calendar F-1 (decisión única de familia) |
| **F-3** | `aria-selected` sobre Day `role='button'` (:317) — ARIA inválido, duplicado del Cell | Mismo fix que calendar F-2 (familia entera en un pase) |
| **F-4** | Marcas holiday/event muertas (borrow roto) | SYS-8 (capa calendar-surface) |
| **F-5** | readonly sin estilo (R-1.3) | Patrón familia (con date-picker) |
| **F-6** | README eidos ausente | SYS-4 |
feat(audit): component re-audit + fixes P0–P5 (P4 complete, P5 in progress) Re-audit of the whole component catalog at pilot depth (91 fichas + the checkpoint verdicts in docs/audit/components/) and the executed fix packages. - P0–P3: doctrine (sema participation, CANON §3 intent, component-guide §5 + API naming, §32 outline), guards (morfo-vocabulary-check S10/S11d, component-audit A-3.1/A-1.4/S9, eidos-lint classHooks), morfo contracts (role=application removed ×4, aria-selected off the Day, drp translationRef, field data-state prune, pin-input commit-set, media-player renames), 13 new sema packs + 12 morfos family-default → pack. - P4 (N1–N10) COMPLETE: selectionMode (select/combobox/toggle-group/calendar); onValueCommit terminal-callback norm (pin-input/search/password/textarea + date/time/color-field add); typed validation reason + onInvalid (tags-input, css-field); index/onIndexChange (carousel); deselectable; openDelay/ groupSkipDelay; allowCustomValue; defaultValue prune. - P5 (in progress): S1 class-hooks codemod (22 hooks → data-attrs across cropper/button/image-picker/toggle/image-adjustments); S5 outline remnant in field.css; depth pass (data-depth=overlay on tooltip/toast/float-panel); touch-rows (--touch-target token, decoupled ::before hit-slop, area-not-visual, 44 AAA). S6 (Field composition) + S8 (calendar-surface) pending. Verification: errors-outside-(alpha|words|palabras|chronos) == 59 (baseline); morfo-vocabulary-check exit 0; eidos-lint class-hooks/invalid 0 on touched components; per-component vitest suites green. Handoff + remaining plan: docs/process/continue-audit-fixes-2026-07.md Excluded (broken by the N1 rename, left broken per user decision, not staged): words/**, palabras/**, chronos, web/routes/alpha/**. Reconciliation pending: the touch-rows ::before for checkbox/switch reverses changelog §37's earlier pseudo-element rejection (WCAG-overlap) that had routed markers to a labeled-row/Field task — flagged for the user in the handoff. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3 months ago
## Escalan al sistema
SYS-3 (mejor evidencia del catálogo) · SYS-4 · SYS-8 (prestatario ancla) · censo `role='application'` ×4 · censo ARIA-inválido Day ×2 · **precedente commit-select-start/range para los field-ranges** (cruce de familias).
## Veredictos
_(pendiente — checkpoint post-barrido)_

Powered by TurnKey Linux.