← Volver al índice de anexos
Macrobloque 5a·Ejecución + Control·Anexo 32 / 40

Anexo 32 · Seguimiento

Etapa: Fase 9.1
PÚBLICO

ANEXO 32

Evidencia, validación y cierre FARO

Este anexo corresponde a la Fase 8 — Ejecución, etapa “Evidencia y cierre”. Es la capa donde FARO Connect define qué prueba debe existir para considerar que una acción, alerta, tensión, diagnóstico, recomendación, simulación o decisión fue realmente resuelta.

Hasta el Anexo 31, FARO ya puede:

crear acciones,
asignar responsables,
definir vencimientos,
controlar workflow,
escalar incumplimientos.

Pero falta una pregunta clave:

¿Cómo sabe FARO que algo fue realmente hecho, validado y cerrado?

Porque una cosa es marcar una tarea como “completada”. Otra cosa es demostrar que se ejecutó, dejó evidencia y generó impacto.


1. Objetivo del anexo

El objetivo del Anexo 32 — Evidencia, validación y cierre FARO es definir:

qué evidencia exige cada acción,
quién debe cargarla,
quién debe validarla,
qué criterios permiten cerrar,
qué pasa si falta evidencia,
qué evidencia no es suficiente,
cómo se mide el resultado posterior,
cómo se audita el cierre.

Ejemplo simple:

Acción:
Auditar descuentos mayores al 8%.

No alcanza con cerrar diciendo:
“Revisado”.

Evidencia requerida:
1. Listado de operaciones auditadas.
2. Análisis de margen por operación.
3. Resumen por vendedor.
4. Propuesta de corrección.
5. Validación de Dirección o Gerencia Comercial.

Criterio de cierre:
La auditoría fue presentada, validada y generó acción correctiva si correspondía.

2. Tesis del Anexo 32

La tesis es:

FARO Connect no debe permitir cierres declarativos. Debe exigir evidencia, validación y medición.

En muchas empresas pasa esto:

Se detecta problema.
Se crea acción.
Alguien dice “listo”.
La acción se cierra.
El problema vuelve al mes siguiente.

Eso no es gestión. Es teatro administrativo con planilla.

FARO debe funcionar distinto:

Acción creada
→ responsable ejecuta
→ evidencia cargada
→ evidencia validada
→ criterio de cierre cumplido
→ KPI medido
→ tensión resuelta o no
→ aprendizaje registrado
→ cierre formal

3. Qué es evidencia FARO

Una evidencia FARO es una prueba registrada que permite demostrar que una acción fue ejecutada, validada o medida.

Puede ser:

un archivo,
un reporte,
una captura,
un comentario validado,
una aprobación,
un KPI recalculado,
una orden emitida,
una simulación,
un acta,
una decisión,
una foto,
un registro del ERP,
un comprobante,
una conciliación,
un cambio de estado,
una medición posterior.

Ejemplo:

{
  "evidence_id": "EVD_001",
  "entity_type": "action",
  "entity_id": "ACT_COMMERCIAL_DISCOUNT_AUDIT",
  "evidence_type": "report",
  "title": "Informe de auditoría de descuentos",
  "uploaded_by": "Gerente Comercial",
  "validated_by": "Dirección",
  "validation_status": "approved"
}

4. Diferencia entre evidencia, validación y cierre

Concepto Qué significa Ejemplo
Evidencia Prueba cargada. Informe de descuentos.
Validación Alguien autorizado confirma que sirve. Dirección aprueba informe.
Cierre FARO permite terminar formalmente la acción. Acción cerrada con evidencia y criterio cumplido.
Medición Se evalúa si mejoró el KPI. Descuento bajó de 12% a 8%.

Regla:

Evidencia sin validación puede ser insuficiente.
Validación sin evidencia es débil.
Cierre sin medición puede ser incompleto.

5. Principio rector

Una acción no se cierra porque alguien trabajó. Se cierra porque dejó evidencia suficiente y cumplió el criterio de cierre.

Ejemplo malo:

Acción: revisar stock.
Cierre: hecho.

Ejemplo FARO:

Acción: validar stock físico de productos críticos.
Evidencia:
- conteo físico cargado,
- diferencia físico-sistema,
- ajuste realizado,
- responsable validó,
- stock crítico recalculado.

Cierre:
aprobado por Responsable de Stock.

6. Tipos de evidencia FARO

Tipo de evidencia Uso Ejemplo
Documento Informe formal. PDF de auditoría.
Archivo de datos Base exportada. Excel de ventas auditadas.
Captura Prueba visual. Captura ERP / banco.
Registro interno Dato dentro de FARO. Cambio de estado.
Aprobación Validación formal. Dirección aprueba canje.
Comentario validado Explicación con responsable. Motivo de descarte.
KPI recalculado Medición posterior. Margen actualizado.
Orden / comprobante Ejecución operativa. Orden de compra.
Acta Decisión de comité. Acta de Dirección.
Simulación Análisis previo. Simulación de comisión.
Conciliación Cruce de fuentes. Banco vs contabilidad.
Foto / físico Evidencia operativa. Conteo de stock.

