oxe-cc 0.6.4 → 0.6.6

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 (43) hide show
  1. package/.cursor/commands/oxe-ask.md +11 -0
  2. package/.cursor/commands/oxe-execute.md +1 -1
  3. package/.cursor/commands/oxe-session.md +11 -0
  4. package/.github/prompts/oxe-ask.prompt.md +12 -0
  5. package/.github/prompts/oxe-execute.prompt.md +1 -1
  6. package/.github/prompts/oxe-session.prompt.md +12 -0
  7. package/README.md +363 -323
  8. package/bin/banner.txt +1 -1
  9. package/bin/lib/oxe-project-health.cjs +284 -91
  10. package/bin/oxe-cc.js +305 -123
  11. package/commands/oxe/ask.md +14 -0
  12. package/commands/oxe/session.md +16 -0
  13. package/oxe/templates/CONFIG.md +3 -2
  14. package/oxe/templates/PLAN.template.md +22 -7
  15. package/oxe/templates/SESSION.template.md +32 -0
  16. package/oxe/templates/STATE.md +10 -5
  17. package/oxe/templates/config.template.json +3 -2
  18. package/oxe/workflows/ask.md +62 -0
  19. package/oxe/workflows/checkpoint.md +10 -9
  20. package/oxe/workflows/debug.md +6 -5
  21. package/oxe/workflows/discuss.md +8 -7
  22. package/oxe/workflows/execute.md +37 -28
  23. package/oxe/workflows/forensics.md +6 -6
  24. package/oxe/workflows/help.md +39 -19
  25. package/oxe/workflows/milestone.md +12 -13
  26. package/oxe/workflows/next.md +16 -13
  27. package/oxe/workflows/obs.md +9 -8
  28. package/oxe/workflows/plan-agent.md +6 -4
  29. package/oxe/workflows/plan.md +73 -32
  30. package/oxe/workflows/project.md +1 -1
  31. package/oxe/workflows/quick.md +11 -7
  32. package/oxe/workflows/references/flow-robustness-contract.md +80 -0
  33. package/oxe/workflows/references/session-path-resolution.md +71 -0
  34. package/oxe/workflows/research.md +9 -8
  35. package/oxe/workflows/security.md +7 -6
  36. package/oxe/workflows/session.md +153 -0
  37. package/oxe/workflows/spec.md +41 -27
  38. package/oxe/workflows/ui-review.md +3 -3
  39. package/oxe/workflows/ui-spec.md +3 -3
  40. package/oxe/workflows/validate-gaps.md +5 -4
  41. package/oxe/workflows/verify.md +37 -21
  42. package/oxe/workflows/workstream.md +16 -15
  43. package/package.json +1 -1
@@ -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,22 @@ 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
+ **Contrato de robustez:** seguir `oxe/workflows/references/flow-robustness-contract.md`. Antes de escrever, resolver artefatos obrigatórios, validar pré-condições e só então produzir a spec. O output desta fase deve deixar evidência estruturada suficiente para o `plan` decidir se o plano é realmente o melhor disponível.
20
+
21
+ **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:
22
+ - `SPEC.md`, `ROADMAP.md` e `DISCUSS.md` vivem em `.oxe/<active_session>/spec/`
23
+ - `OBSERVATIONS.md`, `RESEARCH.md` e `research/` seguem o escopo da sessão
24
+ - `LESSONS.md` continua global em `.oxe/global/LESSONS.md`
25
+ - sem sessão ativa, manter o modo legado na raiz `.oxe/`
26
+
27
+ Ler no início:
28
+ - `.oxe/STATE.md` — fase atual, decisões, workstream ativo
29
+ - `.oxe/codebase/OVERVIEW.md` e `STACK.md` se existirem — não contradizer o repo
30
+ - **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
31
+ - **`.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
32
 
25
33
  **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
34
 
@@ -69,8 +77,8 @@ Usar templates: **`oxe/templates/SPEC.template.md`** e **`oxe/templates/ROADMAP.
69
77
  - "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
78
 
71
79
  **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
80
+ - Criar notas de pesquisa datadas em `research/YYYY-MM-DD-<slug>.md` no escopo ativo (usar fluxo de `research.md`)
81
+ - Atualizar `RESEARCH.md` no mesmo escopo
74
82
  - Consolidar descobertas relevantes antes de avançar para Fase 3
75
83
 
76
84
  **Se pulado:** registrar em `SPEC.md` as áreas de incerteza como suposições explícitas.
@@ -105,7 +113,7 @@ Usar templates: **`oxe/templates/SPEC.template.md`** e **`oxe/templates/ROADMAP.
105
113
  <fase_4_roteiro>
106
114
  ## Fase 4 — Roteiro
107
115
 
108
- **Objetivo:** criar fases de entrega mapeadas aos requisitos v1 e escrever `.oxe/ROADMAP.md`.
116
+ **Objetivo:** criar fases de entrega mapeadas aos requisitos v1 e escrever `ROADMAP.md` no escopo ativo da sessão.
109
117
 
110
118
  **Lógica de agrupamento:**
111
119
  - Agrupar requisitos v1 em fases por **dependência técnica** e **valor entregável**
@@ -113,14 +121,14 @@ Usar templates: **`oxe/templates/SPEC.template.md`** e **`oxe/templates/ROADMAP.
113
121
  - Fase 1 = o que `/oxe-plan` implementará no próximo ciclo
114
122
  - Fases 2+ = ciclos futuros de spec→plan→execute→verify
115
123
 
116
- **Escrever `.oxe/ROADMAP.md`** usando `oxe/templates/ROADMAP.template.md`:
124
+ **Escrever `ROADMAP.md`** usando `oxe/templates/ROADMAP.template.md` no escopo ativo:
117
125
 
118
126
  ```markdown
119
127
  ---
120
128
  oxe_doc: roadmap
121
129
  status: draft
122
130
  updated: <data>
123
- spec_ref: .oxe/SPEC.md
131
+ spec_ref: SPEC.md
124
132
  ---
125
133
 
126
134
  ## Fase 1 — [Nome]
@@ -154,13 +162,19 @@ Percorrer esta lista de verificação:
154
162
  | 5 | **Critérios vagos:** algum A* usa linguagem não-mensurável ("deve ser rápido", "interface amigável") sem métrica? | Refinar: "resposta < 200ms p95", "WCAG 2.1 AA" |
155
163
  | 6 | **Dependências implícitas:** algum requisito v1 pressupõe que outro requisito (v2 ou fora) já esteja implementado? | Tornar dependência explícita ou reordenar versioning |
156
164
 
157
- **Resultado obrigatório antes de avançar:**
158
- - **0 problemas** → avançar para Fase 5 normalmente.
159
- - **1–2 problemas** → corrigir inline na spec, anotar o que foi ajustado em 1 linha.
160
- - **3+ problemas** → apresentar lista ao usuário com a Fase 3 revisada (não reiniciar do zero).
161
-
162
- O resultado desta reflexão é **invisível ao usuário** — é trabalho interno do agente. Somente os ajustes feitos aparecem na spec final.
163
- </auto_reflexao>
165
+ **Resultado obrigatório antes de avançar:**
166
+ - **0 problemas** → avançar para Fase 5 normalmente.
167
+ - **1–2 problemas** → corrigir inline na spec, anotar o que foi ajustado em 1 linha.
168
+ - **3+ problemas** → apresentar lista ao usuário com a Fase 3 revisada (não reiniciar do zero).
169
+
170
+ O resultado desta reflexão é **invisível ao usuário** — é trabalho interno do agente. Somente os ajustes feitos aparecem na spec final.
171
+
172
+ **Saída estruturada obrigatória para o plan:** após esta reflexão, a SPEC final deve deixar explícitos:
173
+ - requisitos estáveis;
174
+ - ambiguidades restantes;
175
+ - conflitos resolvidos ou ainda abertos;
176
+ - evidências faltantes que podem reduzir a confiança do plano.
177
+ </auto_reflexao>
164
178
 
165
179
  <fase_5_aprovacao>
166
180
  ## Fase 5 — Aprovação e próximo passo
@@ -192,24 +206,24 @@ O resultado desta reflexão é **invisível ao usuário** — é trabalho intern
192
206
  </fase_5_aprovacao>
193
207
 
194
208
  <process>
195
- 1. Ler `.oxe/STATE.md`, `OVERVIEW.md`, `STACK.md` e `.oxe/OBSERVATIONS.md` (verificar pendentes).
209
+ 1. Ler `.oxe/STATE.md`, `OVERVIEW.md`, `STACK.md` e `OBSERVATIONS.md` do escopo ativo (verificar pendentes).
196
210
  2. **Fase 1 — Perguntas:** enviar bloco coeso de 3-5 perguntas; máx 3 rodadas; confirmar entendimento.
197
211
  3. **Fase 2 — Pesquisa:** propor áreas de investigação; aguardar aprovação; executar se aprovado.
198
212
  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`:
213
+ 5. **Fase 4 — Roteiro:** agrupar requisitos v1 em fases; escrever `ROADMAP.md` no escopo ativo.
214
+ 6. Escrever **`SPEC.md`** usando `oxe/templates/SPEC.template.md` no escopo ativo:
201
215
  - Frontmatter YAML (`oxe_doc: spec`, `status`, `updated`, `inputs`)
202
216
  - Objetivo, Escopo (dentro/fora), Critérios de aceite (tabela A*), Suposições e riscos, Referências
203
217
  - Preservar chaves existentes se SPEC.md já existir; atualizar `updated:`
204
218
  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
219
  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`.
220
+ 8. Atualizar **`.oxe/STATE.md`** global: `phase: spec_ready`, próximo passo e referência curta à sessão ativa quando existir.
221
+ 9. Marcar OBS incorporadas em `OBSERVATIONS.md` do escopo ativo se houver pendentes de impacto `spec`.
208
222
  </process>
209
223
 
210
224
  <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).
225
+ - [ ] `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.
226
+ - [ ] `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
227
  - [ ] Tabela de requisitos R-ID foi apresentada e validada (v1/v2/fora) antes do roteiro.
214
228
  - [ ] Usuário foi consultado no gate da Fase 5 e escolheu o próximo passo.
215
229
  - [ ] 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**.
@@ -13,14 +13,16 @@ Resultado registrado em **`.oxe/VERIFY.md`** com atualização de **STATE**.
13
13
  Se o usuário indicar uma tarefa (ex.: `T2`), focar só nela nas camadas 1–2; as camadas 3–4 são sempre de escopo completo.
14
14
  </objective>
15
15
 
16
- <context>
17
- - Preferir rodar comandos reais no terminal quando o ambiente permitir; se o sandbox bloquear, marcar como "não executado aqui" e deixar o comando para o usuário.
16
+ <context>
17
+ - Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, `VERIFY.md`, `VALIDATION-GAPS.md`, `SECURITY.md`, `UI-REVIEW.md` e `SUMMARY.md` vivem no escopo da sessão; `.oxe/STATE.md` continua global.
18
+ - Seguir `oxe/workflows/references/flow-robustness-contract.md`. O verify não valida só se passou; valida também se o plano estava bem calibrado para começar.
19
+ - Preferir rodar comandos reais no terminal quando o ambiente permitir; se o sandbox bloquear, marcar como "não executado aqui" e deixar o comando para o usuário.
18
20
  - Não destruir `PLAN.md`; registrar achados em `VERIFY.md`.
19
21
  - Ler **`.oxe/config.json`** se existir: `after_verify_draft_commit`, `after_verify_suggest_pr`, e `verification_depth` (`"standard"` por padrão; `"thorough"` ativa camadas 3–4 completas; `"quick"` pula camadas 3–4 e UAT).
20
22
  - Os critérios na SPEC devem estar na tabela **Critérios de aceite** com colunas **ID** / **Critério** / **Como verificar**; o verify deve **cruzar cada ID** com evidência (arquivo, comando, trecho).
21
23
  - **Legado:** quando **Comando** for `—` ou inexistente, evidência válida inclui **Read/Grep**, existência de ficheiros referenciados e checklist manual — não marcar critério como passou sem evidência; se o ambiente host/desktop não estiver disponível, registar **não executado aqui** e próximo passo. Ver **`oxe/workflows/references/legacy-brownfield.md`**.
22
24
  - **Debug:** investigação técnica de falhas **durante** a implementação segue **`oxe/workflows/debug.md`** (`/oxe-debug`). Resolver um bug com debug **não** dispensa este passo — após correções, **ainda** é necessário **`verify`** para fechar a trilha face à SPEC/PLAN.
23
- - **UI:** se existirem `.oxe/UI-SPEC.md` / `.oxe/UI-REVIEW.md`, incorporar na evidência quando os critérios **A*** ou tarefas **Tn** tocarem interface.
25
+ - **UI:** se existirem `UI-SPEC.md` / `UI-REVIEW.md` no escopo resolvido, incorporar na evidência quando os critérios **A*** ou tarefas **Tn** tocarem interface.
24
26
  - **Camada 5 — Validate-gaps (automático quando `verification_depth: "thorough"`):** após as 4 camadas, se `verification_depth: "thorough"` em `.oxe/config.json`, executar automaticamente a lógica de `oxe/workflows/validate-gaps.md` e produzir `.oxe/VALIDATION-GAPS.md` como parte deste verify. Não requer comando separado.
25
27
  - **Camada 6 — Security (automático quando `security_in_verify: true`):** se `security_in_verify: true` em `.oxe/config.json`, executar automaticamente a lógica de `oxe/workflows/security.md` e produzir `.oxe/SECURITY.md` como parte deste verify. Não requer comando separado.
26
28
  - **Rotina compact/checkpoint (opcional):** se esta entrega alterou **estrutura**, **stack** ou **pastas** de forma relevante, `/oxe-scan` em modo refresh alinha `.oxe/codebase/` ao repo. Após **verify** com sucesso, `/oxe-project checkpoint` com slug curto pode marcar estado estável.
@@ -32,11 +34,12 @@ Se o usuário indicar uma tarefa (ex.: `T2`), focar só nela nas camadas 1–2;
32
34
  Verificar que o PLAN.md está apto para verificação:
33
35
  1. Toda tarefa `### Tn` tem bloco **Verificar** com pelo menos Comando ou Manual.
