---
name: <slug-del-flow>
id: NNNN
status: pending                # pending | running | done | failed | deferred
created: 2026-05-18
updated: 2026-05-18
priority: high                 # low | medium | high
risk: low                      # low | medium | high (sensibilidad de datos)
related_issues: []
apps: []
trigger: manual                # manual | cron | webhook
schedule: ""
expected_runtime_s: 60
tags: []

# OPCIONAL (issue 0114): contrato de evidencia DoD canonico.
# Cada item es una superficie/check observable que prueba que el flow funciono.
dod_evidence_schema:
  - id: surface_dashboard
    kind: url
    expected: "https://metabase.organic-machine.com/dashboard/12 muestra ultimo refresh hoy"
    required: true
  - id: matrix_room_msg
    kind: screenshot
    expected: "sala matrix #flows recibe mensaje con resumen del run"
    required: true
  - id: data_factory_run
    kind: cmd
    expected: "sqlite3 data_factory.db 'SELECT count(*) FROM runs WHERE flow=NNNN AND created_at > date(now,-1 day)' > 0"
    required: true
  - id: error_path_log
    kind: log
    expected: "fallar collector intencional deja entry status=error en operations.db sin crash"
    required: false
---

## Goal
Una frase: que estamos probando.

## Pre-requisitos
- Lista de requisitos manuales (ej. Chrome con remote-debugging).

## Flow
Pasos numerados. Cada paso puede ser:
- texto libre (manual)
- `function: <id>` (registry function)
- `cmd: <bash>`
- `js: <expression>` (en tab Chrome)

## Acceptance
- [ ] Checklist
- [ ] ...

## Definition of Done

- [ ] **Repetibilidad**: corre N veces consecutivas sin intervencion manual.
- [ ] **Observabilidad**: call_monitor.calls + data_factory.runs + dashboard.
- [ ] **Error-path**: 1 modo de fallo probado y manejado (no crash silencioso).
- [ ] **Idempotencia**: re-ejecutar no duplica datos.
- [ ] **Secrets**: cero credenciales fuera de pass/vaults.
- [ ] **Docs**: `## Notas` rellenado con hallazgos reales.
- [ ] **Registry-first**: todas las piezas existen como funciones del registry.
- [ ] **INDEX + status**: status=done + fila INDEX.md + movido a completed/.
- [ ] **User-facing**: <accion + lugar exacto>.
- [ ] **User-facing repeat**: humano vuelve manana y ve datos frescos.
- [ ] **User-facing onboarding**: parrafo en `## Notas` explica "para ver/usar esto: hacer X".
- [ ] **User-facing latencia**: humano percibe cambio en <X segundos|minutos>.

## Telemetria esperada
Que cambia en call_monitor / data_factory.runs / dag_engine.

## Notas
Hallazgos tras correr. Incluye el parrafo onboarding.
