a03675113a
- .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>
65 lines
3.2 KiB
Markdown
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.
|