refactor(yahweh): Fase 2 — extraer helpers puros a yahweh-meta-runtime
Sigue de la Fase 1 (lift del schema). Ahora los helpers puros que cualquier widget renderer o backend ejecutor consume sobre el schema viven en yahweh-meta-runtime. Sin GPUI, sin nakui — usa cierres en lugar de traits para decoupling máximo. Crate nuevo crates/modules/ui_engine/libs/meta-runtime: - parse.rs: parse_field_value, infer_param_value, resolve_param_value. - delta.rs: compute_field_delta, compute_clear_fields. - refs.rs: validate_entity_refs(load: F, refs) con cierre Fn(&str, Uuid) -> Option<Value> en vez de trait Store. - format.rs: human_label_for_record, render_value, value_to_input_text, short_uuid. - 33 tests propios. nakui-ui: - Nueva dep yahweh-meta-runtime. - Borrado código local equivalente (~200 líneas) + 34 tests duplicados. - validate_entity_refs callsite usa cierre: validate_entity_refs(|e, id| store.load(e, id), &refs). - 14 tests runtime-específicos quedan (compact/snapshot/event-log/ morphism pipeline/load_ui_modules). Distribución tests: 48 → 14 nakui-ui; +33 yahweh-meta-runtime. Cada crate afectado builds + tests limpio individualmente. Workspace build full no completó esta corrida por OOM al compilar surrealdb-core (ambiental, no relacionado). Fase 2b pendiente: extraer render widgets (form/list/modal/ EntityRef selector) a yahweh — requiere diseñar MetaBackend trait. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+88
-1
@@ -4,7 +4,94 @@ Registro cronológico de cambios sustantivos en el monorepo Brahman. Cada
|
||||
entrada lista las acciones concretas tras un commit; para detalles de
|
||||
ratio/diff ver `git show <sha>`.
|
||||
|
||||
## 2026-05-09
|
||||
## 2026-05-10
|
||||
|
||||
### refactor(yahweh): Fase 2 — extraer helpers puros a `yahweh-meta-runtime`
|
||||
Sigue de la Fase 1 (lift del schema a yahweh). Ahora extraemos los
|
||||
**helpers puros** que cualquier widget renderer o backend ejecutor
|
||||
necesita sobre el schema: parse, delta, validation, format. Sin
|
||||
GPUI, sin acoplamiento a un backend específico.
|
||||
|
||||
Crate nuevo: `crates/modules/ui_engine/libs/meta-runtime/`
|
||||
(`yahweh-meta-runtime`):
|
||||
- **Deps**: `serde_json`, `thiserror`, `uuid`, `yahweh-meta-schema`.
|
||||
NO GPUI, NO nakui.
|
||||
- **Módulos**:
|
||||
- `parse.rs` — `parse_field_value(kind, raw)`,
|
||||
`infer_param_value(raw)`, `resolve_param_value(name, raw, spec)`.
|
||||
- `delta.rs` — `compute_field_delta(current, proposed)`,
|
||||
`compute_clear_fields(current, to_clear)`.
|
||||
- `refs.rs` — `validate_entity_refs(load: F, refs)` donde `F`
|
||||
es un cierre `Fn(&str, Uuid) -> Option<Value>`. Decoupling vía
|
||||
closure en lugar de trait — evita atar el crate a cualquier
|
||||
backend específico (no hay `Store` trait acá), y los callers
|
||||
pasan `|e, id| store.load(e, id)` trivialmente.
|
||||
- `format.rs` — `human_label_for_record(value, id)`,
|
||||
`render_value(opt_value)`, `value_to_input_text(value)`,
|
||||
`short_uuid(id)`.
|
||||
- **33 tests propios** en el crate nuevo (cubren todos los helpers
|
||||
movidos + edge cases).
|
||||
|
||||
Cambios en `nakui-ui`:
|
||||
- **Nueva dep** `yahweh-meta-runtime` en `Cargo.toml`.
|
||||
- **Imports**: agrega `use yahweh_meta_runtime::{...}` con todos los
|
||||
helpers extraídos. Borrado el código local equivalente
|
||||
(~200 líneas).
|
||||
- **`validate_entity_refs` callsite**: pasa de
|
||||
`validate_entity_refs(&*store, &refs)` a
|
||||
`validate_entity_refs(|e, id| store.load(e, id), &refs)` — el
|
||||
closure es ergonómico sobre cualquier `Store`.
|
||||
- **Tests duplicados borrados** (~34 tests que ahora viven en
|
||||
`yahweh-meta-runtime`):
|
||||
- `parse_field_*` (text/number/boolean variants)
|
||||
- `infer_param_value_*`
|
||||
- `delta_*` (5 tests)
|
||||
- `clear_fields_*` (3 tests)
|
||||
- `validate_entity_refs_*` (5 tests)
|
||||
- `resolve_param_*` (6 tests)
|
||||
- `parse_field_entity_ref_*` (4 tests)
|
||||
- `human_label_*` (3 tests), `render_value_*`,
|
||||
`value_to_input_text_inverse_of_parse`
|
||||
- **Tests que se quedan en nakui-ui** (runtime-específicos):
|
||||
- `lookup_field_simple_and_nested` — helper local del list renderer.
|
||||
- `append_compact_msg_handles_both_branches`,
|
||||
`runtime_compact_cycle_resets_counter_after_threshold`,
|
||||
`snapshot_path_for_replaces_extension`,
|
||||
`maybe_compact_log_*` (3) — wiring de persistencia a EventLog.
|
||||
- `load_ui_modules_via_brahman_cards_*` (3) — integración con el
|
||||
brazo de cards.
|
||||
- `value_to_input_then_parse_round_trip` — round-trip del par
|
||||
`value_to_input_text + parse_field_value` (toca ambos lados).
|
||||
- `event_log_replay_restores_memory_store`,
|
||||
`morphism_pipeline_executes_real_sales_vender`,
|
||||
`event_log_replay_handles_full_crud_cycle` — E2E nakui-core.
|
||||
|
||||
Distribución de tests:
|
||||
- `nakui-ui`: 48 → 14 (los 34 movidos viven en runtime).
|
||||
- `yahweh-meta-runtime`: 33 (nuevos).
|
||||
- `yahweh-meta-schema`: 8 (sin cambio).
|
||||
- `brahman-cards`: 26 (sin cambio).
|
||||
- Total cubriendo el área: 81.
|
||||
|
||||
Build: cada crate afectado compila y testea limpio individualmente.
|
||||
Workspace build full no se completó esta corrida por OOM al
|
||||
compilar `surrealdb-core` (problema ambiental no relacionado al
|
||||
refactor).
|
||||
|
||||
Lo que NO hace Fase 2:
|
||||
- No mueve los widgets render (`render_form`/`render_list`/
|
||||
`render_entity_ref_selector`/`render_confirm_delete_banner`) a
|
||||
yahweh — eso es Fase 2b/3, requiere diseñar el `MetaBackend`
|
||||
trait porque las render functions tocan el state de `MetaUi`
|
||||
(form_inputs, pending_delete, executors).
|
||||
|
||||
**Pendientes** (orden):
|
||||
1. **Fase 2b**: extraer widget render a un crate yahweh nuevo
|
||||
(sugerencia: `yahweh-widget-meta-form`). Requiere diseñar
|
||||
`MetaBackend` trait.
|
||||
2. **Fase 3**: thin shell — `nakui-ui` queda reducido a una impl
|
||||
de backend wireada a `nakui-core`.
|
||||
3. **KCL → Nickel** + **card.k eliminado**.
|
||||
|
||||
### refactor(yahweh): Fase 1 — `nakui-ui-schema` → `yahweh-meta-schema`
|
||||
Primer paso del refactor yahweh. El schema de UI declarativa
|
||||
|
||||
Reference in New Issue
Block a user