|
|
|
|
@ -1,6 +1,86 @@
|
|
|
|
|
# Continue
|
|
|
|
|
|
|
|
|
|
Fecha de corte: 2026-05-15. Rama: `active-uix`.
|
|
|
|
|
Fecha de corte: 2026-05-16. Rama: `active-uix`.
|
|
|
|
|
|
|
|
|
|
Actualizacion 2026-05-16:
|
|
|
|
|
|
|
|
|
|
- Soma queda en estado funcionalmente cubierto a nivel provider/runtime:
|
|
|
|
|
`npm run check` -> 0 errores / 0 warnings, `npm run test` -> 233 archivos,
|
|
|
|
|
2242 tests OK, y la guardia de `*-provider.svelte.ts` sin test directo
|
|
|
|
|
devuelve `NO_MISSING_PROVIDER_TESTS`.
|
|
|
|
|
- Lo que falta para cerrar Soma de verdad no es mas cobertura de providers, sino
|
|
|
|
|
las capas exteriores:
|
|
|
|
|
1. Auditar wrappers Svelte publicos (`*.svelte`) frente a sus providers:
|
|
|
|
|
props bindables, snippets, forwarding de attrs, eventos y defaults.
|
|
|
|
|
2. Auditar barrels publicos (`index.ts`, `exports.ts`) para que no expongan
|
|
|
|
|
clases runtime internas, reexports muertos ni fachadas sobre `$libs`.
|
|
|
|
|
3. Validar rutas `/uix/components/*` con navegador: sin `pageerror`, sin
|
|
|
|
|
errores de consola, sin warnings de traduccion inesperados y con flujos
|
|
|
|
|
basicos interactivos.
|
|
|
|
|
4. Sincronizar inventario/documentacion Soma con el estado real: componente
|
|
|
|
|
activo, visual-native, wrapper publico, provider runtime y tests.
|
|
|
|
|
5. Mantener la doctrina DOM actual: escrituras gestionadas, listeners
|
|
|
|
|
globales, focus/scroll imperativos y portal/query global pasan por
|
|
|
|
|
`ActiveDom`; lecturas locales (`getBoundingClientRect`, `contains`,
|
|
|
|
|
`closest`, `scrollTop`, etc.) siguen siendo responsabilidad del componente.
|
|
|
|
|
6. Dejar optimizaciones de rendimiento para despues de cerrar API publica y
|
|
|
|
|
wrappers: virtualizacion compartida, datetime compartido y micro-churn del
|
|
|
|
|
runtime solo si aparecen datos reales o tests que lo justifiquen.
|
|
|
|
|
- Auditoria `src/arts/sium/kimi-audit.md` leida y evaluada. Mi veredicto:
|
|
|
|
|
buena auditoria, bastante alineada con el rol real de Sium como codec +
|
|
|
|
|
validador + introspeccion para Active, pero con dos matices:
|
|
|
|
|
- La prioridad critica correcta es integridad de datos, no ampliar Sium hasta
|
|
|
|
|
parecerse a Zod.
|
|
|
|
|
- Algunos fixes descritos como "1 linea" no lo son si queremos mantener
|
|
|
|
|
contratos `decodeSync`, `~sium` y `Form.AutoFields` coherentes.
|
|
|
|
|
- Sium P0 recomendado, sin cambios breaking:
|
|
|
|
|
1. Corregir `isPlainObjectRecord(...)` para aceptar solo objetos planos. No
|
|
|
|
|
usar `value.constructor === Object` como unica regla: preferir
|
|
|
|
|
`Object.getPrototypeOf(value) === Object.prototype || null` para no romper
|
|
|
|
|
objetos null-prototype y reducir falsos positivos.
|
|
|
|
|
2. Mejorar `email()` con una regex conservadora de producto, no RFC completa:
|
|
|
|
|
dominio sin puntos dobles y TLD practico de 2+ caracteres.
|
|
|
|
|
3. Cachear `regex(pattern)` sin mutar `lastIndex`. Si el pattern trae `g` o
|
|
|
|
|
`y`, clonar sin flags mutables o resetear antes de probar.
|
|
|
|
|
4. Alinear README con `ctx.rootValue`: hoy solo es seguro en refines de objeto
|
|
|
|
|
ya decodificado. Las validaciones cross-field deben vivir en el object
|
|
|
|
|
refine, no en field refines.
|
|
|
|
|
5. Revisar `optional/nullable/defaulted` con schema interno async. El problema
|
|
|
|
|
es real, pero la solucion no es mover un `if`: `createSchema.decodeSync`
|
|
|
|
|
lanza por `spec.async === true` antes de entrar en `decodeImpl`. Hace falta
|
|
|
|
|
una decision de runtime (`syncShortCircuit`, decodeSync custom por wrapper,
|
|
|
|
|
o semantica documentada de "schema async siempre async").
|
|
|
|
|
- Sium P1 coordinado con consumidores:
|
|
|
|
|
1. No cambiar `lazy()` a `kind: 'lazy'` hasta que
|
|
|
|
|
`src/uix/soma/components/form/components/form-auto-fields.svelte` sepa
|
|
|
|
|
renderizar/posponer ese kind. Hoy `SchemaKind` no incluye `lazy`.
|
|
|
|
|
2. Anadir refinements pequenos y utiles: `finite`, `safe`, `positive`,
|
|
|
|
|
`nonempty`, `uuid` solo si hay uso inmediato en Active/Form.
|
|
|
|
|
3. Anadir utilidades de objeto (`partial`, `pick`, `omit`, `extend`) y
|
|
|
|
|
estructuras (`tuple`, `record`) cuando AutoFields y `~sium.shape` tengan
|
|
|
|
|
contrato de introspeccion claro.
|
|
|
|
|
4. Considerar `preprocess` y `coerce` como features de formularios, no como
|
|
|
|
|
ampliacion generalista.
|
|
|
|
|
- Sium P2 interno:
|
|
|
|
|
1. Cerrado: `types/_helpers.ts` incorpora `createDomainValueSchema(...)` y
|
|
|
|
|
`createDomainRangeSchema(...)`. `colorValue`, `dateValue`, `timeValue`,
|
|
|
|
|
`dateRange` y `timeRange` comparten ahora el patron identity codec +
|
|
|
|
|
guard + widget + range order sin mover esa logica a `core`.
|
|
|
|
|
2. Unificar paths sync/async de combinadores solo con tests amplios; es zona
|
|
|
|
|
sensible por `SiumAsyncSchemaError`.
|
|
|
|
|
3. Documentar limites de `lazy()` con inputs ciclicos o anadir proteccion
|
|
|
|
|
`WeakSet` si empieza a recibir datos no confiables.
|
|
|
|
|
- Validacion Sium domain factory:
|
|
|
|
|
- `npx vitest run src/arts/sium/test/color.test.ts src/arts/sium/test/date.test.ts src/arts/sium/test/time.test.ts src/arts/sium/test/standard-schema.test.ts` -> 4 archivos, 122 tests OK.
|
|
|
|
|
- `npm run check` -> 0 errores, 0 warnings.
|
|
|
|
|
- Criterio de cierre para Sium antes de tocar consumidores UI:
|
|
|
|
|
- Tests focales de `src/arts/sium` verdes.
|
|
|
|
|
- `npm run check` sin warnings.
|
|
|
|
|
- README y tipos `SchemaKind`/`SiumShape` sincronizados.
|
|
|
|
|
- `Form.AutoFields` actualizado antes de cualquier kind nuevo visible en
|
|
|
|
|
`~sium`.
|
|
|
|
|
- Ninguna feature nueva entra si solo duplica Zod/Valibot sin consumidor
|
|
|
|
|
propio de Active.
|
|
|
|
|
|
|
|
|
|
Actualizacion 2026-05-15:
|
|
|
|
|
|
|
|
|
|
|