Clarify morfo translation contract

active-uix
dev 5 months ago
parent 475ac77505
commit 35958a4902

@ -41,6 +41,8 @@ Actualizacion 2026-05-14:
- `src/arts/prefs/README.md` reescrito al modelo actual schema-based. Se
elimina la arquitectura historica de capabilities como guia principal y se
marca `themeDimension`/`densityDimension` como legacy/custom fuera de UIX.
- `src/uix/morfo/README.md` actualizado: fija `translations`, `commonRef`,
registro via `registerMorfo` y `soma.runtime(...)` como contrato vigente.
- Commits nuevos empujados:
- `694eb5c5` — `Clarify prefs projection contract`
- `223cdf9e` — `Align sema docs with channel ownership`
@ -54,6 +56,8 @@ Actualizacion 2026-05-14:
- `8ad04714` — `Refresh UIX architecture docs`
- `e2ba371b` — `Add UIX architecture regression guards`
- `71e05765` — `Align langs diagnostic wording`
- `607dfdbb` — `Clarify direct UIX service contracts`
- `475ac775` — `Refresh prefs architecture docs`
- Validado de nuevo:
- `npx vitest run src/uix/contracts.test.ts src/arts/prefs/test/dom-projection.test.ts src/uix/active-uix/active-uix.svelte.test.ts src/uix/eidos/active-eidos.test.ts src/uix/soma/runtime.svelte.test.ts` -> 79 tests OK.
- `npx vitest run src/uix/sema/engine.test.ts src/uix/soma/runtime.svelte.test.ts` -> 48 tests OK.

@ -6,21 +6,22 @@ Morfo is the single source of truth for a component's parts, data-attrs, ARIA co
**One file per component**, at `src/uix/morfo/components/{kebab}.ts`. No prose — that's the component's README. No props — those live in `types.ts` with JSDoc. Component-owned translations may live in `translations` when they are part of ARIA labels, live-region text, or internal functional labels. Everything else is the machine-readable contract.
## Handoff 2026-05-13
## Handoff 2026-05-14
Morfo debe seguir siendo declarativo: no instancia servicios y no conoce
`ActiveUix`. La frontera pendiente es fijar que campos de morfo son contrato
cross-layer real y cuales pertenecen a cada capa.
`ActiveUix`. Sus campos solo entran en el contrato cuando son superficie
cross-layer real; si un dato pertenece a una sola capa, vive en esa capa.
Puntos a cerrar antes de seguir:
Decisiones cerradas:
- `translations` solo para traducciones owned por el componente;
- textos comunes por referencia al catalogo comun, no duplicados en cada
morfo;
- registro de traducciones durante el registro del morfo o en un paso previo
claramente definido;
- si Sema/Eidos necesitan un dato compartido, debe pasar por morfo o por un
contrato publico, no por imports laterales entre capas.
- `translations` solo contiene texto owned por el componente.
- Textos comunes usan `v.commonRef(...)` o un idlangref absoluto; no se
duplican en cada morfo.
- `registerMorfo(morfo)` registra el contrato `data-*` y publica
`morfo.translations` en los `ActiveLangs` conectados.
- Si Soma, Sema y Eidos necesitan un dato compartido, pasa por morfo o por un
contrato publico; no por imports laterales entre capas.
- La regla 2-de-3 sigue vigente para extender morfo.
---
@ -619,7 +620,7 @@ const attrs = createAttrs(dialogMorfo);
```
Runtime-based providers call `createSomaRuntime(morfo, sources)` or
`uix.runtime(morfo, sources)`. That path calls `registerMorfo(morfo)` for
`soma.runtime(morfo, sources)`. That path calls `registerMorfo(morfo)` for
you, which compiles the morfo, registers the data contract, and publishes
`morfo.translations` to any connected `ActiveLangs`.

Loading…
Cancel
Save

Powered by TurnKey Linux.