581d0f0a0e
- docs/templates/issue.md and docs/templates/flow.md include the optional dod_evidence_schema: block with realistic example items. - dev/issues/README.md and dev/flows/README.md document the schema, kinds by example, validation rules and the fn doctor dod entrypoint. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
74 lines
2.5 KiB
Markdown
74 lines
2.5 KiB
Markdown
---
|
|
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.
|