7. Evidencia obligatoria por tipo de acción

Tipo de acción Evidencia mínima
Auditoría Informe + base analizada + conclusión.
Reposición Orden de compra + confirmación proveedor.
Cobranza Ranking deuda + gestiones + resultado.
Validación de datos Datos corregidos + KPI recalculado.
Cambio de política Documento de política + aprobación.
Simulación Supuestos + escenarios + resultado.
Canje Valuación + documentación legal + aprobación.
Referidos Identificación + operación + aprobación.
Comisión Simulación + impacto + aprobación.
Workflow Acción asociada + responsable + vencimiento.
Stock físico Conteo + diferencias + ajuste.
Cliente riesgoso Ficha cliente + deuda + decisión.

8. Niveles de evidencia

No toda evidencia tiene el mismo peso.

Nivel Evidencia Peso
Nivel 1 Comentario simple Bajo
Nivel 2 Archivo o captura Medio
Nivel 3 Reporte estructurado Alto
Nivel 4 Aprobación formal Muy alto
Nivel 5 KPI recalculado + resultado medido Máximo

Ejemplo:

“Ya lo hablé” = nivel 1.
“Adjunto informe y KPI recalculado” = nivel 5.

FARO debe privilegiar evidencia fuerte. El “te lo juro por el comité” no escala bien.


9. Score de calidad de evidencia

FARO puede calcular un score para evaluar si la evidencia es suficiente.

Calidad evidencia =
completitud × 30%
+ trazabilidad × 25%
+ validación autorizada × 20%
+ relación con KPI × 15%
+ actualidad × 10%

Código:

def calidad_evidencia(
    completitud,
    trazabilidad,
    validacion_autorizada,
    relacion_kpi,
    actualidad
):
    return round(
        completitud * 0.30 +
        trazabilidad * 0.25 +
        validacion_autorizada * 0.20 +
        relacion_kpi * 0.15 +
        actualidad * 0.10,
        2
    )

Lectura:

Score Lectura
0.85 - 1.00 Evidencia fuerte.
0.70 - 0.84 Evidencia suficiente.
0.50 - 0.69 Evidencia incompleta.
< 0.50 No permite cierre.

10. Evidencia mínima por prioridad

Prioridad Evidencia mínima requerida
P1 Evidencia fuerte + aprobación si aplica.
P2 Evidencia suficiente + validación responsable.
P3 Evidencia operativa básica.
P4 Comentario estructurado o registro simple.
P5 Observación o nota.

Regla:

Mientras más crítica la acción, más fuerte debe ser la evidencia.

No se cierra una acción P1 con “visto”.


11. Evidencia por área

11.1 Comercial

Evidencias típicas:

listado de ventas auditadas,
margen por operación,
descuento por vendedor,
propuesta de política comercial,
autorizaciones de descuento,
análisis de clientes poco rentables,
simulación de precios,
reporte de canal.

11.2 Finanzas

cashflow 7/30 días,
ranking de deuda vencida,
plan de cobranza,
conciliación bancaria,
detalle de pagos críticos,
presupuesto por área,
aprobación de reprogramación,
análisis de rentabilidad ajustada.

11.3 Stock / Compras

conteo físico,
diferencia físico-sistema,
orden de compra,
confirmación proveedor,
días de cobertura,
reporte de rotación,
stock inmovilizado,
plan de redistribución,
comparativo de proveedores.

11.4 RRHH

simulación de comisión,
impacto por vendedor,
plan de capacitación,
análisis de productividad,
registro de ausentismo,
validación de dotación,
aprobación de Dirección.

11.5 Dirección / Workflow

acta de decisión,
acción asociada,
responsable asignado,
vencimiento definido,
evidencia de cierre,
aprobación de cambio,
seguimiento posterior.

11.6 Data / Sistemas

campos corregidos,
maestros normalizados,
reprocesamiento ejecutado,
log de integración,
score de calidad actualizado,
KPI recalculado,
incidencia cerrada.

12. Evidencia por industria

12.1 Construcción / insumos

Evidencias críticas:

margen por familia de producto,
descuento por vendedor,
stock crítico por sucursal,
orden de compra de productos clave,
canje valuado,
referido identificado,
flete calculado,
cuenta corriente por cliente de obra,
cobranza por obra.

12.2 Retail

promoción analizada,
merma auditada,
stock por sucursal,
ticket promedio,
rotación de producto,
quiebres de producto estrella,
rentabilidad por categoría.

