feat(dev): issues 0100-0104 — dev_console binary + work_tab + DoD user-facing + frontmatter migration de 146 issues + taxonomia canonica
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
---
|
||||
description: "Gestiona issues del registry en dev/issues/. Subcomandos: list, show, status, board, dep, roadmap, tag, done, stale, create. Frontmatter YAML canonico (issue 0100)."
|
||||
---
|
||||
|
||||
# /issue — Gestionar issues del registry
|
||||
|
||||
Issues viven en `dev/issues/NNNN-<slug>.md` con frontmatter YAML canonico (id, title, status, type, domain, scope, priority, depends, blocks, related, created, updated, tags).
|
||||
|
||||
Allowlists en `dev/TAXONOMY.md` (no inventar valores).
|
||||
|
||||
Diferencia con `dev/flows/`:
|
||||
- **Issues** = bugs, features, refactors, chores, epics de implementacion.
|
||||
- **Flows** = casos de uso end-to-end multi-app.
|
||||
|
||||
## Sintaxis
|
||||
|
||||
```
|
||||
/issue list [--domain X] [--type Y] [--status Z] [--prio P] [--epic NNNN]
|
||||
/issue show NNNN
|
||||
/issue status NNNN # acceptance % + estado deps
|
||||
/issue board # kanban pendiente/in-progress/bloqueado/done
|
||||
/issue dep NNNN # arbol bloquea/depende
|
||||
/issue roadmap NNNN # epic + sub-IDs (NNNNa, NNNNb, ...)
|
||||
/issue tag NNNN +X -Y # mantenimiento tags/domain
|
||||
/issue done NNNN # mueve a completed/, valida deps
|
||||
/issue stale [--days 30]
|
||||
/issue create <slug> --type T --domain D [--prio P] [--depends NNNN]
|
||||
```
|
||||
|
||||
## Implementacion
|
||||
|
||||
**Fase 1 (manual via Claude):**
|
||||
|
||||
El agente lee `dev/issues/*.md`, parsea frontmatter YAML con `yaml.safe_load`, aplica el filtro, imprime tabla.
|
||||
|
||||
```python
|
||||
import yaml, pathlib, re
|
||||
issues = []
|
||||
for f in pathlib.Path("dev/issues").glob("*.md"):
|
||||
if f.name in {"README.md", "template.md"}: continue
|
||||
txt = f.read_text()
|
||||
m = re.match(r"^---\n(.*?)\n---", txt, re.S)
|
||||
if not m: continue
|
||||
fm = yaml.safe_load(m.group(1)) or {}
|
||||
fm["_path"] = str(f)
|
||||
issues.append(fm)
|
||||
# filter + print
|
||||
```
|
||||
|
||||
**Fase 2 (cuando 0101 dev_console exista):**
|
||||
|
||||
Cada subcomando se mapea a `./apps/dev_console/dev_console issue <subcomando> $ARGS`.
|
||||
|
||||
## Subcomandos clave
|
||||
|
||||
### `list`
|
||||
|
||||
Imprime tabla `id | title | status | type | domain | priority | depends_pending`. Filtrable por flags.
|
||||
|
||||
### `show NNNN`
|
||||
|
||||
Read directo del .md + render del frontmatter como tabla + body como markdown.
|
||||
|
||||
### `status NNNN`
|
||||
|
||||
Cuenta checkboxes en `## Acceptance` + chequea si todos los `depends` estan en `status: completado`. Si alguno no, marca `bloqueado`.
|
||||
|
||||
### `board`
|
||||
|
||||
Tabla 4 columnas (pendiente / in-progress / bloqueado / completado_hoy). Card por issue: id + title + prio. Status `bloqueado` se calcula on-the-fly desde `depends`.
|
||||
|
||||
### `roadmap NNNN`
|
||||
|
||||
Si `type: epic`: lista sub-issues `NNNNa`, `NNNNb`, etc. con su estado. Si no epic: error "not an epic".
|
||||
|
||||
### `done NNNN`
|
||||
|
||||
1. Lee frontmatter.
|
||||
2. Verifica todos `depends` cerrados (sino, error).
|
||||
3. Cuenta `## Acceptance` 100% (sino, error).
|
||||
4. `git mv dev/issues/NNNN-*.md dev/issues/completed/`.
|
||||
5. Actualiza `status: completado` + `updated: today`.
|
||||
|
||||
### `create <slug> --type T --domain D`
|
||||
|
||||
Genera siguiente ID libre (max existing + 1, zero-padded 4). Scaffold desde plantilla minima con frontmatter rellenado.
|
||||
|
||||
## Reglas
|
||||
|
||||
- Domain debe estar en `dev/TAXONOMY.md` allowlist.
|
||||
- Scope/type/priority idem.
|
||||
- `id` siempre string `"NNNN"` (zero-padded, sub-IDs con sufijo `a-z`).
|
||||
- Modificar frontmatter SIEMPRE preserva campos no tocados (no overwrite).
|
||||
@@ -0,0 +1,67 @@
|
||||
---
|
||||
description: "Vista cross-cutting de issues + flows. Subcomandos: today, weekly, search, dashboard. Mezcla los dos universos en una lista priorizable."
|
||||
---
|
||||
|
||||
# /work — Vista cross-cutting issues + flows
|
||||
|
||||
Issues = trabajo de implementacion. Flows = casos de uso multi-app. `/work` los muestra juntos para responder "que hago ahora" sin saltar entre dos sitios.
|
||||
|
||||
## Sintaxis
|
||||
|
||||
```
|
||||
/work today # top items prio alta + deps satisfechas (issues + flows)
|
||||
/work weekly # review semanal: closed vs planeados
|
||||
/work search "texto" # FTS sobre issues + flows + completed
|
||||
/work dashboard # JSON consumible por tab Work (issue 0102)
|
||||
```
|
||||
|
||||
## Implementacion
|
||||
|
||||
**Fase 1 (manual via Claude):**
|
||||
|
||||
El agente lee `dev/issues/*.md` + `dev/flows/*.md`, parsea frontmatter YAML, ordena por:
|
||||
|
||||
1. `priority: alta` primero.
|
||||
2. `status: pendiente` con `depends` todos `completado` (no bloqueados).
|
||||
3. Items con DoD/Acceptance >=80% (a punto de cerrar).
|
||||
4. Fecha `updated` mas reciente.
|
||||
|
||||
Imprime tabla unificada:
|
||||
|
||||
```
|
||||
KIND | ID | TITLE | PRIO | STATUS | NEXT STEP
|
||||
issue| 0099 | datahub app launcher | alta | pendiente | revisar deps
|
||||
flow | 0001 | hn-top-stories | high | pending | cerrar DoD user-facing
|
||||
issue| 0100 | migrate issue frontmatter | alta | pendiente | ejecutar pipeline
|
||||
...
|
||||
```
|
||||
|
||||
**Fase 2 (cuando 0101 dev_console exista):**
|
||||
|
||||
`./apps/dev_console/dev_console work <subcomando> $ARGS`.
|
||||
|
||||
## Subcomandos
|
||||
|
||||
### `today`
|
||||
|
||||
Filtro: `priority in (alta, media)` + `status: pendiente` + dependencias resueltas. Max 10 items. Si hay >10, prioriza `alta` y avisa "N items pendientes en cola".
|
||||
|
||||
### `weekly`
|
||||
|
||||
Git log `--since='1 week ago'` sobre `dev/issues/completed/` y `dev/flows/completed/` -> tabla de items cerrados. Comparado con `created: <esta semana>` -> ratio in/out.
|
||||
|
||||
### `search "texto"`
|
||||
|
||||
`grep -ri` sobre `dev/issues/` + `dev/flows/` (incluido completed/), filtra por title/body. Output: `path:line: match`.
|
||||
|
||||
### `dashboard`
|
||||
|
||||
Output JSON estructurado para consumo por tab Work del `registry_dashboard` (issue 0102). Estructura:
|
||||
|
||||
```json
|
||||
{
|
||||
"issues": {"pendiente": [...], "in-progress": [...], "bloqueado": [...], "completado_24h": [...]},
|
||||
"flows": [{"id": "0001", "dod_percent": 50, "user_facing_percent": 0, "...": ...}],
|
||||
"telemetry": {"calls_24h": N, "violations_24h": N, "pending_proposals": N}
|
||||
}
|
||||
```
|
||||
@@ -35,3 +35,4 @@ Reglas operativas del proyecto. Cada archivo es una regla independiente.
|
||||
| 29 | [capability_groups.md](capability_groups.md) | Tags planos + paginas madre `docs/capabilities/<grupo>.md` para desbloquear clusters de funciones en un read. Issue 0086 |
|
||||
| 30 | [function_growth_and_self_docs.md](function_growth_and_self_docs.md) | Contrato self-doc de cada `.md` (Ejemplo + Cuando usarla + Gotchas + Growth log) + crecimiento del registry por **promocion de composiciones** a pipelines, NO por inflado de funciones. Issue 0087 |
|
||||
| 31 | [autonomous_loop.md](autonomous_loop.md) | Reglas para `fn-orquestador` + `/autonomous-task`: sandbox obligatorio, paths protegidos, filtro proposals auto-aplicables, watchdog, idempotencia. Issue 0069 |
|
||||
| 32 | [../../dev/TAXONOMY.md](../../dev/TAXONOMY.md) | Allowlist canonica para dominios/tipos/scopes/estados/prioridades + flow patterns. Aplica a `dev/issues/` y `dev/flows/`. Issues 0100 + 0103 |
|
||||
|
||||
@@ -85,3 +85,6 @@ kotlin/functions/ui/
|
||||
# Module versioning auto-generated headers (written by `fn index`, issue 0097)
|
||||
**/version_generated.h
|
||||
**/app_modules_generated.h
|
||||
|
||||
# Issue migration backups (0100)
|
||||
dev/issues/.backup_pre_*
|
||||
|
||||
@@ -3,7 +3,7 @@ name: deploy_cpp_exe_to_windows
|
||||
kind: function
|
||||
lang: bash
|
||||
domain: infra
|
||||
version: "1.0.0"
|
||||
version: "1.1.0"
|
||||
purity: impure
|
||||
signature: "deploy_cpp_exe_to_windows(app_name: string, app_dir: string) -> void"
|
||||
description: "Copia el .exe de Windows (compilado por build_cpp_windows) y sus assets al escritorio de Windows /mnt/c/Users/lucas/Desktop/apps/<APP>/. Mata el proceso si esta corriendo (taskkill.exe pre-autorizado), copia DLLs, sincroniza assets/ y enrichers/ con rsync, maneja runtime Python embebido si python_runtime: true en app.md, y copia extras gx-cli. Preserva siempre local_files/ (estado del usuario)."
|
||||
@@ -63,3 +63,8 @@ Desktop/apps/<APP>/
|
||||
- `rsync --delete` en assets/ y enrichers/ para mantener destino limpio.
|
||||
- Si `python_runtime: true` en `app.md` y `runtime/.lock` es mas antiguo que `app.md`, invoca `tools/freeze_python_runtime.sh` automaticamente.
|
||||
- `local_files/` jamas se toca: contiene estado per-PC del usuario (DBs SQLite, ImGui layouts, settings).
|
||||
|
||||
## Capability growth log
|
||||
|
||||
v1.1.0 (2026-05-17) — Bugfix: el `cp` del .exe no chequeaba exit status y la funcion reportaba OK aunque fallase por "Permission denied" (proceso aun vivo). Ahora: (1) tras `taskkill.exe`, poll de hasta 3s sobre `tasklist.exe` esperando muerte real del proceso; (2) `cp` envuelto en retry 5 veces con backoff 0.5s y re-taskkill entre intentos; (3) si los 5 intentos fallan, `return 1` (antes: silently continued).
|
||||
v1.0.0 — Initial.
|
||||
|
||||
@@ -30,12 +30,38 @@ deploy_cpp_exe_to_windows() {
|
||||
mkdir -p "$dest" "$assets"
|
||||
|
||||
# --- 3. Pre-deploy: matar proceso si esta corriendo en Windows ---
|
||||
# Windows libera el file handle async tras taskkill. Hacemos poll hasta que
|
||||
# el proceso desaparezca de tasklist o se agote el timeout.
|
||||
if command -v taskkill.exe >/dev/null 2>&1; then
|
||||
taskkill.exe /IM "${app}.exe" /F >/dev/null 2>&1 || true
|
||||
local i
|
||||
for i in 1 2 3 4 5 6 7 8 9 10; do
|
||||
if ! tasklist.exe /FI "IMAGENAME eq ${app}.exe" /NH 2>/dev/null \
|
||||
| grep -qi "^${app}.exe"; then
|
||||
break
|
||||
fi
|
||||
sleep 0.3
|
||||
done
|
||||
fi
|
||||
|
||||
# --- 4. Copiar .exe al top level ---
|
||||
cp -v "$exe_src" "$dest/"
|
||||
# --- 4. Copiar .exe al top level con retry ---
|
||||
# Windows puede tener el archivo aun bloqueado momentaneamente; reintentar.
|
||||
local cp_ok=0
|
||||
local attempt
|
||||
for attempt in 1 2 3 4 5; do
|
||||
if cp -v "$exe_src" "$dest/"; then
|
||||
cp_ok=1
|
||||
break
|
||||
fi
|
||||
echo "deploy_cpp_exe_to_windows: cp intento $attempt fallo, reintentando..." >&2
|
||||
# Reintentar taskkill por si el proceso resucito o quedo zombie.
|
||||
taskkill.exe /IM "${app}.exe" /F >/dev/null 2>&1 || true
|
||||
sleep 0.5
|
||||
done
|
||||
if [ "$cp_ok" -ne 1 ]; then
|
||||
echo "ERROR: cp del .exe fallo tras 5 intentos. $exe_src -> $dest/" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
# --- 5. DLLs al top level (Windows DLL search convention) ---
|
||||
find "$build_win/apps/$app" -maxdepth 1 -type f -name '*.dll' \
|
||||
|
||||
@@ -71,6 +71,8 @@ void about_window_render() {
|
||||
|
||||
// --- Modules consumidos por la app (issue 0097) ---
|
||||
if (fn::app_modules_count > 0) {
|
||||
ImGui::Spacing();
|
||||
ImGui::Separator();
|
||||
ImGui::Spacing();
|
||||
ImGui::Text("Modules (%lu)", fn::app_modules_count);
|
||||
if (ImGui::BeginTable("##fn_modules_table", 2,
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
#include "core/app_card.h"
|
||||
|
||||
namespace fn_ui {
|
||||
|
||||
static ImU32 with_alpha(ImU32 c, float a) {
|
||||
ImVec4 v = ImGui::ColorConvertU32ToFloat4(c);
|
||||
v.w = a;
|
||||
return ImGui::ColorConvertFloat4ToU32(v);
|
||||
}
|
||||
|
||||
bool app_card(const AppCardData& data, ImVec2 size) {
|
||||
ImGui::PushID(data.id);
|
||||
ImVec2 pos = ImGui::GetCursorScreenPos();
|
||||
ImGui::InvisibleButton("##card", size);
|
||||
bool hovered = ImGui::IsItemHovered();
|
||||
bool held = ImGui::IsItemActive();
|
||||
bool clicked = ImGui::IsItemClicked();
|
||||
|
||||
ImDrawList* dl = ImGui::GetWindowDrawList();
|
||||
ImVec2 p0 = pos;
|
||||
ImVec2 p1 = ImVec2(pos.x + size.x, pos.y + size.y);
|
||||
|
||||
ImU32 bg = with_alpha(data.accent, hovered ? 0.28f : 0.16f);
|
||||
if (held) bg = with_alpha(data.accent, 0.40f);
|
||||
ImU32 border = with_alpha(data.accent, hovered ? 0.95f : 0.55f);
|
||||
const float rounding = 8.0f;
|
||||
|
||||
dl->AddRectFilled(p0, p1, bg, rounding);
|
||||
dl->AddRect(p0, p1, border, rounding, 0, 1.5f);
|
||||
|
||||
const float stripe_w = 6.0f;
|
||||
dl->AddRectFilled(p0, ImVec2(p0.x + stripe_w, p1.y), data.accent, rounding,
|
||||
ImDrawFlags_RoundCornersLeft);
|
||||
|
||||
// Clip everything past this point so wrapped text never spills out.
|
||||
dl->PushClipRect(ImVec2(p0.x + stripe_w + 2.0f, p0.y + 2.0f),
|
||||
ImVec2(p1.x - 2.0f, p1.y - 2.0f), true);
|
||||
|
||||
const float pad_x = stripe_w + 10.0f;
|
||||
const float pad_y = 10.0f;
|
||||
|
||||
// Optional icon on the left
|
||||
float text_left = p0.x + pad_x;
|
||||
if (data.icon != (ImTextureID)0) {
|
||||
float icon_size = size.y - 2.0f * pad_y;
|
||||
if (icon_size > 64.0f) icon_size = 64.0f;
|
||||
ImVec2 icon_p0(p0.x + pad_x, p0.y + (size.y - icon_size) * 0.5f);
|
||||
ImVec2 icon_p1(icon_p0.x + icon_size, icon_p0.y + icon_size);
|
||||
dl->AddImageRounded(data.icon, icon_p0, icon_p1,
|
||||
ImVec2(0, 0), ImVec2(1, 1),
|
||||
IM_COL32_WHITE, 6.0f);
|
||||
text_left = icon_p1.x + 10.0f;
|
||||
}
|
||||
|
||||
ImVec2 title_pos = ImVec2(text_left, p0.y + pad_y);
|
||||
ImU32 title_col = IM_COL32(245, 245, 250, 255);
|
||||
if (data.title) {
|
||||
dl->AddText(title_pos, title_col, data.title);
|
||||
}
|
||||
|
||||
if (data.description && data.description[0] != '\0') {
|
||||
ImVec2 desc_pos = ImVec2(text_left,
|
||||
title_pos.y + ImGui::GetTextLineHeight() + 4.0f);
|
||||
ImU32 desc_col = IM_COL32(195, 200, 210, 230);
|
||||
float wrap_w = (p1.x - 8.0f) - text_left;
|
||||
if (wrap_w < 20.0f) wrap_w = 20.0f;
|
||||
dl->AddText(NULL, 0.0f, desc_pos, desc_col,
|
||||
data.description, NULL, wrap_w);
|
||||
}
|
||||
|
||||
dl->PopClipRect();
|
||||
ImGui::PopID();
|
||||
return clicked;
|
||||
}
|
||||
|
||||
} // namespace fn_ui
|
||||
@@ -0,0 +1,24 @@
|
||||
#pragma once
|
||||
#include <imgui.h>
|
||||
|
||||
namespace fn_ui {
|
||||
|
||||
struct AppCardData {
|
||||
const char* id; // unique ImGui ID within the parent window
|
||||
const char* title; // bold display name (single line)
|
||||
const char* description; // optional second line; may be nullptr or ""
|
||||
ImU32 accent; // accent color (IM_COL32 / hex parsed)
|
||||
ImTextureID icon; // optional icon texture (0 = no icon, layout still works)
|
||||
};
|
||||
|
||||
// Renders a card-shaped clickable area with:
|
||||
// - rounded translucent accent background
|
||||
// - solid accent stripe on the left edge
|
||||
// - title on top, wrapped description below
|
||||
// Uses InvisibleButton for hit-testing + ImDrawList for visuals so it does
|
||||
// not inherit ImGui::Button colors.
|
||||
//
|
||||
// Returns true on the frame the user clicks the card.
|
||||
bool app_card(const AppCardData& data, ImVec2 size);
|
||||
|
||||
} // namespace fn_ui
|
||||
@@ -0,0 +1,80 @@
|
||||
---
|
||||
name: app_card
|
||||
kind: component
|
||||
lang: cpp
|
||||
domain: core
|
||||
version: "1.1.0"
|
||||
purity: pure
|
||||
signature: "bool fn_ui::app_card(const fn_ui::AppCardData& data, ImVec2 size)"
|
||||
description: "Clickable card widget with accent stripe, optional left-side icon (ImTextureID), title and wrapped description. Inner ClipRect prevents description overflow when text exceeds card height. Does NOT inherit ImGui::Button colors — uses InvisibleButton + ImDrawList so visuals are fully driven by accent."
|
||||
tags: [imgui, ui, card, button, launcher, hub]
|
||||
uses_functions: []
|
||||
uses_types: []
|
||||
returns: []
|
||||
returns_optional: false
|
||||
error_type: ""
|
||||
imports: [imgui]
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
file_path: "cpp/functions/core/app_card.cpp"
|
||||
framework: imgui
|
||||
params:
|
||||
- name: data
|
||||
desc: "AppCardData {id, title, description, accent}. id must be unique within the parent window. description may be nullptr or empty."
|
||||
- name: size
|
||||
desc: "Card size in pixels (width x height). Typical: ImVec2(280, 96)."
|
||||
output: "true the frame the user clicks the card, false otherwise."
|
||||
notes: "Consumed by apps/app_hub_launcher. Pattern: caller loops over a vector of cards in a grid using SameLine + Dummy for row spacing."
|
||||
---
|
||||
|
||||
# app_card
|
||||
|
||||
Clickable card widget for app/launcher grids. Visual identity driven by an accent color (semi-transparent fill + solid stripe + accent border) so it does NOT look like a default `ImGui::Button` (no blue). Uses `InvisibleButton` for hit-testing and `ImDrawList` for the visuals — no `ImGui::Button` is involved.
|
||||
|
||||
## Ejemplo
|
||||
|
||||
```cpp
|
||||
#include "core/app_card.h"
|
||||
|
||||
fn_ui::AppCardData card;
|
||||
card.id = "graph_explorer";
|
||||
card.title = "Graph Explorer";
|
||||
card.description = "Visor de grafos GPU-accelerated";
|
||||
card.accent = IM_COL32(0x08, 0x91, 0xc2, 255); // #0891c2
|
||||
|
||||
if (fn_ui::app_card(card, ImVec2(280, 96))) {
|
||||
// launch the app
|
||||
}
|
||||
```
|
||||
|
||||
Grid layout (N cards per row):
|
||||
|
||||
```cpp
|
||||
float card_w = 280.0f, card_h = 96.0f, spacing = 12.0f;
|
||||
int cols = std::max(1, (int)((ImGui::GetContentRegionAvail().x + spacing) / (card_w + spacing)));
|
||||
int shown = 0;
|
||||
for (auto& app : apps) {
|
||||
if (shown % cols != 0) ImGui::SameLine(0.0f, spacing);
|
||||
fn_ui::AppCardData c{app.id.c_str(), app.title.c_str(), app.desc.c_str(), app.accent};
|
||||
if (fn_ui::app_card(c, ImVec2(card_w, card_h))) launch(app);
|
||||
++shown;
|
||||
if (shown % cols == 0) ImGui::Dummy(ImVec2(0.0f, spacing - 4.0f));
|
||||
}
|
||||
```
|
||||
|
||||
## Cuando usarla
|
||||
|
||||
Cuando necesites un grid/lista de "cards" clicables (launchers, dashboards de modulos, selectores de proyecto) y quieras que la identidad visual venga de un accent color por card en vez de los azules por defecto de `ImGui::Button`. Si solo quieres un boton simple con texto, usa `ImGui::Button` normal.
|
||||
|
||||
## Gotchas
|
||||
|
||||
- `data.id` debe ser unico dentro del padre — colision = un solo card recibe el click.
|
||||
- La descripcion se renderiza con wrap automatico; si `size.y` es muy pequeno el texto se sale por debajo (no clipea). Ajusta `size.y` a 90-110 px para 2-3 lineas de wrap.
|
||||
- Pinta sobre `ImGui::GetWindowDrawList()` — debe llamarse dentro de una ventana ImGui activa.
|
||||
- El color `data.accent` debe llevar alpha 255; las transparencias para fondo/border/hover las calcula el componente internamente.
|
||||
|
||||
## Capability growth log
|
||||
|
||||
v1.1.0 (2026-05-17) — Optional `icon` (ImTextureID) param renders left-side thumbnail; PushClipRect contains description overflow.
|
||||
v1.0.0 (2026-05-17) — Initial. Extracted from inline rendering in `apps/app_hub_launcher/main.cpp`.
|
||||
@@ -0,0 +1,96 @@
|
||||
# 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.
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0027"
|
||||
title: "C++ gl_compute_shader + gl_pingpong_fbo + DAG node Compute"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- cpp-stack
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0027 — C++ gl_compute_shader + gl_pingpong_fbo + DAG node Compute
|
||||
|
||||
## APP Metadata
|
||||
|
||||
@@ -1,3 +1,20 @@
|
||||
---
|
||||
id: "0030"
|
||||
title: "C++ audio reactivo (capture + FFT + uniform feed + viz)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- cpp-stack
|
||||
- frontend
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0030 — C++ audio reactivo (capture + FFT + uniform feed + viz)
|
||||
|
||||
## APP Metadata
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0033"
|
||||
title: "C++ http_inspector + websocket_client"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- cpp-stack
|
||||
scope: multi-app
|
||||
priority: baja
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0033 — C++ http_inspector + websocket_client
|
||||
|
||||
## APP Metadata
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0035"
|
||||
title: "C++ map_tiles (slippy map OSM)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- cpp-stack
|
||||
scope: multi-app
|
||||
priority: baja
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0035 — C++ map_tiles (slippy map OSM)
|
||||
|
||||
## APP Metadata
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0036"
|
||||
title: "C++ image_canvas + webcam_texture"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- cpp-stack
|
||||
scope: multi-app
|
||||
priority: baja
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0036 — C++ image_canvas + webcam_texture
|
||||
|
||||
## APP Metadata
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
---
|
||||
id: "0051"
|
||||
title: "Funciones pendientes del pipeline de extraccion (NER+RE+OpenIE)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain: []
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0051 — Funciones pendientes del pipeline de extraccion (NER+RE+OpenIE)
|
||||
|
||||
## APP Metadata
|
||||
|
||||
@@ -1,3 +1,20 @@
|
||||
---
|
||||
id: "0054"
|
||||
title: "deploy_server: refactor registry-first (SSH/systemd/rsync/health/docker-compose)"
|
||||
status: pendiente
|
||||
type: refactor
|
||||
domain:
|
||||
- registry-quality
|
||||
- deploy
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0054 — deploy_server: refactor registry-first (SSH/systemd/rsync/health/docker-compose)
|
||||
|
||||
## APP Metadata
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0055"
|
||||
title: "docker_tui: refactor para usar funciones docker_* del registry"
|
||||
status: pendiente
|
||||
type: refactor
|
||||
domain:
|
||||
- registry-quality
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0055 — docker_tui: refactor para usar funciones docker_* del registry
|
||||
|
||||
## APP Metadata
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0056"
|
||||
title: "audit_uses_functions: detectar imports Python anidados (`from pkg.subpkg import X`)"
|
||||
status: pendiente
|
||||
type: chore
|
||||
domain:
|
||||
- registry-quality
|
||||
scope: registry-only
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0056 — audit_uses_functions: detectar imports Python anidados (`from pkg.subpkg import X`)
|
||||
|
||||
## APP Metadata
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0057"
|
||||
title: "audit_uses_functions: mejorar deteccion de simbolos Go con abreviaturas"
|
||||
status: pendiente
|
||||
type: chore
|
||||
domain:
|
||||
- registry-quality
|
||||
scope: registry-only
|
||||
priority: baja
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0057 — audit_uses_functions: mejorar deteccion de simbolos Go con abreviaturas
|
||||
|
||||
## APP Metadata
|
||||
|
||||
@@ -1,3 +1,20 @@
|
||||
---
|
||||
id: "0058"
|
||||
title: "kanban: sync uses_functions cuando termine WIP en curso"
|
||||
status: pendiente
|
||||
type: docs
|
||||
domain:
|
||||
- kanban
|
||||
- registry-quality
|
||||
scope: multi-app
|
||||
priority: baja
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0058 — kanban: sync uses_functions cuando termine WIP en curso
|
||||
|
||||
## APP Metadata
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0059"
|
||||
title: "Resolver doble tracking de `apps/*/app.md` (fn_registry + sub-repo)"
|
||||
status: pendiente
|
||||
type: infra
|
||||
domain:
|
||||
- registry-quality
|
||||
scope: app-scoped
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0059 — Resolver doble tracking de `apps/*/app.md` (fn_registry + sub-repo)
|
||||
|
||||
## APP Metadata
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
---
|
||||
id: "0060"
|
||||
title: "`fn doctor secrets`: scan de secrets en TODOS los repos"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain: []
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0060 — `fn doctor secrets`: scan de secrets en TODOS los repos
|
||||
|
||||
## APP Metadata
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0061"
|
||||
title: "Integrar `notify_telegram` en deploy_server + bucle reactivo"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- notify
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0061 — Integrar `notify_telegram` en deploy_server + bucle reactivo
|
||||
|
||||
## APP Metadata
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0063"
|
||||
title: "kanban: sistema de stickers (emojis) sobre cards"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- kanban
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0063 — kanban: sistema de stickers (emojis) sobre cards
|
||||
|
||||
## APP Metadata
|
||||
|
||||
@@ -1,11 +1,22 @@
|
||||
---
|
||||
id: 0065
|
||||
title: Extraer jobs system de graph_explorer al registry (jobs_pool + cache + subprocess worker)
|
||||
status: pending
|
||||
priority: high
|
||||
id: "53"
|
||||
title: "Extraer jobs system de graph_explorer al registry (jobs_pool + cache + subprocess worker)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- registry-quality
|
||||
scope: registry-only
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks:
|
||||
- "54"
|
||||
related:
|
||||
- "22"
|
||||
- "23"
|
||||
- "0028"
|
||||
created: 2026-05-09
|
||||
blocks: [0066]
|
||||
related: [0026, 0027, 0028]
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Contexto
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
---
|
||||
id: 0066
|
||||
title: online_data_recopilation — odr_console MVP (lanzador GUI + 5-pasos + 1 collector)
|
||||
status: pending
|
||||
priority: high
|
||||
id: "54"
|
||||
title: "online_data_recopilation — odr_console MVP (lanzador GUI + 5-pasos + 1 collector)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain: []
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-09
|
||||
blocked_by: [0065]
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,26 +1,20 @@
|
||||
---
|
||||
id: 0067
|
||||
title: Roadmap de prereqs — issues de osint_graph que odr_console necesita antes/durante MVP
|
||||
status: pending
|
||||
priority: high
|
||||
id: "55"
|
||||
title: "Roadmap de prereqs — issues de osint_graph que odr_console necesita antes/durante MVP"
|
||||
status: pendiente
|
||||
type: epic
|
||||
domain:
|
||||
- osint
|
||||
scope: cross-stack
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related:
|
||||
- "53"
|
||||
- "54"
|
||||
created: 2026-05-09
|
||||
related: [0065, 0066]
|
||||
references: [
|
||||
"projects/osint_graph/apps/graph_explorer/issues/0033-multilang-dispatcher-embedded-python.md",
|
||||
"projects/osint_graph/apps/graph_explorer/issues/0033c-fn-check-vendored.md",
|
||||
"projects/osint_graph/apps/graph_explorer/issues/0033d-indexer-python-runtime-fields.md",
|
||||
"projects/osint_graph/apps/graph_explorer/issues/0033e-compile-skill-orchestration.md",
|
||||
"projects/osint_graph/apps/graph_explorer/issues/0038-browser-launch-cdp-control.md",
|
||||
"projects/osint_graph/apps/graph_explorer/issues/0039-cookie-session-manager.md",
|
||||
"projects/osint_graph/apps/graph_explorer/issues/0040-multi-profile-management.md",
|
||||
"projects/osint_graph/apps/graph_explorer/issues/0029-enrichers-cdp.md",
|
||||
"projects/osint_graph/apps/graph_explorer/issues/0030-deep-enrich-macro.md",
|
||||
"projects/osint_graph/apps/graph_explorer/issues/0021-command-palette.md",
|
||||
"projects/osint_graph/apps/graph_explorer/issues/0034-port-system-enrichers-to-go.md",
|
||||
"projects/osint_graph/apps/graph_explorer/issues/0014-browser-extension.md",
|
||||
"projects/osint_graph/apps/graph_explorer/issues/0012-http-ingest-endpoint.md",
|
||||
"projects/osint_graph/apps/graph_explorer/issues/0017-gx-cli.md"
|
||||
]
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
---
|
||||
id: 0068
|
||||
title: Cerrar bucle reactivo — fn-analizador (fase 4) y fn-mejorador (fase 5) con contrato e2e_checks
|
||||
status: done
|
||||
closed: 2026-05-14
|
||||
priority: high
|
||||
id: "0068"
|
||||
title: "Cerrar bucle reactivo — fn-analizador (fase 4) y fn-mejorador (fase 5) con contrato e2e_checks"
|
||||
status: completado
|
||||
type: feature
|
||||
domain:
|
||||
- meta
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related:
|
||||
- "22"
|
||||
- "23"
|
||||
- "0028"
|
||||
created: 2026-05-09
|
||||
related: [0026, 0027, 0028]
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Cierre 2026-05-14
|
||||
|
||||
@@ -1,12 +1,23 @@
|
||||
---
|
||||
id: 0069
|
||||
title: Bucle autonomo de subagentes — completar y mejorar tareas sin intervencion humana
|
||||
status: done
|
||||
closed: 2026-05-15
|
||||
priority: medium
|
||||
id: "0069"
|
||||
title: "Bucle autonomo de subagentes — completar y mejorar tareas sin intervencion humana"
|
||||
status: completado
|
||||
type: feature
|
||||
domain:
|
||||
- meta
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends:
|
||||
- "0068"
|
||||
blocks: []
|
||||
related:
|
||||
- "22"
|
||||
- "23"
|
||||
- "0028"
|
||||
- "0085"
|
||||
created: 2026-05-09
|
||||
depends_on: [0068]
|
||||
related: [0026, 0027, 0028, 0085]
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Cierre 2026-05-15
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
---
|
||||
id: 0070
|
||||
title: Funciones globales del registry para control de navegador (find by text, click by text, scroll, HAR, jsonld, opengraph, ...)
|
||||
status: pending
|
||||
priority: medium
|
||||
id: "56"
|
||||
title: "Funciones globales del registry para control de navegador (find by text, click by text, scroll, HAR, jsonld, opengraph, ...)"
|
||||
status: pendiente
|
||||
type: epic
|
||||
domain:
|
||||
- browser
|
||||
scope: cross-stack
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-09
|
||||
related_apps: [navegator_dashboard, graph_explorer]
|
||||
related_issues_app: [navegator/0001, graph_explorer/0038]
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Contexto
|
||||
|
||||
@@ -1,11 +1,19 @@
|
||||
---
|
||||
id: 0071
|
||||
title: Extraer paneles ImGui reutilizables de las apps C++ a cpp/functions/ — roadmap
|
||||
status: pending
|
||||
priority: medium
|
||||
id: "57"
|
||||
title: "Extraer paneles ImGui reutilizables de las apps C++ a cpp/functions/ — roadmap"
|
||||
status: pendiente
|
||||
type: epic
|
||||
domain:
|
||||
- cpp-stack
|
||||
- registry-quality
|
||||
scope: cross-stack
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-09
|
||||
related_apps: [graph_explorer, registry_dashboard, odr_console, navegator_dashboard]
|
||||
related_issues_app: [navegator/0001]
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Contexto
|
||||
|
||||
@@ -1,12 +1,19 @@
|
||||
---
|
||||
id: 0071a
|
||||
title: Extraer `claude_chat_panel` a cpp/functions/core/ (sub-issue de 0071)
|
||||
status: pending
|
||||
id: "0071a"
|
||||
title: "Extraer `claude_chat_panel` a cpp/functions/core/ (sub-issue de 0071)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- registry-quality
|
||||
scope: registry-only
|
||||
priority: alta
|
||||
depends:
|
||||
- "0071f"
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
parent: 0071
|
||||
related_apps: [graph_explorer, navegator_dashboard]
|
||||
depends_on: [0071f]
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Contexto
|
||||
|
||||
@@ -1,13 +1,19 @@
|
||||
---
|
||||
id: 0071b
|
||||
title: Extraer `jobs_queue_panel` a cpp/functions/core/ (sub-issue de 0071)
|
||||
status: pending
|
||||
id: "0071b"
|
||||
title: "Extraer `jobs_queue_panel` a cpp/functions/core/ (sub-issue de 0071)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- registry-quality
|
||||
scope: registry-only
|
||||
priority: media
|
||||
depends:
|
||||
- "0071f"
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
parent: 0071
|
||||
related_apps: [graph_explorer, odr_console, navegator_dashboard]
|
||||
related_issues: [0065]
|
||||
depends_on: [0071f]
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Contexto
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
---
|
||||
id: 0071f
|
||||
title: Extraer `subprocess_streamer` a cpp/functions/core/ (sub-issue de 0071)
|
||||
status: pending
|
||||
id: "0071f"
|
||||
title: "Extraer `subprocess_streamer` a cpp/functions/core/ (sub-issue de 0071)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- registry-quality
|
||||
scope: registry-only
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
parent: 0071
|
||||
related_apps: [graph_explorer]
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Contexto
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
---
|
||||
id: 0071g
|
||||
title: Extraer `app_db_init` a cpp/functions/core/ (sub-issue de 0071, Tier 4)
|
||||
status: pending
|
||||
id: "0071g"
|
||||
title: "Extraer `app_db_init` a cpp/functions/core/ (sub-issue de 0071, Tier 4)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- registry-quality
|
||||
scope: registry-only
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
parent: 0071
|
||||
related_apps: [graph_explorer, navegator_dashboard, kanban, deploy_server, registry_dashboard]
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Contexto
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
---
|
||||
id: 0072
|
||||
title: Stack gamedev ligero multi-plataforma + crypto (roadmap)
|
||||
status: pending
|
||||
priority: medium
|
||||
id: "58"
|
||||
title: "Stack gamedev ligero multi-plataforma + crypto (roadmap)"
|
||||
status: pendiente
|
||||
type: epic
|
||||
domain:
|
||||
- gamedev
|
||||
scope: cross-stack
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
tags: [gamedev, roadmap]
|
||||
related_issues: [0072a, 0072b, 0072c, 0072d, 0072e, 0072f, 0072g, 0072h, 0072i, 0072j, 0072k, 0072l]
|
||||
updated: 2026-05-17
|
||||
tags:
|
||||
- gamedev
|
||||
- roadmap
|
||||
---
|
||||
|
||||
## Contexto
|
||||
|
||||
@@ -1,12 +1,22 @@
|
||||
---
|
||||
id: 0072a
|
||||
title: gamedev — smoke SDL3 + sokol_gfx + ImGui (PC + WASM)
|
||||
status: pending
|
||||
priority: high
|
||||
id: "0072a"
|
||||
title: "gamedev — smoke SDL3 + sokol_gfx + ImGui (PC + WASM)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- cpp-stack
|
||||
- gamedev
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
tags: [gamedev, cpp, wasm]
|
||||
parent_issue: 0072
|
||||
related_apps: [engine_smoke]
|
||||
updated: 2026-05-17
|
||||
tags:
|
||||
- gamedev
|
||||
- cpp
|
||||
- wasm
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,12 +1,21 @@
|
||||
---
|
||||
id: 0072b
|
||||
title: gamedev — runtime nucleo (sprite batcher, audio, input, game loop)
|
||||
status: pending
|
||||
priority: high
|
||||
id: "0072b"
|
||||
title: "gamedev — runtime nucleo (sprite batcher, audio, input, game loop)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- gamedev
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends:
|
||||
- "0072a"
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
tags: [gamedev, cpp]
|
||||
parent_issue: 0072
|
||||
depends_on: [0072a]
|
||||
updated: 2026-05-17
|
||||
tags:
|
||||
- gamedev
|
||||
- cpp
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,12 +1,22 @@
|
||||
---
|
||||
id: 0072c
|
||||
title: gamedev — asset pipeline (atlas packer, MSDF fonts, tilemap, shader translate)
|
||||
status: pending
|
||||
priority: high
|
||||
id: "0072c"
|
||||
title: "gamedev — asset pipeline (atlas packer, MSDF fonts, tilemap, shader translate)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- gamedev
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends:
|
||||
- "0072b"
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
tags: [gamedev, cpp, assets]
|
||||
parent_issue: 0072
|
||||
depends_on: [0072b]
|
||||
updated: 2026-05-17
|
||||
tags:
|
||||
- gamedev
|
||||
- cpp
|
||||
- assets
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,12 +1,23 @@
|
||||
---
|
||||
id: 0072d
|
||||
title: gamedev — WASM build pipeline + size budget
|
||||
status: pending
|
||||
priority: high
|
||||
id: "0072d"
|
||||
title: "gamedev — WASM build pipeline + size budget"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- gamedev
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends:
|
||||
- "0072a"
|
||||
- "0072b"
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
tags: [gamedev, wasm, infra]
|
||||
parent_issue: 0072
|
||||
depends_on: [0072a, 0072b]
|
||||
updated: 2026-05-17
|
||||
tags:
|
||||
- gamedev
|
||||
- wasm
|
||||
- infra
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,12 +1,24 @@
|
||||
---
|
||||
id: 0072e
|
||||
title: gamedev — bridge crypto Web3 (wallets, sign tx) via JS interop en WASM
|
||||
status: pending
|
||||
priority: high
|
||||
id: "0072e"
|
||||
title: "gamedev — bridge crypto Web3 (wallets, sign tx) via JS interop en WASM"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- gamedev
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends:
|
||||
- "0072a"
|
||||
- "0072d"
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
tags: [gamedev, wasm, crypto, web3]
|
||||
parent_issue: 0072
|
||||
depends_on: [0072a, 0072d]
|
||||
updated: 2026-05-17
|
||||
tags:
|
||||
- gamedev
|
||||
- wasm
|
||||
- crypto
|
||||
- web3
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,12 +1,23 @@
|
||||
---
|
||||
id: 0072f
|
||||
title: gamedev — crypto on-chain (NFT assets, payments, leaderboards firmadas)
|
||||
status: pending
|
||||
priority: medium
|
||||
id: "0072f"
|
||||
title: "gamedev — crypto on-chain (NFT assets, payments, leaderboards firmadas)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- gamedev
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends:
|
||||
- "0072e"
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
tags: [gamedev, crypto, web3, nft]
|
||||
parent_issue: 0072
|
||||
depends_on: [0072e]
|
||||
updated: 2026-05-17
|
||||
tags:
|
||||
- gamedev
|
||||
- crypto
|
||||
- web3
|
||||
- nft
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,12 +1,23 @@
|
||||
---
|
||||
id: 0072g
|
||||
title: gamedev — Android build (NDK + touch input + virtual gamepad + WalletConnect)
|
||||
status: pending
|
||||
priority: medium
|
||||
id: "0072g"
|
||||
title: "gamedev — Android build (NDK + touch input + virtual gamepad + WalletConnect)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- gamedev
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends:
|
||||
- "0072b"
|
||||
- "0072c"
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
tags: [gamedev, android, mobile]
|
||||
parent_issue: 0072
|
||||
depends_on: [0072b, 0072c]
|
||||
updated: 2026-05-17
|
||||
tags:
|
||||
- gamedev
|
||||
- android
|
||||
- mobile
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,12 +1,23 @@
|
||||
---
|
||||
id: 0072h
|
||||
title: gamedev — iOS build (Xcode + Metal via sokol + safe area + WalletConnect)
|
||||
status: pending
|
||||
priority: medium
|
||||
id: "0072h"
|
||||
title: "gamedev — iOS build (Xcode + Metal via sokol + safe area + WalletConnect)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- gamedev
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends:
|
||||
- "0072b"
|
||||
- "0072c"
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
tags: [gamedev, ios, mobile]
|
||||
parent_issue: 0072
|
||||
depends_on: [0072b, 0072c]
|
||||
updated: 2026-05-17
|
||||
tags:
|
||||
- gamedev
|
||||
- ios
|
||||
- mobile
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,12 +1,24 @@
|
||||
---
|
||||
id: 0072i
|
||||
title: gamedev — editor visual `game_editor` (scene tree, asset browser, inspector)
|
||||
status: pending
|
||||
priority: medium
|
||||
id: "0072i"
|
||||
title: "gamedev — editor visual `game_editor` (scene tree, asset browser, inspector)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- gamedev
|
||||
scope: app-scoped
|
||||
priority: media
|
||||
depends:
|
||||
- "0072b"
|
||||
- "0072c"
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
tags: [gamedev, cpp, editor, tooling]
|
||||
parent_issue: 0072
|
||||
depends_on: [0072b, 0072c]
|
||||
updated: 2026-05-17
|
||||
tags:
|
||||
- gamedev
|
||||
- cpp
|
||||
- editor
|
||||
- tooling
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,12 +1,22 @@
|
||||
---
|
||||
id: 0072j
|
||||
title: gamedev — physics 2D (Box2D integration + funciones registry)
|
||||
status: pending
|
||||
priority: medium
|
||||
id: "0072j"
|
||||
title: "gamedev — physics 2D (Box2D integration + funciones registry)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- gamedev
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends:
|
||||
- "0072b"
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
tags: [gamedev, cpp, physics]
|
||||
parent_issue: 0072
|
||||
depends_on: [0072b]
|
||||
updated: 2026-05-17
|
||||
tags:
|
||||
- gamedev
|
||||
- cpp
|
||||
- physics
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,13 +1,25 @@
|
||||
---
|
||||
id: 0072k
|
||||
title: gamedev — demo plataformero `engine_demo` (referencia stack completo)
|
||||
status: pending
|
||||
priority: high
|
||||
id: "0072k"
|
||||
title: "gamedev — demo plataformero `engine_demo` (referencia stack completo)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- gamedev
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends:
|
||||
- "0072b"
|
||||
- "0072c"
|
||||
- "0072d"
|
||||
- "0072j"
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
tags: [gamedev, cpp, demo]
|
||||
parent_issue: 0072
|
||||
depends_on: [0072b, 0072c, 0072d, 0072j]
|
||||
related_issues: [0072e, 0072f, 0072g, 0072h]
|
||||
updated: 2026-05-17
|
||||
tags:
|
||||
- gamedev
|
||||
- cpp
|
||||
- demo
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,12 +1,22 @@
|
||||
---
|
||||
id: 0072l
|
||||
title: gamedev — scripting opcional (wren / lua / hot reload C++ dylib)
|
||||
id: "0072l"
|
||||
title: "gamedev — scripting opcional (wren / lua / hot reload C++ dylib)"
|
||||
status: deferred
|
||||
priority: low
|
||||
type: feature
|
||||
domain:
|
||||
- gamedev
|
||||
scope: multi-app
|
||||
priority: baja
|
||||
depends:
|
||||
- "0072k"
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
tags: [gamedev, cpp, scripting]
|
||||
parent_issue: 0072
|
||||
depends_on: [0072k]
|
||||
updated: 2026-05-17
|
||||
tags:
|
||||
- gamedev
|
||||
- cpp
|
||||
- scripting
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
---
|
||||
id: 0076
|
||||
title: gradle_run no detecta SDK en $HOME/android-sdk (donde lo deja install_android_sdk)
|
||||
status: pending
|
||||
priority: medium
|
||||
id: "62"
|
||||
title: "gradle_run no detecta SDK en $HOME/android-sdk (donde lo deja install_android_sdk)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- dev-ux
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
related_functions: [gradle_run_bash_infra, install_android_sdk_bash_infra]
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Sintoma
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
---
|
||||
id: 0077
|
||||
title: fn run <bash_function> no propaga stdout/stderr al usuario
|
||||
status: pending
|
||||
priority: medium
|
||||
id: "63"
|
||||
title: "fn run <bash_function> no propaga stdout/stderr al usuario"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- dev-ux
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-10
|
||||
related_components: [cmd/fn, fn run dispatcher]
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Sintoma
|
||||
|
||||
@@ -1,11 +1,19 @@
|
||||
---
|
||||
id: 0082
|
||||
title: Compilar binario `sd` (stable-diffusion.cpp) para sdcli_generate_go_ml
|
||||
id: "0082"
|
||||
title: "Compilar binario `sd` (stable-diffusion.cpp) para sdcli_generate_go_ml"
|
||||
status: pendiente
|
||||
priority: media
|
||||
created: 2026-05-13
|
||||
type: feature
|
||||
related_components: [functions/ml/sdcli_generate.go, functions/ml/sdcli_resolve_binary.go, projects/imagegen]
|
||||
domain:
|
||||
- cpp-stack
|
||||
- imagegen
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-13
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
---
|
||||
id: 0083
|
||||
title: imagegen — notebook 02 validacion cruzada diffusers vs sdcpp_python
|
||||
id: "0083"
|
||||
title: "imagegen — notebook 02 validacion cruzada diffusers vs sdcpp_python"
|
||||
status: pendiente
|
||||
priority: alta
|
||||
created: 2026-05-13
|
||||
type: feature
|
||||
related_components: [projects/imagegen/analysis/spike_diffusers_vs_sdcpp]
|
||||
domain:
|
||||
- imagegen
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-13
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
---
|
||||
id: 0084
|
||||
title: imagegen_studio — app Go binario producto (Fase 3 plan stack)
|
||||
id: "0084"
|
||||
title: "imagegen_studio — app Go binario producto (Fase 3 plan stack)"
|
||||
status: pendiente
|
||||
priority: media
|
||||
created: 2026-05-13
|
||||
type: feature
|
||||
related_components: [functions/ml/sdcli_*.go, functions/ml/generation_config_go_ml, projects/imagegen]
|
||||
domain:
|
||||
- imagegen
|
||||
scope: app-scoped
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-13
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
---
|
||||
id: 0085
|
||||
title: Estandarizar llamadas a funciones del registry desde Claude + app de monitorizacion de uso
|
||||
status: done
|
||||
closed: 2026-05-15
|
||||
priority: high
|
||||
id: "0085"
|
||||
title: "Estandarizar llamadas a funciones del registry desde Claude + app de monitorizacion de uso"
|
||||
status: completado
|
||||
type: feature
|
||||
domain:
|
||||
- meta
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related:
|
||||
- "0068"
|
||||
- "0069"
|
||||
created: 2026-05-13
|
||||
related: [0068, 0069]
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Cierre 2026-05-15
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
---
|
||||
id: 0086
|
||||
title: Refactor incremental de CLAUDE.md — delegacion agresiva a fn-constructor + capability groups por tags
|
||||
status: done
|
||||
closed: 2026-05-14
|
||||
priority: high
|
||||
id: "0086"
|
||||
title: "Refactor incremental de CLAUDE.md — delegacion agresiva a fn-constructor + capability groups por tags"
|
||||
status: completado
|
||||
type: feature
|
||||
domain:
|
||||
- meta
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related:
|
||||
- "0069"
|
||||
- "0085"
|
||||
created: 2026-05-13
|
||||
related: [0069, 0085]
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Cierre 2026-05-14
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0087"
|
||||
title: "Capability Discovery Acceleration"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- meta
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0087 — Capability Discovery Acceleration
|
||||
|
||||
**Status:** done
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
---
|
||||
id: "0088"
|
||||
title: "kanban: requester input vacío + navegación con teclado"
|
||||
status: open
|
||||
created_at: 2026-05-14
|
||||
priority: medium
|
||||
app: kanban
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- kanban
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Problema
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0088"
|
||||
title: "Trading & Skill Management Roadmap"
|
||||
status: pendiente
|
||||
type: epic
|
||||
domain:
|
||||
- trading
|
||||
scope: cross-stack
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0088 — Trading & Skill Management Roadmap
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0088a"
|
||||
title: "Trading: project scaffolding"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- trading
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0088a — Trading: project scaffolding
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,20 @@
|
||||
---
|
||||
id: "0088b"
|
||||
title: "Trading: capability group `market_data`"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- trading
|
||||
- meta
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0088b — Trading: capability group `market_data`
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0088c"
|
||||
title: "Trading: broker interface + adapter paper"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- trading
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0088c — Trading: broker interface + adapter paper
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0088d"
|
||||
title: "Trading: app `portfolio_tracker` (ledger INSERT-only)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- trading
|
||||
scope: app-scoped
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0088d — Trading: app `portfolio_tracker` (ledger INSERT-only)
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,20 @@
|
||||
---
|
||||
id: "0088e"
|
||||
title: "Trading: capability group `strategy` + Strategy contract"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- trading
|
||||
- meta
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0088e — Trading: capability group `strategy` + Strategy contract
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,20 @@
|
||||
---
|
||||
id: "0088f"
|
||||
title: "Trading: capability group `risk` + kill_switch"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- trading
|
||||
- meta
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0088f — Trading: capability group `risk` + kill_switch
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0088g"
|
||||
title: "Trading: app `backtester`"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- trading
|
||||
scope: app-scoped
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0088g — Trading: app `backtester`
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0088h"
|
||||
title: "Trading: app `live_runner` (service, paper-first, broker real behind flag)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- trading
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0088h — Trading: app `live_runner` (service, paper-first, broker real behind flag)
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0088i"
|
||||
title: "Trading: app `trading_journal` (reflection log)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- trading
|
||||
scope: app-scoped
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0088i — Trading: app `trading_journal` (reflection log)
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,20 @@
|
||||
---
|
||||
id: "0088j"
|
||||
title: "Trading: wiring del bucle reactivo (assertions + proposals)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- trading
|
||||
- frontend
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0088j — Trading: wiring del bucle reactivo (assertions + proposals)
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
---
|
||||
id: "0089"
|
||||
title: "kanban: tiempo maximo por columna con borde rojo"
|
||||
status: open
|
||||
created_at: 2026-05-14
|
||||
priority: medium
|
||||
app: kanban
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- kanban
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Problema
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
---
|
||||
id: "0090"
|
||||
title: "kanban: Seleccionar Aleatorio en columna con animacion de ruleta"
|
||||
status: open
|
||||
created_at: 2026-05-14
|
||||
priority: medium
|
||||
app: kanban
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- kanban
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Problema
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
---
|
||||
id: "0091"
|
||||
title: "kanban: drag-aware dropzones para abrir/cerrar sidebar"
|
||||
status: open
|
||||
created_at: 2026-05-14
|
||||
priority: medium
|
||||
app: kanban
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- kanban
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Problema
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
---
|
||||
id: "0092"
|
||||
title: "kanban: archivo automatico para cards en columnas Done con +30 dias"
|
||||
status: open
|
||||
created_at: 2026-05-14
|
||||
priority: medium
|
||||
app: kanban
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- kanban
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Problema
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
---
|
||||
id: "0093"
|
||||
title: "kanban: reporte diario al pulsar numero del dia en el calendario"
|
||||
status: open
|
||||
created_at: 2026-05-14
|
||||
priority: medium
|
||||
app: kanban
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- kanban
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Problema
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
---
|
||||
id: "0094"
|
||||
title: "kanban: bocadillo del agente + PDF descargable en reporte diario"
|
||||
status: open
|
||||
created_at: 2026-05-14
|
||||
priority: medium
|
||||
app: kanban
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- kanban
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
|
||||
## Problema
|
||||
|
||||
@@ -1,3 +1,20 @@
|
||||
---
|
||||
id: "0095"
|
||||
title: "Frontend C++ ImGui para `dag_engine`"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- cpp-stack
|
||||
- frontend
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0095 — Frontend C++ ImGui para `dag_engine`
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0096"
|
||||
title: "Estandarizar ubicacion de apps: fuera de carpetas por lenguaje"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- apps-infra
|
||||
scope: app-scoped
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0096 — Estandarizar ubicacion de apps: fuera de carpetas por lenguaje
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0097"
|
||||
title: "data_factory app (Factorio-style data pipeline)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- data-ingest
|
||||
scope: app-scoped
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0097 — data_factory app (Factorio-style data pipeline)
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0098"
|
||||
title: "Navegator extractions enhancement (Pick + Network rows + AutoExtract + data_factory bridge)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- data-ingest
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0098 — Navegator extractions enhancement (Pick + Network rows + AutoExtract + data_factory bridge)
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0099"
|
||||
title: "datahub app (launcher central para todas las apps)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- apps-infra
|
||||
scope: app-scoped
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0099 — datahub app (launcher central para todas las apps)
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0100"
|
||||
title: "Migrar frontmatter inline a YAML canonico en dev/issues/"
|
||||
status: pendiente
|
||||
type: chore
|
||||
domain:
|
||||
- registry-quality
|
||||
scope: registry-only
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0100 — Migrar frontmatter inline a YAML canonico en dev/issues/
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0101"
|
||||
title: "dev_console Go binario: /issue /flow /work unificados"
|
||||
status: pendiente
|
||||
type: app
|
||||
domain:
|
||||
- meta
|
||||
scope: registry-only
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0101 — dev_console Go binario: /issue /flow /work unificados
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0102"
|
||||
title: "Tab Work en registry_dashboard (issues + flows + telemetria)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- meta
|
||||
scope: app-scoped
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0102 — Tab Work en registry_dashboard (issues + flows + telemetria)
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
---
|
||||
id: "0103"
|
||||
title: "Taxonomia + slash commands /issue /flow /work"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- meta
|
||||
scope: registry-only
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0103 — Taxonomia + slash commands /issue /flow /work
|
||||
|
||||
**Status:** pendiente
|
||||
|
||||
@@ -0,0 +1,168 @@
|
||||
---
|
||||
id: "0104"
|
||||
title: "/fix-issue type-aware dispatch (chore vs feature vs bugfix vs epic)"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- meta
|
||||
- dev-ux
|
||||
scope: registry-only
|
||||
priority: alta
|
||||
depends:
|
||||
- "0100"
|
||||
blocks: []
|
||||
related:
|
||||
- "0101"
|
||||
- "0103"
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: [slash-command, dispatch, type-aware]
|
||||
---
|
||||
|
||||
# 0104 — `/fix-issue` type-aware dispatch
|
||||
|
||||
## Problema
|
||||
|
||||
Hoy `/fix-issue NNNN` arranca con el mismo flujo para CUALQUIER tipo de issue. Pero un `chore` (limpieza, migracion idempotente) no requiere el mismo ceremonial que un `feature` (TBD rama + acceptance + DoD), ni que un `bugfix` (reproduce + test que falla + fix + test verde), ni que un `epic` (planificacion de sub-issues, no codigo directo).
|
||||
|
||||
Resultado:
|
||||
- `chore` se ejecuta con TBD branch innecesaria, ralentiza.
|
||||
- `bugfix` se cierra sin test de regresion porque el flujo no lo exige.
|
||||
- `epic` arranca con `/git-branch` aunque no toca codigo aun (deberia abrir sub-issues primero).
|
||||
- `spike` se trata como feature, sin timebox.
|
||||
- `docs` requiere ramas TBD que sobran (push directo a master segun apps_tbd.md para registry).
|
||||
|
||||
## Objetivo
|
||||
|
||||
`/fix-issue NNNN` lee el `type:` del frontmatter (issue 0100) y aplica el playbook correspondiente. Sin type valido -> error "type missing, run `/issue tag NNNN +type:<X>` first".
|
||||
|
||||
## Dispatch por type
|
||||
|
||||
### `bugfix`
|
||||
|
||||
1. `/git-branch issue/NNNN-<slug>`.
|
||||
2. **Reproducir el bug**: pedir al usuario pasos exactos + snippet. Si no se reproduce -> abort.
|
||||
3. **Escribir test que falla** ANTES del fix. Commit `test: reproduce <bug>`.
|
||||
4. Implementar fix.
|
||||
5. Test verde + run suite completa de la app afectada.
|
||||
6. Commit `fix: <descripcion>`.
|
||||
7. `/git-push` (merge --no-ff master).
|
||||
8. Move a `completed/`.
|
||||
|
||||
### `feature`
|
||||
|
||||
1. `/git-branch issue/NNNN-<slug>`.
|
||||
2. **Plan corto** (2-3 frases) sobre approach + DoD a marcar.
|
||||
3. Implementar bloque por bloque, commits atomicos.
|
||||
4. Acceptance checkboxes verdes via tests + manual user-test.
|
||||
5. Si DoD pide `User-facing`: el flow asociado debe abrir la superficie usuario.
|
||||
6. `/git-push`.
|
||||
7. Move a `completed/`.
|
||||
|
||||
### `chore`
|
||||
|
||||
1. **NO TBD branch** (push directo a master). Si toca app -> usar TBD.
|
||||
2. Si es pipeline idempotente: run `--dry-run` primero, mostrar diff, run real.
|
||||
3. Backup antes de toda escritura masiva (ver 0100).
|
||||
4. Commit `chore: <descripcion>`.
|
||||
5. `/full-git-push`.
|
||||
6. Move a `completed/`.
|
||||
|
||||
### `refactor`
|
||||
|
||||
1. `/git-branch issue/NNNN-<slug>`.
|
||||
2. **Sin tests verdes pre-existentes -> abort**. Refactor sin red de seguridad es feature, no refactor.
|
||||
3. Aplicar **Branch by Abstraction** (ver feature_flags.md) si cambio grande.
|
||||
4. Tests siguen verdes en cada commit.
|
||||
5. `/git-push`.
|
||||
|
||||
### `chore` + `audit`
|
||||
|
||||
1. Read-only fase exploratoria.
|
||||
2. Output reporte (no escribir).
|
||||
3. Si el reporte requiere fix -> abrir nuevo issue `bugfix` o `chore` por hallazgo.
|
||||
4. Close audit issue con reporte adjunto en `## Notas`.
|
||||
|
||||
### `epic`
|
||||
|
||||
1. **NO codigo directo**. Epic es planning.
|
||||
2. Listar sub-issues hijo (`NNNNa`, `NNNNb`, ...) — crearlos si no existen via `/issue create`.
|
||||
3. Decidir orden de ejecucion (dependencias).
|
||||
4. Status del epic = `bloqueado` mientras haya hijos abiertos.
|
||||
5. Cerrar solo cuando todos los hijos esten `completado`.
|
||||
|
||||
### `spike`
|
||||
|
||||
1. `/git-branch spike/NNNN-<slug>` (no `issue/`).
|
||||
2. **Timebox declarado** en frontmatter (`tags: [timebox-2h]`).
|
||||
3. Output: aprendizaje en `## Notas` + nuevo issue concreto (feature/refactor) si vale la pena seguir.
|
||||
4. NO commit a master. Si el spike falla -> branch deletada, issue `deferred`.
|
||||
|
||||
### `docs`
|
||||
|
||||
1. NO TBD (push directo).
|
||||
2. Editar `.md` o `docs/` o reglas.
|
||||
3. Si toca `.claude/rules/INDEX.md` -> verificar referencias rotas.
|
||||
4. Commit `docs: <descripcion>`.
|
||||
|
||||
### `infra`
|
||||
|
||||
1. Sub-issue de un epic. `/fix-issue` redirige a guidance del epic padre.
|
||||
2. Aplicar dispatch del type del padre (feature/refactor habitualmente).
|
||||
|
||||
### `planning`
|
||||
|
||||
1. NO codigo. Similar a `epic` pero scope mas pequeño (ej. propuesta de taxonomia, ADR).
|
||||
2. Output: `.md` con conclusiones.
|
||||
|
||||
## Implementacion
|
||||
|
||||
Slash command `.claude/commands/fix-issue.md` actualizado:
|
||||
|
||||
```yaml
|
||||
---
|
||||
description: "Fix issue con dispatch por type (bugfix/feature/chore/refactor/epic/spike/docs/infra/planning)"
|
||||
allowed-tools: [Bash, Read, Edit, Write, Glob, Grep, Agent]
|
||||
---
|
||||
|
||||
# /fix-issue NNNN
|
||||
|
||||
1. Lee `dev/issues/NNNN-*.md` (parsea frontmatter YAML).
|
||||
2. Lee `type:` del frontmatter.
|
||||
3. Despacha al playbook correspondiente (ver dev/issues/0104-*.md).
|
||||
4. Si type missing/invalido -> error con sugerencia.
|
||||
```
|
||||
|
||||
Playbooks se materializan como sub-archivos en `dev/playbooks/<type>.md` (lectura on-demand). Cada uno con steps numerados + checklist DoD.
|
||||
|
||||
## Acceptance
|
||||
|
||||
- [ ] `.claude/commands/fix-issue.md` lee `type:` y dispacha.
|
||||
- [ ] `dev/playbooks/{bugfix,feature,chore,refactor,epic,spike,docs,infra,planning}.md` existen.
|
||||
- [ ] `/fix-issue NNNN` sin `type:` valido -> error claro + sugerencia.
|
||||
- [ ] Documentacion en `.claude/rules/` referencia los playbooks.
|
||||
- [ ] Smoke test: `/fix-issue 0099` (type=app) elige el playbook adecuado (mapea app -> feature playbook por defecto).
|
||||
|
||||
## Definition of Done
|
||||
|
||||
### Generico
|
||||
|
||||
- [ ] **Repetibilidad**: misma issue type produce mismo playbook 100x.
|
||||
- [ ] **Observabilidad**: log "dispatch: type=feature" antes de arrancar.
|
||||
- [ ] **Error-path**: type invalido -> error con sugerencia "did you mean ...?".
|
||||
- [ ] **Idempotencia**: si la rama ya existe, reanudar (no abortar).
|
||||
- [ ] **Secrets**: N/A.
|
||||
- [ ] **Docs**: cada playbook tiene ejemplo + gotchas.
|
||||
- [ ] **Registry-first**: playbooks reusan funciones del registry (git_branch, run_tests, etc.).
|
||||
- [ ] **INDEX + status**: issue cerrado.
|
||||
|
||||
### User-facing
|
||||
|
||||
- [ ] **User-facing**: usuario teclea `/fix-issue 0099` y ve el playbook elegido como primera linea: `[dispatch] type=app -> playbook=feature (TBD branch + acceptance + DoD)`.
|
||||
- [ ] **User-facing repeat**: cada issue futuro entra al playbook correcto automatico, sin que el usuario tenga que pensar.
|
||||
- [ ] **User-facing onboarding**: parrafo en `dev/playbooks/README.md` explica que es cada playbook.
|
||||
- [ ] **User-facing latencia**: dispatch decision <100ms.
|
||||
|
||||
## Notas
|
||||
|
||||
(rellenas tras correr)
|
||||
@@ -1,5 +1,12 @@
|
||||
# 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`.
|
||||
> 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 | — |
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
---
|
||||
id: "0007a"
|
||||
title: "Funciones core del DAG engine"
|
||||
status: completado
|
||||
type: feature
|
||||
domain: []
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0007a — Funciones core del DAG engine
|
||||
|
||||
## Metadata
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
---
|
||||
id: "0007b"
|
||||
title: "Process manager: spawn, wait, kill, status"
|
||||
status: completado
|
||||
type: feature
|
||||
domain: []
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0007b — Process manager: spawn, wait, kill, status
|
||||
|
||||
## Metadata
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
---
|
||||
id: "0007c"
|
||||
title: "Execution store: persistencia de estado"
|
||||
status: completado
|
||||
type: feature
|
||||
domain: []
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0007c — Execution store: persistencia de estado
|
||||
|
||||
## Metadata
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
---
|
||||
id: "0007d"
|
||||
title: "Scheduler: cron parser y ticker"
|
||||
status: completado
|
||||
type: feature
|
||||
domain: []
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0007d — Scheduler: cron parser y ticker
|
||||
|
||||
## Metadata
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
---
|
||||
id: "0007e"
|
||||
title: "DAG executor app: CLI/TUI que reemplaza Dagu"
|
||||
status: completado
|
||||
type: feature
|
||||
domain: []
|
||||
scope: app-scoped
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0007e — DAG executor app: CLI/TUI que reemplaza Dagu
|
||||
|
||||
## Metadata
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
---
|
||||
id: "0008"
|
||||
title: "SQLite API Web"
|
||||
status: completado
|
||||
type: feature
|
||||
domain: []
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0008 — SQLite API Web
|
||||
|
||||
## Metadata
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
---
|
||||
id: "0009"
|
||||
title: "HTTP Server Foundation"
|
||||
status: completado
|
||||
type: feature
|
||||
domain: []
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0009 — HTTP Server Foundation
|
||||
|
||||
## Metadata
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
---
|
||||
id: "0010"
|
||||
title: "Auth System"
|
||||
status: completado
|
||||
type: feature
|
||||
domain: []
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0010 — Auth System
|
||||
|
||||
## Metadata
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
---
|
||||
id: "0011"
|
||||
title: "WebSocket & SSE Server"
|
||||
status: completado
|
||||
type: feature
|
||||
domain: []
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0011 — WebSocket & SSE Server
|
||||
|
||||
## Metadata
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
---
|
||||
id: "0012"
|
||||
title: "Email & SMTP"
|
||||
status: completado
|
||||
type: feature
|
||||
domain: []
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0012 — Email & SMTP
|
||||
|
||||
## Metadata
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
---
|
||||
id: "0013"
|
||||
title: "Background Job Queue"
|
||||
status: completado
|
||||
type: feature
|
||||
domain: []
|
||||
scope: multi-app
|
||||
priority: alta
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0013 — Background Job Queue
|
||||
|
||||
## Metadata
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
---
|
||||
id: "0014"
|
||||
title: "File Upload & Storage"
|
||||
status: completado
|
||||
type: feature
|
||||
domain: []
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0014 — File Upload & Storage
|
||||
|
||||
## Metadata
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
---
|
||||
id: "0015"
|
||||
title: "Database Migrations"
|
||||
status: completado
|
||||
type: feature
|
||||
domain: []
|
||||
scope: multi-app
|
||||
priority: media
|
||||
depends: []
|
||||
blocks: []
|
||||
related: []
|
||||
created: 2026-05-17
|
||||
updated: 2026-05-17
|
||||
tags: []
|
||||
---
|
||||
# 0015 — Database Migrations
|
||||
|
||||
## Metadata
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user