c468b24d2b
Registry (issue 0130a):
- 5 fns infra: parse_issue_md, write_issue_md, scan_issues_dir,
scan_flows_dir, watch_dir_fsnotify
- 3 tipos: Issue, Flow, FsEvent
- Tests round-trip + scan reales + watcher fsnotify (all PASS)
- Capability group 'kanban' nuevo (docs/capabilities/kanban.md)
Apps:
- apps/kanban_cpp/ (sub-repo) — frontend ImGui: board drag-drop,
flows, filters, detail con CSV editors
- apps/kanban_cpp/backend/ — Go service port 8487: REST + SSE +
fsnotify watcher, parser bidireccional MD<->SQLite cache
Issues:
- dev/issues/0130-kanban-cpp-v2.md (epic)
- 0130a parser, 0130b backend, 0130c frontend
CMakeLists.txt: add_subdirectory apps/kanban_cpp (registrado por
init_cpp_app scaffolder).
End-to-end verde: backend devuelve 189 issues + 9 flows; PATCH a
/api/issues/{id} reescribe .md (solo frontmatter, body intacto);
frontend --self-test exit 0; tests Go infra 5/5 PASS.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.3 KiB
4.3 KiB
id, title, status, type, domain, scope, priority, depends, blocks, related, tags, created, updated
| id | title | status | type | domain | scope | priority | depends | blocks | related | tags | created | updated | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0130 | Kanban C++ v2 — gestor de dev/issues y dev/flows con backend Go + frontend ImGui | pendiente | epic |
|
multi-app | alta |
|
|
2026-05-22 | 2026-05-22 |
0130 — Kanban C++ v2
Status: pendiente
Por que
La v1 (apps/kanban_cpp borrada el 2026-05-22) mezclaba paneles ajenos al dominio kanban (agent runs, DoD, worktrees, calendar) y un backend que no era reutilizable. Para gestionar los 98 issues activos + 12 flows del proyecto necesitamos una vista board nativa, sin web, con edicion bidireccional de los archivos markdown.
Que entrega
App kanban_cpp v2 con dos piezas:
-
Backend Go (
apps/kanban_cpp/backend/) — service HTTP en puerto 8487.- Parser bidireccional MD <-> SQLite (cache).
- Watcher fsnotify sobre
dev/issues/(+completed/) ydev/flows/. - Endpoints REST:
/api/issues,/api/issues/{id}(GET/PATCH),/api/flows,/api/flows/{id},/api/meta,/api/sse. - PATCH a issue reescribe el frontmatter en disco preservando body + orden de campos.
-
Frontend C++ ImGui (
apps/kanban_cpp/) sobre el frameworkfn::run_app.- Panel Board: columnas por status (pendiente / in-progress / bloqueado / completado). Drag-drop = PATCH status.
- Panel Flows: lista de flows con detalle.
- Panel Filtros (Aside): multi-select domain, scope, priority, tags.
- Panel Detalle: edicion de campos frontmatter de un issue (status, priority, scope, tags, depends, blocks).
- SSE para refrescar tras cambios externos en disco.
Sub-issues
- 0130a — parser MD + scan dirs (funciones registry).
- 0130b — backend Go: schema + handlers + watcher + SSE.
- 0130c — frontend C++: paneles + http client.
Cada sub-issue mergeable independiente en su rama corta TBD.
Reusa del registry
Backend Go:
sqlite_open_go_infra,sqlite_apply_migrations_go_infrahttp_router_go_infra,http_serve_go_infra,http_middleware_chain_go_infrahttp_cors_middleware_go_infra,http_logger_middleware_go_infrahttp_json_response_go_infra,http_error_response_go_infra,http_parse_body_go_infrarandom_hex_id_go_core
Frontend C++:
http_request_cpp_coresse_client_cpp_coredata_table_cpp_viz(lista flows)kpi_card_cpp_viz(contadores por status)
Crea (delegadas a fn-constructor en 0130a)
parse_issue_md_go_infra— lee .md → struct (frontmatter YAML + body).write_issue_md_go_infra— escribe struct → .md preservando body + orden de campos.scan_issues_dir_go_infra— walkdev/issues/+dev/issues/completed/.scan_flows_dir_go_infra— walkdev/flows/.watch_dir_fsnotify_go_infra(si no existe) — events channel.
DoD
fn doctorverde para ambas apps (artefacts + e2e).e2e_checksen ambosapp.md(build + health + self-test).- Drag-drop en frontend reescribe el
.mdcorrespondiente ygit difflo muestra (solo frontmatter, body intacto). - Trio obligatorio (
description+icon.phosphor+icon.accent) en ambosapp.md. - Sub-repos Gitea creados (
dataforge/kanban_cppreactivado o nuevo, mismo nombre).
dod_evidence_schema:
- id: backend_health kind: cmd expected: "curl -fsS http://localhost:8487/api/health == 200" required: true
- id: api_issues_count kind: cmd expected: "curl -fsS http://localhost:8487/api/issues | jq 'length' >= 90" required: true
- id: patch_writes_md kind: cmd expected: "PATCH /api/issues/0130 status=in-progress reescribe dev/issues/0130-*.md (git diff muestra solo status)" required: true
- id: frontend_self_test kind: cmd expected: "./cpp/build/linux/apps/kanban_cpp/kanban_cpp --self-test exit 0" required: true
- id: board_screenshot kind: screenshot expected: "kanban_cpp Board panel con 4 columnas pobladas con issues reales" required: true
Anti-scope
NO incluye en esta version:
- Grafo de dependencias (depends/blocks/related visual).
- Edicion de body MD desde la app (solo frontmatter).
- Multi-PC sync (backend es local).
- Crear issues nuevos desde la UI (solo editar existentes).
- DoD evidence panel, agent runs, calendar, worktrees (la v1 los mezclaba — fuera).