diff --git a/continue.md b/continue.md index 44ea9b6b0..a51a3fba8 100644 --- a/continue.md +++ b/continue.md @@ -91,6 +91,11 @@ Actualizacion 2026-05-16: `$libs/datagrid`. - Guardia nueva en `src/uix/contracts.test.ts`: ningun barrel publico de Soma puede exportar desde `*provider.svelte` ni desde `$libs/*`. + - Guardia nueva adicional: cada `Provider` publico debe salir de + `components/{component}.svelte`; no se permiten nombres especiales para el + wrapper raiz. + - Documentacion corregida: `AlertDialog` ya importa `createForm` desde + `$libs/forms`, no desde `$soma/components/form`. Actualizacion 2026-05-15: diff --git a/src/uix/contracts.test.ts b/src/uix/contracts.test.ts index 8008948e0..9c1904817 100644 --- a/src/uix/contracts.test.ts +++ b/src/uix/contracts.test.ts @@ -315,6 +315,18 @@ describe('UIX layer contracts', () => { expect(missingExports).toEqual([]); }); + it('guards Soma Provider exports use the canonical root wrapper filename', () => { + const violations = collectPublicSomaComponentDirs() + .filter((dir) => { + const source = readFileSync(join(HERE, 'soma', 'components', dir, 'exports.ts'), 'utf8'); + const expected = `export { default as Provider } from './components/${dir}.svelte';`; + return !source.includes(expected); + }) + .map((dir) => `${dir}/exports.ts`); + + expect(violations).toEqual([]); + }); + it('guards Soma public barrels from provider implementation filenames', () => { const violations = collectPublicSomaComponentDirs() .map((dir) => join(HERE, 'soma', 'components', dir, 'exports.ts'))