Files
fn_registry/dev/issues/0116-skill-tree-launch-workflow.md
T
egutierrez 7eb7b3d0c8 chore: snapshot WIP previo + flow 0008 + 7 sub-issues (0112-0119)
Snapshot de WIP acumulado de sesiones previas antes de merge wave 1
del flow 0008 (kanban_cpp + agent_runner_api + DoD schema).

Incluye:
- dev/flows/0008-kanban-cpp-and-agent-workflows.md
- dev/issues/0112-0119*.md (7 sub-issues)
- WIP previo en cmd/fn/doctor.go, registry/*, modules/, cpp/, etc.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 18:17:08 +02:00

3.5 KiB

id, title, status, type, domain, scope, priority, depends, blocks, related, created, updated, tags, flow
id title status type domain scope priority depends blocks related created updated tags flow
0116 skill_tree v2: reemplazar boton Claude fix por Launch workflow pendiente feature
cpp-stack
agents
dev-loop
app alta
0113
0114
0008
0109
0117
0118
2026-05-18 2026-05-18
skill-tree
agents
ui
feature-flag
0008

0116 — skill_tree v2: Launch workflow

Problema

apps/skill_tree/main.cpp::spawn_claude_terminal abre wt.exe new-tab wsl.exe -- bash -ic "claude --dangerously-skip-permissions". Side effects:

  • Terminal externa fuera de la app (mala UX para agentes paralelos).
  • Sin trazabilidad (run no persistido).
  • Sin DoD ni evidencias.
  • Imposible cancelar desde la UI.

Flow 0008 surface 2: usuario clica Launch workflow -> run trackeado en agent_runner_api, NO se abre terminal.

Decision

Modificar apps/skill_tree/main.cpp:

  1. Eliminar (o esconder detras de feature flag legacy_claude_fix) el boton TI_TERMINAL_2 " Claude fix".
  2. Anadir boton TI_PLAY " Launch workflow":
    • POST http://localhost:8486/api/runs con {issue_id, mode: "fix-issue"}.
    • Captura run_id del response.
    • Toast run_id=... visible 3s.
    • Refresh panel Timeline (issue 0118).
  3. Pasar al panel DoD inspector (issue 0117) si el run tiene dod_evidence_schema declarado.

Feature flag legacy_claude_fix

dev/feature_flags.json:

"legacy_claude_fix": {
  "enabled": false,
  "issue": "0116",
  "description": "Mostrar boton Claude fix viejo (terminal externa). Default OFF tras 0116",
  "added": "2026-05-18",
  "enabled_at": null
}

Logica: si flag ON, muestra ambos botones (Launch workflow + Claude fix legacy) durante rollback window. Si OFF (default), solo Launch workflow.

Eliminar flag + codigo legacy en issue separado tras 2 semanas estables.

Criterios de aceptacion

  • apps/skill_tree/main.cpp modificado: boton Launch workflow operativo.
  • POST a :8486/api/runs usa http_request_cpp_core (0110) — NO popen inline.
  • Feature flag legacy_claude_fix registrado en dev/feature_flags.json con enabled: false.
  • Cuando flag OFF: Claude fix no se renderiza.
  • Cuando flag ON: ambos botones aparecen para rollback.
  • Toast run_id=... visible al lanzar.
  • Si agent_runner_api no responde (:8486 down): toast error + sugerencia systemctl --user start agent_runner_api.
  • uses_functions actualizado en apps/skill_tree/app.md: anadir http_request_cpp_core.
  • e2e_checks actualizados: smoke launch workflow con backend mock.
  • Test manual: clic en nodo issue -> ve run en kanban_cpp panel_agent_runs y en skill_tree Timeline (0118).
  • Version bump apps/skill_tree/app.md::version minor (/version apps/skill_tree minor "...").

Gotchas

  • spawn_claude_terminal esta en main.cpp inline. NO eliminar la funcion en este issue — solo no llamarla cuando flag OFF. Eliminar en issue separado tras 2 semanas.
  • HTTP POST sincrono bloquearia frame ImGui. Usar std::async o spawn thread + flag pending_launch. Renderizar spinner.
  • Sin agent_runner_api corriendo, el boton es decorativo. Doctor check: fn doctor services debe mostrar agent_runner_api active.
  • Si el issue NO tiene dod_evidence_schema declarado: run igualmente arranca, pero sin items DoD precreados.

Out of scope

  • Panel DoD inspector (0117).
  • Panel Timeline (0118).
  • Tab Calendar/Dashboard de skill_tree (otros sub-issues 0109*).
  • Eliminacion definitiva de spawn_claude_terminal (issue separado tras rollback window).