refactor(yahweh): Fase 1 — nakui-ui-schema → yahweh-meta-schema
Primer paso del refactor yahweh. El schema de UI declarativa no tiene acoplamiento real con Nakui (sólo dep en serde/thiserror) — movemos a yahweh para que cualquier app metadata-driven lo use sin pasar por nakui. Mecánico: - git mv crates/modules/nakui/ui-schema → crates/modules/ui_engine/libs/meta-schema. - Crate name: nakui-ui-schema → yahweh-meta-schema. - Workspace members[] actualizado (sección yahweh, no nakui). - Consumers actualizados: brahman-cards (Cargo.toml + lib.rs + readers.rs), nakui-ui (Cargo.toml + main.rs). - Self-test (example_modules.rs): import + path rebase (5 niveles arriba ahora). Documental: - Doc del crate ahora dice "metainterfaz (yahweh meta-schema)" + "backend-agnostic" en filosofía. - Module.nakui_module_dir documentado como "path opaco al backend"; se conserva el nombre por compat con módulos ya escritos + serde alias "backend_module_dir" para futuro rename suave. Tests: 13 yahweh-meta-schema + 26 brahman-cards + 48 nakui-ui verdes. Workspace build verde. NO hace Fase 1: mover widgets a yahweh (Fase 2), trait MetaBackend (Fase 3), renombrar nakui_module_dir. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,79 @@ ratio/diff ver `git show <sha>`.
|
||||
|
||||
## 2026-05-09
|
||||
|
||||
### refactor(yahweh): Fase 1 — `nakui-ui-schema` → `yahweh-meta-schema`
|
||||
Primer paso del refactor yahweh. El schema de UI declarativa
|
||||
(entities, menús, listas, formularios, acciones) vivía bajo
|
||||
`crates/modules/nakui/ui-schema/` y se llamaba `nakui-ui-schema` —
|
||||
un nombre que sugería acoplamiento con Nakui que en realidad no
|
||||
existe (el crate sólo depende de `serde`/`serde_json`/`thiserror`).
|
||||
Lo movemos a yahweh para que sea consumible por cualquier app de UI
|
||||
metadata-driven sin hacer pasar la dep "rara" por nakui.
|
||||
|
||||
Cambios mecánicos:
|
||||
- **`git mv`**: `crates/modules/nakui/ui-schema/` →
|
||||
`crates/modules/ui_engine/libs/meta-schema/`.
|
||||
- **Cargo.toml del crate movido**:
|
||||
- `name = "nakui-ui-schema"` → `name = "yahweh-meta-schema"`.
|
||||
- Description actualizada: "Yahweh — meta-schema: descriptores
|
||||
declarativos de UI ... independiente del backend".
|
||||
- **Workspace `Cargo.toml`**: la entry del members[] pasa de
|
||||
`crates/modules/nakui/ui-schema` a
|
||||
`crates/modules/ui_engine/libs/meta-schema` (en su sección
|
||||
yahweh, no en la sección nakui).
|
||||
- **`brahman-cards`**:
|
||||
- Cargo.toml: dep path/name a `yahweh-meta-schema`.
|
||||
- lib.rs: `pub use nakui_ui_schema::Module` →
|
||||
`pub use yahweh_meta_schema::Module`.
|
||||
- readers.rs: comment + doc-link al nuevo nombre.
|
||||
- **`nakui-ui`**:
|
||||
- Cargo.toml: dep path/name a `yahweh-meta-schema`.
|
||||
- main.rs: `use nakui_ui_schema::{...}` →
|
||||
`use yahweh_meta_schema::{...}`.
|
||||
- **Self-test del crate movido**
|
||||
(`tests/example_modules.rs`): `nakui_ui_schema` → `yahweh_meta_schema`,
|
||||
y se rebasa el path del repo root (5 niveles arriba ahora, era 4).
|
||||
|
||||
Cambios documentales:
|
||||
- **Doc de crate** (`lib.rs`): "Schema declarativo de la metainterfaz
|
||||
Nakui" → "Schema declarativo de la metainterfaz (yahweh
|
||||
meta-schema)" + "backend-agnostic" en la filosofía. La sección
|
||||
Persistencia universal pasa de "el runtime conecta cada vista al
|
||||
`nakui_core::store::Store`" a un wording neutro: "el runtime que
|
||||
consume este schema conecta vistas a su backend".
|
||||
- **Doc del field `Module.nakui_module_dir`**: ahora marcado como
|
||||
"path opaco al backend, lo interpreta el runtime concreto". Se
|
||||
describe la convención actual de Nakui (nsmc.json + KCL + Rhai)
|
||||
como ejemplo, no como contrato del schema. El nombre del campo
|
||||
se mantiene por compat con módulos ya escritos; agregado
|
||||
`#[serde(alias = "backend_module_dir")]` para que un futuro
|
||||
rename no rompa los actuales.
|
||||
|
||||
Tests:
|
||||
- yahweh-meta-schema (crate movido): 13 tests propios siguen
|
||||
verdes tras el path rebase.
|
||||
- brahman-cards: 26/26 verdes (17 integration + 9 nickel).
|
||||
- nakui-ui: 48/48 verdes.
|
||||
- Workspace build verde.
|
||||
|
||||
Lo que NO hace Fase 1:
|
||||
- No mueve los widgets de UI (form/list/modal/EntityRef selector)
|
||||
a yahweh — eso es Fase 2.
|
||||
- No introduce un trait `MetaBackend` para desacoplar la lógica
|
||||
de runtime de Nakui — eso es Fase 3.
|
||||
- No renombra el field `nakui_module_dir`. Se hará cuando aparezca
|
||||
un segundo backend que también lo necesite.
|
||||
|
||||
**Pendientes** (orden):
|
||||
1. **Fase 2**: extraer widgets render (form/list/modal/EntityRef
|
||||
selector + helpers parse_field_value/render_value/etc.) a un
|
||||
nuevo crate `yahweh-widget-meta-form` (o nombre similar).
|
||||
2. **Fase 3**: trait `MetaBackend` + thin shell — `nakui-ui` queda
|
||||
reducido a una impl de backend wireada a `nakui-core`.
|
||||
3. **KCL → Nickel**: kcl_wrapper reemplazado por evaluación de
|
||||
Nickel contracts.
|
||||
4. **card.k eliminado** (REFERENCE ONLY).
|
||||
|
||||
### feat(nakui-ui): migrar consumer al brazo unificado `brahman_cards::load_cards_from_dir`
|
||||
Primera consumer migration del brazo. `nakui-ui` ya no llama a
|
||||
`nakui_ui_schema::load_modules_from_dir` directamente — pasa por
|
||||
|
||||
Reference in New Issue
Block a user