Cómo trabajar con dominios¶
El stack soporta N dominios científicos como backends intercambiables. La fuente de verdad es config/domains/*.yaml. Esta guía resuelve las tareas comunes: listar, validar, activar y agregar dominios.
Concepto¶
Un dominio es un área científica con SSOT propio (sección en config/params.yaml), un backend Python que extiende DomainBackend, un solver específico, fuentes de datos y un skill propio en .agent/skills/domains/{name}.md.
El dominio activo se define en config/params.yaml — single-domain (project.domain) o multi-domain (project.domains: [...], primario = primer elemento).
Dominios disponibles¶
| Dominio | Status | Solver |
|---|---|---|
| structural | operational | OpenSeesPy |
| biomedical | operational | scipy.signal, sklearn (Pan-Tompkins + HRV + Welch PSD) |
| construction | operational | numpy, scipy, sklearn (CPM + PERT + EVM) |
| economics | operational | statsmodels (ADF + OLS HC3 + VAR + Granger) |
| environmental | operational | scipy, statsmodels (Mann-Kendall + Sen + STL) |
| forestal | operational | numpy, pandas, scipy (Chave 2014 + IPCC 2006) |
| geotechnical | operational | numpy, scipy (Terzaghi + Bishop + Boulanger-Idriss) |
| materials | operational | sklearn, statsmodels |
| transportation | operational | scipy, statsmodels (Greenshields + HCM LOS) |
| water | planned | FEniCSx (Navier-Stokes, SWE) |
| air | planned | SU2 / FEniCSx (RANS SST) |
Tarea: listar dominios¶
python tools/list_domains.py # menú interactivo
python tools/list_domains.py --json # para sub-agentes
Tarea: validar viabilidad¶
Chequea: YAML válido con campos requeridos, backend Python importa sin error, c0_check pasa (deps), y SSOT válido en params.yaml.
python tools/list_domains.py --check biomedical
# exit 0 → OPERATIONAL
# exit 1 → PLANNED/EXPERIMENTAL (bloquea PROPOSE)
Dominios PLANNED/EXPERIMENTAL bloquean PROPOSE
Solo los operational entran al pipeline. water y air tienen stub de backend pero el solver no está instalado.
Tarea: activar un dominio¶
Tarea: papers multi-dominio¶
Un paper puede combinar dominios (ej. structural + geotechnical para SSI):
DomainRegistry.load_many([...]) instancia ambos backends; validate_domain.py --domains structural geotechnical los valida en una corrida. Para Q1/Q2 multi-dominio, el gate 0.90 exige evidencia estadística de ambos dominios en cv_results.json.
Tarea: agregar un dominio nuevo¶
El camino automático es el Domain Scaffolder (PASO 4 del boot lo lanza al detectar un dominio inexistente). Manual:
- Copiar un dominio existente:
cp config/domains/environmental.yaml config/domains/agronomy.yaml+ el backend.py. - Editar el YAML (
name,params_namespace,data_sources,dependencies.python). - Reescribir
validate_ssot()yrun_compute()en el backend, registrar conDomainRegistry.register(...). - Crear el skill
.agent/skills/domains/agronomy.md. - Validar:
python tools/validate_domain.py --domain agronomy. - Agregar params a
config/params.yaml.
Gates C0–C5 por dominio¶
Cada fase COMPUTE lee comandos del YAML del dominio. Dominios sin hardware (environmental, economics) saltan C3/C4 automáticamente cuando los campos son null.
Ver también¶
- El pipeline de producción — cómo COMPUTE consume los dominios.
- Sub-agentes — el Domain Scaffolder.
Fuente canónica
Deriva de docs/shared/DOMAINS.md, que mantiene la anatomía completa de cada dominio.