jarvis-ai-framework 5.2.0 → 5.6.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.
Files changed (53) hide show
  1. package/AGENTS.md +1 -0
  2. package/README.md +14 -1
  3. package/bin/commands/init.js +189 -2
  4. package/bin/commands/tokens.js +9 -3
  5. package/bin/lib/cli/program.js +18 -2
  6. package/bin/lib/config/constants.js +5 -0
  7. package/bin/lib/core/docs-migrate.js +259 -0
  8. package/bin/lib/core/env-upgrade.js +97 -0
  9. package/bin/lib/core/profile-filter.js +15 -3
  10. package/bin/lib/core/stale-skills.js +63 -0
  11. package/bin/lib/core/sync-engine.js +5 -3
  12. package/bin/lib/core/token-report.js +1 -0
  13. package/bin/lib/core/workspace-mode.js +57 -0
  14. package/bin/lib/docs/storage/build-index.js +2 -1
  15. package/bin/lib/vcs/api.js +13 -1
  16. package/bin/lib/vcs/create-issue.js +17 -3
  17. package/package.json +2 -2
  18. package/rules/AGENTS.md +4 -1
  19. package/rules/artifact-style-rules.md +55 -0
  20. package/rules/engineering/eng-rules.md +12 -1
  21. package/rules/engineering/eng.integrations-rules.md +1 -1
  22. package/rules/product/prod-rules.md +6 -3
  23. package/rules/product/prod.spec-rules.md +2 -2
  24. package/rules-on-demand/engineering/eng.plan-rules.md +1 -1
  25. package/rules-on-demand/engineering/eng.pr-rules.md +6 -5
  26. package/rules-on-demand/engineering/eng.pre-pr-rules.md +2 -2
  27. package/rules-on-demand/engineering/eng.start-rules.md +2 -2
  28. package/rules-on-demand/engineering/eng.transitions-rules.md +67 -0
  29. package/rules-on-demand/engineering/eng.work-rules.md +9 -3
  30. package/skills/eng-global-pr/SKILL.md +3 -1
  31. package/skills/eng-global-task-comment/SKILL.md +2 -0
  32. package/skills/jarvis-create-specialization/SKILL.md +1 -1
  33. package/skills/jarvis-docs-central/SKILL.md +1 -1
  34. package/skills/jarvis-init/SKILL.md +64 -23
  35. package/skills/jarvis-init/assets/passo-adicionar-stacks.md +1 -1
  36. package/skills/jarvis-init/assets/setup-guide.md +3 -3
  37. package/skills/jarvis-report-issue/SKILL.md +64 -9
  38. package/templates/ENV-template.md +17 -3
  39. package/templates/engineering/architecture-template.md +2 -1
  40. package/templates/engineering/daily-template.md +1 -1
  41. package/templates/engineering/plan-template.md +2 -0
  42. package/templates/product/prod-epic-template.md +1 -1
  43. package/templates/product/prod-frd-template.md +1 -1
  44. package/templates/product/prod-issue-template.md +1 -1
  45. package/templates/product/prod-prd-template.md +1 -1
  46. package/workflows/engineering/eng.plan.md +3 -2
  47. package/workflows/engineering/eng.pr.md +60 -16
  48. package/workflows/engineering/eng.pre-pr.md +21 -8
  49. package/workflows/engineering/eng.spec-consolidate.md +7 -1
  50. package/workflows/engineering/eng.start.md +11 -3
  51. package/workflows/engineering/eng.work.md +23 -6
  52. package/workflows/product/prod.spec.discovery.md +2 -2
  53. package/workflows/warm-up.md +2 -2
@@ -11,20 +11,24 @@
11
11
  # Workspace = a pasta que contém $IDE/. Não é o nome de um repo.
12
12
  # Vazio: o CLI usa o nome dessa pasta. Preencha só se quiser outro slug.
13
13
  #
14
- # meu-app/ ← um git aqui
14
+ # meu-app/ ← a raiz é um repositório (WORKSPACE_MODE=project)
15
15
  # ├── .windsurf/ENV.md
16
16
  # ├── .jarvis/sessions/
17
17
  # └── .git/
18
18
  #
19
- # workspace-squad/ ← vários gits nas subpastas
20
- # ├── .windsurf/ENV.md
19
+ # workspace-squad/ ← a raiz NÃO é repositório; 1 ou mais subpastas com .git
20
+ # ├── .windsurf/ENV.md (WORKSPACE_MODE=workspace)
21
21
  # ├── .jarvis/sessions/
22
22
  # ├── repo-api-1/
23
23
  # └── repo-frontend/
24
24
  #
25
25
  # WORKSPACE_REPOS = allowlist opcional. Vazio = todas as subpastas com .git/.
26
+ # WORKSPACE_MODE = workspace | project (detectado pelo /jarvis-init e pelo upgrade).
27
+ # workspace: a raiz não tem .git e há 1+ subpastas com .git/ (não depende do número de repos).
28
+ # project: a raiz tem .git. O git já delimita o que é código.
26
29
  WORKSPACE=
27
30
  WORKSPACE_REPOS=
31
+ WORKSPACE_MODE=
28
32
  USER=
29
33
 
30
34
  # Limite de autonomia da IA neste workspace (60–100). 80 = a IA executa até 80%.
@@ -71,12 +75,22 @@ PROD_FLOWS=.$IDE/$FLOWS_FOLDER
71
75
  PROD_TEMPLATES=.$IDE/$TEMPLATES_FOLDER/$PROD_FOLDER_NAME
72
76
  PROD_DOCS=$JARVIS_DOCS/$PROD_FOLDER_NAME
73
77
 
78
+ # Discoveries (rascunhos de ideia, anteriores ao PRD) — fora de product/ (em geral não precisa mexer)
79
+ DISCOVERIES_FOLDER_NAME=discoveries
80
+ DISCOVERIES_DOCS=$JARVIS_DOCS/$DISCOVERIES_FOLDER_NAME
81
+
74
82
  # Modo de condução dos comandos de produto (prod.*) e do eng.create-ard.
75
83
  # product-led = para PMs: fluxo direto, sem explicações extras (padrão se vazio)
76
84
  # developer-guided = para devs e futuros PMs: uma pergunta por vez, explica cada termo e etapa
77
85
  # Perguntado sempre pelo /jarvis-init. Para trocar, rode o /jarvis-init ou edite aqui.
78
86
  PROD_MODE=
79
87
 
88
+ # Estilo dos artefatos gerados (commits, PRs, comentários e documentos).
89
+ # ai-generated = como hoje: metadados, links de rastreabilidade e padrões da ferramenta (padrão)
90
+ # human-generated = nada publicado leva marca de IA; todo documento gerado oferece a versão {nome}.public.md
91
+ # Perguntado pelo /jarvis-init. Trocou à mão? Rode /jarvis-init upgrade (copia ou remove a rule do estilo).
92
+ ARTIFACT_STYLE=ai-generated
93
+
80
94
 
81
95
  # --- Especializações por área -------------------------------------------------
82
96
  # Skills especializados que o Jarvis carrega junto com o skill base de cada área.
@@ -7,7 +7,8 @@
7
7
  > **Issue:** {JIRA_ISSUE_KEY}
8
8
  > **Branch base:** {main | dev | outra — perguntada no eng.start; destino do PR no eng.pr}
9
9
  > **Status:** 🔄 Em Revisão | ✅ Aprovado | ❌ Rejeitado
