Files
fn_registry/docs/capabilities/validator.md
T
egutierrez a03675113a chore: auto-commit (286 archivos)
- .claude/agents/fn-orquestador/SKILL.md
- .claude/commands/fn_claude.md
- .claude/rules/INDEX.md
- .claude/rules/cpp_apps.md
- .claude/rules/ids_naming.md
- CHANGELOG.md
- apps/dag_engine/README.md
- apps/dag_engine/api.go
- apps/dag_engine/dags_migrated/example.yaml
- apps/dag_engine/dags_migrated/example_lineage_tracking.yaml
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 16:33:22 +02:00

65 lines
3.2 KiB
Markdown

# Validator — Funciones que verifican datos o configuracion contra reglas
Tag: `validator`. Grupo de funciones que **verifican** un dato/config/spec contra una regla y devuelven resultado de validacion (bool / lista de errores / metricas de calidad). NO transforman ni mueven datos — solo dictaminan.
Filtro MCP: `mcp__registry__fn_search query="" tag="validator"`.
## Funciones del grupo
| ID | Lang | Que valida |
|---|---|---|
| [config_validate_go_infra](../../functions/infra/config_validate.md) | go | Estructura de config (campos requeridos, tipos) |
| [file_validate_type_go_infra](../../functions/infra/file_validate_type.md) | go | Tipo MIME / extension de archivo |
| [dag_validate_go_core](../../functions/core/dag_validate.md) | go | DAG topologia (ciclos, deps, schedule) |
| [detect_outliers_py_datascience](../../python/functions/datascience/detect_outliers.md) | py | Outliers numericos (z-score / IQR) |
| [detect_outliers_go_datascience](../../functions/datascience/detect_outliers.md) | go | Outliers numericos |
| [detect_drift_py_datascience](../../python/functions/datascience/detect_drift.md) | py | Drift de distribucion vs baseline |
## Ejemplo canonico
Validar dataset antes de cargarlo a sink productivo.
```python
from datascience import detect_outliers, detect_drift
# 1. Detectar outliers en columna critica
outliers = detect_outliers(df, column="amount", method="zscore", threshold=3.0)
if len(outliers) > len(df) * 0.05:
raise ValueError(f"too many outliers: {len(outliers)} / {len(df)}")
# 2. Comparar contra distribucion historica
drift_report = detect_drift(df_current=df, df_baseline=df_yesterday, column="amount")
if drift_report["ks_pvalue"] < 0.01:
print(f"WARNING: distribution drift detected (KS p={drift_report['ks_pvalue']:.4f})")
```
## Fronteras del grupo
NO cubre:
- **Audits** del registry mismo (capability groups, copied code, etc.) -> tag `doctor`.
- **Tests** unitarios (estan en `*_test.go`/`pytest`, no son funciones del registry).
- **Assertions** de runtime de apps (entan en `operations.db.assertions`).
- Validacion de codigo (lint, formato) — fuera del registry.
## Cuando NO usar `validator`
- Si la funcion transforma datos para HACERLOS validos (ej. clip outliers) -> es transformer.
- Si la funcion solo lee y reporta status sin verificar regla -> es extractor.
## Relacion con el bucle reactivo
Validators encajan en **Fase 4 ANALIZAR** del bucle reactivo (`fn_operations`). Una assertion definida en `operations.db.assertions` puede usar una funcion validator del registry como predicado.
## Consumidores
- `data_factory` — futura tab Validators (no v1; v1 solo extractor/transformer/sink/database).
- DAGs de auditoria (ej. `weekly-deep-scan.yaml` invoca audits del grupo `doctor`).
- Pipelines ML que validan datos antes de entrenar (defer v2).
- Pre-flight de sinks: ejecutar validator antes de escribir a destino productivo.
## Notas
- Casi todos los validators son **puros** o casi-puros (solo dependen del input).
- Grupo pequeño (6 funcs) — crecera cuando el registry incorpore validators de schema (JSON Schema, Pandera, etc.).
- DAG step `function: <validator_id>` con `continue_on.failure: false` actua como gate en un pipeline.