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

34 lines
7.0 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
# date-range-picker — ficha de auditoría (RE-AUDITADA 2026-07-07, profundidad piloto)
- **Familia**: pickers (compone date-range-field + range-calendar; month/year-range bespoke) · **Método**: solo análisis; evidencia por dimensión · demos fuera
- **Capas leídas**: [morfo](../../../src/uix/morfo/components/date-range-picker.ts) (323 líneas; expression :15, evento :25-31, MonthView razón :146-148, namespacing :165-166, literales :160/:248, cells :228-229/:316-317) · [eidos css](../../../src/uix/eidos/components/date-range-picker/) dirigido (:21-28,:111-114)
- **Máquina**: PASS · tests ✓ · README ×2 ✓
## Dimensiones (evidencia leída)
| # | Dimensión | Estado | Evidencia |
| ----- | -------------------- | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1 | Composición | ✓ con razón in-place | `expression: "delegated"` (:15) + `commit-reset` propio (:25-31) ✓ patrón canónico; **MonthView NO duplica month-grid**: es el "month-view range bridge for `kind='month'`" con su state machine empty/pending/complete + year stepper (razón :146-148) y partes flat por namespacing `month-view-*` (:165-166) — funcionalidad distinta (rango de meses vs mes único), legítima y documentada |
| 3 | Coherencia semántica | ✓ delegada | Suena por date-field (tuneado hoy); la coherencia del cuarteto range depende de SYS-3 |
| 8 | Contrato morfo | **2 hallazgos** | **F-1**: aria-label `v.literal('Select month range')` (:160) y `v.literal('Select year range')` (:248) — inglés HARDCODEADO no localizable, cuando calendar usa `v.commonRef(key, fallback)`; único caso de la familia · MonthViewCell/YearViewCell declaran `data-range-start/end` (:228-229,:316-317) ✓ caps; **verificar en fase de fixes** cómo pinta eidos el TRAMO MEDIO del rango pendiente (sin hook data-\* de in-range visible en el morfo) |
| 10 | Theming | **hallazgo doctrina** | **F-2**: su CSS re-declara privados AJENOS `--_calendar-range-{start,end}-*` con roles hardcodeados (affirm/accent :21-28; secondary :111-114) — cross-component private tuning: el anti-patrón "override del compuesto desde el host" (doctrina respect-composed-styles) en su forma más densa; + re-declara alturas de date-field per-size ×5 |
| 12 | Estados | ✓ con memoria | Placeholder compartido de endpoints (incidencia 2026-05-20 #1) documentado en el provider del single ✓ |
| 9 | A11y | ✓ con F-1 | Content: Escape close + Tab/Shift+Tab trap declarado (:140-142) |
| resto | | ✓ / hereda | tests ✓; README ×2 ✓ |
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** | 2 aria-labels en inglés hardcodeado (`v.literal`) — no localizables | Migrar a `v.commonRef('date-range-picker.month-range', 'Select month range')` + entrada de texts; censar `v.literal` con texto humano en el resto del catálogo (guard candidato: literal con espacios = sospechoso) |
| **F-2** | Re-declaración masiva de privados ajenos (`--_calendar-range-*` con roles + alturas date-field ×5) | SYS-8 (capa calendar-surface con los tokens de rango COMO API pública de la capa) + SYS-6 (token de familia field); las dos capas formales eliminan las copias |
| **F-3** | Hook del tramo medio del rango sin declarar en morfo (solo caps) | Verificación dirigida al ejecutar SYS-8: si eidos pinta in-range por selector no-morfo, es drift del contrato |
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 · SYS-6 · SYS-8 (evidencia máxima del borrow) · SYS-11 (ejemplo positivo de delegated) · **censo nuevo: `v.literal` con texto humano** (F-1 — regla de máquina candidata).
## Veredictos
_(pendiente — checkpoint post-barrido)_

Powered by TurnKey Linux.