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/field-langs.md

42 lines
9.0 KiB

# field-langs — ficha de auditoría (RE-AUDITADA 2026-07-07, profundidad piloto)
- **Familia**: fields (campo localizado; recién embarcado `0522efe0`) · **Método**: solo análisis; evidencia por dimensión · demos fuera
- **Capas leídas**: [morfo](../../../src/uix/morfo/components/field-langs.ts) completo (1-90+) · [soma types](../../../src/uix/soma/components/field-langs/types.ts) superficie · sema: `family-default` RAZONADO in-place
- **Máquina**: PASS con `R-2.7` (_`line-height: 1.2` literal sin anotar_) · tests **0** · README soma **✗** / eidos ✓
- **Corrección sobre el pass superficial**: el antiguo F-4 ("semántica del conmutador sin declarar") era FALSO — el morfo la declara y razona (abajo). La ficha superficial no había leído el contrato.
## Dimensiones (evidencia leída)
| # | Dimensión | Estado | Evidencia |
| ----- | -------------------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 1 | Composición | ✓ ejemplar | Patrón picker A27 citado (morfo :9-13): compone el eidos `<Field>` + conmutador in-control cuya FORMA se adapta (segmented ≤3 idiomas · Select ghost >3 o forzado); **Switcher `kind: 'private'`** con razón doble (:77-84): el `commit-toggle` del ToggleGroup es semántica EQUIVOCADA para navegación de contexto + su chrome se colaría en el control — radiogroup propio en segmented |
| 2 | Naming | ✓ | `LangSpec = code \| {code,label?,dir?}` (RTL por idioma ✓); `values: Record<LangCode,string>` bindable; `switcherSide: start\|end` lógico; `switcherMode: auto\|segmented\|select` |
| 3 | Coherencia semántica | ✓ **declarada y razonada** | `shift-navigate` con cap. 27 citado (cambio de régimen entre valores por-idioma, NO fijación — :39-52); `expression: 'family-default'` RAZONADO (:29-33): el settle visual es la base de shift, el tap del press lo pone el pack del ToggleGroup compuesto — decisión sema COMPOSICIONAL documentada (modelo para el veredicto SYS-3: family-default puede ser elección arquitectural, no hueco) |
| 4 | API | ✓ | `languages` + `required: LangCode[]` + `missingRequired` derivado en snippet (validación por idioma) |
| 5 | Tokens | hallazgo | **F-1**: `line-height: 1.2` literal (R-2.7) |
| 6 | Sema | ✓ | Ver dim 3 — el caso canónico de default-por-composición |
| 7 | Animaciones | ✓ | Sin keyframes |
| 8 | Contrato morfo | ✓ | `data-active-lang` emit value + `data-switcher-side` enum + flags; switcher-label localizado |
| 9 | A11y | ✓ a verificar en fixes | Radiogroup del switcher (roles por verificar en las partes restantes al ejecutar) |
| 10-12 | | ✓ | Compone Field DE VERDAD (el recién llegado hace lo que el mandato SYS-6 pide a los veteranos) |
| 13 | Runtime | ✓ | Sin señales de indisciplina en lo leído |
| 14 | Docs+tests | **gap doble** | **Cero tests** (draft por idioma, missingRequired, switch de contexto) + README soma ausente (el contrato headless sin doc) |
| 15 | i18n | ✓ | Su razón de ser; texts + switcher-label |
## Hallazgos y propuestas
| ID | Hallazgo | Propuesta |
| ----------- | ------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| **F-1** | `line-height: 1.2` literal (R-2.7) | `var(--leading-ui)` o anotación `/* literal: razón */` |
| **F-2** | Cero tests | Suite: valores por idioma (persistencia del borrador al conmutar), missingRequired, modos del switcher — SYS-2 |
| **F-3** | README soma ausente (patrón invertido) | Crearlo — SYS-4 |
| **Nota ✓✓** | La razón escrita del `family-default` composicional (:29-33) es EL modelo para el veredicto SYS-3 | Citarla en el checkpoint: "default legítimo cuando el carácter lo aporta el compuesto" |
## Escalan al sistema
SYS-2 · SYS-4 · **SYS-3 gana su segundo criterio documentado** (composición aporta el carácter → default legítimo).
## Veredictos
_(pendiente — checkpoint post-barrido)_

Powered by TurnKey Linux.