10
- > **Advisor:** {modelo escolhido no início do eng.start} | não utilizado
10
+ > **Advisor:** {modelo escolhido no início do eng.start} | não utilizado
11
+ > **Questões em aberto:** tratar no architecture.md (como hoje) | uma a uma, assim que surgirem (só sem Advisor)
11
12
 
12
13
  ---
13
14
 
@@ -9,7 +9,7 @@ task_key: {TASK-123}
9
9
  # URL do card no task manager (padrão da eng.integrations-rules.md). Vazio no modo freelance.
10
10
  card_url: {URL}
11
11
 
12
- # Pull/Merge Request aberto: número e URL. O daily.md só existe com PR aberto.
12
+ # Pull/Merge Request aberto: número e URL. Vazio se o PR ainda não foi aberto (o daily.md é gerado mesmo assim).
13
13
  pr: {#n URL}
14
14
 
15
15
  # Branch de trabalho e branch base (Branch base: do architecture.md).
@@ -3,6 +3,8 @@
3
3
  > 📋 **Plano de Execução** | Jira: [{TASK_MANAGER_KEY}]({TASK_MANAGER_URL_BASE}/browse/{TASK_MANAGER_KEY})
4
4
  >
5
5
  > Se você está trabalhando nesta feature, **atualize este arquivo** conforme progride.
6
+ >
7
+ > **Execução:** {fase a fase | todas de uma vez} · **Commits:** {um por fase | um só ao final} · **Depois do work:** {sugerir /eng.pre-pr | rodar /eng.pre-pr | direto para /eng.pr | parar} _(preenchido pelo `eng.work`, Fase 1.3)_
6
8
 
7
9
  ---
8
10
 
@@ -29,7 +29,7 @@ related_prd: {path PRD relacionado, exemplo /master-docs/product/prd-001.md}
29
29
  related_frd: {path FRD relacionado, exemplo /master-docs/product/frds/frd-001.md}
30
30
 
31
31
  # Discovery de origem (o rascunho da ideia, anterior ao PRD). Remova a linha se não houver.
32
- related_discovery: {path do discovery de origem, exemplo $PROD_DOCS/discoveries/discovery-001-nome.md. Se não existir, ignore essa linha}
32
+ related_discovery: {path do discovery de origem, exemplo $DISCOVERIES_DOCS/discovery-001-nome.md. Se não existir, ignore essa linha}
33
33
 
34
34
  # Data de criação (YYYY-MM-DD).
35
35
  created_at: {YYYY-MM-DD}
@@ -29,7 +29,7 @@ updated_at: {YYYY-MM-DD}
29
29
  related_prd: {Lista de PRDs que são relacionadas a esse PRD, se forem vários, utilize sintaxe compatível com YAML}
30
30
 
31
31
  # Discovery de origem (o rascunho da ideia, anterior ao PRD). Remova a linha se não houver.
32
- related_discovery: {path do discovery de origem, exemplo $PROD_DOCS/discoveries/discovery-001-nome.md. Se não existir, ignore essa linha}
32
+ related_discovery: {path do discovery de origem, exemplo $DISCOVERIES_DOCS/discovery-001-nome.md. Se não existir, ignore essa linha}
33
33
 
34
34
  # Data de criação (YYYY-MM-DD).
35
35
  created_at: {YYYY-MM-DD}
@@ -24,7 +24,7 @@ related_epic: {nome do Epico relacionado, exemplo /master-docs/product/epics/epi
24
24
  related_frd: {path FRD relacionado, exemplo /master-docs/product/frds/frd-001.md}
25
25
 
26
26
  # Discovery de origem (o rascunho da ideia, anterior ao PRD). Remova a linha se não houver.
27
- related_discovery: {path do discovery de origem, exemplo $PROD_DOCS/discoveries/discovery-001-nome.md. Se não existir, ignore essa linha}
27
+ related_discovery: {path do discovery de origem, exemplo $DISCOVERIES_DOCS/discovery-001-nome.md. Se não existir, ignore essa linha}
28
28
 
29
29
  # Data de criação (YYYY-MM-DD).
30
30
  created_at: {YYYY-MM-DD}
@@ -35,7 +35,7 @@ related_prd: {Lista de PRDs que são relacionadas a esse PRD, se forem vários,
35
35
  related_frd: {Lista de FRDs que são relacionadas a esse PRD, se forem vários, utilize sintaxe compatível com YAML}
36
36
 
37
37
  # Discovery de origem (o rascunho da ideia, anterior ao PRD). Remova a linha se não houver.
38
- related_discovery: {path do discovery de origem, exemplo $PROD_DOCS/discoveries/discovery-001-nome.md. Se não existir, ignore essa linha}
38
+ related_discovery: {path do discovery de origem, exemplo $DISCOVERIES_DOCS/discovery-001-nome.md. Se não existir, ignore essa linha}
39
39
 
40
40
  # Data de criação (YYYY-MM-DD).
41
41
  created_at: {YYYY-MM-DD}
@@ -14,6 +14,7 @@ model_justification: Planejamento detalhado requer decomposição de tarefas com
14
14
  Este workflow cria um **plano de execução detalhado e faseado** para implementar a feature de forma incremental.
15
15
 
16
16
  > 📋 **Rules**: `$IDE/rules-on-demand/engineering/eng.plan-rules.md` — **antes de começar, leia esse arquivo e siga-o**: ele não é carregado automaticamente no início da sessão.
17
+ > 🔀 **Transições**: `$IDE/rules-on-demand/engineering/eng.transitions-rules.md` — perguntas de início e de fim deste comando (a opção padrão mantém o fluxo de sempre).
17
18
 
18
19
  ---
19
20
 
@@ -164,10 +165,10 @@ CONTEXT_PROFILE:
164
165
 
165
166
  ### Fase 4: Validação
166
167
 
167
- 1. **Apresentar** o plano ao humano
168
+ 1. **Apresentar** o plano ao humano, com o consolidado de links da sessão (regra 5 de `eng.transitions-rules.md`: `context.md`, `architecture.md` e o `plan.md` novo)
168
169
  2. **Discutir** ajustes necessários
169
170
  3. **Atualizar** `architecture.md` se houver mudanças arquiteturais
170
- 4. **Confirmar** antes de prosseguir
171
+ 4. **Confirmar** antes de prosseguir, com a pergunta de transição (`eng.transitions-rules.md`): **"O que fazer com o plano?"** (depois da mensagem em markdown com o consolidado de links) → **Aprovar e implementar agora** (chame o `/eng.work {TASK_MANAGER_KEY}`, ou mostre o comando) / **Aprovar e seguir manualmente (como hoje)** (o comando termina e o usuário chama o `/eng.work` quando quiser) / **Ajustar o plano** (o usuário diz o que mudar; atualize o `plan.md` e mostre de novo). As duas aprovações valem como a aprovação explícita do plano
171
172
 
172
173
  ---
173
174
 
@@ -15,6 +15,7 @@ Este comando cria a **branch, commita as alterações e abre um Merge Request**.
15
15
 
16
16
  > 📋 **Rules**: `$IDE/rules-on-demand/engineering/eng.pr-rules.md` — **antes de começar, leia esse arquivo e siga-o**: ele não é carregado automaticamente no início da sessão.
17
17
  > 📤 **Template**: `$IDE/templates/engineering/PR-template.md`
18
+ > 🔀 **Transições**: `$IDE/rules-on-demand/engineering/eng.transitions-rules.md` — perguntas de início e de fim deste comando (a opção padrão mantém o fluxo de sempre).
18
19
 
19
20
  ## Skills recomendados
20
21
 
@@ -43,8 +44,8 @@ Este comando cria a **branch, commita as alterações e abre um Merge Request**.
43
44
  | Fase 1 › 1.4 Executar Testes Automatizados (Opcional) | `/eng-qa` + `QA_SPECIALIZATIONS` | Passo opcional, recomendado em mudanças significativas |
44
45
  | Skills recomendados | `/eng-global-docs-write` | Se houver necessidade de atualizar documentação junto do PR |
45
46
  | Agentes recomendados (opcional) | `eng.qa.test-planner` (agente) | Se houver dúvidas sobre cobertura de testes ou mudanças significativas |
46
- | Fase 4 › 4.4 Criar MR/PR via adapter | `jarvis vcs create-merge` (CLI do Jarvis) | Só se o usuário responder **Sim** na Fase 4.3: abre o MR/PR conforme `VERSION_CONTROL` ou o host do `origin` |
47
- | Fase 5 › 5.2 Link do MR | `/eng-global-task-comment` | Depois de o MR ser criado (só com o Sim da 4.3): um único comentário no card com o link do MR, seguindo o Passo 6 do skill `eng-global-pr` (freelance pula) |
47
+ | Fase 4 › 4.4 Criar MR/PR via adapter | `jarvis vcs create-merge` (CLI do Jarvis) | Só se a escolha da Fase 0 for publicar (4.3): abre o MR/PR conforme `VERSION_CONTROL` ou o host do `origin` |
48
+ | Fase 5 › 5.2 Link do MR | `/eng-global-task-comment` | Depois de o MR ser criado (só ao publicar, 4.3): um único comentário no card com o link do MR, seguindo o Passo 6 do skill `eng-global-pr` (freelance pula) |
48
49
 
49
50
  ---
50
51
 
@@ -66,6 +67,13 @@ Ler `TASK_MANAGER` do `$IDE/ENV.md`. Seguir `$IDE/rules/engineering/eng.integrat
66
67
 
67
68
  ---
68
69
 
70
+ ## Fase 0: O que fazer com o PR (`eng.transitions-rules.md`)
71
+
72
+ Pergunte com `AskUserQuestion`: **"O que fazer com o PR?"**
73
+ - **Revisar o texto e publicar (como hoje):** gera o `pull-request.md`, você aprova ou ajusta (4.2) e, com a aprovação, faz o push e abre o PR (4.4). A aprovação do texto é a confirmação da publicação.
74
+ - **Publicar sem revisar o texto:** gera o `pull-request.md` (4.1), faz o push e abre o PR (4.4) sem a revisão (4.2); você ajusta o texto direto no PR.
75
+ - **Só gerar os arquivos:** gera o `pull-request.md` (4.1), mostra para revisão (4.2) e não faz push nem abre o PR; você abre à mão. A Fase 7 gera o `daily.md` mesmo assim.
76
+
69
77
  ## Fase 1: Validação Pré-PR
70
78
 
71
79
  ### 1.1 Executar Testes Unitários
@@ -156,7 +164,27 @@ Refs: {TASK_MANAGER_KEY}"
156
164
 
157
165
  ## Fase 3: Push
158
166
 
159
- > ⚠️ O push só acontece **depois do Sim** da Fase 4.3. Esta fase descreve o comando; ele roda dentro da publicação.
167
+ > ⚠️ O push só acontece **depois da escolha de publicar** (Fase 0 e 4.3). Esta fase descreve o comando; ele roda dentro da publicação.
168
+
169
+ ### 3.0 Conferir marcas de IA (só com `ARTIFACT_STYLE=human-generated`)
170
+
171
+ Antes do push, siga `$IDE/rules/artifact-style-rules.md`: nada publicado leva marca de IA ou da IDE.
172
+
173
+ ```bash
174
+ TERMOS='co-authored-by|generated with|claude|anthropic|chatgpt|openai|copilot|\bIA\b|\bAI\b|sub-?agent|advisor'
175
+ RANGE=$(git rev-parse --abbrev-ref @{u} >/dev/null 2>&1 && echo '@{u}..HEAD' || echo '{BRANCH_BASE}..HEAD')
176
+ git log --format='%h %B' $RANGE | grep -inE "$TERMOS"
177
+ grep -inE "$TERMOS" $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/pull-request.md
178
+ ```
179
+
180
+ Revise cada ocorrência antes de remover: a busca é larga e pode achar texto legítimo (ex.: `ai-generated`, um link para o PR).
181
+
182
+ - **Nada encontrado (ou só falsos positivos):** siga para o push.
183
+ - **No `pull-request.md`:** remova os trechos (o texto aprovado na 4.2 muda só nisso).
184
+ - **Nas mensagens de commit:** reescreva **só os commits de `$RANGE`** (ainda não enviados), sem modo interativo, por exemplo, com `{ref}` = o início de `$RANGE` (`@{u}` ou `{BRANCH_BASE}`), `git rebase {ref} --exec 'M=$(git rev-parse --git-dir)/MSG_LIMPA; git log -1 --format=%B | sed -E "/^Co-Authored-By:/Id" > "$M" && git commit -q --amend -F "$M"'`, ajustando o `sed` aos termos achados. Depois, rode a busca de novo.
185
+ - **Commit já enviado com marca:** não reescreva; avise o usuário e pare.
186
+
187
+ Informe no resumo o que foi removido. Com `ai-generated` (ou vazio), pule este passo.
160
188
 
161
189
  ### 3.1 Enviar para Remote
162
190
 
@@ -201,18 +229,18 @@ Preencher com a tarefa. Link do card:
201
229
 
202
230
  `{TASK_MANAGER_KEY}` = `{TASK_MANAGER_KEY}`.
203
231
 
204
- > ⚠️ Não mencione AI, Claude ou assistentes no MR/PR.
232
+ > ⚠️ Não mencione AI, Claude ou assistentes no MR/PR. Com `ARTIFACT_STYLE=human-generated`, também sem "Generated with …" nem link da ferramenta (`rules/artifact-style-rules.md`).
205
233
 
206
234
  ### 4.2 Revisão do texto
207
235
 
208
- Mostre o `pull-request.md` (título e resumo das seções) e pergunte com `AskUserQuestion`: `[Aprovar]` / `[Ajustar]`. Ajuste até a aprovação.
236
+ Mostre o consolidado de links da sessão (regra 5 de `eng.transitions-rules.md`, com o `pull-request.md` novo), o título e o resumo das seções e pergunte com `AskUserQuestion` (depois da mensagem com o consolidado de links): `[Aprovar]` / `[Ajustar]`. Ajuste até a aprovação. (Pulada com "Publicar sem revisar o texto" na Fase 0.)
209
237
 
210
- ### 4.3 Publicar? (Sim / Não)
238
+ ### 4.3 Publicar ou não (sem pergunta nova)
211
239
 
212
- Pergunte com `AskUserQuestion` (**Sim / Não**): **"Publicar o PR agora?"**
240
+ A decisão já veio da Fase 0; não pergunte de novo. Aprovado o texto na 4.2, siga a escolha:
213
241
 
214
- - **Não:** nada é enviado. O `pull-request.md` fica na sessão para você publicar quando quiser (à mão ou rodando o `/eng.pr` de novo). Pule para a Fase 7 (sem `daily.md`, que só existe com PR aberto), com a mensagem "PR não publicado".
215
- - **Sim:** faça o push (Fase 3) e crie o MR/PR (4.4).
242
+ - **Só gerar os arquivos:** nada é enviado. O `pull-request.md` fica na sessão para você publicar quando quiser (à mão ou rodando o `/eng.pr` de novo). Pule para a Fase 7, que gera o `daily.md` mesmo assim (para não passar batido quando você abrir o PR à mão), com a mensagem "PR não publicado".
243
+ - **Revisar o texto e publicar** ou **Publicar sem revisar o texto:** faça o push (Fase 3) e crie o MR/PR (4.4).
216
244
 
217
245
  ### 4.4 Criar MR/PR via adapter
218
246
 
@@ -327,7 +355,7 @@ fi
327
355
 
328
356
  Regras em `$IDE/rules-on-demand/engineering/eng.pr-rules.md` (seção "daily.md"); template em `$IDE/templates/engineering/daily-template.md`. Arquivo: `$SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/daily.md`, **só na sessão, nunca publicado**.
329
357
 
330
- 1. **Há PR aberto?** Vale o criado na 4.4 ou o PR da branch que já existe e está aberto (CLI/adapter do vendor, ex.: `gh pr view --json state,number,url`). Sem PR aberto (Não na 4.3 e nenhum PR existente), **não gere** o `daily.md` e siga para a 7.3. Se não for possível confirmar, pergunte.
358
+ 1. **Gere sempre**, com ou sem PR publicado: quem abre o PR à mão ("Só gerar os arquivos" na Fase 0) também precisa do registro, e é aí que ele costuma passar batido. Se houver PR (o criado na 4.4 ou o PR já aberto da branch, via CLI/adapter do vendor, ex.: `gh pr view --json state,number,url`), preencha o campo `pr`; sem PR, deixe-o vazio e atualize quando o PR for aberto.
331
359
  2. **Data:** pergunte com `AskUserQuestion`: **"Registrar o esforço com qual data?"** → `Hoje ({AAAA-MM-DD})` | `Outra data` (o usuário digita `AAAA-MM-DD`).
332
360
  3. **Dias trabalhados** (só se o período entre a data do `.timestamp_start` e a data do registro tiver mais de um dia), uma pergunta por vez:
333
361
  - se o período tiver sábado ou domingo: **"Você trabalhou em {datas de sábado/domingo}?"** (Sim / Não; com várias datas, pode responder por data);
@@ -348,7 +376,7 @@ Regras em `$IDE/rules-on-demand/engineering/eng.pr-rules.md` (seção "daily.md"
348
376
  - **Descrição:** um parágrafo narrativo (contexto técnico, trabalho realizado, decisões), mais o *post mortem* quando couber (problema e causa raiz, investigação, solução/direcionamento), com detalhe suficiente para embasar questionamentos futuros.
349
377
  - **Timesheet:** **uma única linha** (`{TASK_KEY} — {resumo}`).
350
378
  - Sem e-mails, tokens nem valores de variáveis.
351
- 7. **Revisão conjunta:** mostre a descrição e a linha de timesheet **juntas** e pergunte com `AskUserQuestion`: `[Aprovar]` / `[Ajustar]`. Com Ajustar, aplique os ajustes pontuais **nas duas** e mostre de novo, até aprovar.
379
+ 7. **Revisão conjunta:** mostre a descrição e a linha de timesheet **juntas** e pergunte com `AskUserQuestion` (depois da mensagem com o consolidado de links, com o `daily.md` novo): `[Aprovar]` / `[Ajustar]`. Com Ajustar, aplique os ajustes pontuais **nas duas** e mostre de novo, até aprovar.
352
380
 
353
381
  ### 7.3 Mensagem Final
354
382
 
@@ -367,13 +395,19 @@ Regras em `$IDE/rules-on-demand/engineering/eng.pr-rules.md` (seção "daily.md"
367
395
 
368
396
  {LEAD_TIME_MSG}
369
397
 
370
- 📝 Daily: $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/daily.md
398
+ 📄 Arquivos da sessão (consolidado acumulado, regra 5 de `eng.transitions-rules.md`; só os que existem):
399
+ - [context.md]({caminho relativo}) ({nota de estado})
400
+ - [architecture.md]({caminho relativo}) ({nota de estado})
401
+ - [plan.md]({caminho relativo}) ({nota de estado})
402
+ - [gate-checklist.md]({caminho relativo}) ({nota de estado}) ← se o `eng.pre-pr` rodou
403
+ - [pull-request.md]({caminho relativo}) (novo; {publicado como PR #N | gerado, PR não publicado})
404
+ - [daily.md]({caminho relativo}) (novo; {aprovado, com timesheet})
371
405
  🕒 Timesheet: {LINHA_DE_TIMESHEET_APROVADA}
372
406
 
373
407
  📌 Próximos passos:
374
- 1. /eng.spec-consolidate {TASK_MANAGER_KEY} → registrar no Central docs o que esta entrega implementou
375
- 2. Aguardar revisão do time e processar os comentários do code review
376
- 3. Merge após aprovação
408
+ 1. Aguardar revisão do time e processar os comentários do code review
409
+ 2. Merge após aprovação
410
+ 3. /eng.spec-consolidate {TASK_MANAGER_KEY} depois do merge → registrar no Central docs o que esta entrega implementou
377
411
 
378
412
  🗂️ A sessão $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/ não é apagada (o /eng.spec-consolidate precisa dela).
379
413
  Remova à mão quando quiser.
@@ -383,6 +417,16 @@ Regras em `$IDE/rules-on-demand/engineering/eng.pr-rules.md` (seção "daily.md"
383
417
  - Jira: {TASK_MANAGER_URL_BASE}/browse/{TASK_MANAGER_KEY}
384
418
  ```
385
419
 
420
+ ### 7.4 Versões humanizadas (só com `ARTIFACT_STYLE=human-generated`)
421
+
422
+ Pergunte uma vez, com `AskUserQuestion` de várias perguntas em abas (`rules/artifact-style-rules.md`, regra 2), uma aba por documento da sessão que existir: `architecture.md`, `plan.md`, `gate-checklist.md` e `daily.md` (o `pull-request.md` não entra: já é público). Cada aba: **"Gerar a versão humanizada de {documento}?"** → **Não (como hoje)** / **Sim**. Com Sim, grave `{nome}.public.md` ao lado do original, seguindo o checklist da regra, e mostre o link. Com outro `ARTIFACT_STYLE`, pule esta etapa.
423
+
424
+ ### 7.5 PR mergeado? (`eng.transitions-rules.md`)
425
+
426
+ Pergunte com `AskUserQuestion`: **"O PR já foi aprovado e mergeado?"**
427
+ - **Ainda não (como hoje):** encerre com a mensagem acima.
428
+ - **Sim, rodar o `/eng.spec-consolidate`:** chame o `/eng.spec-consolidate {TASK_MANAGER_KEY}` (ou mostre o comando).
429
+
386
430
  ## Regras Importantes
387
431
 
388
432
  ### ⛔ NÃO FAÇA
@@ -401,7 +445,7 @@ Regras em `$IDE/rules-on-demand/engineering/eng.pr-rules.md` (seção "daily.md"
401
445
  - ✅ Criar branch no padrão `{TASK_MANAGER_KEY}-{titulo}`
402
446
  - ✅ Preencher template do MR completamente
403
447
  - ✅ Mover card para "In Review"
404
- - ✅ Gerar o `pull-request.md` na sessão e só publicar com o **Sim** (Fase 4.3)
448
+ - ✅ Gerar o `pull-request.md` na sessão e só publicar com a escolha de publicar da Fase 0 (4.3)
405
449
  - ✅ Com PR aberto, registrar o esforço no `daily.md` (7.2), com revisão conjunta da descrição e do timesheet
406
450
  - ✅ **Nunca apagar a sessão:** o `/eng.spec-consolidate` precisa dela
407
451
 
@@ -15,6 +15,7 @@ Antes de abrir o PR/MR, este comando **revê a branch atrás de possíveis lacun
15
15
  > ⚠️ **Só revisa.** O `eng.pre-pr` não corrige código, não escreve testes, não atualiza documentação e não publica nada no Central docs. Ele aponta; quem decide e ajusta é você (ou o `eng.work`, se pedir).
16
16
 
17
17
  > 📋 **Rules**: `$IDE/rules-on-demand/engineering/eng.pre-pr-rules.md` — **antes de começar, leia esse arquivo e siga-o**: ele não é carregado automaticamente no início da sessão.
18
+ > 🔀 **Transições**: `$IDE/rules-on-demand/engineering/eng.transitions-rules.md` — perguntas de início e de fim deste comando (a opção padrão mantém o fluxo de sempre).
18
19
 
19
20
  ## Skills recomendados
20
21
 
@@ -51,7 +52,7 @@ Antes de abrir o PR/MR, este comando **revê a branch atrás de possíveis lacun
51
52
  | Gates › item 8 | `eng.ux-designer.agent` (agente) | Se a branch introduzir nova feature de UI ou alterar fluxo de usuário |
52
53
  | Gates › item 9 | `eng.docs-writer` (agente) | Sempre — apontar documentação do projeto desatualizada (sem editar) |
53
54
  | Gates › item 10 | Nenhuma — checklist inline | Se a branch tocar em auth, sessions, inputs de usuário, CORS, CSP, permissões ou adicionar endpoints públicos |
54
- | Publicação do relatório | `/eng-global-task-comment` | Só se o usuário responder **Sim** no fim: o `gate-checklist.md` com as decisões vira um comentário na issue/card (freelance pula) |
55
+ | Publicação do relatório | `/eng-global-task-comment` | Só se o usuário escolher um dos **Sim** no fim: o resumo ou o `gate-checklist.md` completo, com as decisões, vira um comentário na issue/card (freelance pula, sem perguntar) |
55
56
 
56
57
  ## Regras de Execução
57
58
 
@@ -90,7 +91,7 @@ Grave em `$SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/gate-checklist.md`:
90
91
 
91
92
  | # | Lacuna | Onde | Por que importa | Sugestão | Severidade | Decisão |
92
93
  |---|---|---|---|---|---|---|
93
- | 1 | {o que falta ou está errado} | `{arquivo:linha}` | {impacto, em linguagem simples} | {como resolver} | 🔴 Bloqueador / 🟡 Importante / ⚪ Menor | {Ajustar \| Não ajustar: motivo} |
94
+ | 1 | {o que falta ou está errado} | `{arquivo:linha}` | {impacto, em linguagem simples} | {como resolver} | 🔴 Bloqueador / 🟡 Importante / ⚪ Menor | {Corrigir \| Aceitar: motivo} |
94
95
 
95
96
  (uma tabela por área; área sem lacuna: "Nenhuma lacuna encontrada.")
96
97
 
@@ -107,9 +108,21 @@ A coluna **Decisão** nasce vazia: quem preenche é o usuário.
107
108
 
108
109
  ## Fechamento
109
110
 
110
- 1. Mostre o semáforo, o resumo e a lista de lacunas por severidade, com o caminho do `gate-checklist.md`.
111
- 2. Peça as decisões: para cada lacuna 🔴 e 🟡, "Ajustar" ou "Não ajustar" (com o motivo). Use `AskUserQuestion` por lacuna quando houver poucas; com muitas, deixe a pessoa responder em texto ou editar o arquivo. Grave as decisões na coluna **Decisão**.
112
- 3. Pergunte com `AskUserQuestion` (**Sim / Não**, sempre, nunca publicar sem a resposta): **"Publicar o gate-checklist.md (com as decisões) como comentário na issue/card?"**
113
- - **Sim** (e `TASK_MANAGER` preenchido): `/eng-global-task-comment {TASK_MANAGER_KEY}` com o conteúdo do arquivo.
114
- - **Não**, ou modo freelance: fica só na sessão.
115
- 4. Próximo passo: ajustar o que foi marcado "Ajustar" (à mão ou com o `/eng.work`) e rodar o `/eng.pr`, que usa o PR Brief deste relatório.
111
+ 1. Mostre o semáforo, o resumo e a lista de lacunas por severidade, com o consolidado de links da sessão (regra 5 de `eng.transitions-rules.md`: tudo o que já existe, com o `gate-checklist.md` novo).
112
+ 2. Peça as decisões com `AskUserQuestion`, depois da mensagem em markdown do passo 1 (com o link clicável): **"O que fazer com as {n} lacunas encontradas ({a} 🔴 bloqueadoras, {b} 🟡 importantes)? Relatório: gate-checklist.md."**
113
+ - **Corrigir todas antes do PR:** marca as {n} como "Corrigir"; você corrige à mão ou com o `/eng.work`.
114
+ - **Corrigir só as bloqueadoras 🔴:** marca as {a} 🔴 como "Corrigir"; as 🟡 ficam "Aceitar", com um motivo só, pedido uma vez.
115
+ - **Decidir uma a uma:** mostra cada lacuna 🔴 e 🟡 e você escolhe "Corrigir" ou "Aceitar" (com o motivo), com `AskUserQuestion` por lacuna.
116
+ - **Só gerar o relatório (vou analisar com calma):** não registra decisão agora; a coluna **Decisão** fica vazia, o `gate-checklist.md` fica na sessão para você analisar e o comando termina sem as perguntas 3 e 4. Rode o `/eng.pre-pr` de novo, ou preencha o arquivo à mão, quando decidir.
117
+
118
+ Grave as decisões na coluna **Decisão** como `Corrigir` ou `Aceitar: motivo`.
119
+ 3. **Modo freelance (`TASK_MANAGER` vazio):** não pergunte; o relatório fica só na sessão. **Com board**, pergunte com `AskUserQuestion` (nunca publique sem a resposta): **"Registrar o resultado do `/eng.pre-pr` como comentário no card {TASK_MANAGER_KEY}?"**
120
+ - **Não, manter só na sessão (como hoje):** nada é enviado ao card.
121
+ - **Sim, só o resumo:** `/eng-global-task-comment {TASK_MANAGER_KEY}` com o semáforo, o resumo e as lacunas 🔴 com a decisão de cada uma.
122
+ - **Sim, o relatório completo:** `/eng-global-task-comment {TASK_MANAGER_KEY}` com o conteúdo do `gate-checklist.md`.
123
+ 4. Próximo passo: corrigir o que foi marcado "Corrigir" (à mão ou com o `/eng.work`) e rodar o `/eng.pr`, que usa o PR Brief deste relatório. Antes, escreva uma mensagem em markdown com o consolidado de links da sessão (regra 5) e o resumo; depois pergunte com `AskUserQuestion` (`eng.transitions-rules.md`):
124
+ - **Com {n} lacunas marcadas "Corrigir"** — **"O `/eng.pre-pr` encontrou {n} lacunas a corrigir ({a} 🔴, {b} 🟡). Leia o gate-checklist.md com calma e responda quando decidir. Como seguir?"**
125
+ - **Corrigir as lacunas agora:** chame o `/eng.work {TASK_MANAGER_KEY}` para as {n} lacunas (ou mostre o comando).
126
+ - **Parar aqui para corrigir à mão (como hoje):** o comando termina.
127
+ - **Abrir o PR assim mesmo:** chame o `/eng.pr {TASK_MANAGER_KEY}`; as {n} pendências seguem registradas no PR Brief.
128
+ - **Sem lacunas a corrigir** — **"Relatório sem lacunas a corrigir (gate-checklist.md). Como seguir?"**: **Abrir o PR agora** (chame o `/eng.pr {TASK_MANAGER_KEY}`) / **Parar aqui (como hoje)**.
@@ -10,7 +10,9 @@ model_justification: Consolidar exige ler e cruzar muitas fontes (documentos, de
10
10
 
11
11
  # Consolidar no Central docs
12
12
 
13
- Este comando registra no **Central docs** o que a entrega **de fato implementou**. Ele roda **logo depois do PR aberto** (`/eng.pr`) e gera dois documentos completos e autossuficientes:
13
+ > 🔀 **Consolidado de links**: na mensagem final (Passo 7), siga a regra 5 de `$IDE/rules-on-demand/engineering/eng.transitions-rules.md`: liste, como links clicáveis, todos os arquivos da sessão que já existem.
14
+
15
+ Este comando registra no **Central docs** o que a entrega **de fato implementou**. Ele roda **depois do merge do PR** (o `/eng.pr` pergunta no fim se o PR já foi mergeado e oferece chamá-lo) e gera dois documentos completos e autossuficientes:
14
16
  - o **documento da funcionalidade** (`feature-{slug}.md`), com o estado atual, novo ou atualizado;
15
17
  - o **registro da entrega** (`delivery-{AAAA-MM-DD}-{task_key}.md`), com o PR, os commits e os autores.
16
18
 
@@ -110,11 +112,15 @@ Pergunte com `AskUserQuestion` (**Sim / Não**): **"Publicar no Central docs?"**
110
112
  (no `--inicial`, só os `feature-*`). Com o Central docs num repositório git, cada publicação abre um PR no repositório de documentação: informe as URLs.
111
113
  - **Não:** os arquivos ficam na sessão. Para publicar depois, use os mesmos comandos.
112
114
 
115
+ Com `ARTIFACT_STYLE=human-generated`, a versão humanizada (`{nome}.public.md`) fica ao lado da consolidação, na sessão, e **não** é publicada.
116
+
113
117
  ## Passo 7: Mensagem final
114
118
 
115
119
  ```
116
120
  ✅ Consolidação {publicada | salva na sessão}
117
121
 
122
+ 📄 Arquivos da sessão (consolidado acumulado, regra 5 de `eng.transitions-rules.md`): links de `context.md`, `architecture.md`, `plan.md`, `gate-checklist.md`, `pull-request.md`, `daily.md` e dos arquivos de `consolidation/` (novos), só os que existem
123
+
118
124
  📄 Funcionalidade: {SQUAD}/product/{produto}/feature-{slug}.md
119
125
  🧾 Entrega: {SQUAD}/engineering/{produto}/delivery-{AAAA-MM-DD}-{task_key}.md
120
126
  🔗 PR/MR: {URL} · Card: {URL ou número}
@@ -15,6 +15,7 @@ Este comando inicia o **planejamento** de uma nova feature.
15
15
 
16
16
  > 📋 **Rules**: `$IDE/rules-on-demand/engineering/eng.start-rules.md` — **antes de começar, leia esse arquivo e siga-o**: ele não é carregado automaticamente no início da sessão.
17
17
  > 📤 **Template**: `$IDE/templates/engineering/architecture-template.md`
18
+ > 🔀 **Transições**: `$IDE/rules-on-demand/engineering/eng.transitions-rules.md` — perguntas de início e de fim deste comando (a opção padrão mantém o fluxo de sempre).
18
19
 
19
20
  > ⚠️ **IMPORTANTE**: Este workflow é APENAS para planejamento e documentação.
20
21
  > **NÃO execute código, NÃO crie arquivos de código, NÃO faça commits.**
@@ -129,7 +130,11 @@ Se `$SESSIONS_DIR/warm-ups/` tiver aquecimentos, leia `$IDE/rules-on-demand/warm
129
130
 
130
131
  ## Fase 0.5: Advisor (opcional)
131
132
 
132
- Logo depois de obter o `TASK_MANAGER_KEY`, pergunte com `AskUserQuestion` (sem a ferramenta, use a tabela de `prod-rules.md`): **"Usar o Advisor nas questões em aberto desta tarefa?"** (**Não**, padrão / **Sim**). Com **Não**, siga como sempre e não mencione mais o Advisor.
133
+ Logo depois de obter o `TASK_MANAGER_KEY`, pergunte com `AskUserQuestion` (sem a ferramenta, use a tabela de `prod-rules.md`): **"Usar o Advisor nas questões em aberto desta tarefa?"** (**Não**, padrão / **Sim**). Com **Não**, siga como sempre e não mencione mais o Advisor. Em seguida (só sem Advisor), pergunte **"Como tratar as questões em aberto que surgirem?"**:
134
+ - **Tratar no architecture.md (como hoje):** as questões vão para a seção 8 e você as responde ao revisar o documento.
135
+ - **Uma a uma, assim que surgirem:** cada questão encontrada nas Fases 2 e 3 é perguntada na hora com `AskUserQuestion` (contexto em uma frase, opções e a sugestão marcada "(Recomendada)"), e entra na seção 8 já respondida.
136
+
137
+ Registre a escolha no cabeçalho do `architecture.md` (`Questões em aberto:`).
133
138
 
134
139
  Com **Sim**, pergunte **"Qual modelo para o Advisor?"** com os itens de `ADVISOR_MODELS` do `ENV.md` (até 4 opções; o resto em "Outro"). Lista vazia ou ausente: use `Sonnet 5.5` sem perguntar; lista de um item: use-o sem perguntar. Traduza o nome pela família (primeira palavra em minúsculas: `sonnet`, `opus`, `fable`, `haiku`); se o modelo não for aceito pela IDE, use `sonnet` e avise em uma linha. Se a IDE não permitir escolher o modelo do subagente, avise e não faça a segunda pergunta.
135
140
 
@@ -283,6 +288,8 @@ Use ferramentas de busca para entender o código existente:
283
288
  - **Grep**: Buscar padrões e implementações similares
284
289
  - **Read**: Analisar arquivos críticos que serão impactados
285
290
 
291
+ Com `WORKSPACE_MODE=workspace`, busque só nos repositórios do workspace e siga a regra "Buscas de código em modo workspace" de `eng-rules.md` (ignora `$IDE/`, `.jarvis/`, `.vscode/`, `node_modules/` e o `CDD-MIND-MAP.md`; `docs/jarvis/` é lida como documento de trabalho).
292
+
286
293
  ### 3.2 Documentação Existente
287
294
 
288
295
  Verifique:
@@ -394,7 +401,7 @@ Levante na seção 8 **tudo** que for diferente do código ou ambíguo no card,
394
401
  3. Preencha "Sugestão do Sub-Agent (Advisor)", **"Decisão adotada" (a sugestão do Advisor, que prevalece; não a substitua nem a conteste)**, "Divergência" e "Impacto da decisão". Confira no código os fatos em que a sugestão se apoia antes de registrar.
395
402
  4. Poste **um** comentário de auditoria na issue com `/eng-global-task-comment`, no modelo do template (freelance pula).
396
403
 
397
- **Sem Advisor:** apresente as questões ao usuário, como sempre.
404
+ **Sem Advisor:** com "Tratar no architecture.md (como hoje)", apresente as questões ao usuário, como sempre; com "Uma a uma", elas já foram respondidas ao surgir (registre as respostas e escreva só as que surgirem na escrita do documento).
398
405
 
399
406
  ---
400
407
 
@@ -407,7 +414,7 @@ Apresente:
407
414
  1. Resumo do que foi documentado
408
415
  2. Principais decisões arquiteturais
409
416
  3. Riscos identificados
410
- 4. Link para o arquivo criado
417
+ 4. Consolidado de links da sessão (regra 5 de `eng.transitions-rules.md`): `context.md` (novo; tipo e autonomia) e `architecture.md` (novo; quantas questões em aberto) e o aquecimento consumido, se houver, cada um com a nota de estado, mais os links do card/issue
411
418
 
412
419
  ### 5.2 Iteração
413
420
 
@@ -417,6 +424,7 @@ Se o usuário tiver feedback:
417
424
  - Apresente novamente
418
425
  - Continue até aprovação explícita
419
426
 
427
+ **Sem Advisor**, a aprovação é a pergunta de transição (`eng.transitions-rules.md`): **"Aprovar o architecture.md?"** (depois da mensagem em markdown com o link clicável do arquivo) → **Aprovar e parar aqui (como hoje)** / **Aprovar e seguir para o `/eng.plan`** / **Ajustar o documento**. Com "seguir", chame o `/eng.plan {TASK_MANAGER_KEY}` (ou mostre o comando).
420
428
  **Com Advisor**, o gate segue a autonomia do `context.md` (CDD): `alta` → apresente o resumo e siga para o `eng.plan` sem aguardar; `média` ou `baixa` → aguarde a aprovação explícita. Sem `context.md`, use a tabela "Autonomia por POSITION" de `eng-rules.md`. Sem Advisor, nada muda.
421
429
 
422
430
  ### 5.3 Atualizar Board
@@ -15,6 +15,7 @@ Este comando executa a **implementação de código** seguindo o plano de execu
15
15
 
16
16
  > 📋 **Rules**: `$IDE/rules-on-demand/engineering/eng.work-rules.md` — **antes de começar, leia esse arquivo e siga-o**: ele não é carregado automaticamente no início da sessão.
17
17
  > 📤 **Template**: `$IDE/templates/engineering/work-progress-template.md`
18
+ > 🔀 **Transições**: `$IDE/rules-on-demand/engineering/eng.transitions-rules.md` — perguntas de início e de fim deste comando (a opção padrão mantém o fluxo de sempre).
18
19
 
19
20
  > ⚠️ **IMPORTANTE**: Este workflow é para codificação com commits incrementais por fase.
20
21
  > **NÃO crie PRs, NÃO faça push**, mas **FAZ commit ao final de cada fase validada.**
@@ -169,6 +170,20 @@ Procure no `plan.md`:
169
170
  - Fase marcada como `[Em Progresso ⏰]`
170
171
  - Se nenhuma, identifique a primeira `[Não Iniciada ⏳]`
171
172
 
173
+ ### 1.3 Escolhas do início (`eng.transitions-rules.md`)
174
+
175
+ Pergunte com `AskUserQuestion`, uma pergunta por decisão (padrão primeiro):
176
+
177
+ | Pergunta | Opções |
178
+ |---|---|
179
+ | **Execução das fases** | **Fase a fase, com aprovação (como hoje)** / **Todas de uma vez** (mostre "N de M tarefas", com N pelo limite `MAX_AI_EXECUTION_PERCENTAGE` abaixo) |
180
+ | **Commits** | **Um por fase (como hoje)** / **Um commit só ao final** |
181
+ | **Depois do work** | **Rodar o `/eng.pre-pr`** / **Rodar o `/eng.pr`** (sem o `/eng.pre-pr`) / **Fluxo normal (como hoje)** (só a mensagem final; o usuário segue os próximos comandos manualmente) |
182
+
183
+ - Grave as escolhas no cabeçalho do `plan.md` (`Execução:`, `Commits:`, `Depois do work:`). Retomada com escolhas já gravadas: uma pergunta só, **"Manter as escolhas ({resumo})?"** (Manter / Mudar).
184
+ - **Em qualquer escolha**, o limite de execução, um teste falhando e uma questão nova em aberto **param** a execução e voltam a perguntar.
185
+ - Com **Todas de uma vez**, a escolha é a aprovação das fases: as pausas da Fase 2.2 e da 6.1 não acontecem.
186
+
172
187
  ---
173
188
 
174
189
  ## Fase 2: Planejamento da Implementação
@@ -202,7 +217,7 @@ Apresente ao usuário:
202
217
 
203
218
  ### 2.2 Aguardar Aprovação
204
219
 
205
- **PARE e aguarde confirmação do usuário antes de implementar.**
220
+ **PARE e aguarde confirmação do usuário antes de implementar** (com "Fase a fase"; com "Todas de uma vez", siga direto).
206
221
 
207
222
  Se o usuário tiver sugestões, ajuste o plano.
208
223
 
@@ -441,7 +456,7 @@ Refs: {TASK_MANAGER_KEY}"
441
456
 
442
457
  **Regras de commit:**
443
458
  - Sempre referenciar o `TASK_MANAGER_KEY` no início e no `Refs:`
444
- - Uma fase = um commit (agrupar todas as mudanças da fase)
459
+ - Uma fase = um commit (agrupar todas as mudanças da fase), com "Um por fase"; com "Um commit só ao final", um commit depois da última fase, com todos os testes passando
445
460
  - Tipo: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`
446
461
  - **NUNCA** usar `git add .` — adicionar arquivos individualmente
447
462
 
@@ -480,7 +495,7 @@ Refs: TASK-123"
480
495
  ❓ Deseja iniciar a Fase {N+1}?
481
496
  ```
482
497
 
483
- **AGUARDE confirmação antes de iniciar.**
498
+ **AGUARDE confirmação antes de iniciar** (com "Fase a fase"; com "Todas de uma vez", siga para a próxima fase).
484
499
 
485
500
  ### 6.2 Se Todas as Fases Foram Concluídas
486
501
 
@@ -488,7 +503,7 @@ Refs: TASK-123"
488
503
  🎉 TODAS AS FASES CONCLUÍDAS!
489
504
 
490
505
  📁 Sessão: $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/
491
- 📄 Plan atualizado: plan.md ✅
506
+ 📄 Arquivos da sessão (consolidado acumulado, regra 5 de `eng.transitions-rules.md`): links de `context.md`, `architecture.md` e `plan.md` (atualizado, com comentários por fase; quantas fases concluídas), cada um com a nota de estado, mais os links do card/issue
492
507
  🌿 Branch: {TASK_MANAGER_KEY}-{titulo} — {N} commits realizados
493
508
 
494
509
  📊 Resumo:
@@ -506,6 +521,8 @@ Refs: TASK-123"
506
521
  ⚠️ LEMBRETE: push e PR são responsabilidade do `eng.pr`.
507
522
  ```
508
523
 
524
+ Depois da mensagem, siga a escolha **Depois do work**: chamar o `/eng.pre-pr {TASK_MANAGER_KEY}`, chamar o `/eng.pr {TASK_MANAGER_KEY}`, fazer o que o usuário descreveu em texto livre (o "Outros" automático) ou, no **Fluxo normal (como hoje)**, só encerrar com a mensagem (chamar = pelo Skill tool, ou mostrar o comando pronto na IDE que não permite).
525
+
509
526
  ## Regras Importantes
510
527
 
511
528
  ### ⛔ NÃO FAÇA
@@ -513,10 +530,10 @@ Refs: TASK-123"
513
530
  - ❌ NÃO crie Pull Requests
514
531
  - ❌ NÃO faça push (`git push`) — push é responsabilidade do `eng.pr`
515
532
  - ❌ NÃO use `git add .` — adicionar arquivos individualmente
516
- - ❌ NÃO commite sem aprovação explícita do usuário na fase
533
+ - ❌ NÃO commite sem aprovação explícita do usuário na fase (a escolha "Todas de uma vez" da 1.3 é essa aprovação)
517
534
  - ❌ NÃO commite com testes falhando
518
535
  - ❌ NÃO mova cards no Jira
519
- - ❌ NÃO sugira "vamos fazer o PR agora"
536
+ - ❌ NÃO sugira "vamos fazer o PR agora" (salvo a escolha "Rodar o `/eng.pr`" da 1.3)
520
537
 
521
538
  ### ✅ FAÇA SEMPRE
522
539
 
@@ -16,7 +16,7 @@ model_justification: Discovery exige separar fatos de suposições, escolher as
16
16
 
17
17
  > 🔥 **Warm-up**: se `$SESSIONS_DIR/warm-ups/` tiver aquecimentos, leia `$IDE/rules-on-demand/warm-up-consume-rules.md` e siga-o antes de começar (grava em `$SESSIONS_DIR/prod/{id do documento}/context.md`).
18
18
 
19
- Investiga uma ideia crua com **poucas perguntas certas** e grava um **rascunho** em `$PROD_DOCS/discoveries/discovery-{id}-{nome}.md`, pelo template `$PROD_TEMPLATES/prod-discovery-template.md`. Postura: agente `$IDE/agents/product/prod.discovery-interviewer.md`. Guia humano: `docs/produto/prod.spec.discovery.md`. Siga `$PROD_RULES` (ENV, idioma, `AskUserQuestion` uma pergunta por vez).
19
+ Investiga uma ideia crua com **poucas perguntas certas** e grava um **rascunho** em `$DISCOVERIES_DOCS/discovery-{id}-{nome}.md`, pelo template `$PROD_TEMPLATES/prod-discovery-template.md`. Postura: agente `$IDE/agents/product/prod.discovery-interviewer.md`. Guia humano: `docs/produto/prod.spec.discovery.md`. Siga `$PROD_RULES` (ENV, idioma, `AskUserQuestion` uma pergunta por vez).
20
20
 
21
21
  <requirement>
22
22
  #$ARGUMENTS
@@ -39,7 +39,7 @@ Sem ideia: pergunte qual é, antes de tudo. Caminho, nome ou id de um discovery
39
39
 
40
40
  ## Passo 1 — Ler em silêncio
41
41
 
42
- Antes de perguntar qualquer coisa, leia: o `$ARGUMENTS`; em `$PROD_DOCS`, os PRD/FRD que já cobrem a ideia e os discoveries parecidos (só título e Entendimento/Ideia); o código e os commits, se ajudarem a viabilidade; o Central docs, se configurado. Não repita perguntas cuja resposta já está em algum desses.
42
+ Antes de perguntar qualquer coisa, leia: o `$ARGUMENTS`; em `$PROD_DOCS`, os PRD/FRD que já cobrem a ideia; em `$DISCOVERIES_DOCS`, os discoveries parecidos (só título e Entendimento/Ideia); o código e os commits, se ajudarem a viabilidade; o Central docs, se configurado. Não repita perguntas cuja resposta já está em algum desses.
43
43
 
44
44
  ## Passo 2 — Entendimento (uma confirmação)
45
45
 
@@ -28,7 +28,7 @@ As rules já estão no contexto da sessão: **não as releia**. Perfil de comuni
28
28
  ## Passo 1 — Perfil (silencioso)
29
29
 
30
30
  ```bash
31
- grep -E "^(POSITION|AREA|HUB|SQUAD|WORKSPACE|WORKSPACE_REPOS|PROD_MODE|ENABLE_CDD|CENTRAL_DOCS_STORAGE|[A-Z]+_SPECIALIZATIONS)=" $IDE/ENV.md
31
+ grep -E "^(POSITION|AREA|HUB|SQUAD|WORKSPACE|WORKSPACE_REPOS|WORKSPACE_MODE|PROD_MODE|ENABLE_CDD|CENTRAL_DOCS_STORAGE|[A-Z]+_SPECIALIZATIONS)=" $IDE/ENV.md
32
32
  ```
33
33
 
34
34
  `$IDE/ENV.md` pode estar num ancestral do cwd. `WORKSPACE` vazio = nome da pasta que contém `$IDE/`. Não invente valores ausentes; não pergunte o que está no ENV.
@@ -37,7 +37,7 @@ grep -E "^(POSITION|AREA|HUB|SQUAD|WORKSPACE|WORKSPACE_REPOS|PROD_MODE|ENABLE_CD
37
37
 
38
38
  O mapa é o **contexto de workspace**: stack e papel de cada repositório. Fica na raiz do workspace (ao lado do `AGENTS.md`), fora do versionamento. Formato e instruções de preenchimento: `$IDE/templates/cdd-mind-map-template.md`.
39
39
 
40
- 1. **Repositórios do workspace:** os de `WORKSPACE_REPOS` ou, se vazia, as subpastas com `.git/`; só a raiz com `.git` = projeto único (uma linha).
40
+ 1. **Repositórios do workspace:** use o `WORKSPACE_MODE` do ENV. `workspace`: os de `WORKSPACE_REPOS` ou, se vazia, as subpastas com `.git/` (a raiz não é repositório, mesmo com uma subpasta só). `project`: a raiz, uma linha. Reconfira pelo critério (raiz com `.git` = `project`; raiz sem `.git` e 1+ subpastas com `.git/` = `workspace`) e, se o valor gravado divergir do detectado ou estiver ausente, avise e sugira `jarvis init --upgrade`, sem alterar o ENV. Nas buscas de código vale a regra "Buscas de código em modo workspace" de `eng-rules.md`.
41
41
  2. **Mapa não existe:** infira cada repositório pela tabela `$IDE/skills/jarvis-init/assets/sinais-de-stack.md` e pela estrutura (papel), mostre a tabela e pergunte com `AskUserQuestion`: **Confirmar** | **Corrigir** | **Incluir informação**. Repita até confirmar. Então:
42
42
  - grave `CDD-MIND-MAP.md` na raiz do workspace;
43
43
  - garanta a linha no `.gitignore`: `grep -qxF 'CDD-MIND-MAP.md' .gitignore 2>/dev/null || echo 'CDD-MIND-MAP.md' >> .gitignore`;