12.3 Logística

costo por kilómetro,
ruta auditada,
SLA cumplido/incumplido,
consumo combustible,
mantenimiento realizado,
reclamo cerrado.

12.4 Hotelería

RevPAR,
ADR,
ocupación,
reclamos por habitación,
canal de reserva,
mantenimiento ejecutado,
tarifa ajustada.

12.5 Salud

turnos atendidos,
turnos perdidos,
costo por prestación,
insumos críticos,
tiempos de espera,
reclamos,
validación profesional.

13. Criterio de cierre FARO

El criterio de cierre define cuándo una acción puede considerarse terminada.

Una acción puede cerrarse si:

los pasos obligatorios están completos,
la evidencia requerida fue cargada,
la evidencia fue validada,
el aprobador aprobó si corresponde,
el KPI fue recalculado si aplica,
no quedan dependencias abiertas,
el resultado fue medido o programado para medición.

Código:

def puede_cerrar_accion(accion):
    condiciones = [
        accion.get("steps_completed", False),
        accion.get("evidence_complete", False),
        accion.get("evidence_validated", False),
        not accion.get("blocked", False)
    ]

    if accion.get("requires_approval"):
        condiciones.append(accion.get("approved", False))

    if accion.get("requires_kpi_recalculation"):
        condiciones.append(accion.get("kpi_recalculated", False))

    return all(condiciones)

14. Cierre operativo vs cierre ejecutivo

FARO debe distinguir dos tipos de cierre.

Tipo de cierre Qué significa Ejemplo
Cierre operativo La tarea fue ejecutada. Se hizo auditoría.
Cierre ejecutivo El problema fue resuelto o medido. Bajó descuento y subió margen.

Ejemplo:

Auditar descuentos:
cierre operativo = informe presentado.

Resolver crecimiento no rentable:
cierre ejecutivo = margen mejora, descuento baja y cobranza se estabiliza.

Regla:

No confundir tarea cerrada con problema resuelto.


15. Estados de evidencia

Estado Significado
Pending Aún no se cargó.
Uploaded Fue cargada.
Under review Está siendo revisada.
Approved Fue validada.
Rejected No sirve o es incompleta.
Needs correction Debe corregirse.
Expired Ya no es vigente.
Superseded Fue reemplazada por evidencia nueva.

Código:

def validar_evidencia(evidencia, aprobador, resultado, motivo=None):
    if resultado not in ["approved", "rejected", "needs_correction"]:
        raise ValueError("Resultado de validación no válido")

    return {
        "evidence_id": evidencia["evidence_id"],
        "validation_status": resultado,
        "validated_by": aprobador,
        "validation_reason": motivo,
        "validated_at": "now()"
    }

16. Evidencia rechazada

Una evidencia puede rechazarse por:

archivo incorrecto,
dato incompleto,
no corresponde a la acción,
no tiene trazabilidad,
no tiene fecha,
no tiene responsable,
no permite verificar resultado,
no coincide con el KPI,
no tiene aprobación requerida.

Ejemplo:

{
  "evidence_id": "EVD_004",
  "status": "rejected",
  "reason": "El archivo no incluye margen por operación, solo ventas totales.",
  "required_correction": "Agregar margen por operación y resumen por vendedor."
}

17. Cierre rechazado

FARO no debe permitir cerrar si:

falta evidencia,
la evidencia fue rechazada,
falta aprobación,
hay dependencias abiertas,
la acción está bloqueada,
el responsable no validó,
el KPI no fue recalculado cuando era obligatorio.

Código:

def validar_cierre(accion):
    errores = []

    if not accion.get("evidence_complete"):
        errores.append("falta_evidencia")

    if accion.get("evidence_status") == "rejected":
        errores.append("evidencia_rechazada")

    if accion.get("requires_approval") and not accion.get("approved"):
        errores.append("falta_aprobacion")

    if accion.get("blocked"):
        errores.append("accion_bloqueada")

    if accion.get("requires_kpi_recalculation") and not accion.get("kpi_recalculated"):
        errores.append("falta_recalculo_kpi")

    return {
        "can_close": len(errores) == 0,
        "errors": errores
    }

18. Evidencia y trazabilidad

Cada evidencia debe guardar:

quién la cargó,
cuándo la cargó,
a qué acción pertenece,
qué versión es,
qué fuente tiene,
quién la validó,
qué estado tiene,
si fue reemplazada,
si está vinculada a un KPI,
si fue usada para cerrar.

Ejemplo:

{
  "evidence_id": "EVD_010",
  "action_id": "ACT_001",
  "uploaded_by": "USER_123",
  "uploaded_at": "2026-05-28T10:30:00",
  "source_system": "ERP",
  "version": "1.0",
  "validated_by": "USER_001",
  "used_for_closure": true
}

