# Issues

> **Frontmatter YAML** es la fuente de verdad desde 2026-05-17 (issue 0100).
> Cada `.md` empieza con bloque `---` con `id`, `title`, `status`, `type`, `domain`, `scope`, `priority`, `depends`, `blocks`, `related`, `created`, `updated`, `tags`.

## DoD evidence schema (issue 0114, opcional)

Cualquier issue puede declarar en su frontmatter un bloque `dod_evidence_schema:` que enumera **evidencias concretas** capturables al cerrar. Es la version maquinable del bloque humano `## Definition of Done`: lista de items con id unico, `kind` cerrado, `expected` libre y `required` bool. Auditable con `fn doctor dod` (sale humana y `--json`).

```yaml
dod_evidence_schema:
  - id: surface_1_board_drag
    kind: screenshot
    expected: "kanban_cpp board con card en columna Doing (agent)"
    required: true
  - id: backend_health
    kind: cmd
    expected: "curl -fsS http://localhost:8403/api/health == 200"
    required: true
  - id: timeline_entry
    kind: url
    expected: "http://localhost:8486/api/runs?app=kanban_cpp devuelve >=1 run"
    required: false
  - id: agent_log
    kind: log
    expected: "agent_runs/<run_id>/agent.log contiene 'workflow done'"
    required: true
```

Reglas:
- `kind` ∈ {`screenshot`, `log`, `url`, `cmd`}. Otro valor rechaza el item.
- `id` unico por issue (los duplicados se reportan).
- `expected` no vacio (descripcion observable de la evidencia).
- `required` bool (default `true` si se omite).

Ejemplos por kind:

| kind | que pones en `expected` |
|---|---|
| `screenshot` | "frame de la UI X mostrando estado Y" — capturable manual o por test visual |
| `log` | "fichero <path> contiene linea con texto Z" — grep-eable |
| `url` | "GET <url> devuelve 200 y body con campo W" — curl-eable |
| `cmd` | comando que debe terminar con exit 0 (o assert explicito) |

Plantilla canonica: `docs/templates/issue.md`. Validador: `fn doctor dod` + `audit_dod_schema_go_infra`.

> Para listar/filtrar: `/issue list --domain trading --status pendiente` (cuando `dev_console` exista — issue 0101).
>
> Dominios canonicos: `meta cpp-stack kanban trading gamedev osint data-ingest registry-quality notify imagegen apps-infra dev-ux deploy frontend mcp browser telemetry docs`.
> La tabla debajo es vista historica (legacy) y NO se actualiza; sera sustituida por output auto-generado en issue 0102.

