oxe-cc 0.6.6 → 0.7.1

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 (48) hide show
  1. package/.cursor/commands/oxe-capabilities.md +11 -0
  2. package/.cursor/commands/oxe-dashboard.md +11 -0
  3. package/.github/copilot-instructions.md +13 -1
  4. package/.github/prompts/oxe-capabilities.prompt.md +12 -0
  5. package/.github/prompts/oxe-dashboard.prompt.md +12 -0
  6. package/CHANGELOG.md +33 -0
  7. package/README.md +147 -11
  8. package/assets/oxe-framework-artifacts-paper.png +0 -0
  9. package/bin/banner.txt +1 -1
  10. package/bin/lib/oxe-azure.cjs +1445 -0
  11. package/bin/lib/oxe-dashboard.cjs +588 -0
  12. package/bin/lib/oxe-install-resolve.cjs +4 -1
  13. package/bin/lib/oxe-operational.cjs +670 -0
  14. package/bin/lib/oxe-project-health.cjs +372 -28
  15. package/bin/oxe-cc.js +1517 -312
  16. package/commands/oxe/capabilities.md +13 -0
  17. package/commands/oxe/dashboard.md +14 -0
  18. package/lib/sdk/README.md +9 -7
  19. package/lib/sdk/index.cjs +56 -0
  20. package/lib/sdk/index.d.ts +73 -0
  21. package/oxe/templates/ACTIVE-RUN.template.json +32 -0
  22. package/oxe/templates/CAPABILITIES.template.md +7 -0
  23. package/oxe/templates/CAPABILITY.template.md +45 -0
  24. package/oxe/templates/CHECKPOINTS.template.md +7 -0
  25. package/oxe/templates/EXECUTION-RUNTIME.template.md +68 -0
  26. package/oxe/templates/INVESTIGATION.template.md +38 -0
  27. package/oxe/templates/NOTES.template.md +16 -0
  28. package/oxe/templates/PLAN-REVIEW.template.md +31 -0
  29. package/oxe/templates/RESEARCH.template.md +11 -4
  30. package/oxe/templates/SPEC.template.md +6 -4
  31. package/oxe/templates/STATE.md +45 -7
  32. package/oxe/templates/config.template.json +11 -3
  33. package/oxe/workflows/ask.md +10 -1
  34. package/oxe/workflows/capabilities.md +23 -0
  35. package/oxe/workflows/dashboard.md +23 -0
  36. package/oxe/workflows/discuss.md +11 -9
  37. package/oxe/workflows/execute.md +57 -35
  38. package/oxe/workflows/help.md +256 -225
  39. package/oxe/workflows/obs.md +70 -20
  40. package/oxe/workflows/plan.md +83 -74
  41. package/oxe/workflows/quick.md +16 -11
  42. package/oxe/workflows/references/adaptive-discovery.md +27 -0
  43. package/oxe/workflows/research.md +12 -8
  44. package/oxe/workflows/retro.md +30 -5
  45. package/oxe/workflows/scan.md +1 -0
  46. package/oxe/workflows/spec.md +65 -48
  47. package/oxe/workflows/verify.md +52 -37
  48. package/package.json +2 -2
@@ -8,30 +8,32 @@ Registrar uma **observação contextual** em **`.oxe/OBSERVATIONS.md`** durante
8
8
  Entrada: texto livre com a observação (restrição, descoberta técnica, preferência, risco, decisão).
9
9
  </objective>
10
10
 
11
- <context>
11
+ <context>
12
12
  - Pode ser chamado **a qualquer momento**: antes, durante ou após qualquer passo da trilha OXE.
13
13
  - Não interrompe o fluxo em curso — a observação é armazenada e incorporada na próxima oportunidade.
14
- - Se chamado **durante execute** (fase `executing` no STATE) com impacto `execute` ou `all`: oferecer opção de aplicar agora (pausar onda atual) ou continuar e aplicar na próxima rodada.
15
- - Ler **`.oxe/STATE.md`** para capturar o contexto automático (fase atual, tarefa ativa, workstream ativo).
16
- - Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, `OBSERVATIONS.md` vive em `.oxe/<active_session>/execution/`; sem sessão ativa, manter `.oxe/`.
17
- - Usar `oxe/templates/OBSERVATIONS.template.md` para criar o arquivo se ainda não existir.
18
- </context>
14
+ - Se chamado **durante execute** (fase `executing` no STATE) com impacto `execute` ou `all`: classificar a severidade e responder adaptativamente — `blocking` interrompe a onda e requer resolução explícita; `adjustment` incorpora como restrição na onda atual sem bloquear; `info` aplica na próxima oportunidade.
15
+ - Ler **`.oxe/STATE.md`** para capturar o contexto automático (fase atual, tarefa ativa, workstream ativo).
16
+ - Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, `OBSERVATIONS.md` vive em `.oxe/<active_session>/execution/`; sem sessão ativa, manter `.oxe/`.
17
+ - Usar `oxe/templates/OBSERVATIONS.template.md` para criar o arquivo se ainda não existir.
18
+ </context>
19
19
 
20
20
  <format_observations_md>
21
- Arquivo: **`OBSERVATIONS.md`** no escopo resolvido da sessão
21
+ Arquivo: **`OBSERVATIONS.md`** no escopo resolvido da sessão
22
22
 
23
23
  ```markdown
24
24
  # Observações OXE
25
25
 
26
- | ID | Data | Contexto | Impacto | Status |
27
- |----|------|----------|---------|--------|
28
- | OBS-001 | 2026-04-04 | execute/T3 | spec, plan | pendente |
29
- | OBS-002 | 2026-04-04 | pós-spec | execute | incorporada → execute (2026-04-04) |
26
+ | ID | Data | Contexto | Impacto | Severidade | Status |
27
+ |----|------|----------|---------|------------|--------|
28
+ | OBS-001 | 2026-04-04 | execute/T3 | spec, plan | adjustment | pendente |
29
+ | OBS-002 | 2026-04-04 | pós-spec | execute | info | incorporada → execute (2026-04-04) |
30
30
 
31
31
  ---
32
32
 
33
33
  ### OBS-001 — 2026-04-04 | execute/T3
34
34
  **Impacto:** spec, plan
35
+ **Severidade:** adjustment
36
+ **Tipo:** new_constraint
35
37
  **Afeta (spec):** R3, R5
36
38
  **Afeta (plan):** T4, T7
37
39
  **Status:** pendente
@@ -42,6 +44,7 @@ JWT expiration deve ser configurável via `JWT_EXPIRES_IN` env var, não hardcod
42
44
 
43
45
  ### OBS-002 — 2026-04-04 | pós-spec
44
46
  **Impacto:** execute
47
+ **Severidade:** info
45
48
  **Status:** incorporada → execute (2026-04-04)
46
49
 
47
50
  API deve retornar mensagens de erro em português do Brasil.
@@ -65,27 +68,71 @@ Se ambíguo, usar `all` (princípio de maior abrangência).
65
68
  - `execute` — afeta a implementação da tarefa atual ou próxima
66
69
  - `all` — afeta múltiplas camadas
67
70
 
71
+ **Severidade:** classificar automaticamente com base no conteúdo:
72
+
73
+ | Texto menciona | Severidade |
74
+ |----------------|------------|
75
+ | Coverage %, threshold, CI falhou, pipeline, Actions, test failed, falha no build | `blocking` |
76
+ | Erro técnico, exception, versão incompatível, dependência ausente, requisito incompatível | `blocking` |
77
+ | "não pode", "proibido", "exige", novo requisito que afeta tarefas em andamento | `adjustment` |
78
+ | Preferência, restrição técnica, descoberta que exige ajuste em tarefas existentes | `adjustment` |
79
+ | Contexto adicional, observação informativa, descoberta sem impacto imediato | `info` |
80
+
81
+ Se ambíguo entre `blocking` e `adjustment`, usar `blocking` (princípio de segurança).
82
+
83
+ **Tipo:** classificar automaticamente (campo omitido quando nenhum padrão se aplica):
84
+
85
+ | Texto menciona | Tipo |
86
+ |----------------|------|
87
+ | Coverage, threshold, Actions, CI, pipeline, test pass/fail, build falhou | `ci_failure` |
88
+ | "não pode", "proibido", "exige", "requisito" | `new_constraint` |
89
+ | Erro, exception, versão incompatível, dependência, module not found | `technical_blocker` |
90
+
91
+ **CI-evidência** (somente quando `Tipo: ci_failure`): extrair e registrar na seção `### OBS-NNN`:
92
+ ```
93
+ **CI-evidência:**
94
+ coverage_pct: 87
95
+ coverage_threshold: 90
96
+ failing_files: [src/auth.ts, src/utils.ts]
97
+ ci_run_url: https://github.com/...
98
+ failing_tests: [nome do teste]
99
+ ```
100
+ Campos não encontrados no texto são omitidos. Esta evidência é consumida por `/oxe-verify` como fonte para critérios A* de qualidade.
101
+
68
102
  **Status lifecycle:** `pendente` → `incorporada → <workflow> (YYYY-MM-DD)`