19. Evidencia y versionado

Si se reemplaza evidencia, FARO debe conservar historial.

Ejemplo:

Versión 1:
Informe incompleto.

Versión 2:
Informe corregido.

Versión 3:
Informe aprobado.

Código:

def nueva_version_evidencia(evidence_id, new_file, uploaded_by):
    return {
        "parent_evidence_id": evidence_id,
        "new_version": True,
        "file": new_file,
        "uploaded_by": uploaded_by,
        "uploaded_at": "now()"
    }

20. Evidencia y permisos

No cualquier usuario puede ver o validar cualquier evidencia.

Ejemplos:

RRHH sensible: solo RRHH, Dirección y autorizados.
Finanzas: solo Finanzas, Dirección y autorizados.
Canjes: Dirección, Finanzas, Legal, Comercial autorizado.
Comisiones: Comercial, RRHH, Finanzas, Dirección.

Permisos sugeridos:

view_evidence
upload_evidence
validate_evidence
reject_evidence
approve_closure
view_sensitive_evidence

Código:

def puede_validar_evidencia(usuario, evidencia):
    permisos = usuario.get("permissions", [])

    if "validate_evidence" not in permisos:
        return False

    if evidencia.get("sensitive") and "view_sensitive_evidence" not in permisos:
        return False

    return True

21. Evidencia sensible

Algunas evidencias deben tener tratamiento especial.

Evidencia sensible Riesgo
Sueldos / comisiones Confidencialidad laboral.
Información bancaria Confidencialidad financiera.
Canjes y activos Riesgo legal/comercial.
Clientes morosos Riesgo comercial.
Decisiones RRHH Riesgo humano/legal.
Documentos legales Riesgo contractual.
Estrategia de precios Riesgo competitivo.

Regla:

Evidencia sensible debe tener permisos, auditoría y visibilidad restringida.


22. Evidencia automática vs manual

FARO puede obtener evidencias automáticamente o pedir carga manual.

Tipo Ejemplo
Automática KPI recalculado, cambio de estado, log de integración.
Manual Informe, acta, comentario, documento externo.
Mixta Reporte generado por FARO y aprobado por usuario.

Ejemplo automático:

FARO recalcula margen después de completar costos.

Ejemplo manual:

Gerente Comercial carga informe de auditoría de descuentos.

23. Evidencia automática desde sistema

Código conceptual:

def generar_evidencia_automatica(entity_id, evidence_type, payload):
    return {
        "entity_id": entity_id,
        "evidence_type": evidence_type,
        "payload": payload,
        "source": "FARO_SYSTEM",
        "uploaded_by": "system",
        "validation_status": "auto_generated",
        "created_at": "now()"
    }

Ejemplo:

{
  "evidence_type": "kpi_recalculation",
  "payload": {
    "kpi": "gross_margin",
    "previous_value": 0.21,
    "new_value": 0.24
  }
}

24. Evidencia de KPIs

Cuando una acción promete mejorar un KPI, FARO debe registrar:

KPI antes,
KPI después,
período de medición,
delta,
interpretación,
si la mejora se atribuye total o parcialmente a la acción.

Código:

def evidencia_kpi(action_id, kpi_code, before, after):
    delta = after - before

    return {
        "action_id": action_id,
        "evidence_type": "kpi_measurement",
        "kpi_code": kpi_code,
        "value_before": before,
        "value_after": after,
        "delta": delta
    }

25. Medición posterior obligatoria

Algunas acciones deben cerrarse operativamente, pero quedar en seguimiento posterior.

Ejemplo:

Acción:
Cambiar política de descuentos.

Cierre operativo:
política aprobada y comunicada.

Medición posterior:
30 días después medir descuento promedio, margen bruto y ventas.

Código:

def requiere_medicion_posterior(action_type):
    acciones = {
        "cambio_politica",
        "auditoria_comercial",
        "reposicion_stock",
        "plan_cobranza",
        "redisenio_comision",
        "cambio_credito",
        "canje"
    }

    return action_type in acciones

26. Cierre con impacto

FARO puede clasificar el cierre según resultado.

Resultado Significado
Closed effective Se ejecutó y mejoró KPI.
Closed neutral Se ejecutó, sin impacto claro.
Closed ineffective Se ejecutó, pero no mejoró.
Closed partial Se completó parcialmente.
Closed justified Se cerró por descarte justificado.
Closed false positive El problema no era real.

Código:

def clasificar_cierre(kpi_delta, expected_direction):
    if expected_direction == "increase" and kpi_delta > 0:
        return "closed_effective"

    if expected_direction == "decrease" and kpi_delta < 0:
        return "closed_effective"

    if kpi_delta == 0:
        return "closed_neutral"

    return "closed_ineffective"

27. Evidencia y falsos positivos