34
36
  2. Todo **Aceite vinculado** referencia IDs que existem na tabela de SPEC.md (`A1`, `A2`, …).
35
- 3. Se houver `.oxe/DISCUSS.md`, toda decisão técnica com ID **D-NN** aparece em **Decisão vinculada:** de alguma tarefa (ou nota explícita de gap no PLAN).
36
- 4. Não há dependências `Tk` inválidas (ID inexistente no PLAN).
37
-
38
- Se auditoria falhar: registrar na seção **Auditoria de pré-execução** do VERIFY.md os itens com problema e **pausar** — pedir correção do PLAN antes de continuar. Se o usuário forçar continuar com `--skip-audit`, documentar e prosseguir com aviso.
39
- </camada_1_pre_exec_audit>
37
+ 3. Se houver `DISCUSS.md` no escopo resolvido, toda decisão técnica com ID **D-NN** aparece em **Decisão vinculada:** de alguma tarefa (ou nota explícita de gap no PLAN).
38
+ 4. Não há dependências `Tk` inválidas (ID inexistente no PLAN).
39
+ 5. `PLAN.md` contém a seção **Autoavaliação do Plano** com `Melhor plano atual`, `Confiança` e rubrica preenchida.
40
+
41
+ Se auditoria falhar: registrar na seção **Auditoria de pré-execução** do VERIFY.md os itens com problema e **pausar** — pedir correção do PLAN antes de continuar. Se o usuário forçar continuar com `--skip-audit`, documentar e prosseguir com aviso.
42
+ </camada_1_pre_exec_audit>
40
43
 
41
44
  <camada_2_tarefas_e_criterios>
42
45
  **Camada 2 — Verificação de tarefas e critérios SPEC**
@@ -45,7 +48,7 @@ Para cada tarefa relevante, executar **Verificar: Comando** do PLAN (ou subconju
45
48
  </camada_2_tarefas_e_criterios>
46
49
 
47
50
  <camada_3_fidelidade_decisoes>
48
- **Camada 3 — Fidelidade de decisões** (ativa se existir `.oxe/DISCUSS.md` com IDs D-NN)
51
+ **Camada 3 — Fidelidade de decisões** (ativa se existir `DISCUSS.md` no escopo resolvido com IDs D-NN)
49
52
 
50
53
  Para cada decisão na tabela de DISCUSS.md:
51
54
  1. Localizar a(s) tarefa(s) que referenciam esse ID em **Decisão vinculada:**.
@@ -55,7 +58,7 @@ Para cada decisão na tabela de DISCUSS.md:
55
58
  Se uma decisão D-NN não tem tarefa vinculada **e** não há nota de gap no PLAN: marcar como `divergência` e adicionar ao bloco **Gaps**.
56
59
  </camada_3_fidelidade_decisoes>
57
60
 
58
- <camada_4_uat>
61
+ <camada_4_uat>
59
62
  **Camada 4 — UAT (User Acceptance Testing)** (ativa se `after_verify_suggest_uat` não for `false` na config)
60
63
 
61
64
  Gerar uma **Checklist UAT** no VERIFY.md com passos manuais derivados dos critérios de aceite. Formato:
@@ -71,24 +74,37 @@ Para cada critério da SPEC que exige validação manual:
71
74
  ```
72
75
 
73
76
  O preenchimento da checklist é responsabilidade do **usuário** (não do agente de IA).
74
- </camada_4_uat>
75
-
76
- <process>
77
- 1. **Camada 1 Auditoria de pré-execução:** checar integridade do PLAN.md e DISCUSS.md conforme `<camada_1_pre_exec_audit>`. Documentar resultado.
78
- 2. Ler `.oxe/SPEC.md`, `.oxe/PLAN.md`, `.oxe/STATE.md`.
77
+ </camada_4_uat>
78
+
79
+ <calibracao_do_plano>
80
+ **Calibração do plano** (obrigatória quando existir `PLAN.md`)
81
+
82
+ Ler a `## Autoavaliação do Plano` e comparar com o resultado real:
83
+ 1. Se `Confiança >= 85%` e houver falha precoce em critérios centrais ou tarefas iniciais, marcar **erro de calibração do plano**.
84
+ 2. Se `Confiança < 70%` e as falhas ocorrerem nas incertezas previstas, marcar **autoavaliação aderente**.
85
+ 3. Se `Confiança >= 70%` e os critérios/tarefas passarem de forma consistente, marcar **plano calibrado**.
86
+ 4. Se `Confiança < 70%` e o ciclo passar amplamente, marcar **plano conservador demais**.
87
+
88
+ Registrar em `VERIFY.md`: `Resultado de calibração | Confiança declarada | Resultado observado | Notas`.
89
+ </calibracao_do_plano>
90
+
91
+ <process>
92
+ 1. **Camada 1 — Auditoria de pré-execução:** checar integridade do PLAN.md e DISCUSS.md conforme `<camada_1_pre_exec_audit>`. Documentar resultado.
93
+ 2. Ler `SPEC.md`, `PLAN.md` e `DISCUSS.md` do escopo resolvido, além de `.oxe/STATE.md` global.
79
94
  3. **Camada 2:** Para cada tarefa relevante, executar **Verificar: Comando** do PLAN (ou subconjunto se foco Tn). Para **cada ID de critério** da SPEC (A1, A2, …), registrar se passou com evidência.
80
95
  4. **Camada 3:** Se existir `.oxe/DISCUSS.md` com IDs D-NN, executar **Fidelidade de decisões** conforme `<camada_3_fidelidade_decisoes>`.
81
- 5. Escrever **`.oxe/VERIFY.md`** com:
96
+ 5. Escrever **`VERIFY.md`** no escopo resolvido com:
82
97
  - Data, ambiente (SO / versão do Node se relevante).
83
98
  - **Seção — Auditoria de pré-execução:** resultado da Camada 1.
84
99
  - **Tabela — Tarefas:** Tarefa (Tn) | Verificação (comando/checklist) | Passou? | Notas.
85
- - **Tabela — Critérios SPEC:** ID (A1…) | Critério (resumo) | Evidência | Passou? | Notas.
86
- - **Tabela — Fidelidade de decisões** (se DISCUSS.md existir): ID | Decisão | Tarefa(s) | Implementado? | Evidência.
87
- - **Checklist UAT** (Camada 4).
100
+ - **Tabela — Critérios SPEC:** ID (A1…) | Critério (resumo) | Evidência | Passou? | Notas.
101
+ - **Tabela — Fidelidade de decisões** (se DISCUSS.md existir): ID | Decisão | Tarefa(s) | Implementado? | Evidência.
102
+ - **Seção Calibração do plano:** resultado conforme `<calibracao_do_plano>`.
103
+ - **Checklist UAT** (Camada 4).
88
104
  - **Gaps** — o que falhou e sugestão de correção; se não houver, escrever `Nenhum gap restante`.
89
- 6. Atualizar **`.oxe/STATE.md`**: `verify_complete` ou `verify_failed` + próximo passo (replan, corrigir ou publicar).
105
+ 6. Atualizar **`.oxe/STATE.md`** global: `verify_complete` ou `verify_failed` + próximo passo (replan, corrigir ou publicar).
90
106
  6b. **Blueprint plan-agent:** se **todas** as verificações relevantes **passaram**, existir **`.oxe/plan-agents.json`** com `oxePlanAgentsSchema >= 2` e `lifecycle.status === "executing"` (ou `pending_execute`), actualizar o JSON: `lifecycle: { "status": "closed", "since": "<ISO>" }` e espelhar em **`STATE.md`** (**lifecycle_status** → `closed`). Não fechar como `closed` se `verify_failed` ou gaps por resolver.
91
- 7. Acrescentar entrada em **`.oxe/SUMMARY.md`** (sessão): se não existir, criar a partir de **`oxe/templates/SUMMARY.template.md`**. **Obrigatório** quando `verify_failed` ou quando a seção **Gaps** tiver itens.
107
+ 7. Acrescentar entrada em **`SUMMARY.md`** do escopo resolvido: se não existir, criar a partir de **`oxe/templates/SUMMARY.template.md`**. **Obrigatório** quando `verify_failed` ou quando a seção **Gaps** tiver itens.
92
108
  7b. **Retrospectiva (pós-verify):** se `verify_complete`, sugerir **`/oxe-retro`** para capturar aprendizados do ciclo em `.oxe/LESSONS.md`. Especialmente importante quando: houve replanejamento (`--replan`), houve falhas em execute que precisaram de debug, critérios A* foram ajustados durante o ciclo, ou o ciclo durou mais de 2 ondas. Retro antes do próximo spec garante que lições orientem o próximo ciclo.
93
109
  7b. **Camada 5 — Validate-gaps automático:** se `verification_depth: "thorough"` em `.oxe/config.json`, executar a lógica de `oxe/workflows/validate-gaps.md` e adicionar seção **Gaps de Cobertura** ao VERIFY.md (mesmo conteúdo de VALIDATION-GAPS.md). Também escrever `.oxe/VALIDATION-GAPS.md` separado.
94
110
  7c. **Camada 6 — Security automático:** se `security_in_verify: true` em `.oxe/config.json`, executar a lógica de `oxe/workflows/security.md` e adicionar seção **Auditoria de Segurança** ao VERIFY.md. Também escrever `.oxe/SECURITY.md` separado. Achados P0 bloqueiam o `verify_complete` — registrar `verify_failed` até P0s serem resolvidos.
@@ -11,7 +11,7 @@ Subcomandos:
11
11
  - `/oxe-workstream close <nome>` — fechar workstream e mesclar contexto ao pipeline principal.
12
12
  </objective>
13
13
 
14
- <context>
14
+ <context>
15
15
  **Por que workstreams?**
16
16
 
17
17
  O pipeline OXE padrão (`.oxe/SPEC.md`, `PLAN.md`, etc.) é linear — uma entrega por vez. Workstreams permitem:
@@ -19,7 +19,7 @@ O pipeline OXE padrão (`.oxe/SPEC.md`, `PLAN.md`, etc.) é linear — uma entre
19
19
  - Trabalho em `bugfix/auth` e `feature/billing` simultaneamente.
20
20
  - Times menores trabalhando em trilhas independentes com contextos separados.
21
21
 
22
- **Estrutura no disco:**
22
+ **Estrutura no disco:**
23
23
  ```
24
24
  .oxe/
25
25
  workstreams/
@@ -32,17 +32,18 @@ O pipeline OXE padrão (`.oxe/SPEC.md`, `PLAN.md`, etc.) é linear — uma entre
32
32
  config.json (herda do config principal; pode sobrescrever keys)
33
33
  ```
34
34
 
35
- **Compatibilidade:**
36
- - O pipeline principal (`.oxe/SPEC.md`, `.oxe/PLAN.md`, etc.) continua funcionando normalmente.
37
- - Workstreams **não** substituem o pipeline principal — são adicionais.
38
- - `oxe-cc doctor` e `oxe-cc status` reportam cada workstream separadamente quando `--workstream=<nome>` for passado.
39
- - A seção **Workstreams ativos** do STATE.md principal lista os workstreams em andamento.
40
- </context>
35
+ **Compatibilidade:**
36
+ - O pipeline principal (`.oxe/SPEC.md`, `.oxe/PLAN.md`, etc.) continua funcionando normalmente.
37
+ - Workstreams **não** substituem o pipeline principal — são adicionais.
38
+ - `oxe-cc doctor` e `oxe-cc status` reportam cada workstream separadamente quando `--workstream=<nome>` for passado.
39
+ - A seção **Workstreams ativos** do STATE.md principal lista os workstreams em andamento.
40
+ - Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, workstreams vivem em `.oxe/<active_session>/workstreams/`; sem sessão ativa, usam `.oxe/workstreams/`.
41
+ </context>
41
42
 
42
43
  <process_list>
43
44
  **`/oxe-workstream list`**
44
45
 
45
- 1. Ler `.oxe/workstreams/` — listar subpastas.
46
+ 1. Ler `workstreams/` do escopo resolvido — listar subpastas.
46
47
  2. Para cada workstream, ler seu `STATE.md` local (fase e próximo passo).
47
48
  3. Exibir tabela no chat: Nome | Fase | Próximo passo | Última atividade.
48
49
  </process_list>
@@ -51,8 +52,8 @@ O pipeline OXE padrão (`.oxe/SPEC.md`, `PLAN.md`, etc.) é linear — uma entre
51
52
  **`/oxe-workstream new <nome>`**
52
53
 
53
54
  1. Validar que `<nome>` é um slug seguro (letras, números, hífens — sem espaços ou caracteres especiais).
54
- 2. Criar `.oxe/workstreams/<nome>/STATE.md` a partir de `oxe/templates/STATE.md`.
55
- 3. Criar `.oxe/workstreams/<nome>/config.json` vazio (herda do config principal).
55
+ 2. Criar `workstreams/<nome>/STATE.md` no escopo resolvido a partir de `oxe/templates/STATE.md`.
56
+ 3. Criar `workstreams/<nome>/config.json` vazio (herda do config principal).
56
57
  4. Atualizar **STATE.md principal**: adicionar `<nome>` na seção **Workstreams ativos**.
57
58
  5. Confirmar no chat: `Workstream '<nome>' criado. Próximo passo: /oxe-spec (no contexto do workstream)`.
58
59
 
@@ -62,9 +63,9 @@ O pipeline OXE padrão (`.oxe/SPEC.md`, `PLAN.md`, etc.) é linear — uma entre
62
63
  <process_switch>
63
64
  **`/oxe-workstream switch <nome>`**
64
65
 
65
- 1. Verificar que `.oxe/workstreams/<nome>/` existe.
66
+ 1. Verificar que `workstreams/<nome>/` do escopo resolvido existe.
66
67
  2. Atualizar STATE.md principal: seção **Workstream ativo** com nome.
67
- 3. Confirmar no chat: `Workstream ativo: <nome>. Artefatos em .oxe/workstreams/<nome>/`.
68
+ 3. Confirmar no chat: `Workstream ativo: <nome>. Artefatos em workstreams/<nome>/ do escopo atual`.
68
69
 
69
70
  Após ativar, os workflows `/oxe-spec`, `/oxe-plan`, `/oxe-execute`, `/oxe-verify` operam nos artefatos do workstream ativo em vez dos artefatos raiz.
70
71
  </process_switch>
@@ -73,7 +74,7 @@ Após ativar, os workflows `/oxe-spec`, `/oxe-plan`, `/oxe-execute`, `/oxe-verif
73
74
  **`/oxe-workstream status [nome]`**
74
75
 
75
76
  1. Se `nome` omitido: usar workstream ativo do STATE.md.
76
- 2. Ler `.oxe/workstreams/<nome>/STATE.md` — fase e próximo passo.
77
+ 2. Ler `workstreams/<nome>/STATE.md` do escopo resolvido — fase e próximo passo.
77
78
  3. Ler SPEC, PLAN, VERIFY do workstream (se existirem).
78
79
  4. Exibir resumo: fase, critérios, gaps, próximo passo.
79
80
  </process_status>
@@ -83,7 +84,7 @@ Após ativar, os workflows `/oxe-spec`, `/oxe-plan`, `/oxe-execute`, `/oxe-verif
83
84
 
84
85
  1. Verificar que o workstream está com `verify_complete` no seu STATE.md local.
85
86
  2. Se não estiver: alertar e pedir confirmação com `--force`.
86
- 3. Mover (ou arquivar) `.oxe/workstreams/<nome>/` → `.oxe/workstreams/closed/<nome>-YYYY-MM-DD/`.
87
+ 3. Mover (ou arquivar) `workstreams/<nome>/` do escopo resolvido `workstreams/closed/<nome>-YYYY-MM-DD/`.
87
88
  4. Atualizar STATE.md principal: remover `<nome>` de **Workstreams ativos**, registrar em **Workstreams encerrados**.
88
89
  5. Confirmar no chat: `Workstream '<nome>' encerrado. Artefatos em .oxe/workstreams/closed/`.
89
90
  </process_close>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oxe-cc",
3
- "version": "0.6.4",
3
+ "version": "0.6.6",
4
4
  "description": "OXE — spec-driven workflows in .oxe/; integrates with Cursor, GitHub Copilot, Claude, OpenCode, Gemini, Codex, Windsurf, Antigravity (npx)",
5
5
  "license": "GPL-3.0",
6
6
  "author": "",