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.
- package/.cursor/commands/oxe-execute.md +1 -1
- package/.cursor/commands/oxe-session.md +11 -0
- package/.github/prompts/oxe-execute.prompt.md +1 -1
- package/.github/prompts/oxe-loop.prompt.md +12 -12
- package/.github/prompts/oxe-project.prompt.md +12 -12
- package/.github/prompts/oxe-retro.prompt.md +12 -12
- package/.github/prompts/oxe-security.prompt.md +12 -12
- package/.github/prompts/oxe-session.prompt.md +12 -0
- package/.github/prompts/oxe.prompt.md +12 -12
- package/AGENTS.md +75 -8
- package/CHANGELOG.md +74 -0
- package/README.md +81 -60
- package/bin/banner.txt +1 -1
- package/bin/lib/oxe-project-health.cjs +82 -0
- package/bin/oxe-cc.js +13 -1
- package/commands/oxe/loop.md +17 -17
- package/commands/oxe/oxe.md +16 -16
- package/commands/oxe/project.md +16 -16
- package/commands/oxe/retro.md +16 -16
- package/commands/oxe/review-pr.md +16 -0
- package/commands/oxe/security.md +16 -16
- package/commands/oxe/session.md +16 -0
- package/commands/oxe/update.md +16 -0
- package/lib/sdk/index.cjs +22 -1
- package/lib/sdk/index.d.ts +28 -2
- package/oxe/schemas/plan-agents.schema.json +15 -4
- package/oxe/templates/CONFIG.md +6 -1
- package/oxe/templates/LESSONS.template.md +43 -43
- package/oxe/templates/SECURITY.template.md +72 -72
- package/oxe/templates/SESSION.template.md +32 -0
- package/oxe/templates/STATE.md +29 -6
- package/oxe/templates/config.template.json +2 -0
- package/oxe/templates/plan-agents.template.json +1 -0
- package/oxe/workflows/checkpoint.md +10 -9
- package/oxe/workflows/debug.md +6 -5
- package/oxe/workflows/discuss.md +8 -7
- package/oxe/workflows/execute.md +14 -12
- package/oxe/workflows/forensics.md +6 -6
- package/oxe/workflows/help.md +21 -4
- package/oxe/workflows/loop.md +57 -57
- package/oxe/workflows/milestone.md +12 -13
- package/oxe/workflows/next.md +9 -5
- package/oxe/workflows/obs.md +19 -8
- package/oxe/workflows/oxe.md +115 -115
- package/oxe/workflows/plan-agent.md +4 -3
- package/oxe/workflows/plan.md +17 -16
- package/oxe/workflows/project.md +50 -50
- package/oxe/workflows/quick.md +6 -5
- package/oxe/workflows/references/session-path-resolution.md +71 -0
- package/oxe/workflows/research.md +9 -8
- package/oxe/workflows/retro.md +62 -62
- package/oxe/workflows/security.md +59 -58
- package/oxe/workflows/session.md +153 -0
- package/oxe/workflows/spec.md +26 -20
- package/oxe/workflows/ui-review.md +3 -3
- package/oxe/workflows/ui-spec.md +3 -3
- package/oxe/workflows/validate-gaps.md +5 -4
- package/oxe/workflows/verify.md +12 -9
- package/oxe/workflows/workstream.md +16 -15
- 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>
|
package/oxe/workflows/spec.md
CHANGED
|
@@ -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
|
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
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
|
|
73
|
-
- Atualizar
|
|
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
|
|
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
|
|
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:
|
|
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
|
|
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
|
|
200
|
-
6. Escrever
|
|
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
|
|
207
|
-
9. Marcar OBS incorporadas em
|
|
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
|
-
- [ ]
|
|
212
|
-
- [ ]
|
|
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.
|
|
17
|
-
2. Escrever
|
|
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
|
|
package/oxe/workflows/ui-spec.md
CHANGED
|
@@ -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.
|
|
17
|
-
2. Criar ou atualizar
|
|
18
|
-
3. Atualizar **`.oxe/STATE.md
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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**.
|
package/oxe/workflows/verify.md
CHANGED
|
@@ -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
|
-
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
55
|
-
3. Criar
|
|
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
|
|
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
|
|
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
|
|
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)
|
|
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.
|
|
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"
|