Si una alerta, tensión o diagnóstico era falso positivo, también debe quedar evidencia.

Ejemplo:

FARO detectó margen bajo.
La empresa demuestra que era liquidación aprobada de stock inmovilizado.

Evidencia:

política de liquidación aprobada,
listado de productos liquidados,
autorización de Dirección,
impacto esperado.

Código:

def cerrar_como_falso_positivo(entity_id, motivo, evidencia):
    return {
        "entity_id": entity_id,
        "closure_type": "false_positive",
        "reason": motivo,
        "evidence": evidencia,
        "learning_required": True
    }

28. Evidencia y falsos negativos

Si FARO no detectó un problema, pero la empresa lo encontró, debe registrarse.

Ejemplo:

Cliente moroso crítico no fue detectado porque estaba duplicado en el maestro.

Evidencia:

cliente duplicado,
deuda consolidada,
mora real,
regla faltante o dato defectuoso.

Esto alimenta aprendizaje y recalibración.


29. Cierre de alertas

Una alerta puede cerrarse por:

resolución,
conversión a acción,
descarte justificado,
falso positivo,
normalización del KPI,
agrupación en tensión.

No debe cerrarse solo por lectura.

Código:

def puede_cerrar_alerta(alerta):
    motivos_validos = [
        "resolved",
        "converted_to_action",
        "dismissed_with_reason",
        "false_positive",
        "kpi_normalized",
        "grouped_into_tension"
    ]

    return alerta.get("closure_reason") in motivos_validos and alerta.get("evidence_complete", False)

30. Cierre de tensiones

Una tensión se cierra cuando:

las acciones asociadas fueron cerradas,
los KPIs principales mejoraron,
la contradicción dejó de existir,
o Dirección justificó formalmente el cierre.

Ejemplo:

Tensión:
Crecimiento no rentable.

No alcanza con auditar descuentos.
Debe verificarse:
- margen mejoró,
- descuento bajó,
- cobranza no empeoró,
- comisión quedó revisada.

Código:

def puede_cerrar_tension(tension):
    condiciones = [
        tension.get("related_actions_closed", False),
        tension.get("main_kpis_improved", False),
        tension.get("evidence_validated", False)
    ]

    return all(condiciones)

31. Cierre de diagnósticos

Un diagnóstico se cierra si:

se validó,
se actuó,
se midió,
se resolvió,
o se descartó con evidencia.

Código:

def puede_cerrar_diagnostico(diagnostico):
    if diagnostico.get("dismissed_with_reason") and diagnostico.get("evidence_validated"):
        return True

    condiciones = [
        diagnostico.get("actions_closed", False),
        diagnostico.get("impact_measured", False),
        diagnostico.get("responsible_validation", False)
    ]

    return all(condiciones)

32. Cierre de recomendaciones

Una recomendación puede cerrarse como:

aceptada y convertida en acción,
rechazada con motivo,
pospuesta,
requiere más datos,
simulada y descartada,
simulada y aprobada.

Código:

def cerrar_recomendacion(recomendacion, cierre_tipo, motivo=None):
    cierres_validos = [
        "converted_to_action",
        "rejected_with_reason",
        "deferred",
        "needs_more_data",
        "simulated_rejected",
        "simulated_approved"
    ]

    if cierre_tipo not in cierres_validos:
        raise ValueError("Tipo de cierre no válido")

    if cierre_tipo == "rejected_with_reason" and not motivo:
        raise ValueError("Debe indicar motivo")

    return {
        "recommendation_id": recomendacion["recommendation_id"],
        "closure_type": cierre_tipo,
        "reason": motivo
    }

33. Cierre de simulaciones

Una simulación se cierra cuando:

se cargaron supuestos,
se generaron escenarios,
se revisaron resultados,
se tomó decisión,
o se indicó que falta información.

Cierres posibles:

approved,
rejected,
pilot_required,
needs_more_data,
deferred,
converted_to_action.

34. Cierre de decisiones

Una decisión no debería cerrarse sin acciones asociadas.

Ejemplo:

Decisión:
Cambiar política de descuentos.

Cierre válido:
política aprobada,
acciones creadas,
comunicación realizada,
fecha de vigencia definida,
medición programada.

Código:

def puede_cerrar_decision(decision):
    condiciones = [
        decision.get("approved_or_rejected", False),
        decision.get("decision_reason") is not None,
        decision.get("actions_created_if_approved", False),
        decision.get("evidence_complete", False)
    ]

    return all(condiciones)

35. Cierre y FARO Score

El cierre impacta el Score según calidad, tiempo e impacto.

