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

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.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.