# Taxonomia canonica — dev/issues + dev/flows

Fuente de verdad para los campos del frontmatter YAML de issues y flows. Cualquier valor fuera de las allowlists hace fallar `fn doctor issues` y el filtrado de `dev_console`.

## Dominios (allowlist)

| Tag | Que entra |
|---|---|
| `meta` | telemetria, hooks, bucle reactivo, MCP, loops autonomos, taxonomia, dev_console |
| `cpp-stack` | apps C++/ImGui + primitivos GFX, GL, ImPlot, tablas, paneles, app shell |
| `kanban` | app `kanban` (features, stickers, columnas, reports, daily summary) |
| `trading` | roadmap trading (market data, broker, portfolio, backtester, journal, ...) |
| `gamedev` | roadmap gamedev (SDL3, sokol, runtime, asset pipeline, build targets) |
| `osint` | ODR + OSINT + graph_explorer |
| `data-ingest` | extractores, navegator, data_factory, dag_engine, recipes |
| `registry-quality` | auditorias, drift, registry-first refactors, uses_functions, migrations |
| `notify` | Matrix, Telegram, email, slack |
| `imagegen` | stable-diffusion, imagegen_studio, sd-cpp |
| `apps-infra` | launcher, datahub, app shell shared infra, app locations |
| `dev-ux` | fricion del agente (output mudo, paths rotos, gradle_run, slash commands) |
| `deploy` | deploy_server, systemd, VPS, rsync, webhooks |
| `frontend` | React + Vite + Mantine + hooks + visualizaciones web |
| `mcp` | MCP server, tools del registry, integracion Claude Code |
| `browser` | Chrome, CDP, navegator helpers |
| `telemetry` | call_monitor, function_stats, observability |
| `docs` | reglas, plantillas, ADRs, capability pages |

## Tipos

| Tag | Que es |
|---|---|
| `app` | crear app entera (apps/ o cpp/apps/) |
| `feature` | accion concreta, una rama corta |
| `bugfix` | corregir defecto |
| `refactor` | reescribir sin cambiar comportamiento |
| `chore` | auditoria, indexado, limpieza, migracion |
| `docs` | solo documentacion |
| `spike` | exploracion timeboxed |
| `epic` | roadmap con sub-issues hijo (NNNN + NNNNa, NNNNb, ...) |
| `infra` | sub-piezas de un epic |
| `planning` | issue de planificacion (no entrega codigo) |

## Estados

| Tag | Que significa |
|---|---|
| `pendiente` | no arrancado |
| `in-progress` | rama abierta + commits |
| `bloqueado` | espera dep no resuelta |
| `completado` | merge a master + DoD verde + archivado |
| `deferred` | fuera de scope actual, conservado |

## Scopes

| Tag | Que toca |
|---|---|
| `registry-only` | solo `functions/`, `types/`, `python/functions/`, etc. |
| `app-scoped` | una app concreta |
| `multi-app` | atraviesa >=2 apps |
| `cross-stack` | toca C++ + Go + Py + Frontend o equivalente |

## Prioridades

| Tag | Que significa |
|---|---|
| `alta` | bloquea otros items, alto impacto |
| `media` | importante pero no critico |
| `baja` | nice-to-have |

## Flow patterns (solo dev/flows)

| Pattern | Que es |
|---|---|
| `smoke-cron` | pipeline programado de prueba (HN, AEMET) |
| `prod-data` | caso real con datos personales/sensibles |
| `event-driven` | webhook -> fanout/notify |
| `manual-deep` | humano dispara, multi-paso interactivo |
| `gitops` | estado de servicio -> codigo versionado |
| `realtime-loop` | bucle continuo sin trigger discreto |

## Convenciones de uso

- `domain` es lista (multi-tag permitido). `scope`, `type`, `priority`, `status` son escalares.
- Issue sin `type` o `priority` -> warning en `fn doctor issues` + bloquea `done`.
- Issue con dominio fuera de la lista -> error en validador.
- Roadmaps usan `type: epic` con sub-issues `NNNNa`, `NNNNb`, ... que son `type: infra` o `feature`.
- Issue cerrado vive en `dev/issues/completed/` con `status: completado`.

## Como evolucionar la taxonomia

Anadir dominio nuevo requiere:
1. PR a este archivo + a `python/functions/pipelines/migrate_issues_frontmatter.py` (heuristica).
2. Justificacion: >=3 issues actuales o previstos que encajen.
3. Frontera neta con dominios vecinos.

NO crear dominios para 1 issue suelto -> usa `tags:` libre.
