merge issue/0116: skill_tree v2 Launch workflow boton + feature flag legacy_claude_fix
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
---
|
||||
id: "0116"
|
||||
title: "skill_tree v2: reemplazar boton Claude fix por Launch workflow"
|
||||
status: pendiente
|
||||
type: feature
|
||||
domain:
|
||||
- cpp-stack
|
||||
- agents
|
||||
- dev-loop
|
||||
scope: app
|
||||
priority: alta
|
||||
depends:
|
||||
- "0113"
|
||||
- "0114"
|
||||
blocks: []
|
||||
related:
|
||||
- "0008"
|
||||
- "0109"
|
||||
- "0117"
|
||||
- "0118"
|
||||
created: 2026-05-18
|
||||
updated: 2026-05-18
|
||||
tags: [skill-tree, agents, ui, feature-flag]
|
||||
flow: "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`:
|
||||
```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).
|
||||
Reference in New Issue
Block a user