69
103
  </format_observations_md>
70
104
 
71
105
  <process>
72
106
  1. Ler **`.oxe/STATE.md`**: capturar `phase`, `last_task` ou tarefa ativa na onda, `active_workstream`.
73
- 2. Determinar o **próximo ID** (OBS-NNN): contar entradas existentes em `OBSERVATIONS.md` do escopo resolvido ou começar em OBS-001.
107
+ 2. Determinar o **próximo ID** (OBS-NNN): contar entradas existentes em `OBSERVATIONS.md` do escopo resolvido ou começar em OBS-001.
74
108
  3. Classificar o **impacto** automaticamente com base no texto; se ambíguo, usar `all`.
75
109
  3b. **Propagação automática de constraints:**
76
110
  - Se existir **`.oxe/SPEC.md`**: ler a tabela de requisitos (R-ID) e critérios (A*) e identificar quais são diretamente afetados pelo texto da observação. Registrar em `**Afeta (spec):**`.
77
111
  - Se existir **`.oxe/PLAN.md`**: ler as tarefas (Tn) e identificar quais podem precisar de ajuste no campo `Verificar` ou `Implementar`. Registrar em `**Afeta (plan):**`.
78
112
  - Se nenhum R-ID ou Tn identificável: registrar `**Afeta:** (a cruzar na próxima incorporação)`.
79
113
  - Esta propagação é automática e não requer input do usuário.
80
- 4. Criar ou atualizar **`OBSERVATIONS.md`** no escopo resolvido:
114
+ 3c. Classificar a **severidade** automaticamente usando a tabela de `<format_observations_md>`. Registrar como campo `**Severidade:**` na seção `### OBS-NNN` e na coluna da tabela de índice. Se ambíguo entre `blocking` e `adjustment`, usar `blocking`.
115
+ 3d. Classificar o **tipo** automaticamente (se identificável). Se `Tipo: ci_failure`, extrair evidências estruturadas do texto (`coverage_pct`, `coverage_threshold`, `failing_files`, `ci_run_url`, `failing_tests`) e registrar como `**CI-evidência:**` na seção `### OBS-NNN`. Omitir campos não encontrados.
116
+ 4. Criar ou atualizar **`OBSERVATIONS.md`** no escopo resolvido:
81
117
  - Adicionar linha na tabela de índice.
82
118
  - Adicionar seção `### OBS-NNN` com contexto, impacto, status e texto.
83
- 5. Avaliar **urgência**:
119
+ 5. Avaliar **urgência** e responder adaptativamente:
84
120
  - Se `phase` ∈ `{ executing, quick_active }` **e** impacto ∈ `{ execute, all }`:
85
- - Apresentar ao usuário: "Observação registrada. Deseja aplicar agora (pausar onda atual) ou continuar e incorporar na próxima rodada?"
86
- - Se pausar: sugerir revisão do bloco `**Verificar:**` da tarefa ativa e ajuste inline.
87
- - Se continuar: confirmar que será incorporado no início da próxima onda.
88
- - Em qualquer outro caso: confirmar registro e mencionar quando será incorporado.
121
+ - **Se `Severidade: blocking`:**
122
+ 1. Identificar tarefas do PLAN que tocam os arquivos/áreas afetados (campo `**Afeta (plan):**`)
123
+ 2. Propor micro-ajustes alinhados ao plano: sub-tarefas dentro das tarefas existentes não adicionar escopo novo
124
+ 3. Apresentar três opções ao usuário:
125
+ - **A) Ajuste inline:** adicionar sub-tarefas à tarefa atual e retomar execução imediatamente
126
+ - **B) Micro-replan:** pausar onda, atualizar PLAN.md com as sub-tarefas, retomar após confirmação
127
+ - **C) Registrar apenas:** incorporar na próxima rodada sem interromper a onda atual
128
+ 4. Seja qual opção for escolhida: se `ACTIVE-RUN.json` existir, registrar `blocker_info: { obs_id, severity, type, affected_tasks }` e emitir evento em `OXE-EVENTS.ndjson` (tipo `obs_blocking`)
129
+ - **Se `Severidade: adjustment`:**
130
+ - Apresentar ao usuário: "Observação registrada (ajuste). Incorporar na onda atual ou na próxima?"
131
+ - Se onda atual: incorporar imediatamente nas tarefas afetadas como restrição ou nota de implementação
132
+ - Se próxima onda: confirmar que será incorporado automaticamente no início da próxima onda
133
+ - **Se `Severidade: info`** (ou sem campo Severidade):
134
+ - Confirmar registro; mencionar que será incorporado quando o workflow relevante for chamado
135
+ - Em qualquer outro caso (fora de executing/quick_active): confirmar registro e mencionar quando será incorporado.
89
136
  6. Atualizar **`.oxe/STATE.md`**: adicionar ou atualizar campo `obs_pendentes: true` (remover ou marcar `false` quando todos os OBS estiverem `incorporada`).
90
137
  7. Responder no chat com: ID atribuído (OBS-NNN), impacto classificado, próximo passo sugerido (qual workflow incorporará a observação).
91
138
  </process>
@@ -107,7 +154,10 @@ Qualquer workflow que leia `.oxe/OBSERVATIONS.md` deve:
107
154
  <success_criteria>
108
155
  - [ ] `.oxe/OBSERVATIONS.md` existe com entrada OBS-NNN na tabela e seção de detalhe.
109
156
  - [ ] Impacto classificado corretamente (spec | plan | execute | all).
157
+ - [ ] Severidade classificada corretamente (info | adjustment | blocking); campo presente na tabela e na seção `### OBS-NNN`.
158
+ - [ ] Tipo detectado e registrado quando padrão identificável; `CI-evidência` extraída se `Tipo: ci_failure`.
110
159
  - [ ] `STATE.md` tem `obs_pendentes: true`.
111
- - [ ] Se urgência execute: usuário foi consultado sobre pausar ou continuar.
112
- - [ ] Resposta no chat inclui ID, impacto e próximo passo de incorporação.
160
+ - [ ] Se `Severidade: blocking` durante executing: opções A/B/C apresentadas ao usuário; `ACTIVE-RUN.json` atualizado com `blocker_info` se existir.
161
+ - [ ] Se `Severidade: adjustment` durante executing: usuário consultado sobre incorporar na onda atual ou na próxima.
162
+ - [ ] Resposta no chat inclui ID, impacto, severidade e próximo passo de incorporação.
113
163
  </success_criteria>
@@ -3,26 +3,28 @@
3
3
  <objective>
4
4
  Produzir **`.oxe/PLAN.md`**: tarefas **pequenas**, **ondas** (paralelizáveis vs sequenciais), e **cada tarefa com bloco de verificação** (comando de teste e/ou checklist manual).
5
5
 
6
- Base: `SPEC.md` do escopo resolvido da sessão (critérios com IDs **A1**, **A2**, …) + `.oxe/codebase/*` + código quando necessário (Grep/Read pontual).
6
+ Base: `SPEC.md` do escopo resolvido da sessão (critérios com IDs **A1**, **A2**, …) + `.oxe/codebase/*` + código quando necessário (Grep/Read pontual).
7
7
 
8
8
  Se o usuário pedir **--replan** (ou replanejamento implícito após `verify_failed`):
9
- - Ler `VERIFY.md` e `SUMMARY.md` do escopo resolvido, e o `PLAN.md` atual.
9
+ - Ler `VERIFY.md` e `SUMMARY.md` do escopo resolvido, e o `PLAN.md` atual.
10
10
  - Preservar tarefas já concluídas ou renumerar com nota em **Replanejamento**; não apagar histórico útil — deslocar para a seção **Replanejamento** e reescrever **Tarefas** conforme necessário.
11
11
  - Se **SUMMARY.md** não existir, criar a partir de `oxe/templates/SUMMARY.template.md` para registrar o contexto do replan (ou dar append se já existir).