Evento Impacto
Acción cerrada con evidencia +2
Acción P1 cerrada en plazo +3
Acción resuelve tensión +4 a +8
Acción cerrada sin evidencia 0 o bloqueo
Acción vencida sin cierre -3 a -5
Evidencia rechazada -1
Diagnóstico descartado con evidencia 0 / +1 aprendizaje
KPI mejora después de acción +2 a +6
Acción inefectiva medida aprendizaje, no necesariamente castigo

Código:

def impacto_cierre_score(priority, evidence_quality, on_time, resolved_tension):
    score = 0

    if evidence_quality >= 0.80:
        score += 2

    if priority == "P1" and on_time:
        score += 3
    elif priority == "P2" and on_time:
        score += 2

    if resolved_tension:
        score += 5

    return score

36. Auditoría de cierre

Cada cierre debe responder:

quién cerró,
cuándo cerró,
con qué evidencia,
quién validó,
qué KPI se midió,
qué resultado tuvo,
qué motivo tuvo si se rechazó,
qué aprendizaje generó.

Ejemplo:

{
  "entity_type": "action",
  "entity_id": "ACT_001",
  "closed_by": "USER_123",
  "closed_at": "2026-05-28T18:00:00",
  "closure_type": "closed_effective",
  "validated_by": "USER_001",
  "evidence_ids": ["EVD_001", "EVD_002"],
  "kpi_result": {
    "discount_rate": "-4 puntos",
    "gross_margin": "+3 puntos"
  }
}

37. Tabla SQL de evidencia

CREATE TABLE evidence (
    evidence_id TEXT PRIMARY KEY,
    entity_type TEXT NOT NULL,
    entity_id TEXT NOT NULL,
    company_id TEXT,
    branch_id TEXT,
    area_id TEXT,
    evidence_type TEXT NOT NULL,
    title TEXT NOT NULL,
    description TEXT,
    file_url TEXT,
    payload JSONB,
    source_system TEXT,
    uploaded_by TEXT,
    uploaded_at TIMESTAMP DEFAULT now(),
    validation_status TEXT DEFAULT 'pending',
    validated_by TEXT,
    validated_at TIMESTAMP,
    validation_comment TEXT,
    sensitive BOOLEAN DEFAULT false,
    version TEXT DEFAULT '1.0',
    parent_evidence_id TEXT,
    used_for_closure BOOLEAN DEFAULT false
);

38. Tabla SQL de requisitos de evidencia

CREATE TABLE evidence_requirements (
    requirement_id TEXT PRIMARY KEY,
    entity_type TEXT NOT NULL,
    entity_code TEXT NOT NULL,
    action_code TEXT,
    priority_level TEXT,
    evidence_type TEXT NOT NULL,
    title TEXT NOT NULL,
    description TEXT,
    required BOOLEAN DEFAULT true,
    minimum_quality_score NUMERIC DEFAULT 0.70,
    sensitive BOOLEAN DEFAULT false,
    validator_role TEXT,
    created_at TIMESTAMP DEFAULT now()
);

39. Tabla SQL de validaciones de evidencia

CREATE TABLE evidence_validations (
    validation_id TEXT PRIMARY KEY,
    evidence_id TEXT NOT NULL,
    entity_type TEXT,
    entity_id TEXT,
    validation_status TEXT NOT NULL,
    validated_by TEXT,
    validator_role TEXT,
    validation_comment TEXT,
    quality_score NUMERIC,
    created_at TIMESTAMP DEFAULT now()
);

40. Tabla SQL de cierres

CREATE TABLE closure_events (
    closure_id TEXT PRIMARY KEY,
    entity_type TEXT NOT NULL,
    entity_id TEXT NOT NULL,
    company_id TEXT,
    branch_id TEXT,
    area_id TEXT,
    closure_type TEXT NOT NULL,
    closure_status TEXT NOT NULL,
    closed_by TEXT,
    validated_by TEXT,
    closure_reason TEXT,
    evidence_ids JSONB,
    kpi_measurements JSONB,
    score_impact NUMERIC,
    created_at TIMESTAMP DEFAULT now()
);

41. Tabla SQL de medición posterior

CREATE TABLE post_closure_measurements (
    measurement_id TEXT PRIMARY KEY,
    closure_id TEXT,
    entity_type TEXT,
    entity_id TEXT,
    action_id TEXT,
    kpi_code TEXT NOT NULL,
    value_before NUMERIC,
    value_after NUMERIC,
    delta_value NUMERIC,
    delta_rate NUMERIC,
    expected_direction TEXT,
    result_classification TEXT,
    measured_period_start DATE,
    measured_period_end DATE,
    measured_by TEXT,
    created_at TIMESTAMP DEFAULT now()
);

42. Motor de evidencia FARO

Flujo:

acción creada
→ requisitos de evidencia asignados
→ responsable carga evidencia
→ FARO valida completitud
→ aprobador valida calidad
→ FARO habilita o bloquea cierre
→ se registra cierre
→ se programa medición posterior

