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>
3.2 KiB
3.2 KiB
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 | go | Estructura de config (campos requeridos, tipos) |
| file_validate_type_go_infra | go | Tipo MIME / extension de archivo |
| dag_validate_go_core | go | DAG topologia (ciclos, deps, schedule) |
| detect_outliers_py_datascience | py | Outliers numericos (z-score / IQR) |
| detect_outliers_go_datascience | go | Outliers numericos |
| detect_drift_py_datascience | py | Drift de distribucion vs baseline |
Ejemplo canonico
Validar dataset antes de cargarlo a sink productivo.
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.yamlinvoca audits del grupodoctor). - 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>concontinue_on.failure: falseactua como gate en un pipeline.