adi_dev_workflow 1.1.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/index.js +8 -8
- package/frameworks/agents/qa-staff-engineer.md +311 -311
- package/frameworks/agents/qa-validation-expert.md +458 -458
- package/frameworks/agents/tech-review-conformance.md +200 -200
- package/frameworks/commands/ministack/README.md +2 -0
- package/frameworks/commands/ministack/code-review.md +2 -0
- package/frameworks/commands/ministack/generate-intent.md +2 -0
- package/frameworks/commands/ministack/generate-scope.md +2 -0
- package/frameworks/commands/ministack/generate-tasks.md +2 -0
- package/frameworks/commands/ministack/generate-tech-direction.md +2 -0
- package/frameworks/commands/ministack/run-ministack-tasks.md +3 -0
- package/frameworks/commands/ministack/run-ministack-withlinear.md +2 -0
- package/frameworks/commands/ministack/status.md +2 -0
- package/frameworks/commands/sdd/code-review.md +2 -0
- package/frameworks/commands/sdd/generate-prd.md +2 -0
- package/frameworks/commands/sdd/generate-task-plan.md +2 -0
- package/frameworks/commands/sdd/generate-tech-direction.md +2 -0
- package/frameworks/commands/sdd/generate-tech-spec.md +2 -0
- package/frameworks/commands/sdd/generate-tests.md +2 -0
- package/frameworks/commands/sdd/run_tasks.md +3 -0
- package/frameworks/commands/sdd/run_tasks_withlinear.md +2 -0
- package/frameworks/commands/sdd/status.md +2 -0
- package/frameworks/commands/sdd/validate-sdd.md +2 -0
- package/frameworks/commands/sync-tasks-to-linear.md +2 -0
- package/frameworks/commands/taskcard/generate-taskcard.md +2 -0
- package/frameworks/commands/taskcard/run-taskcard.md +2 -0
- package/frameworks/config/ai-framework-config.yaml +112 -0
- package/frameworks/skills/ministack-tasks-expert/SKILL.md +204 -204
- package/frameworks/skills/ministack-tasks-expert/templates/task_plan_template.md +78 -78
- package/frameworks/skills/ministack-tasks-expert/templates/task_template.md +103 -103
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.json +99 -99
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/benchmark.md +64 -64
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/eval_metadata.json +12 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/response.md +134 -134
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/outputs/transcript.md +68 -68
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/with_skill/timing.json +5 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/response.md +525 -525
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/outputs/transcript.md +30 -30
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-1-happy-path/without_skill/timing.json +5 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/eval_metadata.json +12 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/response.md +1126 -1126
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/outputs/transcript.md +131 -131
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/with_skill/timing.json +5 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/response.md +452 -452
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/outputs/transcript.md +78 -78
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-2-spec-simples/without_skill/timing.json +5 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/eval_metadata.json +12 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/response.md +101 -101
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/outputs/transcript.md +133 -133
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/with_skill/timing.json +5 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/response.md +248 -248
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/outputs/transcript.md +49 -49
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/eval-3-sem-user-stories/without_skill/timing.json +5 -5
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-1/review.html +1325 -1325
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.json +94 -94
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/benchmark.md +67 -67
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/eval_metadata.json +12 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/response.md +117 -117
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/outputs/transcript.md +91 -91
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/with_skill/timing.json +1 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/response.md +694 -694
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/outputs/transcript.md +45 -45
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-1-happy-path/without_skill/timing.json +1 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/eval_metadata.json +12 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/response.md +1087 -1087
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/outputs/transcript.md +124 -124
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/with_skill/timing.json +1 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/response.md +458 -458
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/outputs/transcript.md +84 -84
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-2-spec-simples/without_skill/timing.json +1 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/eval_metadata.json +12 -12
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/response.md +70 -70
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/outputs/transcript.md +148 -148
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/with_skill/timing.json +1 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/grading.json +32 -32
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/response.md +249 -249
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/outputs/transcript.md +80 -80
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/eval-3-sem-user-stories/without_skill/timing.json +1 -1
- package/frameworks/skills/sdd-task-plan-expert-workspace/iteration-2/review.html +1325 -1325
- package/frameworks/skills/sdd-tech-spec-expert/SKILL.md +317 -317
- package/frameworks/skills/sdd-tech-spec-expert/evals/evals.json +199 -199
- package/frameworks/skills/sdd-tech-spec-expert/templates/spec_tech_template.md +290 -290
- package/frameworks/skills/sdd-tech-spec-expert/templates/tech_direction-template.md +23 -23
- package/package.json +28 -28
- package/src/cli.js +121 -121
- package/src/installer.js +155 -136
- package/src/transformer.js +86 -86
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
# Transcript — Tool Calls for Task Plan Generation
|
|
2
|
-
|
|
3
|
-
## Objetivo
|
|
4
|
-
Gerar um TASK PLAN para a feature "Adicionar Telefone ao Usuario v1" baseado no SPEC_TECH aprovado.
|
|
5
|
-
|
|
6
|
-
## Ferramentas Utilizadas
|
|
7
|
-
|
|
8
|
-
### 1. ToolSearch — Carregar ferramentas
|
|
9
|
-
- **Query:** `select:Read,Glob,Bash,Write`
|
|
10
|
-
- **Resultado:** 4 ferramentas carregadas com sucesso
|
|
11
|
-
|
|
12
|
-
### 2. Glob (6 chamadas em paralelo) — Descobrir arquivos relevantes
|
|
13
|
-
- `internal/db/migrations/*.sql` → Encontrou: `001_create_usuarios.sql`
|
|
14
|
-
- `internal/db/queries/*.sql` → Nenhum resultado (caminho incorreto)
|
|
15
|
-
- `internal/repository/user*.go` → Encontrou: `user_repository.go`
|
|
16
|
-
- `internal/service/user*.go` → Encontrou: `user_service.go`, `user_service_test.go`
|
|
17
|
-
- `internal/handler/grpc/user*.go` → Encontrou: `user_handler.go`, `user_handler_test.go`
|
|
18
|
-
- `api/proto/v1/user*.proto` → Encontrou: `user.proto`
|
|
19
|
-
|
|
20
|
-
### 3. Read (7 chamadas em paralelo) — Ler conteudo dos arquivos
|
|
21
|
-
- `internal/db/migrations/001_create_usuarios.sql` — Schema atual da tabela usuarios
|
|
22
|
-
- `api/proto/v1/user.proto` — Definicao proto atual (CreateUser, GetUser)
|
|
23
|
-
- `internal/repository/user_repository.go` — Repository com modelo User e interface
|
|
24
|
-
- `internal/service/user_service.go` — Service com CreateUserInput e validacoes
|
|
25
|
-
- `internal/handler/grpc/user_handler.go` — Handler gRPC com mapeamento de erros
|
|
26
|
-
- `internal/service/user_service_test.go` — Testes do service (mock + table-driven)
|
|
27
|
-
- `internal/handler/grpc/user_handler_test.go` — Testes do handler
|
|
28
|
-
|
|
29
|
-
### 4. Glob (3 chamadas em paralelo) — Buscar queries SQLC e config
|
|
30
|
-
- `**/sqlc.yaml` → Encontrou: `internal/db/sqlc/sqlc.yaml`
|
|
31
|
-
- `**/queries/*.sql` → Encontrou: `internal/db/sqlc/queries/user.sql`
|
|
32
|
-
- `**/sqlc/**` → Confirmou estrutura do diretorio
|
|
33
|
-
|
|
34
|
-
### 5. Read (2 chamadas em paralelo) — Ler queries SQLC e configuracao
|
|
35
|
-
- `internal/db/sqlc/queries/user.sql` — Queries CreateUser e GetUserByID
|
|
36
|
-
- `internal/db/sqlc/sqlc.yaml` — Configuracao SQLC (engine sqlite)
|
|
37
|
-
|
|
38
|
-
### 6. Glob (3 chamadas em paralelo) — Verificar codigo gerado e FX
|
|
39
|
-
- `gen/**/*.go` → Nenhum resultado (codigo gerado nao commitado)
|
|
40
|
-
- `internal/handler/grpc/fx.go` → Encontrado
|
|
41
|
-
- `internal/infra/grpc/server.go` → Encontrado
|
|
42
|
-
|
|
43
|
-
### 7. Bash — Listar diretorio SQLC
|
|
44
|
-
- Comando: `ls -la internal/db/sqlc/`
|
|
45
|
-
- Resultado: Apenas `queries/` e `sqlc.yaml` (sem Go gerado)
|
|
46
|
-
|
|
47
|
-
### 8. Read (2 chamadas em paralelo) — Ler FX e server
|
|
48
|
-
- `internal/handler/grpc/fx.go` — Modulo FX do handler (registra UserServiceServer)
|
|
49
|
-
- `internal/infra/grpc/server.go` — Servidor gRPC (registra UserService, auth interceptor)
|
|
50
|
-
|
|
51
|
-
### 9. Bash — Verificar diretorio de output
|
|
52
|
-
- Verificou existencia do diretorio workspace
|
|
53
|
-
|
|
54
|
-
### 10. Bash — Criar diretorio de output
|
|
55
|
-
- Criou `without_skill/outputs/`
|
|
56
|
-
|
|
57
|
-
### 11. Write — Salvar response.md
|
|
58
|
-
- Task Plan completo com 12 tasks
|
|
59
|
-
|
|
60
|
-
### 12. Write — Salvar transcript.md
|
|
61
|
-
- Este arquivo
|
|
62
|
-
|
|
63
|
-
## Resumo de Descobertas
|
|
64
|
-
|
|
65
|
-
| Aspecto | Situacao Atual |
|
|
66
|
-
|---------|----------------|
|
|
67
|
-
| **Migracao** | 1 arquivo (001), sem down migration |
|
|
68
|
-
| **SQLC queries** | 2 queries (CreateUser, GetUserByID) |
|
|
69
|
-
| **SQLC gerado** | Nao presente no repo (nao commitado) |
|
|
70
|
-
| **Proto** | 2 RPCs (CreateUser, GetUser), sem UpdateUser |
|
|
71
|
-
| **Proto gerado** | Nao presente no repo (nao commitado) |
|
|
72
|
-
| **Repository** | Interface com Create e GetByID, sem Update |
|
|
73
|
-
| **Service** | Interface com CreateUser e GetUser, sem UpdateUser |
|
|
74
|
-
| **Handler** | Implementa CreateUser e GetUser |
|
|
75
|
-
| **Testes service** | 11 testes (validacao, hash, UUID, erros) |
|
|
76
|
-
| **Testes handler** | 12 testes (sucesso, erros, mapeamento) |
|
|
77
|
-
|
|
78
|
-
Conclusao: A feature requer adicoes em todas as camadas + criacao do endpoint UpdateUser que nao existe.
|
|
1
|
+
# Transcript — Tool Calls for Task Plan Generation
|
|
2
|
+
|
|
3
|
+
## Objetivo
|
|
4
|
+
Gerar um TASK PLAN para a feature "Adicionar Telefone ao Usuario v1" baseado no SPEC_TECH aprovado.
|
|
5
|
+
|
|
6
|
+
## Ferramentas Utilizadas
|
|
7
|
+
|
|
8
|
+
### 1. ToolSearch — Carregar ferramentas
|
|
9
|
+
- **Query:** `select:Read,Glob,Bash,Write`
|
|
10
|
+
- **Resultado:** 4 ferramentas carregadas com sucesso
|
|
11
|
+
|
|
12
|
+
### 2. Glob (6 chamadas em paralelo) — Descobrir arquivos relevantes
|
|
13
|
+
- `internal/db/migrations/*.sql` → Encontrou: `001_create_usuarios.sql`
|
|
14
|
+
- `internal/db/queries/*.sql` → Nenhum resultado (caminho incorreto)
|
|
15
|
+
- `internal/repository/user*.go` → Encontrou: `user_repository.go`
|
|
16
|
+
- `internal/service/user*.go` → Encontrou: `user_service.go`, `user_service_test.go`
|
|
17
|
+
- `internal/handler/grpc/user*.go` → Encontrou: `user_handler.go`, `user_handler_test.go`
|
|
18
|
+
- `api/proto/v1/user*.proto` → Encontrou: `user.proto`
|
|
19
|
+
|
|
20
|
+
### 3. Read (7 chamadas em paralelo) — Ler conteudo dos arquivos
|
|
21
|
+
- `internal/db/migrations/001_create_usuarios.sql` — Schema atual da tabela usuarios
|
|
22
|
+
- `api/proto/v1/user.proto` — Definicao proto atual (CreateUser, GetUser)
|
|
23
|
+
- `internal/repository/user_repository.go` — Repository com modelo User e interface
|
|
24
|
+
- `internal/service/user_service.go` — Service com CreateUserInput e validacoes
|
|
25
|
+
- `internal/handler/grpc/user_handler.go` — Handler gRPC com mapeamento de erros
|
|
26
|
+
- `internal/service/user_service_test.go` — Testes do service (mock + table-driven)
|
|
27
|
+
- `internal/handler/grpc/user_handler_test.go` — Testes do handler
|
|
28
|
+
|
|
29
|
+
### 4. Glob (3 chamadas em paralelo) — Buscar queries SQLC e config
|
|
30
|
+
- `**/sqlc.yaml` → Encontrou: `internal/db/sqlc/sqlc.yaml`
|
|
31
|
+
- `**/queries/*.sql` → Encontrou: `internal/db/sqlc/queries/user.sql`
|
|
32
|
+
- `**/sqlc/**` → Confirmou estrutura do diretorio
|
|
33
|
+
|
|
34
|
+
### 5. Read (2 chamadas em paralelo) — Ler queries SQLC e configuracao
|
|
35
|
+
- `internal/db/sqlc/queries/user.sql` — Queries CreateUser e GetUserByID
|
|
36
|
+
- `internal/db/sqlc/sqlc.yaml` — Configuracao SQLC (engine sqlite)
|
|
37
|
+
|
|
38
|
+
### 6. Glob (3 chamadas em paralelo) — Verificar codigo gerado e FX
|
|
39
|
+
- `gen/**/*.go` → Nenhum resultado (codigo gerado nao commitado)
|
|
40
|
+
- `internal/handler/grpc/fx.go` → Encontrado
|
|
41
|
+
- `internal/infra/grpc/server.go` → Encontrado
|
|
42
|
+
|
|
43
|
+
### 7. Bash — Listar diretorio SQLC
|
|
44
|
+
- Comando: `ls -la internal/db/sqlc/`
|
|
45
|
+
- Resultado: Apenas `queries/` e `sqlc.yaml` (sem Go gerado)
|
|
46
|
+
|
|
47
|
+
### 8. Read (2 chamadas em paralelo) — Ler FX e server
|
|
48
|
+
- `internal/handler/grpc/fx.go` — Modulo FX do handler (registra UserServiceServer)
|
|
49
|
+
- `internal/infra/grpc/server.go` — Servidor gRPC (registra UserService, auth interceptor)
|
|
50
|
+
|
|
51
|
+
### 9. Bash — Verificar diretorio de output
|
|
52
|
+
- Verificou existencia do diretorio workspace
|
|
53
|
+
|
|
54
|
+
### 10. Bash — Criar diretorio de output
|
|
55
|
+
- Criou `without_skill/outputs/`
|
|
56
|
+
|
|
57
|
+
### 11. Write — Salvar response.md
|
|
58
|
+
- Task Plan completo com 12 tasks
|
|
59
|
+
|
|
60
|
+
### 12. Write — Salvar transcript.md
|
|
61
|
+
- Este arquivo
|
|
62
|
+
|
|
63
|
+
## Resumo de Descobertas
|
|
64
|
+
|
|
65
|
+
| Aspecto | Situacao Atual |
|
|
66
|
+
|---------|----------------|
|
|
67
|
+
| **Migracao** | 1 arquivo (001), sem down migration |
|
|
68
|
+
| **SQLC queries** | 2 queries (CreateUser, GetUserByID) |
|
|
69
|
+
| **SQLC gerado** | Nao presente no repo (nao commitado) |
|
|
70
|
+
| **Proto** | 2 RPCs (CreateUser, GetUser), sem UpdateUser |
|
|
71
|
+
| **Proto gerado** | Nao presente no repo (nao commitado) |
|
|
72
|
+
| **Repository** | Interface com Create e GetByID, sem Update |
|
|
73
|
+
| **Service** | Interface com CreateUser e GetUser, sem UpdateUser |
|
|
74
|
+
| **Handler** | Implementa CreateUser e GetUser |
|
|
75
|
+
| **Testes service** | 11 testes (validacao, hash, UUID, erros) |
|
|
76
|
+
| **Testes handler** | 12 testes (sucesso, erros, mapeamento) |
|
|
77
|
+
|
|
78
|
+
Conclusao: A feature requer adicoes em todas as camadas + criacao do endpoint UpdateUser que nao existe.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
{
|
|
2
|
-
"total_tokens": 41818,
|
|
3
|
-
"duration_ms": 167600,
|
|
4
|
-
"total_duration_seconds": 167.6
|
|
5
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"total_tokens": 41818,
|
|
3
|
+
"duration_ms": 167600,
|
|
4
|
+
"total_duration_seconds": 167.6
|
|
5
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
{
|
|
2
|
-
"eval_id": 3,
|
|
3
|
-
"eval_name": "spec-tech-sem-user-stories-explicitas",
|
|
4
|
-
"prompt": "Gere o TASK PLAN para esta feature. Segue o SPEC_TECH aprovado:\n\n---\n# SPEC_TECH — Cache de Cardapio v1\n\n## 1. Identificacao\n| Campo | Valor |\n|-------|-------|\n| **Feature/Projeto** | Cache de Cardapio em Memoria |\n| **Versao** | v1 |\n| **Data** | 2026-03-07 |\n\n## 2. Resumo Tecnico\nImplementar cache in-memory (sync.Map) para o cardapio de produtos, evitando queries repetidas ao SQLite. TTL configuravel via config.yaml.\n\n## 3. Definicoes Tecnicas\n\n### 3.1 Novo Pacote\n- `internal/infra/cache/` com interface `Cache[K, V]` e implementacao `InMemoryCache`\n- TTL configuravel via `cache.ttl_seconds` no config.yaml\n- Invalidacao manual via metodo `Invalidate(key)`\n\n### 3.2 Service\n- ProductService passa a consultar cache antes do repository\n- Cache miss: busca no repository e popula cache\n- Operacoes de escrita (Create, Update, Delete) invalidam a entrada correspondente\n\n### 3.3 Config\n- Novo campo `cache.ttl_seconds` (padrao: 300)\n\n### 3.4 DI\n- Registrar modulo cache no FX\n---",
|
|
5
|
-
"assertions": [
|
|
6
|
-
{"id": "c1", "text": "Detecta a ausencia de User Stories (US-XX) e PRD referenciado no SPEC_TECH", "type": "llm_judge"},
|
|
7
|
-
{"id": "c2", "text": "PERGUNTA ao usuario sobre User Stories / PRD em vez de inventar ou ignorar", "type": "llm_judge"},
|
|
8
|
-
{"id": "c3", "text": "NAO inventa User Stories ficticias (guardrail: nunca invente informacoes)", "type": "llm_judge"},
|
|
9
|
-
{"id": "c4", "text": "Extrai corretamente o nome da feature como 'cache-de-cardapio' ou similar em kebab-case", "type": "llm_judge"},
|
|
10
|
-
{"id": "c5", "text": "Segue o processo interativo (uma pergunta por vez, confirma nome antes de prosseguir)", "type": "llm_judge"}
|
|
11
|
-
]
|
|
12
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"eval_id": 3,
|
|
3
|
+
"eval_name": "spec-tech-sem-user-stories-explicitas",
|
|
4
|
+
"prompt": "Gere o TASK PLAN para esta feature. Segue o SPEC_TECH aprovado:\n\n---\n# SPEC_TECH — Cache de Cardapio v1\n\n## 1. Identificacao\n| Campo | Valor |\n|-------|-------|\n| **Feature/Projeto** | Cache de Cardapio em Memoria |\n| **Versao** | v1 |\n| **Data** | 2026-03-07 |\n\n## 2. Resumo Tecnico\nImplementar cache in-memory (sync.Map) para o cardapio de produtos, evitando queries repetidas ao SQLite. TTL configuravel via config.yaml.\n\n## 3. Definicoes Tecnicas\n\n### 3.1 Novo Pacote\n- `internal/infra/cache/` com interface `Cache[K, V]` e implementacao `InMemoryCache`\n- TTL configuravel via `cache.ttl_seconds` no config.yaml\n- Invalidacao manual via metodo `Invalidate(key)`\n\n### 3.2 Service\n- ProductService passa a consultar cache antes do repository\n- Cache miss: busca no repository e popula cache\n- Operacoes de escrita (Create, Update, Delete) invalidam a entrada correspondente\n\n### 3.3 Config\n- Novo campo `cache.ttl_seconds` (padrao: 300)\n\n### 3.4 DI\n- Registrar modulo cache no FX\n---",
|
|
5
|
+
"assertions": [
|
|
6
|
+
{"id": "c1", "text": "Detecta a ausencia de User Stories (US-XX) e PRD referenciado no SPEC_TECH", "type": "llm_judge"},
|
|
7
|
+
{"id": "c2", "text": "PERGUNTA ao usuario sobre User Stories / PRD em vez de inventar ou ignorar", "type": "llm_judge"},
|
|
8
|
+
{"id": "c3", "text": "NAO inventa User Stories ficticias (guardrail: nunca invente informacoes)", "type": "llm_judge"},
|
|
9
|
+
{"id": "c4", "text": "Extrai corretamente o nome da feature como 'cache-de-cardapio' ou similar em kebab-case", "type": "llm_judge"},
|
|
10
|
+
{"id": "c5", "text": "Segue o processo interativo (uma pergunta por vez, confirma nome antes de prosseguir)", "type": "llm_judge"}
|
|
11
|
+
]
|
|
12
|
+
}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
{
|
|
2
|
-
"eval_id": 3,
|
|
3
|
-
"eval_name": "spec-tech-sem-user-stories-explicitas",
|
|
4
|
-
"configuration": "with_skill",
|
|
5
|
-
"expectations": [
|
|
6
|
-
{
|
|
7
|
-
"text": "Detecta a ausencia de User Stories (US-XX) e PRD referenciado no SPEC_TECH",
|
|
8
|
-
"passed": true,
|
|
9
|
-
"evidence": "Secao 3 explicita: 'O SPEC_TECH fornecido nao contem User Stories (US-XX) e nao referencia nenhum PRD.' Tambem identificou a dependencia critica do modulo de Produto inexistente."
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
"text": "PERGUNTA ao usuario sobre User Stories / PRD em vez de inventar ou ignorar",
|
|
13
|
-
"passed": true,
|
|
14
|
-
"evidence": "Formulou pergunta clara com 2 opcoes: (1) usuario fornece PRD/US ou (2) seguir sem, com rastreabilidade N/A. Aguarda resposta antes de avancar."
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
"text": "NAO inventa User Stories ficticias (guardrail: nunca invente informacoes)",
|
|
18
|
-
"passed": true,
|
|
19
|
-
"evidence": "Nenhuma User Story ficticia foi inventada. A resposta explicitamente identifica a ausencia e pergunta ao usuario."
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
"text": "Extrai corretamente o nome da feature como 'cache-de-cardapio' ou similar em kebab-case",
|
|
23
|
-
"passed": true,
|
|
24
|
-
"evidence": "Extraiu 'Cache de Cardapio em Memoria' e normalizou para 'cache-de-cardapio' em kebab-case."
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"text": "Segue o processo interativo (uma pergunta por vez, confirma nome antes de prosseguir)",
|
|
28
|
-
"passed": true,
|
|
29
|
-
"evidence": "Seguiu sequencia: (1) extraiu nome, (2) perguntou sobre US/PRD ausentes, (3) perguntou sobre dependencia do modulo Produto. Indicou que confirmacao do nome e inicio das fases aguardam respostas anteriores."
|
|
30
|
-
}
|
|
31
|
-
]
|
|
32
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"eval_id": 3,
|
|
3
|
+
"eval_name": "spec-tech-sem-user-stories-explicitas",
|
|
4
|
+
"configuration": "with_skill",
|
|
5
|
+
"expectations": [
|
|
6
|
+
{
|
|
7
|
+
"text": "Detecta a ausencia de User Stories (US-XX) e PRD referenciado no SPEC_TECH",
|
|
8
|
+
"passed": true,
|
|
9
|
+
"evidence": "Secao 3 explicita: 'O SPEC_TECH fornecido nao contem User Stories (US-XX) e nao referencia nenhum PRD.' Tambem identificou a dependencia critica do modulo de Produto inexistente."
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"text": "PERGUNTA ao usuario sobre User Stories / PRD em vez de inventar ou ignorar",
|
|
13
|
+
"passed": true,
|
|
14
|
+
"evidence": "Formulou pergunta clara com 2 opcoes: (1) usuario fornece PRD/US ou (2) seguir sem, com rastreabilidade N/A. Aguarda resposta antes de avancar."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"text": "NAO inventa User Stories ficticias (guardrail: nunca invente informacoes)",
|
|
18
|
+
"passed": true,
|
|
19
|
+
"evidence": "Nenhuma User Story ficticia foi inventada. A resposta explicitamente identifica a ausencia e pergunta ao usuario."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"text": "Extrai corretamente o nome da feature como 'cache-de-cardapio' ou similar em kebab-case",
|
|
23
|
+
"passed": true,
|
|
24
|
+
"evidence": "Extraiu 'Cache de Cardapio em Memoria' e normalizou para 'cache-de-cardapio' em kebab-case."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"text": "Segue o processo interativo (uma pergunta por vez, confirma nome antes de prosseguir)",
|
|
28
|
+
"passed": true,
|
|
29
|
+
"evidence": "Seguiu sequencia: (1) extraiu nome, (2) perguntou sobre US/PRD ausentes, (3) perguntou sobre dependencia do modulo Produto. Indicou que confirmacao do nome e inicio das fases aguardam respostas anteriores."
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
@@ -1,101 +1,101 @@
|
|
|
1
|
-
# Resposta do Task Plan Expert — Interacao Inicial
|
|
2
|
-
|
|
3
|
-
## 1. Extração do Nome da Feature
|
|
4
|
-
|
|
5
|
-
Identifiquei o nome da feature na secao "1. Identificacao" do SPEC_TECH:
|
|
6
|
-
|
|
7
|
-
- **Feature/Projeto**: Cache de Cardapio em Memoria
|
|
8
|
-
- **Nome normalizado (kebab-case)**: `cache-de-cardapio`
|
|
9
|
-
- **Versao**: v1
|
|
10
|
-
- **Diretorio de saida**: `docs/cache-de-cardapio/v1/`
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## 2. Analise Obrigatoria do Projeto (Codebase)
|
|
15
|
-
|
|
16
|
-
Antes de planejar qualquer task, explorei o codebase e identifiquei o seguinte:
|
|
17
|
-
|
|
18
|
-
### O que JA existe no projeto:
|
|
19
|
-
| Elemento | Status | Localizacao |
|
|
20
|
-
|----------|--------|-------------|
|
|
21
|
-
| Estrutura Clean Architecture (handler/service/repository) | Existe | `internal/` |
|
|
22
|
-
| Injecao de dependencia via Uber FX | Existe | `internal/infra/di/fx.go` |
|
|
23
|
-
| Config via Viper + `config.yaml` | Existe | `internal/infra/config/config.go`, `configs/config.yaml` |
|
|
24
|
-
| User module completo (handler, service, repo, tests) | Existe | `internal/handler/grpc/`, `internal/service/`, `internal/repository/` |
|
|
25
|
-
| SQLC para queries tipadas | Existe | `internal/db/sqlc/` |
|
|
26
|
-
| Migracao de usuarios | Existe | `internal/db/migrations/001_create_usuarios.sql` |
|
|
27
|
-
| Testes com testify/mock (table-driven) | Existe | `internal/service/user_service_test.go` |
|
|
28
|
-
| gRPC server com interceptors | Existe | `internal/infra/grpc/server.go` |
|
|
29
|
-
|
|
30
|
-
### O que NAO existe (precisa ser criado):
|
|
31
|
-
| Elemento | Status |
|
|
32
|
-
|----------|--------|
|
|
33
|
-
| Modulo de Produto (Product) — service, repository, handler, proto, migration, queries | **NAO existe** |
|
|
34
|
-
| Pacote de cache (`internal/infra/cache/`) | **NAO existe** |
|
|
35
|
-
| Campo `cache.ttl_seconds` no config | **NAO existe** |
|
|
36
|
-
| Tabela `produtos` no banco | **NAO existe** |
|
|
37
|
-
|
|
38
|
-
### Observacao Critica
|
|
39
|
-
|
|
40
|
-
O SPEC_TECH fala em "cache de cardapio de produtos" e menciona que o `ProductService` passara a consultar o cache antes do repository. Porem, **nao existe nenhum modulo de Produto no projeto**. Nao ha proto, migration, queries SQLC, repository, service ou handler de produtos.
|
|
41
|
-
|
|
42
|
-
Isso significa que o TASK PLAN precisara incluir tasks para criar o modulo de Produto completo OU o SPEC_TECH assume que esse modulo ja existe/sera criado em outra feature. Essa duvida sera direcionada ao usuario (veja secao 3).
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
## 3. Ponto de Atencao — User Stories e PRD Ausentes
|
|
47
|
-
|
|
48
|
-
O SPEC_TECH fornecido **nao contem User Stories (US-XX)** e **nao referencia nenhum PRD**.
|
|
49
|
-
|
|
50
|
-
No framework SDD, o TASK PLAN inclui uma **tabela de rastreabilidade obrigatoria** que mapeia User Stories do PRD para definicoes tecnicas do SPEC_TECH e para tasks correspondentes (Guardrail #8: "Rastreabilidade obrigatoria — toda User Story do PRD deve ter pelo menos uma task correspondente").
|
|
51
|
-
|
|
52
|
-
**Pergunta que faria ao usuario:**
|
|
53
|
-
|
|
54
|
-
> O SPEC_TECH fornecido nao contem User Stories (US-XX) e nao referencia um PRD. No framework SDD, a rastreabilidade User Stories -> Tasks e obrigatoria no TASK PLAN.
|
|
55
|
-
>
|
|
56
|
-
> Temos duas opcoes:
|
|
57
|
-
>
|
|
58
|
-
> 1. **Voce fornece o PRD ou as User Stories** relacionadas a esta feature, e eu incluo a rastreabilidade completa no TASK PLAN.
|
|
59
|
-
> 2. **Seguimos sem PRD/User Stories**, e a secao de rastreabilidade do TASK PLAN sera preenchida com "N/A — SPEC_TECH fornecido sem PRD/User Stories associadas". Neste caso, a rastreabilidade sera feita apenas entre definicoes tecnicas do SPEC e tasks.
|
|
60
|
-
>
|
|
61
|
-
> Qual opcao prefere?
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## 4. Ponto de Atencao — Dependencia do Modulo de Produto
|
|
66
|
-
|
|
67
|
-
Alem da questao de User Stories, identifiquei uma dependencia critica:
|
|
68
|
-
|
|
69
|
-
**Pergunta que faria ao usuario (apos resposta da pergunta anterior):**
|
|
70
|
-
|
|
71
|
-
> O SPEC_TECH menciona que o `ProductService` passara a consultar o cache antes do repository, e que operacoes de escrita (Create, Update, Delete) invalidarao entradas do cache. Porem, **nao existe nenhum modulo de Produto no codebase atual** — nao ha proto, migration, queries, repository, service ou handler de produtos.
|
|
72
|
-
>
|
|
73
|
-
> Duas opcoes:
|
|
74
|
-
>
|
|
75
|
-
> 1. **O escopo deste TASK PLAN inclui a criacao do modulo de Produto completo** (migration, queries SQLC, repository, service, handler gRPC, proto) alem do cache. Isso aumenta significativamente o numero de tasks.
|
|
76
|
-
> 2. **O modulo de Produto sera criado em outra feature/SPEC_TECH**, e este TASK PLAN assume que ele ja existira quando as tasks forem executadas. Neste caso, incluo apenas as tasks de cache + integracao com o ProductService.
|
|
77
|
-
>
|
|
78
|
-
> Qual abordagem seguir?
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## 5. Confirmacao do Nome e Inicio
|
|
83
|
-
|
|
84
|
-
Apos as respostas acima, a proxima interacao seria:
|
|
85
|
-
|
|
86
|
-
> Obrigado! Vamos iniciar o TASK PLAN para **Cache de Cardapio em Memoria (v1)**. Podemos iniciar a definicao macro das fases?
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## Resumo da Interacao Inicial
|
|
91
|
-
|
|
92
|
-
| Etapa | Status |
|
|
93
|
-
|-------|--------|
|
|
94
|
-
| Leitura do SPEC_TECH | Concluido |
|
|
95
|
-
| Extracao do nome da feature | Concluido: `cache-de-cardapio` |
|
|
96
|
-
| Analise do codebase | Concluido |
|
|
97
|
-
| Identificacao de User Stories/PRD ausentes | Concluido — pergunta formulada |
|
|
98
|
-
| Identificacao de dependencia critica (modulo Produto) | Concluido — pergunta formulada |
|
|
99
|
-
| Confirmacao do nome e inicio das fases | Aguardando respostas anteriores |
|
|
100
|
-
|
|
101
|
-
**Proximo passo**: Aguardar respostas do usuario para as duas perguntas acima antes de avancar para a definicao macro das fases.
|
|
1
|
+
# Resposta do Task Plan Expert — Interacao Inicial
|
|
2
|
+
|
|
3
|
+
## 1. Extração do Nome da Feature
|
|
4
|
+
|
|
5
|
+
Identifiquei o nome da feature na secao "1. Identificacao" do SPEC_TECH:
|
|
6
|
+
|
|
7
|
+
- **Feature/Projeto**: Cache de Cardapio em Memoria
|
|
8
|
+
- **Nome normalizado (kebab-case)**: `cache-de-cardapio`
|
|
9
|
+
- **Versao**: v1
|
|
10
|
+
- **Diretorio de saida**: `docs/cache-de-cardapio/v1/`
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 2. Analise Obrigatoria do Projeto (Codebase)
|
|
15
|
+
|
|
16
|
+
Antes de planejar qualquer task, explorei o codebase e identifiquei o seguinte:
|
|
17
|
+
|
|
18
|
+
### O que JA existe no projeto:
|
|
19
|
+
| Elemento | Status | Localizacao |
|
|
20
|
+
|----------|--------|-------------|
|
|
21
|
+
| Estrutura Clean Architecture (handler/service/repository) | Existe | `internal/` |
|
|
22
|
+
| Injecao de dependencia via Uber FX | Existe | `internal/infra/di/fx.go` |
|
|
23
|
+
| Config via Viper + `config.yaml` | Existe | `internal/infra/config/config.go`, `configs/config.yaml` |
|
|
24
|
+
| User module completo (handler, service, repo, tests) | Existe | `internal/handler/grpc/`, `internal/service/`, `internal/repository/` |
|
|
25
|
+
| SQLC para queries tipadas | Existe | `internal/db/sqlc/` |
|
|
26
|
+
| Migracao de usuarios | Existe | `internal/db/migrations/001_create_usuarios.sql` |
|
|
27
|
+
| Testes com testify/mock (table-driven) | Existe | `internal/service/user_service_test.go` |
|
|
28
|
+
| gRPC server com interceptors | Existe | `internal/infra/grpc/server.go` |
|
|
29
|
+
|
|
30
|
+
### O que NAO existe (precisa ser criado):
|
|
31
|
+
| Elemento | Status |
|
|
32
|
+
|----------|--------|
|
|
33
|
+
| Modulo de Produto (Product) — service, repository, handler, proto, migration, queries | **NAO existe** |
|
|
34
|
+
| Pacote de cache (`internal/infra/cache/`) | **NAO existe** |
|
|
35
|
+
| Campo `cache.ttl_seconds` no config | **NAO existe** |
|
|
36
|
+
| Tabela `produtos` no banco | **NAO existe** |
|
|
37
|
+
|
|
38
|
+
### Observacao Critica
|
|
39
|
+
|
|
40
|
+
O SPEC_TECH fala em "cache de cardapio de produtos" e menciona que o `ProductService` passara a consultar o cache antes do repository. Porem, **nao existe nenhum modulo de Produto no projeto**. Nao ha proto, migration, queries SQLC, repository, service ou handler de produtos.
|
|
41
|
+
|
|
42
|
+
Isso significa que o TASK PLAN precisara incluir tasks para criar o modulo de Produto completo OU o SPEC_TECH assume que esse modulo ja existe/sera criado em outra feature. Essa duvida sera direcionada ao usuario (veja secao 3).
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 3. Ponto de Atencao — User Stories e PRD Ausentes
|
|
47
|
+
|
|
48
|
+
O SPEC_TECH fornecido **nao contem User Stories (US-XX)** e **nao referencia nenhum PRD**.
|
|
49
|
+
|
|
50
|
+
No framework SDD, o TASK PLAN inclui uma **tabela de rastreabilidade obrigatoria** que mapeia User Stories do PRD para definicoes tecnicas do SPEC_TECH e para tasks correspondentes (Guardrail #8: "Rastreabilidade obrigatoria — toda User Story do PRD deve ter pelo menos uma task correspondente").
|
|
51
|
+
|
|
52
|
+
**Pergunta que faria ao usuario:**
|
|
53
|
+
|
|
54
|
+
> O SPEC_TECH fornecido nao contem User Stories (US-XX) e nao referencia um PRD. No framework SDD, a rastreabilidade User Stories -> Tasks e obrigatoria no TASK PLAN.
|
|
55
|
+
>
|
|
56
|
+
> Temos duas opcoes:
|
|
57
|
+
>
|
|
58
|
+
> 1. **Voce fornece o PRD ou as User Stories** relacionadas a esta feature, e eu incluo a rastreabilidade completa no TASK PLAN.
|
|
59
|
+
> 2. **Seguimos sem PRD/User Stories**, e a secao de rastreabilidade do TASK PLAN sera preenchida com "N/A — SPEC_TECH fornecido sem PRD/User Stories associadas". Neste caso, a rastreabilidade sera feita apenas entre definicoes tecnicas do SPEC e tasks.
|
|
60
|
+
>
|
|
61
|
+
> Qual opcao prefere?
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 4. Ponto de Atencao — Dependencia do Modulo de Produto
|
|
66
|
+
|
|
67
|
+
Alem da questao de User Stories, identifiquei uma dependencia critica:
|
|
68
|
+
|
|
69
|
+
**Pergunta que faria ao usuario (apos resposta da pergunta anterior):**
|
|
70
|
+
|
|
71
|
+
> O SPEC_TECH menciona que o `ProductService` passara a consultar o cache antes do repository, e que operacoes de escrita (Create, Update, Delete) invalidarao entradas do cache. Porem, **nao existe nenhum modulo de Produto no codebase atual** — nao ha proto, migration, queries, repository, service ou handler de produtos.
|
|
72
|
+
>
|
|
73
|
+
> Duas opcoes:
|
|
74
|
+
>
|
|
75
|
+
> 1. **O escopo deste TASK PLAN inclui a criacao do modulo de Produto completo** (migration, queries SQLC, repository, service, handler gRPC, proto) alem do cache. Isso aumenta significativamente o numero de tasks.
|
|
76
|
+
> 2. **O modulo de Produto sera criado em outra feature/SPEC_TECH**, e este TASK PLAN assume que ele ja existira quando as tasks forem executadas. Neste caso, incluo apenas as tasks de cache + integracao com o ProductService.
|
|
77
|
+
>
|
|
78
|
+
> Qual abordagem seguir?
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## 5. Confirmacao do Nome e Inicio
|
|
83
|
+
|
|
84
|
+
Apos as respostas acima, a proxima interacao seria:
|
|
85
|
+
|
|
86
|
+
> Obrigado! Vamos iniciar o TASK PLAN para **Cache de Cardapio em Memoria (v1)**. Podemos iniciar a definicao macro das fases?
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Resumo da Interacao Inicial
|
|
91
|
+
|
|
92
|
+
| Etapa | Status |
|
|
93
|
+
|-------|--------|
|
|
94
|
+
| Leitura do SPEC_TECH | Concluido |
|
|
95
|
+
| Extracao do nome da feature | Concluido: `cache-de-cardapio` |
|
|
96
|
+
| Analise do codebase | Concluido |
|
|
97
|
+
| Identificacao de User Stories/PRD ausentes | Concluido — pergunta formulada |
|
|
98
|
+
| Identificacao de dependencia critica (modulo Produto) | Concluido — pergunta formulada |
|
|
99
|
+
| Confirmacao do nome e inicio das fases | Aguardando respostas anteriores |
|
|
100
|
+
|
|
101
|
+
**Proximo passo**: Aguardar respostas do usuario para as duas perguntas acima antes de avancar para a definicao macro das fases.
|