| ID | Título | Estado | Prioridad | Tipo | Bloquea |
|----|--------|--------|-----------|------|---------|
| 0001 | Jupyter create notebook | completado | — | feature | — |
| 0002 | Jupyter discover root dir | completado | — | bugfix | — |
| 0003 | Jupyter tools documentation | completado | — | docs | — |
| 0004 | Jupyter discover multiple instances | completado | — | feature | — |
| 0005 | Jupyter write batch | completado | — | feature | — |
| 0006 | Jupyter exec outputs keyerror | completado | — | bugfix | — |
| [0007a](completed/0007a-dag-core.md) | DAG engine: core (parse, validate, topo sort) | completado | alta | feature | 0007b-e |
| [0007b](completed/0007b-process-manager.md) | DAG engine: process manager (spawn, wait, kill) | completado | alta | feature | 0007e |
| [0007c](completed/0007c-execution-store.md) | DAG engine: execution store (SQLite) | completado | alta | feature | 0007e |
| [0007d](completed/0007d-scheduler.md) | DAG engine: scheduler (cron match) | completado | media | feature | 0007e |
| [0007e](completed/0007e-dag-executor-app.md) | DAG engine: CLI + web app que reemplaza Dagu | completado | alta | feature | — |
| [0008](completed/0008-sqlite-api-web.md) | SQLite API Web | completado | alta | feature | — |
| [0009](completed/0009-http-server.md) | HTTP Server Foundation | completado | alta | feature | 0010, 0011, 0014, 0016, 0019, 0021, 0022 |
| [0010](completed/0010-auth-system.md) | Auth System (JWT, passwords, OAuth2, RBAC) | completado | alta | feature | 0022 |
| [0011](completed/0011-websocket-sse.md) | WebSocket & SSE Server | completado | alta | feature | — |
| [0012](completed/0012-email-smtp.md) | Email & SMTP | completado | media | feature | — |
| [0013](completed/0013-background-jobs.md) | Background Job Queue | completado | alta | feature | — |
| [0014](completed/0014-file-upload.md) | File Upload & Storage | completado | media | feature | — |
| [0015](completed/0015-db-migrations.md) | Database Migrations | completado | media | feature | 0021, 0022 |
| [0016](completed/0016-rate-limiting.md) | Rate Limiting | completado | media | feature | — |
| [0017](completed/0017-frontend-hooks.md) | Frontend Data Hooks (React) | completado | alta | feature | — |
| [0018](completed/0018-config-env.md) | Config & Env Management | completado | media | feature | — |
| [0019](completed/0019-structured-logging.md) | Structured Logging Go | completado | media | feature | — |
| [0020](completed/0020-pdf-generation.md) | PDF Generation | completado | media | feature | — |
| [0021](completed/0021-crud-generator.md) | CRUD Generator | completado | media | feature | — |
| [0022](completed/0022-init-pipelines.md) | Init Pipelines (scaffolding) | completado | alta | feature | — |
| [0023](completed/0023-testing-utils.md) | Testing Utilities Go | completado | media | feature | — |
| [0024](completed/0024-dashboard-yaml-split-por-tab.md) | auto_metabase: split dashboard YAMLs por tab | completado | alta | mejora | — |
| [0025](completed/0025-cpp-text-editor-file-watcher.md) | C++ text_editor + file_watcher | completado | alta | feature | — |
| [0026](completed/0026-cpp-gl-texture-load.md) | C++ gl_texture_load (stb_image → sampler2D) | completado | alta | feature | 0035, 0036 |
| [0027](0027-cpp-gl-compute-pingpong.md) | C++ gl_compute_shader + gl_pingpong_fbo + DAG Compute | pendiente | alta | feature | — |
| [0028](completed/0028-cpp-implot3d-3d-viz.md) | C++ ImPlot3D + surface_plot_3d + scatter_3d | completado | media | feature | — |
| [0029](completed/0029-cpp-mesh-viewer.md) | C++ mesh_viewer + obj loader + orbit_camera | completado | media | feature | — |
| [0030](0030-cpp-audio-reactive.md) | C++ audio reactivo (capture + fft + uniform feed + viz) | pendiente | media | feature | — |
| [0031](completed/0031-cpp-animation-curves.md) | C++ animation curves (timeline + bezier_editor + tween) | completado | media | feature | — |
| [0032](completed/0032-cpp-sql-workbench.md) | C++ sql_workbench | completado | media | feature | — |
| [0033](0033-cpp-http-ws-inspector.md) | C++ http_inspector + websocket_client | pendiente | baja | feature | — |
| [0034](completed/0034-cpp-scientific-viz.md) | C++ scientific viz (treemap, sankey, chord, contour, voronoi) | completado | media | feature | — |
| [0035](0035-cpp-map-tiles.md) | C++ map_tiles (slippy map OSM) | pendiente | baja | feature | — |
| [0036](0036-cpp-image-canvas-webcam.md) | C++ image_canvas + webcam_texture | pendiente | baja | feature | — |
| [0037](completed/0037-ioc-regex-extractor.md) | IoC regex extractor (IP, email, dominio, hash, wallet, CVE, MAC) | completado | alta | feature | — |
| [0038](completed/0038-gliner-entity-extractor.md) | GLiNER entity extractor (zero-shot NER multilingue) | completado | alta | feature | 0039, 0040 |
| [0039](completed/0039-glirel-relation-extractor.md) | GLiREL relation extractor (zero-shot triplets) | completado | media | feature | 0040 |
| [0040](completed/0040-hybrid-extraction-pipeline.md) | Pipeline hibrido extraccion grafos (regex + GLiNER + GLiREL + LLM fallback) | completado | media | feature | — |
| [0041](completed/0041-cpp-app-best-practices.md) | C++ app shell estandarizado (PATTERNS.md + AppConfig extendido) | completado | alta | feature | 0043 |
| [0042](completed/0042-cpp-layout-storage-public.md) | C++ layout_storage publico (extraer de shaders_lab) | completado | alta | feature | 0043 |
| [0043](completed/0043-cpp-apps-standardize-shell.md) | Estandarizar shell de las 4 apps C++ | completado | alta | refactor | 0046 |
| [0044](completed/0044-cpp-orphans-audit.md) | Auditar 52 funciones C++ huerfanas y poblar uses_functions | completado | media | chore | — |
| [0045](completed/0045-cpp-extract-pure-logic.md) | Extraer logica pura de impuros (sql_workbench, process_runner, file_watcher, shaders_lab compiler) | completado | media | refactor | — |
| [0046](completed/0046-cpp-refactor-raw-imgui.md) | Reemplazar raw ImGui en apps por primitivos del registry | completado | media | refactor | — |
| [0047](completed/0047-cpp-tests-foundation.md) | C++ tests foundation (Catch2 + top-20 primitivos) | completado | alta | feature | 0048 |
| [0048](completed/0048-cpp-visual-tests-ci-gate.md) | Visual tests via primitives_gallery + CI gate tested:true | completado | media | feature | — |
| [0049](completed/0049-osint-graph-viewer.md) | OSINT graph viewer + GPU graph rendering system (multi-issue) | completado | alta | feature | — |
| [0049a](completed/0049a-osint-graph-setup.md) | Setup proyecto osint_graph + sub-repo graph_explorer | completado | alta | infra | parte de 0049 |
| [0049b](completed/0049b-cpp-bump-gl-43.md) | Bump OpenGL 3.3 → 4.3 core en cpp/framework | completado | alta | infra | parte de 0049 |
| [0049c](completed/0049c-graph-renderer-tier1.md) | graph_renderer Tier 1: RGBA8, orphan, frustum cull, auto-pause | completado | alta | perf | parte de 0049 |
| [0049d](completed/0049d-graph-edges-vertex-pulling.md) | Aristas via vertex pulling con TBO | completado | alta | perf | parte de 0049 |
| [0049e](completed/0049e-graph-types-extended.md) | graph_types modelo extendido + EntityType/RelationType | completado | alta | feature | parte de 0049 |
| [0049f](completed/0049f-graph-renderer-symbols.md) | Renderer extendido: shapes SDF, icon atlas, flechas, edge styles | completado | alta | feature | parte de 0049 |
| [0049g](completed/0049g-graph-source-operations.md) | graph_sources: lector operations.db + abstraccion funcional | completado | alta | feature | parte de 0049 |
| [0049h](completed/0049h-graph-force-layout-gpu.md) | graph_force_layout_gpu: compute shader + spatial hash | completado | media-alta | feature | parte de 0049 |
| [0049i](completed/0049i-graph-layouts-static.md) | graph_layouts (radial/hierarchical/fixed) + viewport multi-select | completado | media | feature | parte de 0049 |
| [0049j](completed/0049j-graph-labels.md) | graph_labels: render etiquetas con LabelPolicy | completado | media | feature | parte de 0049 |
| [0049k](completed/0049k-graph-explorer-app.md) | App graph_explorer (proyecto osint_graph) — integracion final | completado | alta | feature | parte de 0049 |
| [0050](0050-jupyter-exec-collab-client-failure.md) | `jupyter_exec` falla por cliente colaborativo (workaround documentado) | pendiente | media | bug | — |
| [0051](0051-extraction-pipeline-followups.md) | Funciones pendientes del pipeline NER+RE (NuExtract, extract_graph_from_pdf, spaCy ES V2, kernel startup fix, REBEL EN) | pendiente | media | feature | — |
| [0053](completed/0053-kanban-chat-panel.md) | Chat lateral en apps/kanban via `claude -p` (sonnet, persistencia localStorage) | completado | media | feature | — |
| [0054](0054-deploy-server-registry-first-refactor.md) | deploy_server: refactor registry-first (SSH/systemd/rsync inline → registry funcs) | pendiente | alta | refactor | — |
| [0055](0055-docker-tui-registry-first-refactor.md) | docker_tui: refactor para usar funciones docker_* del registry | pendiente | alta | refactor | — |
| [0056](0056-audit-python-nested-imports.md) | audit_uses_functions: detectar imports Python anidados (`from pkg.subpkg import X`) | pendiente | media | enhancement | — |
| [0057](0057-audit-go-symbol-naming.md) | audit_uses_functions: mejorar deteccion de simbolos Go con abreviaturas | pendiente | baja | enhancement | — |
| [0058](0058-kanban-uses-functions-sync.md) | kanban: sync uses_functions cuando termine WIP en curso | pendiente | baja | docs | — |
| [0059](0059-nested-app-md-tracking.md) | Resolver doble tracking de `apps/*/app.md` (fn_registry + sub-repo) | pendiente | media | infra | — |
| [0060](0060-fn-doctor-secrets-subcommand.md) | `fn doctor secrets`: scan de secrets en TODOS los repos | pendiente | media | feature | — |
| [0061](0061-notify-telegram-integration.md) | Integrar `notify_telegram` en deploy_server + bucle reactivo | pendiente | media | integration | 0054 |
| [0062](0062-deprecate-unused-core-functions.md) | Politica de deprecacion para funciones del registry sin consumidores | pendiente | baja | research | — |
| [0063](0063-kanban-stickers.md) | kanban: sistema de stickers (emojis) sobre cards | pendiente | media | feature | — |
| [0064](completed/0064-registry-mcp-server.md) | registry_mcp: servidor MCP que expone registry.db a Claude | completado | alta | feature | — |
| [0065](0065-extract-jobs-system-to-registry.md) | Extraer jobs system de graph_explorer al registry (jobs_pool + cache + subprocess worker) | pendiente | alta | refactor | 0066 |
| [0066](0066-online-data-recopilation-mvp.md) | online_data_recopilation — odr_console MVP (lanzador GUI + 5-pasos + 1 collector) | pendiente | alta | feature | — |
| [0067](0067-odr-osint-prereqs-roadmap.md) | Roadmap de prereqs — issues de osint_graph que odr_console necesita antes/durante MVP | pendiente | alta | planning | — |
| [0068](0068-e2e-validation-loop-fn4-fn5.md) | Validacion e2e fase 4-5 del bucle reactivo (fn-analizador + fn-mejorador) | pendiente | alta | feature | — |
| [0069](0069-autonomous-agent-loop-self-iterating-tasks.md) | Bucle autonomo de agente — tareas auto-iterativas | pendiente | media | feature | — |
| [0070](0070-browser-helpers-global-roadmap.md) | Roadmap helpers globales para browser/CDP | pendiente | media | planning | — |
| [0071](0071-extract-reusable-cpp-panels-roadmap.md) | Roadmap de extraccion de paneles ImGui reutilizables a cpp/functions/ | pendiente | media | planning | — |
| [0071a](0071a-extract-claude-chat-panel.md) | Extraer `claude_chat_panel` a cpp/functions/core/ (sub-issue de 0071) | pendiente | alta | refactor | parte de 0071, depende 0071f |
| [0071b](0071b-extract-jobs-queue-panel.md) | Extraer `jobs_queue_panel` a cpp/functions/core/ (sub-issue de 0071, absorbe 0065) | pendiente | media | refactor | parte de 0071, depende 0071f |
| [0071f](0071f-extract-subprocess-streamer.md) | Extraer `subprocess_streamer` a cpp/functions/core/ (sub-issue de 0071) | pendiente | media | refactor | parte de 0071 |
| [0071g](0071g-extract-app-db-init.md) | Extraer `app_db_init` a cpp/functions/core/ (sub-issue de 0071, Tier 4) | pendiente | media | refactor | parte de 0071 |
| [0072](0072-gamedev-stack-roadmap.md) | gamedev — stack ligero multi-plataforma + crypto (roadmap) | pendiente | media | planning | 0072a-l |
| [0072a](0072a-gamedev-smoke-sdl3-sokol-imgui.md) | gamedev — smoke SDL3 + sokol_gfx + ImGui (PC + WASM) | pendiente | alta | feature | parte de 0072 |
| [0072b](0072b-gamedev-runtime-core.md) | gamedev — runtime nucleo (sprite batcher, audio, input, game loop) | pendiente | alta | feature | parte de 0072, depende 0072a |
| [0072c](0072c-gamedev-asset-pipeline.md) | gamedev — asset pipeline (atlas, MSDF, tilemap, shader translate) | pendiente | alta | feature | parte de 0072, depende 0072b |
| [0072d](0072d-gamedev-wasm-build-size-budget.md) | gamedev — WASM build pipeline + size budget | pendiente | alta | feature | parte de 0072, depende 0072a/b |
| [0072e](0072e-gamedev-crypto-bridge-web3.md) | gamedev — bridge crypto Web3 (wallets, sign tx) JS interop | pendiente | alta | feature | parte de 0072, depende 0072a/d |
| [0072f](0072f-gamedev-crypto-onchain-assets-payments.md) | gamedev — crypto on-chain (NFT assets, payments, leaderboards firmadas) | pendiente | media | feature | parte de 0072, depende 0072e |
| [0072g](0072g-gamedev-android-build.md) | gamedev — Android build (NDK + touch + virtual gamepad + WalletConnect) | pendiente | media | feature | parte de 0072, depende 0072b/c |
| [0072h](0072h-gamedev-ios-build.md) | gamedev — iOS build (Xcode + Metal via sokol + WalletConnect) | pendiente | media | feature | parte de 0072, depende 0072b/c |
| [0072i](0072i-gamedev-editor-app.md) | gamedev — editor visual `game_editor` (scene tree, inspector, asset browser) | pendiente | media | feature | parte de 0072, depende 0072b/c |
| [0072j](0072j-gamedev-physics-box2d.md) | gamedev — physics 2D (Box2D integration) | pendiente | media | feature | parte de 0072, depende 0072b |
| [0072k](0072k-gamedev-demo-platformer.md) | gamedev — demo plataformero `engine_demo` (referencia stack completo) | pendiente | alta | feature | parte de 0072, depende 0072b/c/d/j |
| [0072l](0072l-gamedev-scripting-optional.md) | gamedev — scripting opcional (wren / lua / hot reload) | diferido | baja | feature | parte de 0072 |
| [0082](0082-compile-sd-cpp-binary.md) | Compilar binario `sd` (stable-diffusion.cpp) para sdcli_generate_go_ml | pendiente | media | feature | desbloquea 0084 |
| [0083](0083-imagegen-spike02-cross-validation.md) | imagegen — notebook 02 validacion cruzada diffusers vs sdcpp_python | pendiente | alta | feature | — |
| [0084](0084-imagegen-studio-go-app.md) | imagegen_studio — app Go binario producto (Fase 3 plan stack) | pendiente | media | feature | 0082 |
| [0099](0099-datahub-app-launcher.md) | datahub — launcher central para arrancar todas las apps del registry | pendiente | alta | feature | — |
| [0105](0105-service-frontmatter-standardization.md) | Estandarizar bloque `service:` en app.md + indexer + `fn doctor services-spec` | in-progress | alta | feature | — |
| [0106](0106-services-monitor-app.md) | App `services_monitor`: dashboard cross-PC de services activos | in-progress | alta | app | 0105 |
| [0107](completed/0107-modules-standardization.md) | Estandarizar sistema de modulos C++: drift + split data_table + tiers + version pinning + docs API | completado | alta | refactor | flag `modules-v2` activo |
| [0107a](completed/0107a-fn-doctor-modules.md) | `fn doctor modules` — detectar drift uses_modules vs uses_functions | completado | alta | feature | parte de 0107 |
| [0107b](completed/0107b-clean-data-table-consumers.md) | Limpiar uses_functions de 8 apps consumidoras de data_table (67 entradas) | completado | alta | refactor | parte de 0107 |
| [0107c](completed/0107c-split-data-table.md) | Partir `modules/data_table/data_table.cpp` (4777 LOC) en sub-funciones del registry | completado | alta | refactor | parte de 0107 |
| [0107d](completed/0107d-module-tiers-policy.md) | Tiers — members vs uses_functions en module.md | completado | alta | refactor | parte de 0107 |
| [0107e](0107e-version-pinning-codegen.md) | uses_modules con min_version + codegen fail-loud | pendiente | media | feature | follow-up de 0107 |
| [0107f](completed/0107f-modules-api-docs.md) | `modules/README.md` + `docs/MODULES_API.md` — contrato publico de modulos | completado | alta | docs | parte de 0107 |
| [0107g](completed/0107g-migrate-inline-begintable.md) | Migrar inline `ImGui::BeginTable` a `data_table::render` (4/8 migradas + 4 abortadas con razon tecnica + 9 LAYOUT-TABLE comentados) | completado | media | refactor | parte de 0107 |
| [0108](completed/0108-tables-playground-aggressive-testbed.md) | App `tables_qa` — testbed agresivo data_table: 10 tabs + panel QA flotante + perf tests (1K..10M filas) + Run Tests + apphub + tables_playground deprecado | completado | alta | app | depende 0107 |
