docs(dominium): SDD del módulo — cadena de 5 crates + app

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-20 16:23:00 +00:00
parent f46c7b435f
commit cbca62f8f1
+46
View File
@@ -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).