diff --git a/crates/modules/dominium/SDD.md b/crates/modules/dominium/SDD.md new file mode 100644 index 0000000..4ed58dd --- /dev/null +++ b/crates/modules/dominium/SDD.md @@ -0,0 +1,46 @@ +# modules/dominium/ — Simulador psicológico de campo medio + +**Propósito.** Laboratorio de complejidad emergente: agentes vectoriales +(Lemmings) sin cognición reaccionan mecánicamente a una grilla plana de +5 campos ejecutando una de 6 acciones atómicas. Civilización, guerra, fe +y poder son patrones emergentes, no algoritmos. La maqueta se ve en +pseudo-3D isométrico calculado en CPU. + +## Crates + +| crate | tipo | rol | +| ---------------------- | ---- | ---------------------------------------------------------- | +| `dominium-core` | lib | `Grid` (5 capas SoA) + `Lemmings` (SoA) + `World` + 6 `Action` + `SimParams` | +| `dominium-physics` | lib | `diffuse` (difusión + entropía) + `tick`/`run` (ciclo completo) | +| `dominium-iso` | lib | `IsoProjector` (matriz iso fija vía `libm`) + `ZWeights` (relieve) + sombra Lambert | +| `dominium-render-plan` | lib | `build_plan` → `RenderPlan` de `Quad`s 2D ordenados por profundidad | +| `dominium-canvas-gpui` | lib | `DominiumCanvas`: `Element` GPUI que pinta el `RenderPlan` | + +App: `apps/dominium` — ventana GPUI con bucle de simulación, maqueta +isométrica viva, panel de estadísticas y controles play/re-sembrar. + +## Cadena de datos + +``` +dominium-core ─► dominium-physics ─► dominium-iso ─► +dominium-render-plan ─► dominium-canvas-gpui ─► apps/dominium +``` + +## Dependencias + +- `core` ← sólo `serde` (regla inviolable: cero deps gráficas). +- `physics`, `iso`, `render-plan` ← `core` (+ `iso` ← `libm`). +- `canvas-gpui` ← `render-plan` + `gpui` (único crate que toca GPUI). +- La separación es estricta: un `dominium-canvas-web` o `-tui` hermano + se escribiría sin tocar el núcleo. + +## Determinismo + +`core` + `physics` + `iso` son bit-exactos: sólo aritmética `f32` en +orden fijo, trig vía `libm`, sin iteración de `HashMap` ni reducciones +paralelas. Mismo seed → mismo estado en cualquier plataforma. + +## Estado + +5 crates lib + 1 app, todos implementados y verdes. ~37 tests unitarios +(`run_is_deterministic`, `plan_is_deterministic` incluidos).