docs(flows): DoD obligatorio con user-facing surface + abrir issues 0100-0103 (taxonomia, frontmatter migration, dev_console, work dashboard)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
# 0101 — dev_console Go binario: /issue /flow /work unificados
|
||||
|
||||
**Status:** pendiente
|
||||
**Created:** 2026-05-16
|
||||
**Type:** app
|
||||
**Priority:** alta
|
||||
**Domain:** meta
|
||||
**Scope:** registry-only
|
||||
**Depends:** 0100 (frontmatter migration)
|
||||
**Blocks:** 0102 (work dashboard tab consume `dev_console --json`)
|
||||
**Related:** 0103 (slash commands llaman al binario)
|
||||
|
||||
## Problema
|
||||
|
||||
Issues y flows hoy se gestionan a ojo: `ls dev/issues/`, `grep`, edit manual de tablas en `README.md` / `INDEX.md`. Sin un comando unificado:
|
||||
|
||||
- No hay `/issue list --domain trading --status pendiente`.
|
||||
- No hay `/flow status 0001` que cuente checkboxes + DoD %.
|
||||
- No hay vista cross-cutting "que hacer hoy" mezclando issues + flows.
|
||||
|
||||
Necesitamos un binario unico (`dev_console`) con la misma forma que `fn`: subcomandos consistentes, output texto + `--json`, latencia <200ms.
|
||||
|
||||
## Objetivo v1
|
||||
|
||||
App Go en `apps/dev_console/` con subcomandos:
|
||||
|
||||
### issue
|
||||
|
||||
| Subcomando | Que hace |
|
||||
|---|---|
|
||||
| `dev_console issue list [--domain X] [--type Y] [--status Z] [--prio P] [--epic NNNN]` | tabla filtrable + DoD % |
|
||||
| `dev_console issue show NNNN` | imprime archivo |
|
||||
| `dev_console issue status NNNN` | % acceptance + estado deps (resuelto si todos los `depends` estan `completado`) |
|
||||
| `dev_console issue board` | output TUI o tabla columnas pendiente/in-progress/bloqueado/done |
|
||||
| `dev_console issue dep NNNN` | arbol bloquea/depende navegable |
|
||||
| `dev_console issue roadmap NNNN` | epic + sub-IDs (auto-detecta `NNNNa`, `NNNNb`, ...) |
|
||||
| `dev_console issue tag NNNN +X -Y` | mantenimiento tags |
|
||||
| `dev_console issue done NNNN` | mueve a `completed/`, valida deps, actualiza README |
|
||||
| `dev_console issue stale [--days 30]` | sin update >N dias |
|
||||
| `dev_console issue create <slug> --type T --domain D` | scaffold con frontmatter canonico |
|
||||
|
||||
### flow
|
||||
|
||||
| Subcomando | Que hace |
|
||||
|---|---|
|
||||
| `dev_console flow list [--app X] [--pattern P] [--risk R]` | tabla filtrable + DoD % |
|
||||
| `dev_console flow create <slug>` | scaffold (rechaza si falta DoD user-facing) |
|
||||
| `dev_console flow show NNNN` | imprime archivo |
|
||||
| `dev_console flow status NNNN` | Acceptance % + DoD % separados + checks user-facing destacados |
|
||||
| `dev_console flow dod NNNN` | solo bloque DoD + checklist live |
|
||||
| `dev_console flow trace NNNN` | join `call_monitor.calls` + `data_factory.runs` filtrados por funciones/apps del flow |
|
||||
| `dev_console flow user-test NNNN` | abre superficie usuario declarada en DoD (URL, lanza .exe, abre tab) |
|
||||
| `dev_console flow run NNNN` | fase 2 — ejecuta steps con `function:` |
|
||||
| `dev_console flow chain N M` | declara composicion N -> M |
|
||||
| `dev_console flow done NNNN` | exige DoD 100% (incluyendo user-facing) antes de mover |
|
||||
|
||||
### work (cross-cutting)
|
||||
|
||||
| Subcomando | Que hace |
|
||||
|---|---|
|
||||
| `dev_console work today` | top items prio alta + deps satisfechas (issues + flows) |
|
||||
| `dev_console work weekly` | review semanal: closed vs planeados (lookup en git log + completed/) |
|
||||
| `dev_console work search "texto"` | FTS sobre issues + flows + completed |
|
||||
| `dev_console work dashboard` | imprime JSON consumible por tab Work (issue 0102) |
|
||||
|
||||
## Reglas tecnicas
|
||||
|
||||
- Go + parser YAML (gopkg.in/yaml.v3) + tabwriter. Sin DB propia — fuente de verdad = archivos `.md`.
|
||||
- Cache opcional en `~/.cache/dev_console/index.json` invalidada por mtime.
|
||||
- `--json` en TODOS los subcomandos para consumo por dashboards/agentes.
|
||||
- Latencia objetivo <200ms en lookup, <500ms en list (71 issues + 7 flows).
|
||||
- Build canonico: `CGO_ENABLED=0 go build -tags fts5 -o dev_console .`
|
||||
|
||||
## Acceptance
|
||||
|
||||
- [ ] `dev_console issue list --status pendiente` lista los issues abiertos.
|
||||
- [ ] `dev_console flow status 0001` muestra Acceptance + DoD + user-facing %.
|
||||
- [ ] `dev_console work today` produce lista util (no vacia, no flood).
|
||||
- [ ] `dev_console flow done 0001` rechaza si DoD <100%.
|
||||
- [ ] Tests con fixtures en `apps/dev_console/testdata/`.
|
||||
|
||||
## Definition of Done
|
||||
|
||||
### Generico
|
||||
|
||||
- [ ] **Repetibilidad**: tests verdes 3x; latencia consistente.
|
||||
- [ ] **Observabilidad**: cada invocacion registrada en `call_monitor.calls` (hook PostToolUse Bash detecta `dev_console *`).
|
||||
- [ ] **Error-path**: archivo malformado -> mensaje claro + exit code != 0.
|
||||
- [ ] **Idempotencia**: `done` 2x sobre mismo issue = 0 cambios la segunda.
|
||||
- [ ] **Secrets**: N/A.
|
||||
- [ ] **Docs**: `apps/dev_console/app.md` + `README.md` con ejemplos.
|
||||
- [ ] **Registry-first**: reusa `parse_yaml_frontmatter_*`, `checklist_count_*`, etc.
|
||||
- [ ] **INDEX + status**: issue cerrado.
|
||||
|
||||
### User-facing
|
||||
|
||||
- [ ] **User-facing**: usuario teclea `/issue list` en Claude Code o `dev_console issue list` en terminal y ve tabla limpia con prio/domain/status.
|
||||
- [ ] **User-facing repeat**: comando responde igual cada vez, sub-segundo, sin reset de estado.
|
||||
- [ ] **User-facing onboarding**: `apps/dev_console/app.md` lista comandos canonicos + casos comunes.
|
||||
- [ ] **User-facing latencia**: <500ms p95 para list, <200ms para show.
|
||||
Reference in New Issue
Block a user