merge issue/0114: DoD evidence schema + fn doctor dod

This commit is contained in:
2026-05-18 18:17:20 +02:00
9 changed files with 889 additions and 0 deletions
+42
View File
@@ -56,6 +56,48 @@ Regla: si la respuesta a "donde lo ves" es "en una BD" o "en un log" -> NO vale.
`/flow done` rechaza el cierre si falta alguno de los 4 user-facing checks o si `## Notas` no contiene parrafo onboarding.
### DoD evidence schema (issue 0114, opcional)
Ademas de los checkboxes humanos del bloque `## Definition of Done`, cada flow puede declarar en su frontmatter un bloque `dod_evidence_schema:` con la version maquinable de la DoD: lista de evidencias con id unico, `kind` cerrado, `expected` libre y `required` bool. Auditable con `fn doctor dod`.
```yaml
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' > 0"
required: true
- id: error_path_log
kind: log
expected: "fallar collector intencional deja entry status=error sin crash"
required: false
```
Reglas:
- `kind` ∈ {`screenshot`, `log`, `url`, `cmd`}.
- `id` unico por flow.
- `expected` no vacio.
- `required` default `true`.
Ejemplos por kind:
| kind | que pones en `expected` |
|---|---|
| `screenshot` | "frame de la app/sala mostrando estado Y" |
| `log` | "fichero <path> contiene linea con texto Z" |
| `url` | "GET <url> devuelve 200 con campo W" o "dashboard tal carga ultima fila < 24h" |
| `cmd` | comando shell con exit 0 (incluido SQL via sqlite3) |
Plantilla canonica: `docs/templates/flow.md`. Validador: `fn doctor dod` + `audit_dod_schema_go_infra`.
## Para agentes / LLMs
Antes de crear o editar un flow, lee `AGENT_GUIDE.md`. Define: