oxe-cc 0.6.2 → 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.
Files changed (60) hide show
  1. package/.cursor/commands/oxe-execute.md +1 -1
  2. package/.cursor/commands/oxe-session.md +11 -0
  3. package/.github/prompts/oxe-execute.prompt.md +1 -1
  4. package/.github/prompts/oxe-loop.prompt.md +12 -12
  5. package/.github/prompts/oxe-project.prompt.md +12 -12
  6. package/.github/prompts/oxe-retro.prompt.md +12 -12
  7. package/.github/prompts/oxe-security.prompt.md +12 -12
  8. package/.github/prompts/oxe-session.prompt.md +12 -0
  9. package/.github/prompts/oxe.prompt.md +12 -12
  10. package/AGENTS.md +75 -8
  11. package/CHANGELOG.md +74 -0
  12. package/README.md +81 -60
  13. package/bin/banner.txt +1 -1
  14. package/bin/lib/oxe-project-health.cjs +82 -0
  15. package/bin/oxe-cc.js +13 -1
  16. package/commands/oxe/loop.md +17 -17
  17. package/commands/oxe/oxe.md +16 -16
  18. package/commands/oxe/project.md +16 -16
  19. package/commands/oxe/retro.md +16 -16
  20. package/commands/oxe/review-pr.md +16 -0
  21. package/commands/oxe/security.md +16 -16
  22. package/commands/oxe/session.md +16 -0
  23. package/commands/oxe/update.md +16 -0
  24. package/lib/sdk/index.cjs +22 -1
  25. package/lib/sdk/index.d.ts +28 -2
  26. package/oxe/schemas/plan-agents.schema.json +15 -4
  27. package/oxe/templates/CONFIG.md +6 -1
  28. package/oxe/templates/LESSONS.template.md +43 -43
  29. package/oxe/templates/SECURITY.template.md +72 -72
  30. package/oxe/templates/SESSION.template.md +32 -0
  31. package/oxe/templates/STATE.md +29 -6
  32. package/oxe/templates/config.template.json +2 -0
  33. package/oxe/templates/plan-agents.template.json +1 -0
  34. package/oxe/workflows/checkpoint.md +10 -9
  35. package/oxe/workflows/debug.md +6 -5
  36. package/oxe/workflows/discuss.md +8 -7
  37. package/oxe/workflows/execute.md +14 -12
  38. package/oxe/workflows/forensics.md +6 -6
  39. package/oxe/workflows/help.md +21 -4
  40. package/oxe/workflows/loop.md +57 -57
  41. package/oxe/workflows/milestone.md +12 -13
  42. package/oxe/workflows/next.md +9 -5
  43. package/oxe/workflows/obs.md +19 -8
  44. package/oxe/workflows/oxe.md +115 -115
  45. package/oxe/workflows/plan-agent.md +4 -3
  46. package/oxe/workflows/plan.md +17 -16
  47. package/oxe/workflows/project.md +50 -50
  48. package/oxe/workflows/quick.md +6 -5
  49. package/oxe/workflows/references/session-path-resolution.md +71 -0
  50. package/oxe/workflows/research.md +9 -8
  51. package/oxe/workflows/retro.md +62 -62
  52. package/oxe/workflows/security.md +59 -58
  53. package/oxe/workflows/session.md +153 -0
  54. package/oxe/workflows/spec.md +26 -20
  55. package/oxe/workflows/ui-review.md +3 -3
  56. package/oxe/workflows/ui-spec.md +3 -3
  57. package/oxe/workflows/validate-gaps.md +5 -4
  58. package/oxe/workflows/verify.md +12 -9
  59. package/oxe/workflows/workstream.md +16 -15
  60. package/package.json +2 -2
@@ -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**.
@@ -13,14 +13,15 @@ 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
+ - 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
19
  - Não destruir `PLAN.md`; registrar achados em `VERIFY.md`.
19
20
  - 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
21
  - 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
22
  - **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
23
  - **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.
24
+ - **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
25
  - **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
26
  - **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
27
  - **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,7 +33,7 @@ Se o usuário indicar uma tarefa (ex.: `T2`), focar só nela nas camadas 1–2;
32
33
  Verificar que o PLAN.md está apto para verificação:
33
34
  1. Toda tarefa `### Tn` tem bloco **Verificar** com pelo menos Comando ou Manual.
34
35
  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
+ 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).
36
37
  4. Não há dependências `Tk` inválidas (ID inexistente no PLAN).
37
38
 
38
39
  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.