12
12
  </objective>
13
13
 
14
- <context>
15
- - Seguir `oxe/workflows/references/flow-robustness-contract.md` como contrato canónico de robustez. A ordem obrigatória é: ler artefatos, resolver sessão/paths, validar pré-condições, escrever o plano, autoavaliar o plano, registrar próximo passo único.
16
- - Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, o plano vive em `.oxe/<active_session>/plan/` e lê a spec em `.oxe/<active_session>/spec/`.
17
- - Se existir `OBSERVATIONS.md` do escopo resolvido com entradas `pendente` de impacto `plan` ou `all`, incorporar nas tarefas relevantes antes de finalizar o plano (ajustar implementação, verificação ou escopo de Tn) e marcar essas entradas como `incorporada → plan (data)`.
18
- - Se existir **`.oxe/global/LESSONS.md`**, ler entradas com `Aplicar em: /oxe-plan` e `Status: ativo`. Aplicar como restrições explícitas no planejamento: ajuste de complexidade de tarefas, padrões de verificação, escolha de modo solo vs agentes. Registrar aplicações como comentário no PLAN.md: `<!-- lição C-NN aplicada: ... -->`.
14
+ <context>
15
+ - Seguir `oxe/workflows/references/flow-robustness-contract.md` como contrato canónico de robustez. A ordem obrigatória é: ler artefatos, resolver sessão/paths, validar pré-condições, escrever o plano, autoavaliar o plano, registrar próximo passo único.
16
+ - Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, o plano vive em `.oxe/<active_session>/plan/` e lê a spec em `.oxe/<active_session>/spec/`.
17
+ - Quando existirem, ler `INVESTIGATIONS.md`, `RESEARCH.md`, `CAPABILITIES.md`, `memory/` do projeto e `CHECKPOINTS.md` para calibrar dependências, riscos, automações disponíveis e gates humanos necessários.
18
+ - Se a SPEC ou artefatos do projeto mencionarem **Azure explicitamente** (Azure Service Bus, Azure SQL, Azure Event Grid, az CLI, ARM, subscription Azure, ou `.oxe/cloud/azure/` existir no projeto), **antes de detalhar tarefas**: (1) verificar `auth-status.json` se `login_active: false` ou `subscription_id` ausente, registrar como **pré-condição bloqueante** no PLAN.md e sugerir `oxe-cc azure status` / `oxe-cc azure auth login`; (2) verificar staleness do inventário via `inventory.synced_at` — se stale além de `inventory_max_age_hours`, sugerir `oxe-cc azure sync` antes de executar; (3) se `vpn_required: true` no config, registrar como restrição explícita nas tarefas de mutação Azure. O plano deve vincular tarefas a recursos existentes em INVENTORY.md, SERVICEBUS.md, EVENTGRID.md ou SQL.md, ou declarar explicitamente os recursos Azure a criar com `oxe-cc azure <domínio> plan`. **SQL genérico, bancos on-prem ou outras nuvens não acionam este bloco.**
19
+ - Se existir `OBSERVATIONS.md` do escopo resolvido com entradas `pendente` de impacto `plan` ou `all`, incorporar nas tarefas relevantes antes de finalizar o plano (ajustar implementação, verificação ou escopo de Tn) e marcar essas entradas como `incorporada → plan (data)`.
20
+ - Se existir **`.oxe/global/LESSONS.md`**, ler entradas com `Aplicar em: /oxe-plan` e `Status: ativo`. **Priorizar entradas com `Frequência >= 2` ou `Impacto: alto`** — aplicar como restrições explícitas no planejamento: ajuste de complexidade de tarefas, padrões de verificação, escolha de modo solo vs agentes. Lições com `Frequência: 1` e `Impacto: baixo` são contexto secundário. Registrar aplicações como comentário no PLAN.md: `<!-- lição C-NN aplicada: ... -->`.
19
21
  - **LESSONS + OBS juntos:** se houver tanto LESSONS quanto OBS pendentes, LESSONS orientam o *como planejar* e OBS orientam o *o que incluir*. Não confundir os papéis.
20
22
  - Não inventar APIs inexistentes: cruzar com **STRUCTURE.md**, **INTEGRATIONS.md** e arquivos reais; respeitar **CONCERNS.md** (evitar agravar dívida conhecida sem tarefa explícita).
21
- - Se existir **`.oxe/NOTES.md`**, rever entradas em aberto: incorporar em tarefas (com **Aceite vinculado** quando aplicável) ou registar na secção **Replanejamento** / nota explícita *fora de âmbito desta trilha*.
22
- - Se existir `UI-SPEC.md` no escopo resolvido, as tarefas de UI devem referenciar secções do UI-SPEC no texto de **Implementação** ou **Verificar**.
23
- - Se existir `DISCUSS.md` no escopo resolvido, alinhar tarefas às decisões registradas. Referenciar IDs **D-NN** no campo **Decisão vinculada:** de cada tarefa impactada — se nenhuma decisão impactar a tarefa, omitir o campo. A rastreabilidade D-NN → Tn → verify é usada pela seção **Fidelidade de decisões** do verify.
24
- - Se existir `RESEARCH.md` e notas em `research/*.md` do escopo resolvido, ler o índice e as notas cujo **Tema** cruza o âmbito do plano (ou as mais recentes relevantes). Se o índice marcar **Estado** pendente em tópico bloqueante, pedir nova sessão **research** ou **discuss**, ou registar **suposição explícita** no PLAN antes de ondas que dependam dessa decisão.
25
- - Se existir `plan-agents.json` no escopo resolvido (gerado por **`/oxe-plan-agent`**), um **--replan** ou renumerar tarefas deve **atualizar o JSON em conjunto** com o `PLAN.md` (cobertura `taskIds`, ondas e dependências entre agentes) — ver **`oxe/workflows/plan-agent.md`**. Preferir **`/oxe-plan-agent --replan`** para regerar **`runId`**, **`lifecycle`** (`pending_execute`) e alinhar **STATE.md**; se só **`/oxe-plan`** for usado, ou o JSON fica manualmente sincronizado, ou marcar no JSON `lifecycle.invalidatedBy: new_plan` até novo plan-agent.
23
+ - Se existir **`.oxe/NOTES.md`**, rever entradas em aberto: incorporar em tarefas (com **Aceite vinculado** quando aplicável) ou registar na secção **Replanejamento** / nota explícita *fora de âmbito desta trilha*. Se não existir e houver necessidade de registrar notas, criar a partir de `oxe/templates/NOTES.template.md`.
24
+ - Se existir `UI-SPEC.md` no escopo resolvido, as tarefas de UI devem referenciar secções do UI-SPEC no texto de **Implementação** ou **Verificar**.
25
+ - Se existir `DISCUSS.md` no escopo resolvido, alinhar tarefas às decisões registradas. Referenciar IDs **D-NN** no campo **Decisão vinculada:** de cada tarefa impactada — se nenhuma decisão impactar a tarefa, omitir o campo. A rastreabilidade D-NN → Tn → verify é usada pela seção **Fidelidade de decisões** do verify.
26
+ - Se existir `RESEARCH.md` e notas em `research/*.md` do escopo resolvido, ler o índice e as notas cujo **Tema** cruza o âmbito do plano (ou as mais recentes relevantes). Se o índice marcar **Estado** pendente em tópico bloqueante, pedir nova sessão **research** ou **discuss**, ou registar **suposição explícita** no PLAN antes de ondas que dependam dessa decisão.
27
+ - Se existir `plan-agents.json` no escopo resolvido (gerado por **`/oxe-plan-agent`**), um **--replan** ou renumerar tarefas deve **atualizar o JSON em conjunto** com o `PLAN.md` (cobertura `taskIds`, ondas e dependências entre agentes) — ver **`oxe/workflows/plan-agent.md`**. Preferir **`/oxe-plan-agent --replan`** para regerar **`runId`**, **`lifecycle`** (`pending_execute`) e alinhar **STATE.md**; se só **`/oxe-plan`** for usado, ou o JSON fica manualmente sincronizado, ou marcar no JSON `lifecycle.invalidatedBy: new_plan` até novo plan-agent.
26
28
  - Se existirem **`.oxe/CODEBASE-DELTA.md`** e/ou **`.oxe/RESUME.md`** (tipicamente após **`/oxe-compact`**), ler **antes** de detalhar tarefas: o delta resume o que mudou nos mapas face ao código; o RESUME ancora fase e trilha OXE — **não** substituem SPEC nem os sete ficheiros em `codebase/`.