Código conceptual:

def motor_evidencia(accion, evidencias):
    requeridas = set(accion.get("required_evidence", []))
    cargadas = set(e["evidence_type"] for e in evidencias)

    faltantes = list(requeridas - cargadas)

    if faltantes:
        return {
            "status": "missing_evidence",
            "missing": faltantes,
            "can_close": False
        }

    evidencias_no_aprobadas = [
        e for e in evidencias
        if e.get("validation_status") not in ["approved", "auto_generated"]
    ]

    if evidencias_no_aprobadas:
        return {
            "status": "evidence_pending_validation",
            "can_close": False
        }

    return {
        "status": "evidence_complete",
        "can_close": True
    }

43. Motor de cierre FARO

def motor_cierre(entity):
    evidencia = entity.get("evidence_status") == "complete"
    validacion = entity.get("evidence_validated", False)
    aprobacion = True

    if entity.get("requires_approval"):
        aprobacion = entity.get("approved", False)

    dependencias = not entity.get("blocked", False)

    if evidencia and validacion and aprobacion and dependencias:
        return {
            "can_close": True,
            "next_status": "closed"
        }

    return {
        "can_close": False,
        "next_status": "waiting_closure_requirements"
    }

44. Ejemplo completo: auditoría de descuentos

Acción

Auditar descuentos mayores al 8%.

Evidencia requerida

1. Exportación de ventas filtradas.
2. Margen por operación.
3. Resumen por vendedor.
4. Clientes con descuentos altos.
5. Propuesta de política.

Validación

R: Gerente Comercial carga informe.
C: Finanzas valida margen.
A: Dirección aprueba política.

Cierre

Se cierra si:
- informe está completo,
- margen fue validado,
- Dirección revisó propuesta,
- se creó acción posterior si corresponde.

45. Ejemplo completo: plan de caja

Acción

Actualizar plan urgente de caja.

Evidencia requerida

cashflow 7 días,
cashflow 30 días,
ranking de clientes morosos,
plan de cobranza,
pagos críticos y negociables,
decisión de Dirección.

Cierre válido

Caja proyectada actualizada.
Plan aprobado.
Responsables de cobranza asignados.
Seguimiento diario programado.

46. Ejemplo completo: reposición preventiva

Acción

Activar reposición preventiva de producto crítico.

Evidencia requerida

stock actual validado,
venta promedio diaria,
días de cobertura,
plazo proveedor,
orden de compra o redistribución,
fecha estimada de reposición.

Cierre válido

Producto con reposición confirmada o redistribución ejecutada.
Riesgo de quiebre actualizado.
Comercial informado.

47. Ejemplo completo: canje

Acción

Evaluar canje.

Evidencia requerida

propuesta comercial,
valor de materiales,
costo de materiales,
valuación activo,
factor de liquidez,
riesgo legal,
costo financiero,
comparativo contra venta normal,
aprobación de Dirección/Directorio.

Cierre válido

Canje aprobado, rechazado o renegociado con fundamento.
No se puede cerrar por “parece buen negocio”.

Frase dura pero necesaria:

El canje no se cierra por entusiasmo comercial. Se cierra por valor neto, liquidez, riesgo y aprobación.


48. Ejemplo completo: calidad de datos de margen

Acción

Completar costos faltantes.

Evidencia requerida

productos sin costo identificados,
costos cargados,
maestro actualizado,
margen recalculado,
confianza del KPI actualizada.

Cierre válido

Confianza KPI margen superior a 0.80.

Si no se recalcula el KPI, no se cerró el problema; solo se cargaron datos.


49. Uso de IA en evidencia y cierre

La IA puede ayudar a:

resumir evidencia,
detectar faltantes,
explicar por qué no se puede cerrar,
redactar cierre ejecutivo,
clasificar evidencia,
comparar evidencia contra requisitos.

Pero no debe:

aprobar evidencia sensible sola,
inventar pruebas,
cerrar acciones sin validación,
decidir que algo está resuelto sin KPI o responsable.

Prompt interno:

Actúa como analista ejecutivo FARO.

Con base únicamente en la evidencia estructurada recibida, redacta un resumen de cierre.

No inventes datos.
No asumas evidencia faltante.
Indica:
1. evidencia cargada,
2. evidencia faltante,
3. validaciones realizadas,
4. si permite cierre,
5. motivo,
6. KPI afectado,
7. medición posterior requerida.

Payload:
{closure_payload}

50. Testing de evidencia y cierre

Test evidencia completa

def test_evidencia_completa():
    accion = {
        "required_evidence": ["informe", "kpi_recalculado"]
    }

    evidencias = [
        {"evidence_type": "informe", "validation_status": "approved"},
        {"evidence_type": "kpi_recalculado", "validation_status": "approved"}
    ]

    resultado = motor_evidencia(accion, evidencias)

    assert resultado["can_close"] is True

