oxe-cc 0.6.4 → 0.6.5

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.
@@ -3,24 +3,25 @@
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: `.oxe/SPEC.md` (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 **`.oxe/VERIFY.md`** (gaps e falhas), **`.oxe/SUMMARY.md`** se existir, 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
- - Se existir **`.oxe/OBSERVATIONS.md`** 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)`.
16
- - Se existir **`.oxe/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
+ - Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, o plano vive em `.oxe/<active_session>/plan/` e a spec em `.oxe/<active_session>/spec/`.
16
+ - 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)`.
17
+ - 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: ... -->`.
17
18
  - **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.
18
19
  - 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).
19
20
  - 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*.
20
- - Se existir **`.oxe/UI-SPEC.md`**, as tarefas de UI devem referenciar secções do UI-SPEC no texto de **Implementação** ou **Verificar**.
21
- - Se existir **`.oxe/DISCUSS.md`**, 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.
22
- - Se existir **`.oxe/RESEARCH.md`** e notas em **`.oxe/research/*.md`**, 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.
23
- - Se existir **`.oxe/plan-agents.json`** (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.
21
+ - 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**.
22
+ - 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.
23
+ - 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.
24
+ - 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.
24
25
  - 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/`.
25
26
  - Se existir **`.oxe/config.json`** com `default_verify_command` não vazio, usar como fallback quando a SPEC não indicar comando.
26
27
  - 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.
@@ -66,11 +67,11 @@ Antes de finalizar a resposta ao utilizador, o agente **deve** percorrer este ga
66
67
 
67
68
  1. **Depende de:** em cada `### Tn`, apenas IDs `Tk` que existem no mesmo ficheiro, ou `—`.
68
69
  2. **Ciclos:** não há cadeia circular óbvia (ex.: T2→T3→T2); se houver, quebrar dependência ou onda.
69
- 3. **Cobertura A*:** todos os IDs da tabela de critérios em `.oxe/SPEC.md` aparecem em **Aceite vinculado:** de alguma tarefa, ou há nota explícita de **gap** no PLAN (fora de âmbito / adiado) por ID.
70
+ 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.
70
71
  4. **Ondas:** cada número de **Onda:** usado tem pelo menos uma tarefa; sem ondas vazias.
71
72
  5. **`plan_max_tasks_per_wave`:** se `.oxe/config.json` tiver valor **> 0**, contar tarefas por **Onda**; nenhuma onda excede o limite.
72
- 6. **UI-SPEC:** se existir `.oxe/UI-SPEC.md`, toda tarefa cuja **Implementar** ou **Verificar** toque UI deve citar **secção § do UI-SPEC** ou path explícito.
73
- 7. **Fidelidade de decisões:** se existir `.oxe/DISCUSS.md` com IDs **D-NN**, 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.
73
+ 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.
74
+ 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.
74
75
  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.
75
76
  9. **Test-first:** em toda tarefa, `Verificar` deve preceder `Implementar` no texto. Se a ordem estiver invertida, corrigir antes de finalizar.
76
77
 
@@ -80,14 +81,14 @@ Resumo obrigatório no chat: `Gate do plano: OK` ou `Gate do plano: corrigido (N
80
81
  </plan_quality_gate>
81
82
 
82
83
  <process>
83
- 1. Ler `.oxe/SPEC.md` (obrigatório). Se faltar, pedir **spec** primeiro.
84
- 2. Se `.oxe/config.json` tiver `discuss_before_plan: true` e **não** existir `.oxe/DISCUSS.md` com decisões fechadas, pedir **discuss** antes de planejar.
84
+ 1. Resolver `active_session` e ler `SPEC.md` do escopo correto (obrigatório). Se faltar, pedir **spec** primeiro.
85
+ 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.
85
86
  3. Se existir **`.oxe/NOTES.md`**, consumir ou explicitamente adiar cada bullet relevante (ver **context**).
86
87
  4. Ler `.oxe/codebase/*.md` (incl. CONVENTIONS / CONCERNS) e inspecionar pontos de entrada se a spec exigir.
87
- 5. Escrever ou atualizar `.oxe/PLAN.md` 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).
88
+ 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).
88
89
  6. Definir ondas: onda 1 = tarefas sem dependência entre si; onda seguinte = dependentes; respeitar `plan_max_tasks_per_wave` se configurado.
89
90
  7. Aplicar integralmente o bloco **`<plan_quality_gate>`** acima ao `PLAN.md` em disco; corrigir o ficheiro até passar ou documentar gaps explícitos.
90
- 8. Atualizar `.oxe/STATE.md`: fase `plan_ready`, próximo passo `oxe:execute` (implementar ondas) e depois `oxe:verify`.
91
+ 8. Atualizar `.oxe/STATE.md` global: fase `plan_ready`, próximo passo `oxe:execute` (implementar ondas) e depois `oxe:verify`.
91
92
  9. **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`.
92
93
  10. Listar no chat: resultado do gate (OK ou corrigido), ondas, contagem de tarefas, comando de teste guarda-chuva se houver.
93
94
  </process>
@@ -14,7 +14,7 @@ Detecta a operação pelo primeiro token do input e delega ao workflow canônico
14
14
  - Este workflow é um **dispatcher**: lê o input, identifica a operação e executa o workflow correto.
15
15
  - Workflows canônicos: `oxe/workflows/milestone.md`, `oxe/workflows/workstream.md`, `oxe/workflows/checkpoint.md`.
16
16
  - Se o input for ambíguo, apresentar as 3 operações disponíveis e pedir escolha.
17
- - Sem input: mostrar o estado atual de milestones e workstreams ativos lendo `STATE.md`, `MILESTONES.md` e `CHECKPOINTS.md`.
17
+ - Sem input: mostrar o estado atual de milestones e workstreams ativos lendo `STATE.md`, `.oxe/global/MILESTONES.md` e `CHECKPOINTS.md` do escopo atual da sessão.
18
18
  </context>
19
19
 
20
20
  <dispatch_table>
@@ -8,8 +8,9 @@ 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
- - Ler `.oxe/STATE.md` e, se existirem, `OVERVIEW.md` e `STACK.md` em `.oxe/codebase/` para não contradizer o repo.
11
+ <context>
12
+ - 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/`.
13
+ - Ler `.oxe/STATE.md` e, se existirem, `OVERVIEW.md` e `STACK.md` em `.oxe/codebase/` para não contradizer o repo.
13
14
  - Não apagar `SPEC.md` / `PLAN.md` se existirem; este fluxo é paralelo ou temporário.
14
15
  - **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.
15
16
  - **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"`).
@@ -140,16 +141,16 @@ No final de **`.oxe/QUICK.md`**, mantenha a linha:
140
141
  Se **sim**, o próximo passo recomendado no chat é **`/oxe-spec`** (depois discuss/plan conforme config).
141
142
 
142
143
  <process>
143
- 1. Garantir `.oxe/` (usar template de STATE só se `STATE.md` não existir). Verificar **`.oxe/OBSERVATIONS.md`** — 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)`.
144
+ 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)`.
144
145
  2. Avaliar se PDDA lean se aplica (ver `<plan_driven_dynamic_agents_lean>` — domínios distintos, 5+ passos, ou flag `--agents`).
145
- 3. Criar ou substituir **`.oxe/QUICK.md`** com:
146
+ 3. Criar ou substituir **`QUICK.md`** no escopo resolvido com:
146
147
  - **Objetivo** — uma frase. *(Esta é a minispec: restringe o escopo de todos os agentes e passos.)*
147
148
  - **Contexto** — 2–5 bullets (arquivos/pastas já vistos).
148
149
  - **Passos** — lista numerada, **máximo 10** passos acionáveis; se PDDA ativo, anotar `<!-- agente: id -->` em cada passo.
149
150
  - **Agentes dinâmicos** *(somente se PDDA ativo)* — tabela com ID, papel, steps, persona.
150
151
  - **Verificar** — pelo menos um: comando de terminal (ex.: `npm test`) **ou** checklist manual explícito. *(Este é o critério de aceite da minispec.)*
151
152
  - **Promover para spec/plan?** — conforme seção acima.
152
- 4. Se PDDA ativo, criar **`.oxe/quick-agents.json`** usando `oxe/templates/quick-agents.template.json`:
153
+ 4. Se PDDA ativo, criar **`quick-agents.json`** no escopo resolvido usando `oxe/templates/quick-agents.template.json`:
153
154
  - Gerar `quickId` novo (`quick-<YYYY-MM-DD>-<6hex>`).
154
155
  - `status: "active"`, `since: "<ISO agora>"`.
155
156
  - Preencher `agents[]` derivando de cada grupo de passos do QUICK.md.
@@ -0,0 +1,71 @@
1
+ # OXE — Referência: Session Path Resolution
2
+
3
+ <objective>
4
+ Padronizar a resolução de caminhos quando o projeto usa **sessões OXE** em `.oxe/sessions/`, preservando o modo legado quando **`.oxe/STATE.md`** não tiver `active_session`.
5
+ </objective>
6
+
7
+ <resolution_rule>
8
+ ## Regra de resolução
9
+
10
+ 1. Ler **`.oxe/STATE.md`** global.
11
+ 2. Procurar o campo **`active_session`** na secção **Sessão ativa**.
12
+ 3. Se existir e tiver valor diferente de `—`, usar:
13
+ - `session_path = .oxe/<active_session>/`
14
+ - `active_session` deve guardar sempre o path relativo completo, por exemplo: `sessions/s001-auth-redesign`
15
+ 4. Se não existir:
16
+ - `session_path = .oxe/`
17
+ - O workflow opera em **modo legado**
18
+
19
+ ## Convenções auxiliares
20
+
21
+ - **global_state_path** = `.oxe/STATE.md`
22
+ - **global_config_path** = `.oxe/config.json`
23
+ - **global_codebase_path** = `.oxe/codebase/`
24
+ - **global_sessions_index_path** = `.oxe/SESSIONS.md`
25
+ - **global_lessons_path** = `.oxe/global/LESSONS.md`
26
+ - **global_milestones_index_path** = `.oxe/global/MILESTONES.md`
27
+ - **global_milestones_dir** = `.oxe/global/milestones/`
28
+ </resolution_rule>
29
+
30
+ <artifact_matrix>
31
+ ## Matriz de artefatos
32
+
33
+ | Tipo | Escopo | Caminho com sessão ativa | Caminho legado |
34
+ |------|--------|--------------------------|----------------|
35
+ | STATE global | global | `.oxe/STATE.md` | `.oxe/STATE.md` |
36
+ | Config | global | `.oxe/config.json` | `.oxe/config.json` |
37
+ | Codebase | global | `.oxe/codebase/*` | `.oxe/codebase/*` |
38
+ | SESSIONS | global | `.oxe/SESSIONS.md` | `.oxe/SESSIONS.md` |
39
+ | LESSONS | global | `.oxe/global/LESSONS.md` | `.oxe/LESSONS.md` |
40
+ | MILESTONES | global | `.oxe/global/MILESTONES.md` | `.oxe/MILESTONES.md` |
41
+ | SPEC / ROADMAP / DISCUSS / UI-SPEC | sessão | `.oxe/<active_session>/spec/` | `.oxe/` |
42
+ | PLAN / QUICK / plan-agents / quick-agents | sessão | `.oxe/<active_session>/plan/` | `.oxe/` |
43
+ | STATE local / OBS / DEBUG / FORENSICS | sessão | `.oxe/<active_session>/execution/` | `.oxe/` |
44
+ | VERIFY / VALIDATION-GAPS / SECURITY / UI-REVIEW | sessão | `.oxe/<active_session>/verification/` | `.oxe/` |
45
+ | CHECKPOINTS | sessão | `.oxe/<active_session>/checkpoints/` | `.oxe/checkpoints/` |
46
+ | RESEARCH | sessão | `.oxe/<active_session>/research/` | `.oxe/research/` |
47
+ | WORKSTREAMS | sessão | `.oxe/<active_session>/workstreams/` | `.oxe/workstreams/` |
48
+ </artifact_matrix>
49
+
50
+ <reading_rule>
51
+ ## Regra de leitura
52
+
53
+ - Quando um workflow ler um artefato da sua trilha, deve tentar primeiro o caminho da sessão ativa.
54
+ - Se não houver sessão ativa, usar o caminho legado.
55
+ - Se houver sessão ativa mas o artefato ainda não existir, o workflow pode:
56
+ - criar no caminho da sessão, se for writer da fase
57
+ - ou fazer fallback de leitura para o legado, quando isso preservar retrocompatibilidade e ajudar numa migração
58
+
59
+ Exemplos:
60
+ - `plan` lê `spec/SPEC.md` da sessão antes de cair para `.oxe/SPEC.md`
61
+ - `verify` lê `plan/PLAN.md` e `spec/SPEC.md` da sessão antes do legado
62
+ - `execute` lê sempre `.oxe/STATE.md` global **antes** de tudo, só para resolver `active_session`
63
+ </reading_rule>
64
+
65
+ <cross_session_refs>
66
+ ## Referências cruzadas
67
+
68
+ - Em `SESSION.md`, referências a outras sessões usam o formato **`@sNNN`**
69
+ - O texto pode complementar com o path, por exemplo: `@s003 ver sessions/s003-auth-hardening/SESSION.md`
70
+ - Não existe sessão múltipla ativa: o formato `@sNNN` é apenas referência documental
71
+ </cross_session_refs>
@@ -1,15 +1,16 @@
1
1
  # OXE — Workflow: research
2
2
 
3
3
  <objective>
4
- Produzir **notas de pesquisa rastreáveis** em **`.oxe/research/YYYY-MM-DD-<slug>.md`** e manter **`.oxe/RESEARCH.md`** como **índice e histórico** (ligações, tipo, estado, resumo). Serve para qualquer incerteza antes de um plano pesado: spikes, comparação de tecnologias, due diligence, requisitos ambíguos, **e** — com profundidade quando pedido — compreensão de **sistemas grandes**, **engenharia reversa / brownfield** e **hipóteses de modernização** (sempre ligadas a evidência ou suposições explícitas).
4
+ Produzir **notas de pesquisa rastreáveis** em `research/YYYY-MM-DD-<slug>.md` do escopo resolvido e manter `RESEARCH.md` correspondente como **índice e histórico** (ligações, tipo, estado, resumo). Serve para qualquer incerteza antes de um plano pesado: spikes, comparação de tecnologias, due diligence, requisitos ambíguos, **e** — com profundidade quando pedido — compreensão de **sistemas grandes**, **engenharia reversa / brownfield** e **hipóteses de modernização** (sempre ligadas a evidência ou suposições explícitas).
5
5
 
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
9
  <context>
10
- - **Uma sessão = um ficheiro novo** em `.oxe/research/`; não sobrescrever notas antigas salvo correção explícita do utilizador.
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
+ - **Uma sessão = um ficheiro novo** em `research/`; não sobrescrever notas antigas salvo correção explícita do utilizador.
11
12
  - 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).
12
- - **Índice:** `.oxe/RESEARCH.md` 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.
13
+ - **Í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.
13
14
  - 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`.
14
15
  - **Progressive disclosure:** sistemas grandes → profundidade por área; várias sessões/notas datadas em vez de um único ficheiro enorme.
15
16
  - Template: **`oxe/templates/RESEARCH.template.md`**.
@@ -33,19 +34,19 @@ Anotar `thinking_depth: surface | standard | deep` no frontmatter da nota de pes
33
34
  </thinking_depth>
34
35
 
35
36
  <process>
36
- 1. Garantir pastas `.oxe/` e `.oxe/research/`.
37
+ 1. Garantir pastas `.oxe/` e `research/` do escopo resolvido.
37
38
  2. Escolher `YYYY-MM-DD-<slug>.md` único; se colisão, acrescentar sufixo ao slug (ex. `-b`).
38
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.
39
- 4. Se **`.oxe/RESEARCH.md`** 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.
40
- 5. Se já existir, **atualizar** `RESEARCH.md`: nova linha no topo da tabela **Histórico** (mais recente primeiro); opcionalmente atualizar **Última sessão** com link para o ficheiro novo.
40
+ 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
+ 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.
41
42
  6. Ler **`.oxe/SPEC.md`**, **`.oxe/codebase/*`** e código alvo (Glob/Grep/Read) conforme âmbito.
42
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.
43
44
  8. Responder no chat em 5–10 linhas: caminho da nota nova, confirmação de atualização do índice, próximo passo OXE.
44
45
  </process>
45
46
 
46
47
  <success_criteria>
47
- - [ ] Existe novo ficheiro em `.oxe/research/YYYY-MM-DD-<slug>.md` com secções base preenchidas de forma útil.
48
- - [ ] `.oxe/RESEARCH.md` existe e a tabela **Histórico** inclui a nova entrada.
48
+ - [ ] Existe novo ficheiro em `research/YYYY-MM-DD-<slug>.md` no escopo correto com secções base preenchidas de forma útil.
49
+ - [ ] `RESEARCH.md` do mesmo escopo existe e a tabela **Histórico** inclui a nova entrada.
49
50
  - [ ] Nenhuma nota anterior foi sobrescrita sem instrução explícita do utilizador.
50
51
  - [ ] `STATE.md` reflete o progresso e o próximo passo sugerido.
51
52
  </success_criteria>
@@ -8,8 +8,9 @@ Pode ser chamado standalone ou como Camada 5 do **`verify.md`** quando `config.j
8
8
  Não substitui ferramentas de análise estática (SAST) — identifica padrões de risco no código e na configuração a partir do contexto disponível no repositório.
9
9
  </objective>
10
10
 
11
- <context>
12
- - **Fonte de stack:** `.oxe/codebase/STACK.md` determina quais categorias OWASP são pertinentes (ex.: app sem DB descarta A03:Injection-SQL; API sem auth descarta A07:Authentication).
11
+ <context>
12
+ - Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. O relatório de segurança segue a sessão ativa em `verification/`, mas continua a ler `codebase/` global.
13
+ - **Fonte de stack:** `.oxe/codebase/STACK.md` determina quais categorias OWASP são pertinentes (ex.: app sem DB descarta A03:Injection-SQL; API sem auth descarta A07:Authentication).
13
14
  - **Fontes de código:** `.oxe/codebase/STRUCTURE.md`, `.oxe/codebase/CONCERNS.md`, `.oxe/codebase/INTEGRATIONS.md` orientam quais arquivos focar.
14
15
  - **Severidade:** P0 = crítico (exploração provável, impacto direto), P1 = alto (requer mitigação antes do próximo deploy), P2 = médio (risco aceitável com compensação documentada).
15
16
  - **Saída de tarefas:** recomendações vinculadas a `Tn` existentes no PLAN.md (se disponível) ou como sugestões de novas tarefas `T_new`.
@@ -45,14 +46,14 @@ Antes de auditar, determinar quais categorias se aplicam lendo `STACK.md` e `INT
45
46
  a. Identificar **arquivos críticos** (auth, input handlers, DB queries, configs, env, deps).
46
47
  b. Ler os arquivos relevantes (Glob, Grep, Read) procurando padrões de risco.
47
48
  c. Registrar achados com: localização (`path:linha`), padrão encontrado, severidade (P0/P1/P2), recomendação.
48
- 4. Ler `.oxe/PLAN.md` se existir — vincular achados P0/P1 a tarefas `Tn` existentes quando possível, ou criar sugestão `T_new`.
49
- 5. Escrever `.oxe/SECURITY.md` a partir de `oxe/templates/SECURITY.template.md`.
50
- 6. Atualizar `.oxe/STATE.md`: nota de segurança (ex.: `security_audit: YYYY-MM-DD | P0:N | P1:N | P2:N`).
49
+ 4. Ler `PLAN.md` do escopo resolvido se existir — vincular achados P0/P1 a tarefas `Tn` existentes quando possível, ou criar sugestão `T_new`.
50
+ 5. Escrever `SECURITY.md` no escopo resolvido a partir de `oxe/templates/SECURITY.template.md`.
51
+ 6. Atualizar `.oxe/STATE.md`: nota de segurança (ex.: `security_audit: YYYY-MM-DD | P0:N | P1:N | P2:N`).
51
52
  7. Responder no chat: total de achados por severidade, arquivos mais críticos identificados, próximo passo (P0 presentes → bloquear deploy; apenas P2 → ação opcional).
52
53
  </process>
53
54
 
54
55
  <success_criteria>
55
- - [ ] `.oxe/SECURITY.md` existe com categorias OWASP selecionadas e justificativa de descarte.
56
+ - [ ] `SECURITY.md` existe no escopo correto com categorias OWASP selecionadas e justificativa de descarte.
56
57
  - [ ] Cada achado tem: localização, padrão, severidade, recomendação.
57
58
  - [ ] Categorias sem achados registradas como "nenhum achado nesta categoria".
58
59
  - [ ] Achados P0/P1 vinculados a `Tn` existente ou sugestão `T_new`.
@@ -0,0 +1,153 @@
1
+ # OXE — Workflow: session
2
+
3
+ <objective>
4
+ Gerenciar **sessões OXE** em `.oxe/sessions/` para isolar artefatos por ciclo de trabalho, mantendo **`.oxe/STATE.md`** como índice global e preservando o **modo legado** quando não houver sessão ativa.
5
+
6
+ Subcomandos:
7
+ - `new <nome>`
8
+ - `list`
9
+ - `switch <id-ou-nome>`
10
+ - `resume <id-ou-nome>`
11
+ - `status`
12
+ - `close`
13
+ - `migrate <nome>`
14
+ </objective>
15
+
16
+ <context>
17
+ - Fonte de regra de path: `oxe/workflows/references/session-path-resolution.md`
18
+ - Template da sessão: `oxe/templates/SESSION.template.md`
19
+ - Índice global: `.oxe/SESSIONS.md`
20
+ - Sessão ativa fica sempre em `.oxe/STATE.md`, campo `active_session`, com path relativo completo: `sessions/sNNN-slug`
21
+ - Sem sessão ativa, os workflows continuam a operar na raiz `.oxe/`
22
+ - Esta entrega é **workflows only**: `oxe-cc status` / `doctor` continuam legados e isso deve ser assumido nesta versão
23
+ </context>
24
+
25
+ <index_format>
26
+ ## Formato fixo de `.oxe/SESSIONS.md`
27
+
28
+ ```markdown
29
+ # OXE — Índice de sessões
30
+
31
+ | ID | Nome | Status | Criada | Última atividade | Resumo | Path |
32
+ |----|------|--------|--------|------------------|--------|------|
33
+ | s001 | auth-redesign | active | 2026-04-07 | 2026-04-07 | Sessão criada por migrate | `sessions/s001-auth-redesign` |
34
+ ```
35
+
36
+ - Linha mais recente no topo
37
+ - `switch` e `resume` atualizam **Última atividade**
38
+ - `close` atualiza **Status** para `archived`
39
+ </index_format>
40
+
41
+ <process_new>
42
+ ## `new <nome>`
43
+
44
+ 1. Garantir `.oxe/`, `.oxe/sessions/` e `.oxe/global/`.
45
+ 2. Normalizar o nome para slug ASCII em kebab-case.
46
+ 3. Ler `.oxe/SESSIONS.md` se existir; calcular o próximo ID `sNNN`.
47
+ 4. Criar `.oxe/sessions/sNNN-slug/` com:
48
+ - `spec/`
49
+ - `plan/`
50
+ - `execution/`
51
+ - `verification/`
52
+ - `checkpoints/`
53
+ - `research/`
54
+ - `artifacts/`
55
+ - `workstreams/`
56
+ 5. Criar `SESSION.md` a partir de `SESSION.template.md`.
57
+ 6. Criar ou atualizar `.oxe/SESSIONS.md` com a nova linha no topo.
58
+ 7. Atualizar `.oxe/STATE.md`:
59
+ - `active_session: sessions/sNNN-slug`
60
+ - `session_id: sNNN`
61
+ - fase resumida e próximo passo coerentes com a sessão nova
62
+ 8. Responder no chat com ID, path da sessão e próximo passo sugerido.
63
+ </process_new>
64
+
65
+ <process_list>
66
+ ## `list`
67
+
68
+ 1. Ler `.oxe/SESSIONS.md`.
69
+ 2. Se o ficheiro não existir, responder que não há sessões registadas.
70
+ 3. Exibir a tabela do índice; se o utilizador pedir filtro, aceitar `--status active|archived`.
71
+ </process_list>
72
+
73
+ <process_switch>
74
+ ## `switch <id-ou-nome>`
75
+
76
+ 1. Ler `.oxe/SESSIONS.md`.
77
+ 2. Resolver a sessão por `sNNN`, slug ou nome exibido na tabela.
78
+ 3. Atualizar `.oxe/STATE.md` global:
79
+ - `active_session`
80
+ - `session_id`
81
+ - `Última atividade` dessa sessão em `.oxe/SESSIONS.md`
82
+ 4. Não mover artefatos; apenas mudar o contexto ativo.
83
+ </process_switch>
84
+
85
+ <process_resume>
86
+ ## `resume <id-ou-nome>`
87
+
88
+ - Mesmo comportamento de `switch`
89
+ - Usar wording de retomada no chat, mas sem lógica diferente
90
+ </process_resume>
91
+
92
+ <process_status>
93
+ ## `status`
94
+
95
+ 1. Ler `.oxe/STATE.md` global.
96
+ 2. Se houver `active_session`, abrir `SESSION.md` da sessão ativa e resumir:
97
+ - metadados
98
+ - índice de artefatos
99
+ - tags
100
+ - último evento do histórico
101
+ 3. Se não houver sessão ativa, responder com a tabela de `.oxe/SESSIONS.md` (equivalente funcional a `list`).
102
+ </process_status>
103
+
104
+ <process_close>
105
+ ## `close`
106
+
107
+ 1. Ler `.oxe/STATE.md`; se não houver sessão ativa, pausar e informar.
108
+ 2. Abrir `SESSION.md` da sessão ativa e marcar `Status: archived`.
109
+ 3. Atualizar `.oxe/SESSIONS.md` com `Status = archived` e `Última atividade = hoje`.
110
+ 4. Limpar de `.oxe/STATE.md`:
111
+ - `active_session`
112
+ - `session_id`
113
+ 5. Responder com a sessão encerrada e lembrar que sessões arquivadas continuam legíveis.
114
+ </process_close>
115
+
116
+ <process_migrate>
117
+ ## `migrate <nome>`
118
+
119
+ 1. Executar logicamente `new <nome>` para abrir uma nova sessão.
120
+ 2. Mover apenas artefatos session-scoped existentes da raiz `.oxe/`:
121
+ - `SPEC.md`, `ROADMAP.md`, `DISCUSS.md`, `UI-SPEC.md` → `spec/`
122
+ - `PLAN.md`, `QUICK.md`, `plan-agents.json`, `quick-agents.json`, `plan-agent-messages/` → `plan/`
123
+ - `OBSERVATIONS.md`, `DEBUG.md`, `FORENSICS.md`, `SUMMARY.md` → `execution/`
124
+ - `VERIFY.md`, `VALIDATION-GAPS.md`, `SECURITY.md`, `UI-REVIEW.md` → `verification/`
125
+ - `checkpoints/`, `CHECKPOINTS.md` → `checkpoints/`
126
+ - `research/`, `RESEARCH.md` → `research/`
127
+ - `workstreams/` → `workstreams/`
128
+ 3. Não mover:
129
+ - `.oxe/STATE.md`
130
+ - `.oxe/config.json`
131
+ - `.oxe/codebase/`
132
+ - `.oxe/SESSIONS.md`
133
+ - `.oxe/global/`
134
+ 4. No chat, listar:
135
+ - movidos
136
+ - mantidos globais
137
+ - ignorados por inexistência
138
+ </process_migrate>
139
+
140
+ <process_default>
141
+ ## Sem subcomando
142
+
143
+ - Se houver sessão ativa: executar `status`
144
+ - Se não houver sessão ativa: executar `list`
145
+ </process_default>
146
+
147
+ <success_criteria>
148
+ - [ ] `.oxe/sessions/sNNN-slug/` é o path da sessão criado/consultado.
149
+ - [ ] `active_session` guarda o path relativo completo no `STATE.md` global.
150
+ - [ ] `.oxe/SESSIONS.md` usa as colunas mínimas `ID | Nome | Status | Criada | Última atividade | Resumo | Path`.
151
+ - [ ] `close` arquiva sem apagar artefatos.
152
+ - [ ] `migrate` move só artefatos session-scoped e preserva os globais.
153
+ </success_criteria>
@@ -13,14 +13,20 @@ Para trabalho **muito pequeno** que não justifica spec completa: redirecionar p
13
13
  Se **`.oxe/config.json`** tiver `discuss_before_plan: true`: mencionar no final da Fase 5 que o próximo passo é **`oxe:discuss`** antes do plano.
14
14
  </objective>
15
15
 
16
- <context>
17
- **Pré-requisito preferível:** scan executado. Se não existir, mencionar na spec que o mapa está pendente.
18
-
19
- Ler no início:
20
- - `.oxe/STATE.md` fase atual, decisões, workstream ativo
21
- - `.oxe/codebase/OVERVIEW.md` e `STACK.md` se existirem não contradizer o repo
22
- - **`.oxe/OBSERVATIONS.md`** — se houver entradas `pendente` com impacto `spec` ou `all`, incorporá-las na Fase 3 (Requisitos) e marcá-las `incorporada → spec (data)` após uso
23
- - **`.oxe/LESSONS.md`** se existir, ler entradas com `Aplicar em: spec` e status `ativo`. Usar como restrições explícitas ou alertas durante a Fase 1 (perguntas) e Fase 3 (requisitos). Exemplo: se uma lição diz "perguntar explicitamente sobre integração com X", adicionar essa pergunta no Bloco B da Fase 1.
16
+ <context>
17
+ **Pré-requisito preferível:** scan executado. Se não existir, mencionar na spec que o mapa está pendente.
18
+
19
+ **Resolução de sessão:** antes de ler ou escrever artefatos desta trilha, resolver `active_session` em `.oxe/STATE.md` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa:
20
+ - `SPEC.md`, `ROADMAP.md` e `DISCUSS.md` vivem em `.oxe/<active_session>/spec/`
21
+ - `OBSERVATIONS.md`, `RESEARCH.md` e `research/` seguem o escopo da sessão
22
+ - `LESSONS.md` continua global em `.oxe/global/LESSONS.md`
23
+ - sem sessão ativa, manter o modo legado na raiz `.oxe/`
24
+
25
+ Ler no início:
26
+ - `.oxe/STATE.md` — fase atual, decisões, workstream ativo
27
+ - `.oxe/codebase/OVERVIEW.md` e `STACK.md` se existirem — não contradizer o repo
28
+ - **OBS do escopo ativo** — se houver entradas `pendente` com impacto `spec` ou `all`, incorporá-las na Fase 3 (Requisitos) e marcá-las `incorporada → spec (data)` após uso
29
+ - **`.oxe/global/LESSONS.md`** — se existir, ler entradas com `Aplicar em: spec` e status `ativo`. Usar como restrições explícitas ou alertas durante a Fase 1 (perguntas) e Fase 3 (requisitos). Exemplo: se uma lição diz "perguntar explicitamente sobre integração com X", adicionar essa pergunta no Bloco B da Fase 1.
24
30
 
25
31
  **Brownfield (COBOL, JCL, copybooks, VB6, SP):** quando o objetivo for documentar ou planear migração, ver **`oxe/workflows/references/legacy-brownfield.md`** — épicos por trilha, critérios A* verificáveis por Grep/leitura/checklist.
26
32
 
@@ -69,8 +75,8 @@ Usar templates: **`oxe/templates/SPEC.template.md`** e **`oxe/templates/ROADMAP.
69
75
  - "Há 3 áreas com incerteza técnica: autenticação JWT, integração com Stripe, e deploy em edge. Quer investigar alguma antes de avançar para requisitos?"
70
76
 
71
77
  **Se aprovado:**
72
- - Criar notas de pesquisa datadas em `.oxe/research/YYYY-MM-DD-<slug>.md` (usar fluxo de `research.md`)
73
- - Atualizar `.oxe/RESEARCH.md` com índice
78
+ - Criar notas de pesquisa datadas em `research/YYYY-MM-DD-<slug>.md` no escopo ativo (usar fluxo de `research.md`)
79
+ - Atualizar `RESEARCH.md` no mesmo escopo
74
80
  - Consolidar descobertas relevantes antes de avançar para Fase 3
75
81
 
76
82
  **Se pulado:** registrar em `SPEC.md` as áreas de incerteza como suposições explícitas.
@@ -105,7 +111,7 @@ Usar templates: **`oxe/templates/SPEC.template.md`** e **`oxe/templates/ROADMAP.
105
111
  <fase_4_roteiro>
106
112
  ## Fase 4 — Roteiro
107
113
 
108
- **Objetivo:** criar fases de entrega mapeadas aos requisitos v1 e escrever `.oxe/ROADMAP.md`.
114
+ **Objetivo:** criar fases de entrega mapeadas aos requisitos v1 e escrever `ROADMAP.md` no escopo ativo da sessão.
109
115
 
110
116
  **Lógica de agrupamento:**
111
117
  - Agrupar requisitos v1 em fases por **dependência técnica** e **valor entregável**
@@ -113,14 +119,14 @@ Usar templates: **`oxe/templates/SPEC.template.md`** e **`oxe/templates/ROADMAP.
113
119
  - Fase 1 = o que `/oxe-plan` implementará no próximo ciclo
114
120
  - Fases 2+ = ciclos futuros de spec→plan→execute→verify
115
121
 
116
- **Escrever `.oxe/ROADMAP.md`** usando `oxe/templates/ROADMAP.template.md`:
122
+ **Escrever `ROADMAP.md`** usando `oxe/templates/ROADMAP.template.md` no escopo ativo:
117
123
 
118
124
  ```markdown
119
125
  ---
120
126
  oxe_doc: roadmap
121
127
  status: draft
122
128
  updated: <data>
123
- spec_ref: .oxe/SPEC.md
129
+ spec_ref: SPEC.md
124
130
  ---
125
131
 
126
132
  ## Fase 1 — [Nome]
@@ -192,24 +198,24 @@ O resultado desta reflexão é **invisível ao usuário** — é trabalho intern
192
198
  </fase_5_aprovacao>
193
199
 
194
200
  <process>
195
- 1. Ler `.oxe/STATE.md`, `OVERVIEW.md`, `STACK.md` e `.oxe/OBSERVATIONS.md` (verificar pendentes).
201
+ 1. Ler `.oxe/STATE.md`, `OVERVIEW.md`, `STACK.md` e `OBSERVATIONS.md` do escopo ativo (verificar pendentes).
196
202
  2. **Fase 1 — Perguntas:** enviar bloco coeso de 3-5 perguntas; máx 3 rodadas; confirmar entendimento.
197
203
  3. **Fase 2 — Pesquisa:** propor áreas de investigação; aguardar aprovação; executar se aprovado.
198
204
  4. **Fase 3 — Requisitos:** extrair tabela R-ID com v1/v2/fora e critérios A*; incorporar OBS pendentes; apresentar para validação.
199
- 5. **Fase 4 — Roteiro:** agrupar requisitos v1 em fases; escrever `.oxe/ROADMAP.md`.
200
- 6. Escrever **`.oxe/SPEC.md`** usando `oxe/templates/SPEC.template.md`:
205
+ 5. **Fase 4 — Roteiro:** agrupar requisitos v1 em fases; escrever `ROADMAP.md` no escopo ativo.
206
+ 6. Escrever **`SPEC.md`** usando `oxe/templates/SPEC.template.md` no escopo ativo:
201
207
  - Frontmatter YAML (`oxe_doc: spec`, `status`, `updated`, `inputs`)
202
208
  - Objetivo, Escopo (dentro/fora), Critérios de aceite (tabela A*), Suposições e riscos, Referências
203
209
  - Preservar chaves existentes se SPEC.md já existir; atualizar `updated:`
204
210
  6b. **Auto-reflexão:** executar integralmente o bloco `<auto_reflexao>` antes de avançar. Corrigir a spec conforme necessário. Não apresentar a lista de verificação ao usuário — apenas a spec corrigida.
205
211
  7. **Fase 5 — Aprovação:** apresentar resumo, aguardar aprovação do roteiro, redirecionar.
206
- 8. Atualizar **`.oxe/STATE.md`**: `phase: spec_ready`, próximo passo.
207
- 9. Marcar OBS incorporadas em `.oxe/OBSERVATIONS.md` se houver pendentes de impacto `spec`.
212
+ 8. Atualizar **`.oxe/STATE.md`** global: `phase: spec_ready`, próximo passo e referência curta à sessão ativa quando existir.
213
+ 9. Marcar OBS incorporadas em `OBSERVATIONS.md` do escopo ativo se houver pendentes de impacto `spec`.
208
214
  </process>
209
215
 
210
216
  <success_criteria>
211
- - [ ] `.oxe/SPEC.md` existe com critérios A* e coluna Como verificar; `STATE.md` atualizado.
212
- - [ ] `.oxe/ROADMAP.md` existe com fases mapeadas a R-IDs e A*, status `approved` (ou `draft` se usuário não confirmou).
217
+ - [ ] `SPEC.md` existe no escopo correto (`spec/` da sessão ou `.oxe/` legado) com critérios A* e coluna Como verificar; `STATE.md` global atualizado.
218
+ - [ ] `ROADMAP.md` existe no mesmo escopo com fases mapeadas a R-IDs e A*, status `approved` (ou `draft` se usuário não confirmou).
213
219
  - [ ] Tabela de requisitos R-ID foi apresentada e validada (v1/v2/fora) antes do roteiro.
214
220
  - [ ] Usuário foi consultado no gate da Fase 5 e escolheu o próximo passo.
215
221
  - [ ] OBS pendentes com impacto `spec` foram incorporadas e marcadas `incorporada`.
@@ -13,9 +13,9 @@ Não substitui **`verify`**: cruza contrato UI; o verify global continua a amarr
13
13
  </context>
14
14
 
15
15
  <process>
16
- 1. Ler `.oxe/UI-SPEC.md`, `.oxe/SPEC.md` e inspecionar ficheiros de UI relevantes (paths do PLAN ou indicados pelo utilizador).
17
- 2. Escrever **`.oxe/UI-REVIEW.md`** com: **Data**, **Âmbito revisto**, **Checklist** (passou / falhou / N/A), **Bloqueios**, **Sugestões**.
18
- 3. Atualizar **`.oxe/STATE.md`** se útil (referência a UI-REVIEW pendente de verify).
16
+ 1. Resolver `active_session` conforme `session-path-resolution.md`; ler `UI-SPEC.md` e `SPEC.md` do escopo resolvido e inspecionar ficheiros de UI relevantes (paths do PLAN ou indicados pelo utilizador).
17
+ 2. Escrever **`UI-REVIEW.md`** no escopo de `verification/` da sessão ativa (ou `.oxe/` legado) com: **Data**, **Âmbito revisto**, **Checklist** (passou / falhou / N/A), **Bloqueios**, **Sugestões**.
18
+ 3. Atualizar **`.oxe/STATE.md`** global se útil (referência a UI-REVIEW pendente de verify).
19
19
  4. Indicar no chat: se há P0 → próximo passo típico **`/oxe-execute`** (correções); senão **`/oxe-verify`** para fecho global.
20
20
  </process>
21
21
 
@@ -13,9 +13,9 @@ Produzir **`.oxe/UI-SPEC.md`**: contrato de UI/UX derivado de **`.oxe/SPEC.md`**
13
13
  </context>
14
14
 
15
15
  <process>
16
- 1. Ler `.oxe/SPEC.md` e, se existirem, `OVERVIEW.md` / `CONVENTIONS.md` em `.oxe/codebase/`.
17
- 2. Criar ou atualizar **`.oxe/UI-SPEC.md`** com as secções acima preenchidas de forma verificável (checklist ou critérios numerados **U1**, **U2**… opcionais).
18
- 3. Atualizar **`.oxe/STATE.md`**: nota de fase ou próximo passo `oxe:plan` (se ainda não há PLAN) ou manter `oxe:execute` se o plano já referencia UI.
16
+ 1. Resolver `active_session` conforme `session-path-resolution.md`; ler `SPEC.md` do escopo resolvido e, se existirem, `OVERVIEW.md` / `CONVENTIONS.md` em `.oxe/codebase/`.
17
+ 2. Criar ou atualizar **`UI-SPEC.md`** em `.oxe/<active_session>/spec/` (ou `.oxe/` legado) com as secções acima preenchidas de forma verificável (checklist ou critérios numerados **U1**, **U2**… opcionais).
18
+ 3. Atualizar **`.oxe/STATE.md`** global: nota de fase ou próximo passo `oxe:plan` (se ainda não há PLAN) ou manter `oxe:execute` se o plano já referencia UI.
19
19
  4. Resumo no chat: o que ficou no UI-SPEC e como o **`/oxe-plan`** deve citar as secções (ex.: “cumprir UI-SPEC §2”).
20
20
  </process>
21
21
 
@@ -6,20 +6,21 @@ Após **`verify`**, produzir ou atualizar **`.oxe/VALIDATION-GAPS.md`**: auditor
6
6
  Não substitui **`verify`**: não reescreve a evidência em `VERIFY.md`; adiciona uma camada de “gaps” e melhorias para a próxima ronda ou replan.
7
7
  </objective>
8
8
 
9
- <context>
10
- - **Pré-requisitos:** `.oxe/VERIFY.md` e `.oxe/PLAN.md` existem. `.oxe/SPEC.md` altamente recomendado para cruzar IDs **A***.
9
+ <context>
10
+ - Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, `VERIFY.md`, `PLAN.md`, `SPEC.md` e `VALIDATION-GAPS.md` vivem no escopo da sessão; sem sessão ativa, manter `.oxe/`.
11
+ - **Pré-requisitos:** `VERIFY.md` e `PLAN.md` existem no escopo resolvido. `SPEC.md` altamente recomendado para cruzar IDs **A***.
11
12
  - **Quando usar:** equipas que querem fechar dívida de testes, evidência fraca ou desalinhamento após um verify (passou ou falhou).
12
13
  - **Edição do PLAN:** só se o utilizador pedir explicitamente incorporar as sugestões no plano.
13
14
  </context>
14
15
 
15
16
  <process>
16
- 1. Ler `.oxe/PLAN.md` (cada `### Tn`, **Verificar**, **Aceite vinculado:**), `.oxe/VERIFY.md` (tabelas de tarefas e de critérios SPEC), e `.oxe/SPEC.md` se existir.
17
+ 1. Ler `PLAN.md` (cada `### Tn`, **Verificar**, **Aceite vinculado:**), `VERIFY.md` (tabelas de tarefas e de critérios SPEC), e `SPEC.md` do escopo resolvido se existir.
17
18
  2. Aplicar checklist de deteção (marcar cada achado nos **Gaps**):
18
19
  - **A*** na SPEC sem linha clara na tabela de critérios do VERIFY, ou com evidência inexistente/vaga.
19
20
  - **Tn** com `Comando: —` ou **Manual** vago quando o critério associado pede rigor reprodutível.
20
21
  - VERIFY indica sucesso mas a coluna de evidência é só genérica (sem path, comando ou trecho identificável).
21
22
  - Tarefa no PLAN sem linha correspondente na tabela de tarefas do VERIFY (verify focado em subset — documentar como gap de escopo).
22
- 3. Escrever ou atualizar **`.oxe/VALIDATION-GAPS.md`** com secções fixas:
23
+ 3. Escrever ou atualizar **`VALIDATION-GAPS.md`** no escopo resolvido com secções fixas:
23
24
  - **Data** (ISO) e **Contexto** (verify passou / falhou; ambiente se relevante).
24
25
  - **Gaps** — tabela: **ID ou Tn** | **Tipo de gap** | **Severidade sugerida** (P0/P1/P2) | **Nota**.
25
26
  - **Sugestões de tarefas** — rascunhos `T_new` ou bullets para incorporar no próximo `oxe:plan --replan`; **apenas texto**.