27
29
  - Se existir **`.oxe/config.json`** com `default_verify_command` não vazio, usar como fallback quando a SPEC não indicar comando.
28
30
  - Se existir **`plan_max_tasks_per_wave` > 0** na config, **não** colocar mais tarefas do que esse número na mesma **Onda**; dividir em mais ondas.
@@ -31,7 +33,7 @@ Se o usuário pedir **--replan** (ou replanejamento implícito após `verify_fai
31
33
  </context>
32
34
 
33
35
  <format_plan>
34
- Cada tarefa em PLAN.md deve seguir a ordem abaixo — **Verificar vem ANTES de Implementar** (test-first):
36
+ Cada tarefa em PLAN.md deve seguir a ordem abaixo — **Verificar vem ANTES de Implementar** (test-first):
35
37
 
36
38
  ```markdown
37
39
  ### Tn — título curto
@@ -46,44 +48,49 @@ Cada tarefa em PLAN.md deve seguir a ordem abaixo — **Verificar vem ANTES de I
46
48
  - **Aceite vinculado:** A1, A2 (IDs exatos da tabela de critérios da SPEC)
47
49
  - **Decisão vinculada:** D-01, D-02 (IDs de `.oxe/DISCUSS.md` — omitir se não houver DISCUSS)
48
50
  <!-- oxe-task: {"id":"Tn","wave":1,"type":"feature","files":[],"done":false,"complexity":"S"} -->
49
- ```
50
-
51
- Depois do resumo e antes das tarefas, o `PLAN.md` deve conter também:
52
-
53
- ```markdown
54
- ## Autoavaliação do Plano
55
- - **Melhor plano atual:** sim | não
56
- - **Confiança:** 0–100%
57
- - **Base da confiança:**
58
- - Completude dos requisitos: NN/25
59
- - Dependências conhecidas: NN/15
60
- - Risco técnico: NN/20
61
- - Impacto no código existente: NN/15
62
- - Clareza da validação / testes: NN/15
63
- - Lacunas externas / decisões pendentes: NN/10
64
- - **Principais incertezas:** ...
65
- - **Alternativas descartadas:** ...
66
- - **Condição para replanejar:** ...
67
- ```
68
-
69
- **Rubrica fixa de confiança (determinística):**
70
- | Dimensão | Peso |
71
- |----------|------|
72
- | Completude dos requisitos | 25 |
73
- | Dependências conhecidas | 15 |
74
- | Risco técnico | 20 |
75
- | Impacto no código existente | 15 |
76
- | Clareza da validação / testes | 15 |
77
- | Lacunas externas / decisões pendentes | 10 |
78
-
79
- **Faixas semânticas obrigatórias:**
80
- - `85–100%` → pronto para executar
81
- - `70–84%` → executável com risco controlado
82
- - `50–69%` → precisa refino antes de execução
83
- - `<50%` → não executar
84
-
85
- **Escala de Complexidade:**
86
- | Valor | Esforço estimado | Sinal de alerta |
51
+ ```
52
+
53
+ Depois do resumo e antes das tarefas, o `PLAN.md` deve conter também:
54
+
55
+ ```markdown
56
+ ## Autoavaliação do Plano
57
+ - **Melhor plano atual:** sim | não
58
+ - **Confiança:** 0–100%
59
+ - **Base da confiança:**
60
+ - Completude dos requisitos: NN/25
61
+ - Dependências conhecidas: NN/15
62
+ - Risco técnico: NN/20
63
+ - Impacto no código existente: NN/15
64
+ - Clareza da validação / testes: NN/15
65
+ - Lacunas externas / decisões pendentes: NN/10
66
+ - **Principais incertezas:** ...
67
+ - **Alternativas descartadas:** ...
68
+ - **Condição para replanejar:** ...
69
+ ```
70
+
71
+ **Rubrica fixa de confiança (determinística):**
72
+ | Dimensão | Peso |
73
+ |----------|------|
74
+ | Completude dos requisitos | 25 |
75
+ | Dependências conhecidas | 15 |
76
+ | Risco técnico | 20 |
77
+ | Impacto no código existente | 15 |
78
+ | Clareza da validação / testes | 15 |
79
+ | Lacunas externas / decisões pendentes | 10 |
80
+
81
+ **Faixas semânticas obrigatórias:**
82
+ - `85–100%` → pronto para executar
83
+ - `70–84%` → executável com risco controlado
84
+ - `50–69%` → precisa refino antes de execução
85
+ - `<50%` → não executar
86
+
87
+ **Entradas obrigatórias da confiança:**
88
+ - usar as incertezas estruturadas da SPEC e as investigações concluídas como base direta da rubrica;
89
+ - se o plano depender de capability nativa, investigação ainda não feita ou checkpoint humano antes de side effect crítico, isso deve aparecer explicitamente em tarefas, riscos e autoavaliação.
90
+ - se o plano depender de mutação Azure, incluir checkpoint formal antes de `apply`, mencionar a capability Azure correspondente e ligar a evidência esperada em `.oxe/cloud/azure/operations/`.
91
+
92
+ **Escala de Complexidade:**
93
+ | Valor | Esforço estimado | Sinal de alerta |
87
94
  |-------|-----------------|-----------------|
88
95
  | `S` | < 30 min, 1–2 arquivos | — |
89
96
  | `M` | < 2h, 2–5 arquivos | — |
@@ -102,39 +109,41 @@ Antes de finalizar a resposta ao utilizador, o agente **deve** percorrer este ga
102
109
 
103
110
  1. **Depende de:** em cada `### Tn`, apenas IDs `Tk` que existem no mesmo ficheiro, ou `—`.
104
111
  2. **Ciclos:** não há cadeia circular óbvia (ex.: T2→T3→T2); se houver, quebrar dependência ou onda.
105
- 3. **Cobertura A*:** todos os IDs da tabela de critérios em `SPEC.md` do escopo resolvido aparecem em **Aceite vinculado:** de alguma tarefa, ou há nota explícita de **gap** no PLAN (fora de âmbito / adiado) por ID.
112
+ 3. **Cobertura A*:** todos os IDs da tabela de critérios em `SPEC.md` do escopo resolvido aparecem em **Aceite vinculado:** de alguma tarefa, ou há nota explícita de **gap** no PLAN (fora de âmbito / adiado) por ID.
106
113
  4. **Ondas:** cada número de **Onda:** usado tem pelo menos uma tarefa; sem ondas vazias.
107
114
  5. **`plan_max_tasks_per_wave`:** se `.oxe/config.json` tiver valor **> 0**, contar tarefas por **Onda**; nenhuma onda excede o limite.
108
- 6. **UI-SPEC:** se existir `UI-SPEC.md` no escopo resolvido, toda tarefa cuja **Implementar** ou **Verificar** toque UI deve citar **secção § do UI-SPEC** ou path explícito.
109
- 7. **Fidelidade de decisões:** se existir `DISCUSS.md` com IDs **D-NN** no escopo resolvido, cada decisão com impacto técnico deve aparecer em **Decisão vinculada:** de alguma tarefa, ou ter nota explícita de gap. Sem cobertura para D-NN técnico = falha do gate.
110
- 8. **Complexidade XL:** toda tarefa com `Complexidade: XL` deve ter sub-tarefas explícitas (ex.: T3.1, T3.2 — como bullets dentro da tarefa) **ou** justificativa na tarefa explicando por que não pode ser quebrada. Tarefa XL sem sub-tarefas e sem justificativa = falha do gate.
111
- 9. **Test-first:** em toda tarefa, `Verificar` deve preceder `Implementar` no texto. Se a ordem estiver invertida, corrigir antes de finalizar.
112
- 10. **Autoavaliação presente:** o `PLAN.md` contém `## Autoavaliação do Plano`, `Melhor plano atual`, `Confiança`, rubrica completa e `Condição para replanejar`.
113
- 11. **Calibração de execução:** se `Melhor plano atual: não` ou `Confiança < limiar configurado`, o plano não pode recomendar execução direta; deve recomendar refino, discuss ou research.
114
- 12. **Rastreabilidade de evidência:** cada tarefa deve ter entrada observável de origem na SPEC, no codebase, em DISCUSS, OBS, RESEARCH ou LESSONS; tarefa sem evidência de entrada explícita = falha do gate.
115
- 13. **Mudanças de risco:** tarefas com risco relevante (migração, auth, schema, contrato público, segurança) devem incluir contenção, rollback, fallback ou verificação reforçada.
116
-
117
- Se após correções estruturais persistir ambiguidade de produto: **uma** frase recomendando `oxe:discuss` ou `oxe:spec`.
118
-
119
- Resumo obrigatório no chat: `Gate do plano: OK` ou `Gate do plano: corrigido (N problemas)`.
115
+ 6. **UI-SPEC:** se existir `UI-SPEC.md` no escopo resolvido, toda tarefa cuja **Implementar** ou **Verificar** toque UI deve citar **secção § do UI-SPEC** ou path explícito.
116
+ 7. **Fidelidade de decisões:** se existir `DISCUSS.md` com IDs **D-NN** no escopo resolvido, cada decisão com impacto técnico deve aparecer em **Decisão vinculada:** de alguma tarefa, ou ter nota explícita de gap. Sem cobertura para D-NN técnico = falha do gate.
117
+ 8. **Complexidade XL:** toda tarefa com `Complexidade: XL` deve ter sub-tarefas explícitas (ex.: T3.1, T3.2 — como bullets dentro da tarefa) **ou** justificativa na tarefa explicando por que não pode ser quebrada. Tarefa XL sem sub-tarefas e sem justificativa = falha do gate.
118
+ 9. **Test-first:** em toda tarefa, `Verificar` deve preceder `Implementar` no texto. Se a ordem estiver invertida, corrigir antes de finalizar.
119
+ 10. **Autoavaliação presente:** o `PLAN.md` contém `## Autoavaliação do Plano`, `Melhor plano atual`, `Confiança`, rubrica completa e `Condição para replanejar`.
120
+ 11. **Calibração de execução:** se `Melhor plano atual: não` ou `Confiança < limiar configurado`, o plano não pode recomendar execução direta; deve recomendar refino, discuss ou research.
121
+ 12. **Rastreabilidade de evidência:** cada tarefa deve ter entrada observável de origem na SPEC, no codebase, em DISCUSS, OBS, RESEARCH ou LESSONS; tarefa sem evidência de entrada explícita = falha do gate.
122
+ 13. **Mudanças de risco:** tarefas com risco relevante (migração, auth, schema, contrato público, segurança) devem incluir contenção, rollback, fallback ou verificação reforçada.
123
+ 14. **Cobertura R-ID:** se `SPEC.md` contiver tabela de requisitos com IDs `R-NN` e status `v1`/`v2`, cada R-ID em escopo deve ter ao menos um critério A* mapeado em **Aceite vinculado:** de alguma tarefa — rastrear `R-NN → A* → Tn`. R-IDs com `v1`/`v2` sem nenhuma tarefa associada = falha do gate; documentar como gap explícito quando intencional (ex.: `<!-- R-03: adiado para próximo ciclo -->`).
124
+
125
+ Se após correções estruturais persistir ambiguidade de produto: **uma** frase recomendando `oxe:discuss` ou `oxe:spec`.
126
+
127
+ Resumo obrigatório no chat: `Gate do plano: OK` ou `Gate do plano: corrigido (N problemas)`.
120
128
  </plan_quality_gate>
121
129
 
122
130
  <process>
123
- 1. Resolver `active_session` e ler `SPEC.md` do escopo correto (obrigatório). Se faltar, pedir **spec** primeiro.
124
- 2. Se `.oxe/config.json` tiver `discuss_before_plan: true` e **não** existir `DISCUSS.md` no escopo resolvido com decisões fechadas, pedir **discuss** antes de planejar.
131
+ 1. Resolver `active_session` e ler `SPEC.md` do escopo correto (obrigatório). Se faltar, pedir **spec** primeiro.
132
+ 2. Se `.oxe/config.json` tiver `discuss_before_plan: true` e **não** existir `DISCUSS.md` no escopo resolvido com decisões fechadas, pedir **discuss** antes de planejar.
125
133
  3. Se existir **`.oxe/NOTES.md`**, consumir ou explicitamente adiar cada bullet relevante (ver **context**).
126
134
  4. Ler `.oxe/codebase/*.md` (incl. CONVENTIONS / CONCERNS) e inspecionar pontos de entrada se a spec exigir.
127
- 5. Escrever ou atualizar `PLAN.md` no escopo resolvido usando `oxe/templates/PLAN.template.md` como cabeçalho; **preservar** YAML inicial (`oxe_doc: plan`, `status`, `inputs`) se já existir e **atualizar** `updated:` (ISO); em **--replan**, preencher a seção **Replanejamento** (data, motivo, lições de VERIFY/SUMMARY, tarefas removidas/alteradas).
128
- 6. Definir ondas: onda 1 = tarefas sem dependência entre si; onda seguinte = dependentes; respeitar `plan_max_tasks_per_wave` se configurado.
129
- 7. Preencher `## Autoavaliação do Plano` com a rubrica fixa. A confiança é a soma ponderada das seis dimensões; não inventar percentagem sem justificar os pontos.
130
- 8. Aplicar integralmente o bloco **`<plan_quality_gate>`** acima ao `PLAN.md` em disco; corrigir o ficheiro até passar ou documentar gaps explícitos.
131
- 9. Atualizar `.oxe/STATE.md` global: fase `plan_ready`, próximo passo `oxe:execute` apenas se `Melhor plano atual: sim` e a confiança estiver no limiar executável; caso contrário, próximo passo deve reduzir incerteza (`oxe:discuss`, `oxe:research` ou replanejamento).
132
- 10. **Sugestão de agentes (inteligente):** após o gate passar, verificar se o plano tem 3+ domínios distintos (ex.: backend + frontend + DB, ou auth + notificações + UI). Se sim, sugerir proativamente: "Este plano tem N domínios distintos. Quer gerar um blueprint de agentes com `/oxe-plan --agents`?" — não executar automaticamente, apenas oferecer. Se o usuário incluiu `--agents` no input original, executar imediatamente a lógica de `oxe/workflows/plan-agent.md`.
133
- 11. Listar no chat: resultado do gate (OK ou corrigido), ondas, contagem de tarefas, comando de teste guarda-chuva se houver, melhor-plano-atual e confiança.
134
- </process>
135
+ 5. Escrever ou atualizar `PLAN.md` no escopo resolvido usando `oxe/templates/PLAN.template.md` como cabeçalho; **preservar** YAML inicial (`oxe_doc: plan`, `status`, `inputs`) se já existir e **atualizar** `updated:` (ISO); em **--replan**, preencher a seção **Replanejamento** (data, motivo, lições de VERIFY/SUMMARY, tarefas removidas/alteradas).
136
+ 6. Definir ondas: onda 1 = tarefas sem dependência entre si; onda seguinte = dependentes; respeitar `plan_max_tasks_per_wave` se configurado.
137
+ 7. Preencher `## Autoavaliação do Plano` com a rubrica fixa. A confiança é a soma ponderada das seis dimensões; não inventar percentagem sem justificar os pontos.
138
+ 8. Aplicar integralmente o bloco **`<plan_quality_gate>`** acima ao `PLAN.md` em disco; corrigir o ficheiro até passar ou documentar gaps explícitos.
139
+ 9. Atualizar `.oxe/STATE.md` global: fase `plan_ready`, próximo passo `oxe:execute` apenas se `Melhor plano atual: sim` e a confiança estiver no limiar executável; caso contrário, próximo passo deve reduzir incerteza (`oxe:discuss`, `oxe:research` ou replanejamento).
140
+ 10. **Sugestão de agentes (inteligente):** após o gate passar, verificar se o plano tem 3+ domínios distintos (ex.: backend + frontend + DB, ou auth + notificações + UI). Se sim, sugerir proativamente: "Este plano tem N domínios distintos. Quer gerar um blueprint de agentes com `/oxe-plan --agents`?" — não executar automaticamente, apenas oferecer. Se o usuário incluiu `--agents` no input original, executar imediatamente a lógica de `oxe/workflows/plan-agent.md`.
141
+ 11. Listar no chat: resultado do gate (OK ou corrigido), ondas, contagem de tarefas, comando de teste guarda-chuva se houver, melhor-plano-atual e confiança.
142
+ </process>
135
143
 
136
144
  <success_criteria>
137
145
  - [ ] Cada tarefa tem seção **Verificar** com comando ou checklist explícito.
138
146
  - [ ] Dependências entre tarefas estão explícitas.
139
147
  - [ ] Cada critério da SPEC (IDs **A***) está mapeado em **Aceite vinculado** de alguma tarefa ou explicitamente marcado como gap no plano.
148
+ - [ ] Cada R-ID `v1`/`v2` do SPEC tem ao menos um A* coberto por alguma tarefa, ou gap documentado (gate 14).
140
149
  </success_criteria>
@@ -8,10 +8,10 @@ Quando o trabalho envolve **2 ou mais domínios distintos** (ex.: backend + fron
8
8
  Usar quando: correção pontual, refactor local, feature pequena ou protótipo que **não** justifica critérios de aceite completos.
9
9
  </objective>
10
10
 
11
- <context>
12
- - Seguir `oxe/workflows/references/flow-robustness-contract.md`. Quick continua leve, mas não pode fingir que existe plano formal quando ele não existe.
13
- - Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, `QUICK.md` e `quick-agents.json` vivem em `.oxe/<active_session>/plan/`; sem sessão ativa, manter `.oxe/`.
14
- - Ler `.oxe/STATE.md` e, se existirem, `OVERVIEW.md` e `STACK.md` em `.oxe/codebase/` para não contradizer o repo.
11
+ <context>
12
+ - Seguir `oxe/workflows/references/flow-robustness-contract.md`. Quick continua leve, mas não pode fingir que existe plano formal quando ele não existe.
13
+ - Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, `QUICK.md` e `quick-agents.json` vivem em `.oxe/<active_session>/plan/`; sem sessão ativa, manter `.oxe/`.
14
+ - Ler `.oxe/STATE.md` e, se existirem, `OVERVIEW.md` e `STACK.md` em `.oxe/codebase/` para não contradizer o repo.
15
15
  - Não apagar `SPEC.md` / `PLAN.md` se existirem; este fluxo é paralelo ou temporário.
16
16
  - **Blueprint plan-agent:** este fluxo **não** reutiliza papéis (`role` / `scope`) de **`.oxe/plan-agents.json`**. Se existir `plan-agents.json` com **`oxePlanAgentsSchema: 2`** e `lifecycle.status` **não** for já `invalidated`, **invalidar** o blueprint após criar/substituir **`QUICK.md`**: `lifecycle: { "status": "invalidated", "since": "<ISO>", "invalidatedBy": "quick", "invalidatedReason": "oxe-quick substitui trilha focada do blueprint" }`. Actualizar **`.oxe/STATE.md`** — secção **Blueprint de agentes (sessão)**: **lifecycle_status** → `invalidated`, nota "invalidado por quick". Não escrever novas mensagens em **`.oxe/plan-agent-messages/`** para o `runId` invalidado.
17
17
  - **Quick-agents anterior:** se existir **`.oxe/quick-agents.json`** com `status` diferente de `done` ou `invalidated`, invalidá-lo antes de criar o novo (`status: "invalidated", "since": "<ISO>", "reason": "novo quick iniciado"`).
@@ -121,8 +121,8 @@ Uso **sem** novo slash: é o mesmo `/oxe-quick` com redação mínima.
121
121
  - **Passos** — lista numerada, **máximo 10**; cada passo acionável numa linha.
122
122
  - **Verificar** — um comando de terminal **ou** checklist manual explícito.
123
123
  - **Agentes dinâmicos** — seção opcional quando PDDA estiver ativo (ver acima).
124
- - **Promover para spec/plan?** — preencher sempre; se qualquer gatilho abaixo for verdadeiro, resposta **sim** e parar de acumular trabalho no QUICK — passar a **`/oxe-spec`** (e depois discuss/plan conforme config).
125
- - **Confiança formal do plano:** se ainda não houver `PLAN.md`, declarar explicitamente no QUICK que **não houve plano formal**; não inventar percentagem de confiança aqui.
124
+ - **Promover para spec/plan?** — preencher sempre; se qualquer gatilho abaixo for verdadeiro, resposta **sim** e parar de acumular trabalho no QUICK — passar a **`/oxe-spec`** (e depois discuss/plan conforme config).
125
+ - **Confiança formal do plano:** se ainda não houver `PLAN.md`, declarar explicitamente no QUICK que **não houve plano formal**; não inventar percentagem de confiança aqui.
126
126
 
127
127
  O perfil fast **não** é uma segunda trilha: continua sujeito à mesma promoção obrigatória quando o trabalho deixa de ser trivial.
128
128
 
@@ -143,17 +143,19 @@ No final de **`.oxe/QUICK.md`**, mantenha a linha:
143
143
  Se **sim**, o próximo passo recomendado no chat é **`/oxe-spec`** (depois discuss/plan conforme config).
144
144
 
145
145
  <process>
146
- 1. Garantir `.oxe/` (usar template de STATE se `STATE.md` não existir). Verificar `OBSERVATIONS.md` do escopo resolvido se houver entradas `pendente` com impacto `all`, registrar como restrições nos **Passos** ou no **Contexto** do QUICK.md antes de finalizar; marcar as OBS como `incorporada quick (data)`.
146
+ 0. **Git safety check (pré-execução):** antes de criar ou substituir QUICK.md, verificar `git status` do projeto (se `.git` existir). Se houver mudanças não commitadas **não relacionadas** ao objetivo deste quick, alertar: *"Existem mudanças não commitadas. Quer commitar antes de começar este quick?"* — não bloquear a execução, apenas perguntar. Prosseguir se o usuário confirmar ou se não houver git.
147
+ 1. Garantir `.oxe/` (usar template de STATE só se `STATE.md` não existir). Verificar `OBSERVATIONS.md` do escopo resolvido — se houver entradas `pendente` com impacto `all`, registrar como restrições nos **Passos** ou no **Contexto** do QUICK.md antes de finalizar; marcar as OBS como `incorporada → quick (data)`.
147
148
  2. Avaliar se PDDA lean se aplica (ver `<plan_driven_dynamic_agents_lean>` — domínios distintos, 5+ passos, ou flag `--agents`).
148
- 3. Criar ou substituir **`QUICK.md`** no escopo resolvido com:
149
+ 3. Criar ou substituir **`QUICK.md`** no escopo resolvido com:
149
150
  - **Objetivo** — uma frase. *(Esta é a minispec: restringe o escopo de todos os agentes e passos.)*
150
151
  - **Contexto** — 2–5 bullets (arquivos/pastas já vistos).
151
152
  - **Passos** — lista numerada, **máximo 10** passos acionáveis; se PDDA ativo, anotar `<!-- agente: id -->` em cada passo.
152
153
  - **Agentes dinâmicos** *(somente se PDDA ativo)* — tabela com ID, papel, steps, persona.
153
154
  - **Verificar** — pelo menos um: comando de terminal (ex.: `npm test`) **ou** checklist manual explícito. *(Este é o critério de aceite da minispec.)*
154
- - **Promover para spec/plan?** — conforme seção acima.
155
- - **Plano formal existente?** — `não`; usar `sim` apenas se este quick estiver ancorado a um `PLAN.md` já aprovado no mesmo escopo.
156
- 4. Se PDDA ativo, criar **`quick-agents.json`** no escopo resolvido usando `oxe/templates/quick-agents.template.json`:
155
+ - **Promover para spec/plan?** — conforme seção acima.
156
+ - **Plano formal existente?** — `não`; usar `sim` apenas se este quick estiver ancorado a um `PLAN.md` já aprovado no mesmo escopo.
157
+ - **Scope check (inline):** durante a implementação, ao fim de cada passo, verificar se algum critério de promoção foi atingido (>8 arquivos, contrato público, segurança, >10 passos). Se sim, pausar e apresentar: *"O escopo deste quick cresceu: [critério atingido]. Recomendar promoção para /oxe-spec. Continuar mesmo assim?"*
158
+ 4. Se PDDA ativo, criar **`quick-agents.json`** no escopo resolvido usando `oxe/templates/quick-agents.template.json`:
157
159
  - Gerar `quickId` novo (`quick-<YYYY-MM-DD>-<6hex>`).
158
160
  - `status: "active"`, `since: "<ISO agora>"`.
159
161
  - Preencher `agents[]` derivando de cada grupo de passos do QUICK.md.
@@ -161,12 +163,15 @@ Se **sim**, o próximo passo recomendado no chat é **`/oxe-spec`** (depois disc
161
163
  6. Se existir **`.oxe/quick-agents.json`** anterior com `status` não-terminal, invalidá-lo (ver **context**).
162
164
  7. Atualizar **`.oxe/STATE.md`**: fase `quick_active`, próximo passo `oxe:execute` ou implementação manual + `oxe:verify`; se PDDA ativo, registrar `quick_agents_status: active` e `quick_id: <quickId>`.
163
165
  8. Responder no chat com resumo em ≤10 linhas: objetivo, passos, agentes (se PDDA ativo), verificação; se promover = sim, destacar **`/oxe-spec`** como próximo passo lógico; se blueprint plan-agent foi invalidado, mencionar **`/oxe-plan-agent`** para novo roteiro.
166
+ 9. **Sugestão de commit (pós-verify bem-sucedido):** após o bloco **Verificar** passar, sugerir ao usuário: *"Quick concluído. Commitar? `git add -p && git commit -m 'quick: <objetivo em uma linha>'`"* — apenas sugerir, não executar automaticamente.
164
167
  </process>
165
168
 
166
169
  <success_criteria>
167
170
  - [ ] `.oxe/QUICK.md` existe com objetivo (minispec), passos (mini-plano) e bloco **Verificar** (critério de aceite).
168
171
  - [ ] `STATE.md` reflete fase `quick_active` e próximo passo coerente.
169
172
  - [ ] Fica explícito quando **promover** para spec/plan (regra acima + campo no arquivo).
173
+ - [ ] Scope creep gate verificado ao fim de cada passo; se critério atingido, pausa apresentada ao usuário.
174
+ - [ ] Após verify bem-sucedido, sugestão de commit apresentada (não executada automaticamente).
170
175
  - [ ] Se havia blueprint schema 2 activo, `plan-agents.json` e `STATE.md` reflectem **`invalidated`** por quick.
171
176
  - [ ] Se PDDA ativo: `quick-agents.json` existe com `status: active`, `quickId` único, agentes com `role` específico à demanda, `steps` alinhados aos passos do QUICK.md; seção `## Agentes dinâmicos` presente no QUICK.md.
172
177
  - [ ] Se PDDA ativo: máximo 3 agentes; se mais necessário, QUICK.md declara `Promover para spec/plan?: sim` com razão "necessita > 3 agentes".
@@ -0,0 +1,27 @@
1
+ # OXE — Descoberta Adaptativa
2
+
3
+ <objective>
4
+ Reduzir ambiguidade antes da escrita de `SPEC.md` e melhorar a qualidade do plano. Esta referência orienta `spec` e `ask`.
5
+ </objective>
6
+
7
+ ## Regras
8
+
9
+ - Classificar a demanda o mais cedo possível: `feature`, `bugfix`, `refactor`, `research`, `ops`, `mixed`.
10
+ - Modular as perguntas pelo tipo de demanda e pelo risco.
11
+ - Limitar rodadas; consolidar entendimento antes de escrever artefatos.
12
+ - Registrar incertezas estruturadas, não apenas em texto solto.
13
+
14
+ ## Blocos mínimos
15
+
16
+ - **Objetivo final**
17
+ - **Impacto / público**
18
+ - **Restrições técnicas**
19
+ - **Riscos e casos extremos**
20
+ - **Evidência faltante**
21
+
22
+ ## Saída esperada
23
+
24
+ - resumo de entendimento;
25
+ - demanda classificada;
26
+ - incertezas remanescentes;
27
+ - recomendação de próximo passo compatível com o risco.
@@ -6,16 +6,19 @@ Produzir **notas de pesquisa rastreáveis** em `research/YYYY-MM-DD-<slug>.md` d
6
6
  Não substitui **SPEC** nem **PLAN**; alimenta decisões que depois entram na SPEC ou no PLAN.
7
7
  </objective>
8
8
 
9
- <context>
9
+ <context>
10
10
  - Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, research vive em `.oxe/<active_session>/research/`; sem sessão ativa, usar `.oxe/research/`.
11
+ - Tratar pesquisa como **investigação estruturada**, não como nota solta. Cada investigação deve ter objetivo, fontes, modo, profundidade, conclusões e impacto na trilha.
11
12
  - **Uma sessão = um ficheiro novo** em `research/`; não sobrescrever notas antigas salvo correção explícita do utilizador.
12
13
  - Nome do ficheiro: **`YYYY-MM-DD-<slug-kebab>.md`** (data ISO do dia acordado na mensagem ou data atual; slug único, curto, ASCII preferível).
13
14
  - **Índice:** `RESEARCH.md` do mesmo escopo deve conter tabela **Histórico** (mais recente primeiro) com colunas: **Data** | **Ficheiro** (`research/...`) | **Tema / âmbito** | **Tipo** (ex.: spike, mapa-sistema, reversa, modernização, decisão) | **Estado** (decidido / pendente / parcial) | **Resumo** (uma linha). Opcional: bloco **Última sessão** no topo com link para a nota mais recente.
14
15
  - Preferir **`.oxe/SPEC.md`** existente; se o pedido for mapear/reverter **antes** de spec, criar a nota mesmo assim com **Contexto** a declarar ausência de SPEC e próximo passo `oxe:spec`.
15
16
  - **Progressive disclosure:** sistemas grandes → profundidade por área; várias sessões/notas datadas em vez de um único ficheiro enorme.
16
- - Template: **`oxe/templates/RESEARCH.template.md`**.
17
- - Segurança: não gravar segredos nem valores de variáveis de ambiente.
18
- </context>
17
+ - Template: **`oxe/templates/RESEARCH.template.md`**.
18
+ - Ler `INVESTIGATIONS.md` e investigações anteriores do escopo resolvido antes de abrir nova pesquisa sobre o mesmo assunto.
19
+ - Ler `.oxe/CAPABILITIES.md` quando a investigação depender de capability local, script ou conector já existente.
20
+ - Segurança: não gravar segredos nem valores de variáveis de ambiente.
21
+ </context>
19
22
 
20
23
  <thinking_depth>
21
24
  ## Profundidade de Raciocínio
@@ -36,12 +39,13 @@ Anotar `thinking_depth: surface | standard | deep` no frontmatter da nota de pes
36
39
  <process>
37
40
  1. Garantir pastas `.oxe/` e `research/` do escopo resolvido.
38
41
  2. Escolher `YYYY-MM-DD-<slug>.md` único; se colisão, acrescentar sufixo ao slug (ex. `-b`).
39
- 3. Criar a nota a partir de `RESEARCH.template.md`: preencher secções **base**; preencher secções de **reforço** ou marcar **N/A** com justificação curta quando o âmbito for sistema grande, reversa ou modernização.
42
+ 3. Criar a nota a partir de `RESEARCH.template.md`: preencher secções **base**; preencher secções de **reforço** ou marcar **N/A** com justificação curta quando o âmbito for sistema grande, reversa ou modernização.
40
43
  4. Se `RESEARCH.md` do escopo resolvido não existir, criá-lo com título `# OXE — Índice de pesquisa`, parágrafo introdutório, secção **Histórico** com cabeçalho de tabela e primeira linha.
41
44
  5. Se já existir, **atualizar** `RESEARCH.md` do escopo resolvido: nova linha no topo da tabela **Histórico** (mais recente primeiro); opcionalmente atualizar **Última sessão** com link para o ficheiro novo.
42
- 6. Ler **`.oxe/SPEC.md`**, **`.oxe/codebase/*`** e código alvo (Glob/Grep/Read) conforme âmbito.
43
- 7. Atualizar **`.oxe/STATE.md`**: nota de fase / próximo passo típico `oxe:plan`, ou `oxe:spec` se faltar contrato, ou `oxe:ui-spec` se o foco for UI antes do plano.
44
- 8. Responder no chat em 5–10 linhas: caminho da nota nova, confirmação de atualização do índice, próximo passo OXE.
45
+ 6. Atualizar `INVESTIGATIONS.md` do escopo resolvido com objetivo, fontes, modo, profundidade, conclusão e impacto na trilha. Se não existir, criá-lo.
46
+ 7. Ler **`.oxe/SPEC.md`**, **`.oxe/codebase/*`** e código alvo (Glob/Grep/Read) conforme âmbito.
47
+ 8. Atualizar **`.oxe/STATE.md`**: nota de fase / próximo passo típico `oxe:plan`, ou `oxe:spec` se faltar contrato, ou `oxe:ui-spec` se o foco for UI antes do plano.
48
+ 9. Responder no chat em 5–10 linhas: caminho da nota nova, confirmação de atualização do índice, próximo passo OXE.
45
49
  </process>
46
50
 
47
51
  <success_criteria>
@@ -34,6 +34,27 @@ Pode ser chamado:
34
34
  **Formato de lição (prescritivo, não descritivo):**
35
35
  - ❌ "A tarefa T4 demorou muito" (descritivo — não ajuda no próximo ciclo)
36
36
  - ✅ "Tarefas com integração de terceiros devem ter Complexidade L mínimo + Verificar com mock fallback" (prescritivo — o próximo plan pode aplicar)
37
+
38
+ **Campos obrigatórios de cada lição:**
39
+ ```
40
+ - **Lição C-NN-L1:** <instrução prescritiva — o que fazer diferente>
41
+ - **Raiz:** <por que aconteceu>
42
+ - **Tipo:** spec | plan | execute | verify | process | agents
43
+ - **Aplicar em:** /oxe-spec | /oxe-plan | /oxe-execute | etc.
44
+ - **Status:** ativo | resolvido
45
+ - **Frequência:** N ← quantos ciclos registraram ou confirmaram esta lição
46
+ - **Impacto:** alto | médio | baixo ← criticidade se repetida
47
+ - **Última aplicação:** YYYY-MM-DD
48
+ ```
49
+
50
+ **Regras de scoring:**
51
+ - **Frequência:** começa em `1`. A cada novo ciclo em que a mesma lição se repete (mesma raiz + tipo), incrementar `Frequência: N+1` e atualizar `Última aplicação` **em vez de criar entrada duplicada**.
52
+ - **Impacto alto:** causou retrabalho de ciclo inteiro, falha no verify, ou seria crítico se repetido — tipo auth, schema, contrato público.
53
+ - **Impacto médio:** causou atraso ou retrabalho localizado (1–3 tarefas).
54
+ - **Impacto baixo:** menor, já tem mitigação óbvia, ou restrito a contexto muito específico.
55
+
56
+ **Como os consumidores usam o scoring (instrução para spec e plan):**
57
+ Ao ler `LESSONS.md`, priorizar entradas com **`Frequência >= 2`** ou **`Impacto: alto`** — aplicar como restrições explícitas. Lições com `Frequência: 1` e `Impacto: baixo` são contexto secundário.
37
58
  </taxonomy>
38
59
 
39
60
  <process>
@@ -43,12 +64,14 @@ Pode ser chamado:
43
64
  4. Ler **`.oxe/STATE.md`**: capturar número de ondas, execute_mode usado, se houve loop, se houve escalação para forensics.
44
65
  5. Sintetizar **3–5 lições prescritivas** (não mais — qualidade sobre quantidade):
45
66
  - Cada lição responde: "O que o próximo ciclo deve fazer diferente?"
46
- - Formato: **Lição** (o que fazer) + **Raiz** (por que isso aconteceu) + **Tipo** + **Aplicar em**
67
+ - Formato: **Lição** + **Raiz** + **Tipo** + **Aplicar em** + **Frequência** + **Impacto** (ver taxonomia)
68
+ - Avaliar impacto: `alto` se causou retrabalho de ciclo/falha crítica; `médio` se localizado; `baixo` se menor
47
69
  6. Determinar o próximo **ciclo ID** (C-NN) lendo `.oxe/LESSONS.md` existente ou começando em C-01.
48
70
  7. Criar ou atualizar **`.oxe/LESSONS.md`** usando `oxe/templates/LESSONS.template.md`:
49
- - Adicionar linha na tabela de índice (mais recente primeiro).
50
- - Adicionar seção `### C-NN` com as lições sintetizadas.
51
- - **Nunca apagar** entradas anteriores mudar `Status: resolvido` se a lição foi superada.
71
+ - **Antes de adicionar:** verificar se alguma lição de ciclo anterior tem a mesma raiz e tipo. Se sim, **incrementar `Frequência`** e atualizar `Última aplicação: YYYY-MM-DD` nessa entrada existente — **não duplicar**.
72
+ - Apenas entradas genuinamente novas recebem uma nova linha na tabela de índice (mais recente primeiro).
73
+ - Adicionar seção `### C-NN` com as lições novas do ciclo (ou referência às entradas incrementadas).
74
+ - **Nunca apagar** entradas anteriores — só mudar `Status: resolvido` se a lição foi definitivamente superada.
52
75
  8. Atualizar **`.oxe/STATE.md`**: campo `last_retro: YYYY-MM-DD`.
53
76
  9. Responder no chat: ID do ciclo (C-NN), número de lições registradas, lição mais crítica em 1 frase, sugestão do próximo ciclo (`/oxe-scan` ou `/oxe-spec`).
54
77
  </process>
@@ -57,6 +80,8 @@ Pode ser chamado:
57
80
  - [ ] `.oxe/LESSONS.md` existe com entrada C-NN na tabela e seção de detalhe.
58
81
  - [ ] Cada lição é prescritiva (diz o que fazer) não descritiva (não é só o que aconteceu).
59
82
  - [ ] 3–5 lições por ciclo — não um dump completo de eventos.
83
+ - [ ] Cada lição tem campos `Frequência`, `Impacto` e `Última aplicação` preenchidos.
84
+ - [ ] Lições com raiz e tipo iguais a entradas anteriores têm `Frequência` incrementada, não duplicadas.
60
85
  - [ ] `STATE.md` tem `last_retro` atualizado.
61
- - [ ] Entradas anteriores preservadas; apenas `Status` pode mudar.
86
+ - [ ] Entradas anteriores preservadas; apenas `Status` pode mudar para `resolvido`.
62
87
  </success_criteria>
@@ -35,6 +35,7 @@ Flag `--refresh`: forçar modo refresh.
35
35
  <process>
36
36
  1. Garantir pastas `.oxe/` e `.oxe/codebase/`.
37
37
  2. Inventariar o repo (Glob/Grep): linguagens, manifests (`package.json`, `pom.xml`, `go.mod`, etc.), pastas principais — aplicando foco/ignore da config se houver.
38
+ 2d. **Detecção de Azure:** se o inventário revelar uso de Azure — pacotes `@azure/*` em `package.json`, `com.microsoft.azure.*` em `pom.xml`, `github.com/Azure/...` em `go.mod`, imports `azure.*` em `.py` / `.cs` / `.java`, ou variáveis de ambiente com prefixo `AZURE_` — registrar em **INTEGRATIONS.md** com: serviços detectados, versão do SDK quando disponível, variáveis de ambiente usadas (sem valores) e referência ao provider nativo `oxe-cc azure`. Se `.oxe/cloud/azure/INVENTORY.md` existir, mencionar o inventário materializado em INTEGRATIONS.md. **Esta detecção é apenas informativa** — registra a presença de SDKs Azure em INTEGRATIONS.md, mas não altera o fluxo canônico OXE nem aciona steps Azure em projetos que não dependem do provider. O provider `oxe-cc azure` é opt-in: só deve ser usado quando o usuário informar explicitamente na SPEC ou ativar via `oxe-cc azure auth login`.
38
39
  2b. **Legado / brownfield:** se o inventário revelar sinais de mainframe ou desktop legado (ex.: `*.cbl`, `*.jcl`, pastas `jcl/`, `cpy/` ou `copy/`, `*.cpy`, `*.frm` / `*.vbp`, volume de `*.sql` com procedures), aplicar **`oxe/workflows/references/legacy-brownfield.md`** ao preencher STACK, STRUCTURE, INTEGRATIONS, TESTING e CONCERNS — **sem** assumir Node/Java nem omitir TESTING.md quando não houver CI.
39
40
  2c. **`docs/` / `src/docs/` com documentação humana:** se existir pasta de documentação com índice (`docs/INDICE-GERAL.md`, `docs/README.md`, `**/00-*INDICE*.md`, ou enciclopédia por camadas), em **OVERVIEW** e **STRUCTURE** resumir o **papel das subpastas** (ex.: `tecnico/`, `negocio/`, `glossary/`, comparativos, baixa plataforma) e linkar o ficheiro índice em backticks. Em **INTEGRATIONS** (e se útil em OVERVIEW), quando o repo for híbrido host + distribuído + externos, incluir bullets **Alta plataforma**, **Baixa plataforma**, **Externo** conforme `legacy-brownfield.md`. Sugerir template opcional `oxe/templates/DOCS_BROWNFIELD_LAYOUT.md` ao utilizador se a árvore `docs/` estiver em crescimento.
40
41
  3. Produzir **sete** arquivos em `.oxe/codebase/` (paralelize subagentes quando disponível):