@@ -45,7 +46,7 @@ Para cada tarefa relevante, executar **Verificar: Comando** do PLAN (ou subconju
45
46
  </camada_2_tarefas_e_criterios>
46
47
 
47
48
  <camada_3_fidelidade_decisoes>
48
- **Camada 3 — Fidelidade de decisões** (ativa se existir `.oxe/DISCUSS.md` com IDs D-NN)
49
+ **Camada 3 — Fidelidade de decisões** (ativa se existir `DISCUSS.md` no escopo resolvido com IDs D-NN)
49
50
 
50
51
  Para cada decisão na tabela de DISCUSS.md:
51
52
  1. Localizar a(s) tarefa(s) que referenciam esse ID em **Decisão vinculada:**.
@@ -75,10 +76,10 @@ O preenchimento da checklist é responsabilidade do **usuário** (não do agente
75
76
 
76
77
  <process>
77
78
  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`.
79
+ 2. Ler `SPEC.md`, `PLAN.md` e `DISCUSS.md` do escopo resolvido, além de `.oxe/STATE.md` global.
79
80
  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
81
  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:
82
+ 5. Escrever **`VERIFY.md`** no escopo resolvido com:
82
83
  - Data, ambiente (SO / versão do Node se relevante).
83
84
  - **Seção — Auditoria de pré-execução:** resultado da Camada 1.
84
85
  - **Tabela — Tarefas:** Tarefa (Tn) | Verificação (comando/checklist) | Passou? | Notas.
@@ -86,9 +87,9 @@ O preenchimento da checklist é responsabilidade do **usuário** (não do agente
86
87
  - **Tabela — Fidelidade de decisões** (se DISCUSS.md existir): ID | Decisão | Tarefa(s) | Implementado? | Evidência.
87
88
  - **Checklist UAT** (Camada 4).
88
89
  - **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).
90
+ 6. Atualizar **`.oxe/STATE.md`** global: `verify_complete` ou `verify_failed` + próximo passo (replan, corrigir ou publicar).
90
91
  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.
92
+ 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
93
  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
94
  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
95
  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.
@@ -104,4 +105,6 @@ O preenchimento da checklist é responsabilidade do **usuário** (não do agente
104
105
  - [ ] SUMMARY.md atualizado quando houver falha ou gaps relevantes.
105
106
  - [ ] Se passou: seções **Rascunho de commit** e **Checklist PR** presentes em VERIFY.md, salvo se desativadas na config.
106
107
  - [ ] Se existiu DISCUSS.md: tabela de Fidelidade de decisões preenchida sem divergências não documentadas.
108
+ - [ ] Se `verification_depth: "thorough"` em config: `.oxe/VALIDATION-GAPS.md` produzido como parte deste verify.
109
+ - [ ] Se `security_in_verify: true` em config: `.oxe/SECURITY.md` produzido; achados P0 resolvidos ou `verify_failed` registrado.
107
110
  </success_criteria>
@@ -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.2",
3
+ "version": "0.6.5",
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": "",
@@ -54,7 +54,7 @@
54
54
  ],
55
55
  "scripts": {
56
56
  "sync:cursor": "node scripts/sync-cursor-from-prompts.cjs",
57
- "test": "node --test tests/install.test.cjs tests/oxe-project-health.test.cjs tests/oxe-sdk.test.cjs tests/oxe-manifest.test.cjs tests/oxe-agent-install.test.cjs tests/oxe-install-resolve-full.test.cjs tests/oxe-health-extended.test.cjs tests/oxe-workflows-edge.test.cjs tests/oxe-sdk-edge.test.cjs tests/oxe-cli-edge.test.cjs tests/oxe-npm-version.test.cjs tests/oxe-scripts.test.cjs",
57
+ "test": "node --test tests/install.test.cjs tests/oxe-project-health.test.cjs tests/oxe-sdk.test.cjs tests/oxe-manifest.test.cjs tests/oxe-agent-install.test.cjs tests/oxe-install-resolve-full.test.cjs tests/oxe-health-extended.test.cjs tests/oxe-workflows-edge.test.cjs tests/oxe-sdk-edge.test.cjs tests/oxe-cli-edge.test.cjs tests/oxe-npm-version.test.cjs tests/oxe-scripts.test.cjs tests/oxe-retro-health.test.cjs",
58
58
  "test:coverage": "c8 --check-coverage --lines 82 --functions 85 --branches 58 --statements 82 npm test",
59
59
  "scan:assets": "node scripts/oxe-assets-scan.cjs",
60
60
  "prepublishOnly": "node scripts/sync-cursor-from-prompts.cjs && npm test && npm run scan:assets && node bin/oxe-cc.js --version"