Test evidencia faltante

def test_evidencia_faltante():
    accion = {
        "required_evidence": ["informe", "kpi_recalculado"]
    }

    evidencias = [
        {"evidence_type": "informe", "validation_status": "approved"}
    ]

    resultado = motor_evidencia(accion, evidencias)

    assert resultado["can_close"] is False
    assert "kpi_recalculado" in resultado["missing"]

Test acción sensible sin aprobación

def test_accion_sensible_sin_aprobacion_no_cierra():
    accion = {
        "evidence_status": "complete",
        "evidence_validated": True,
        "requires_approval": True,
        "approved": False,
        "blocked": False
    }

    resultado = motor_cierre(accion)

    assert resultado["can_close"] is False

51. Errores comunes en evidencia y cierre

Error Consecuencia
Cerrar con comentario simple No hay prueba real.
No validar evidencia Se acepta cualquier archivo.
No exigir KPI posterior No se sabe si funcionó.
No versionar evidencia Se pierde auditoría.
No restringir evidencia sensible Riesgo de confidencialidad.
Cerrar tensión por cerrar una acción El problema puede seguir vivo.
No registrar falso positivo FARO no aprende.
No registrar falso negativo FARO repite omisiones.
No exigir aprobador Decisiones sensibles quedan débiles.

52. Riesgos si no existe esta capa

Riesgo Consecuencia
Acciones cerradas de palabra Falsa sensación de avance.
Problemas recurrentes Se cierran síntomas, no causas.
FARO Score poco confiable Suma puntos sin evidencia.
Auditoría débil No se puede defender qué pasó.
Responsables sin accountability Nadie demuestra ejecución.
Decisiones sensibles sin respaldo Riesgo legal, financiero o humano.
Aprendizaje pobre FARO no sabe qué funcionó.
Baja adopción directiva Dirección deja de creer en el sistema.

53. Output final del Anexo 32

Al finalizar este anexo, FARO debe tener definido:

1. Tipos de evidencia.
2. Evidencia obligatoria por tipo de acción.
3. Evidencia por área.
4. Evidencia por industria.
5. Niveles de evidencia.
6. Score de calidad de evidencia.
7. Estados de evidencia.
8. Validación de evidencia.
9. Rechazo de evidencia.
10. Criterios de cierre.
11. Cierre operativo vs cierre ejecutivo.
12. Cierre de acciones.
13. Cierre de alertas.
14. Cierre de tensiones.
15. Cierre de diagnósticos.
16. Cierre de recomendaciones.
17. Cierre de simulaciones.
18. Cierre de decisiones.
19. Evidencia sensible.
20. Permisos sobre evidencia.
21. Evidencia automática y manual.
22. Medición posterior.
23. Clasificación del cierre.
24. Impacto en FARO Score.
25. Auditoría de cierre.
26. Tablas SQL de evidencia y cierre.
27. Motor de evidencia.
28. Motor de cierre.
29. Testing de evidencia y cierre.
30. Uso controlado de IA explicativa.
31. Aprendizaje por cierre efectivo o inefectivo.

54. Conexión con otros anexos

Próximo anexo Qué recibe desde Anexo 32
Anexo 21 — Alertas FARO Criterios para cerrar alertas.
Anexo 22 — Biblioteca de tensiones Evidencia para cerrar tensiones.
Anexo 23 — Diagnóstico ejecutivo Evidencia para validar o descartar diagnósticos.
Anexo 24 — Confianza del diagnóstico Evidencia que sube o baja confianza.
Anexo 26 — Recomendaciones FARO Evidencia para aceptar, rechazar o convertir recomendaciones.
Anexo 27 — Simulación de escenarios Evidencia de supuestos y resultados.
Anexo 28 — FARO Action Guide Evidencia requerida por guía.
Anexo 29 — Biblioteca de acciones Evidencia y cierre por acción.
Anexo 30 — Responsables y RACI Quién carga y quién valida evidencia.
Anexo 31 — Workflow y escalamiento Estados de evidencia dentro del flujo.
Anexo 33 — Seguimiento y medición Medición posterior al cierre.
Anexo 35 — FARO Score Impacto del cierre validado.
Anexo 36 — Aprendizaje Qué funcionó, qué no y por qué.
Anexo 37 — Recalibración Ajuste de reglas según evidencia real.

El módulo de Evidencia y Cierre FARO define qué prueba debe existir para cerrar una acción, alerta, tensión, diagnóstico, recomendación, simulación o decisión. Exige evidencia, validación, criterios de cierre, medición posterior y auditoría, evitando cierres declarativos sin respaldo.

Versión 1.0 · Última revisión: 2026-05-28 Anexo 32 de 40 · Fase 9.1