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
@@ -1,43 +1,43 @@
1
- ---
2
- oxe_doc: lessons
3
- updated: YYYY-MM-DD
4
- ---
5
-
6
- # Lições Aprendidas OXE
7
-
8
- <!-- Consumido automaticamente por /oxe-spec, /oxe-plan, /oxe-execute, /oxe-verify -->
9
- <!-- Cada entrada é PRESCRITIVA: diz o que fazer diferente, não apenas o que aconteceu -->
10
-
11
- | Ciclo | Data | Tipo | Lição (resumo) | Aplicar em | Status |
12
- |-------|------|------|----------------|------------|--------|
13
- | C-01 | YYYY-MM-DD | plan | Tarefas de integração requerem Complexidade L mínimo | /oxe-plan | ativo |
14
-
15
- ---
16
-
17
- ### C-01 — YYYY-MM-DD
18
-
19
- **Fonte:** VERIFY.md (gaps) + FORENSICS.md (causa raiz)
20
-
21
- ---
22
-
23
- **L-01** · Tipo: `plan`
24
- **Lição:** Tarefas que integram APIs de terceiros devem ter `Complexidade: L` mínimo e `Verificar` com mock como fallback quando API estiver indisponível.
25
- **Raiz do problema:** T4 foi marcada `M` mas envolveu 3 serviços externos — estorou 2 ondas.
26
- **Aplicar em:** `/oxe-plan` — ao planejar tarefas com `INTEGRATIONS.md` externos, elevar complexidade automaticamente.
27
- **Status:** ativo
28
-
29
- ---
30
-
31
- **L-02** · Tipo: `spec`
32
- **Lição:** Critérios A* que envolvem "performance" devem incluir métrica mensurável (ex.: "< 200ms p95 em carga de 100 req/s") desde a Fase 3.
33
- **Raiz do problema:** A3 dizia "resposta rápida" — verify não conseguiu evidência objetiva.
34
- **Aplicar em:** `/oxe-spec` Fase 3 — ao criar critérios de performance, pedir métrica específica antes de aprovar o requisito.
35
- **Status:** ativo
36
-
37
- ---
38
-
39
- **L-03** · Tipo: `process`
40
- **Lição:** Quando o plano tem 3+ domínios distintos, sempre usar `/oxe-plan --agents`. Solo em 3+ domínios gera tarefas com contexto insuficiente.
41
- **Raiz do problema:** plano solo com auth + API + UI causou tarefas que misturavam contexto de 2 domínios.
42
- **Aplicar em:** `/oxe-plan` — gate de sugestão de `--agents` já existe; reforçar como obrigatório para 3+.
43
- **Status:** ativo
1
+ ---
2
+ oxe_doc: lessons
3
+ updated: YYYY-MM-DD
4
+ ---
5
+
6
+ # Lições Aprendidas OXE
7
+
8
+ <!-- Consumido automaticamente por /oxe-spec, /oxe-plan, /oxe-execute, /oxe-verify -->
9
+ <!-- Cada entrada é PRESCRITIVA: diz o que fazer diferente, não apenas o que aconteceu -->
10
+
11
+ | Ciclo | Data | Tipo | Lição (resumo) | Aplicar em | Status |
12
+ |-------|------|------|----------------|------------|--------|
13
+ | C-01 | YYYY-MM-DD | plan | Tarefas de integração requerem Complexidade L mínimo | /oxe-plan | ativo |
14
+
15
+ ---
16
+
17
+ ### C-01 — YYYY-MM-DD
18
+
19
+ **Fonte:** VERIFY.md (gaps) + FORENSICS.md (causa raiz)
20
+
21
+ ---
22
+
23
+ **L-01** · Tipo: `plan`
24
+ **Lição:** Tarefas que integram APIs de terceiros devem ter `Complexidade: L` mínimo e `Verificar` com mock como fallback quando API estiver indisponível.
25
+ **Raiz do problema:** T4 foi marcada `M` mas envolveu 3 serviços externos — estorou 2 ondas.
26
+ **Aplicar em:** `/oxe-plan` — ao planejar tarefas com `INTEGRATIONS.md` externos, elevar complexidade automaticamente.
27
+ **Status:** ativo
28
+
29
+ ---
30
+
31
+ **L-02** · Tipo: `spec`
32
+ **Lição:** Critérios A* que envolvem "performance" devem incluir métrica mensurável (ex.: "< 200ms p95 em carga de 100 req/s") desde a Fase 3.
33
+ **Raiz do problema:** A3 dizia "resposta rápida" — verify não conseguiu evidência objetiva.
34
+ **Aplicar em:** `/oxe-spec` Fase 3 — ao criar critérios de performance, pedir métrica específica antes de aprovar o requisito.
35
+ **Status:** ativo
36
+
37
+ ---
38
+
39
+ **L-03** · Tipo: `process`
40
+ **Lição:** Quando o plano tem 3+ domínios distintos, sempre usar `/oxe-plan --agents`. Solo em 3+ domínios gera tarefas com contexto insuficiente.
41
+ **Raiz do problema:** plano solo com auth + API + UI causou tarefas que misturavam contexto de 2 domínios.
42
+ **Aplicar em:** `/oxe-plan` — gate de sugestão de `--agents` já existe; reforçar como obrigatório para 3+.
43
+ **Status:** ativo
@@ -1,72 +1,72 @@
1
- ---
2
- oxe_doc: security
3
- status: draft
4
- updated: YYYY-MM-DD
5
- stack_ref: .oxe/codebase/STACK.md
6
- plan_ref: .oxe/PLAN.md
7
- ---
8
-
9
- # Auditoria de Segurança OXE
10
-
11
- ## Stack e escopo
12
-
13
- **Stack identificado:** [linguagem, framework, DB, auth]
14
- **Categorias OWASP avaliadas:** A01, A02, A03, ...
15
- **Categorias descartadas:** A04 (motivo), A08 (motivo), ...
16
-
17
- ---
18
-
19
- ## Achados
20
-
21
- ### P0 — Crítico (requer ação imediata)
22
-
23
- | ID | Categoria | Arquivo:linha | Padrão encontrado | Recomendação | Tarefa |
24
- |----|-----------|--------------|-------------------|--------------|--------|
25
- | S-01 | A07 — Auth | `src/auth/login.ts:42` | Senha comparada sem hash | Usar bcrypt/argon2 | T_new |
26
-
27
- ### P1 — Alto (antes do próximo deploy)
28
-
29
- | ID | Categoria | Arquivo:linha | Padrão encontrado | Recomendação | Tarefa |
30
- |----|-----------|--------------|-------------------|--------------|--------|
31
- | S-02 | A05 — Config | `.env.example:8` | JWT_SECRET sem rotação documentada | Documentar política de rotação | T3 |
32
-
33
- ### P2 — Médio (ação recomendada, compensação aceitável)
34
-
35
- | ID | Categoria | Arquivo:linha | Padrão encontrado | Recomendação | Tarefa |
36
- |----|-----------|--------------|-------------------|--------------|--------|
37
- | S-03 | A09 — Logging | `src/api/handler.ts:15` | Erro logado com stack trace completo em produção | Filtrar dados sensíveis em prod | T_new |
38
-
39
- ---
40
-
41
- ## Resultado por categoria
42
-
43
- | Categoria OWASP | Status | Achados |
44
- |-----------------|--------|---------|
45
- | A01 — Broken Access Control | ✅ Sem achados | — |
46
- | A02 — Cryptographic Failures | ⚠️ P1 | S-02 |
47
- | A03 — Injection | ✅ Sem achados | — |
48
- | A05 — Security Misconfiguration | ⚠️ P1 | S-02 |
49
- | A07 — Authentication Failures | ❌ P0 | S-01 |
50
- | A09 — Logging & Monitoring | ⚠️ P2 | S-03 |
51
-
52
- ---
53
-
54
- ## Sugestões de tarefas novas
55
-
56
- ```
57
- T_new-S01: Implementar hash de senha com bcrypt (custo ≥ 12)
58
- Verificar: login falha com senha errada; hash visível no DB.
59
- Aceite vinculado: [A* de segurança se existir na SPEC]
60
-
61
- T_new-S03: Filtrar stack traces em logs de produção
62
- Verificar: log em NODE_ENV=production não expõe stacktrace.
63
- Aceite vinculado: —
64
- ```
65
-
66
- ---
67
-
68
- ## Próximo passo
69
-
70
- - **P0 presente:** ação obrigatória antes de qualquer deploy — criar tarefas e adicionar ao PLAN via `/oxe-plan --replan`.
71
- - **Apenas P1/P2:** priorizar P1 na próxima onda; P2 pode ir para backlog v2.
72
- - **Sem achados:** registrar como "auditoria limpa em YYYY-MM-DD" e prosseguir.
1
+ ---
2
+ oxe_doc: security
3
+ status: draft
4
+ updated: YYYY-MM-DD
5
+ stack_ref: .oxe/codebase/STACK.md
6
+ plan_ref: .oxe/PLAN.md
7
+ ---
8
+
9
+ # Auditoria de Segurança OXE
10
+
11
+ ## Stack e escopo
12
+
13
+ **Stack identificado:** [linguagem, framework, DB, auth]
14
+ **Categorias OWASP avaliadas:** A01, A02, A03, ...
15
+ **Categorias descartadas:** A04 (motivo), A08 (motivo), ...
16
+
17
+ ---
18
+
19
+ ## Achados
20
+
21
+ ### P0 — Crítico (requer ação imediata)
22
+
23
+ | ID | Categoria | Arquivo:linha | Padrão encontrado | Recomendação | Tarefa |
24
+ |----|-----------|--------------|-------------------|--------------|--------|
25
+ | S-01 | A07 — Auth | `src/auth/login.ts:42` | Senha comparada sem hash | Usar bcrypt/argon2 | T_new |
26
+
27
+ ### P1 — Alto (antes do próximo deploy)
28
+
29
+ | ID | Categoria | Arquivo:linha | Padrão encontrado | Recomendação | Tarefa |
30
+ |----|-----------|--------------|-------------------|--------------|--------|
31
+ | S-02 | A05 — Config | `.env.example:8` | JWT_SECRET sem rotação documentada | Documentar política de rotação | T3 |
32
+
33
+ ### P2 — Médio (ação recomendada, compensação aceitável)
34
+
35
+ | ID | Categoria | Arquivo:linha | Padrão encontrado | Recomendação | Tarefa |
36
+ |----|-----------|--------------|-------------------|--------------|--------|
37
+ | S-03 | A09 — Logging | `src/api/handler.ts:15` | Erro logado com stack trace completo em produção | Filtrar dados sensíveis em prod | T_new |
38
+
39
+ ---
40
+
41
+ ## Resultado por categoria
42
+
43
+ | Categoria OWASP | Status | Achados |
44
+ |-----------------|--------|---------|
45
+ | A01 — Broken Access Control | ✅ Sem achados | — |
46
+ | A02 — Cryptographic Failures | ⚠️ P1 | S-02 |
47
+ | A03 — Injection | ✅ Sem achados | — |
48
+ | A05 — Security Misconfiguration | ⚠️ P1 | S-02 |
49
+ | A07 — Authentication Failures | ❌ P0 | S-01 |
50
+ | A09 — Logging & Monitoring | ⚠️ P2 | S-03 |
51
+
52
+ ---
53
+
54
+ ## Sugestões de tarefas novas
55
+
56
+ ```
57
+ T_new-S01: Implementar hash de senha com bcrypt (custo ≥ 12)
58
+ Verificar: login falha com senha errada; hash visível no DB.
59
+ Aceite vinculado: [A* de segurança se existir na SPEC]
60
+
61
+ T_new-S03: Filtrar stack traces em logs de produção
62
+ Verificar: log em NODE_ENV=production não expõe stacktrace.
63
+ Aceite vinculado: —
64
+ ```
65
+
66
+ ---
67
+
68
+ ## Próximo passo
69
+
70
+ - **P0 presente:** ação obrigatória antes de qualquer deploy — criar tarefas e adicionar ao PLAN via `/oxe-plan --replan`.
71
+ - **Apenas P1/P2:** priorizar P1 na próxima onda; P2 pode ir para backlog v2.
72
+ - **Sem achados:** registrar como "auditoria limpa em YYYY-MM-DD" e prosseguir.
@@ -0,0 +1,32 @@
1
+ # Session sNNN — <nome>
2
+
3
+ ## Metadados
4
+
5
+ - **ID:** sNNN
6
+ - **Nome:** <nome>
7
+ - **Status:** active
8
+ - **Criada:** YYYY-MM-DD
9
+ - **Última atividade:** YYYY-MM-DD
10
+ - **Resumo:** <uma linha>
11
+
12
+ ## Índice de artefatos
13
+
14
+ | Artefato | Caminho | Status |
15
+ |----------|---------|--------|
16
+ | SESSION | `sessions/sNNN-<slug>/SESSION.md` | ativo |
17
+
18
+ ## Dependências cruzadas
19
+
20
+ - **Estende:** —
21
+ - **Referenciada por:** —
22
+ - **Decisões globais:** `.oxe/STATE.md`, `.oxe/SESSIONS.md`
23
+
24
+ ## Tags
25
+
26
+ - `<tag>`
27
+
28
+ ## Histórico
29
+
30
+ | Data | Evento |
31
+ |------|--------|
32
+ | YYYY-MM-DD | Sessão criada |
@@ -1,10 +1,15 @@
1
1
  # OXE — Estado
2
2
 
3
- ## Fase atual
4
-
5
- `initial` — defina após primeiro scan: `scan_complete` | `spec_ready` | `discuss_complete` | `plan_ready` | `quick_active` | `executing` | `verify_complete` | `verify_failed`
6
-
7
- ## Último scan
3
+ ## Fase atual
4
+
5
+ `initial` — defina após primeiro scan: `scan_complete` | `spec_ready` | `discuss_complete` | `plan_ready` | `quick_active` | `executing` | `verify_complete` | `verify_failed`
6
+
7
+ ## Sessão ativa (opcional — `/oxe-session`)
8
+
9
+ - **active_session:** (path relativo a `.oxe/` — ex.: `sessions/s001-auth-redesign` — ou — se nenhuma)
10
+ - **session_id:** (ex.: `s001` — ou —)
11
+
12
+ ## Último scan
8
13
 
9
14
  - **Data:** (use **YYYY-MM-DD** para o `oxe-cc doctor` avisar scan antigo com `scan_max_age_days` em `.oxe/config.json`)
10
15
  - **Notas:** (opcional)
@@ -13,6 +18,7 @@
13
18
 
14
19
  - **Data:** (**YYYY-MM-DD** — preenchido por **`/oxe-compact`**: refresh incremental dos mapas em `.oxe/codebase/` + `CODEBASE-DELTA.md` + `RESUME.md`)
15
20
  - **Notas:** (opcional; ex.: "só STRUCTURE e TESTING")
21
+ - **last_retro:** (YYYY-MM-DD — preenchido por **`/oxe-retro`** ao concluir retrospectiva; lido por `oxe-cc doctor` para rastrear ciclos sem lições)
16
22
 
17
23
  ## Contexto do plano / quick (opcional)
18
24
 
@@ -22,13 +28,30 @@
22
28
 
23
29
  ## Blueprint de agentes (sessão) (opcional — `/oxe-plan-agent`)
24
30
 
25
- Espelho do **`.oxe/plan-agents.json`** ativo (schema 2). Atualizar em **`/oxe-plan-agent`**, **`/oxe-execute`**, **`/oxe-verify`**, **`/oxe-quick`** quando o lifecycle mudar.
31
+ Espelho do **`.oxe/plan-agents.json`** ativo (schema 2). Atualizar em **`/oxe-plan-agent`**, **`/oxe-execute`**, **`/oxe-verify`**, **`/oxe-quick`** quando o lifecycle mudar.
26
32
 
27
33
  - **run_id:** (igual a `runId` no JSON; — se não houver blueprint)
28
34
  - **lifecycle_status:** `pending_execute` | `executing` | `closed` | `invalidated` | —
29
35
  - **Última onda (execute):** (número ou —)
30
36
  - **Notas:** (ex.: invalidado por quick; mensagens em `.oxe/plan-agent-messages/`)
31
37
 
38
+ ## Quick agents (sessão) (opcional — `/oxe-quick` com PDDA)
39
+
40
+ Preenchido por **`/oxe-quick`** quando Plan-Driven Dynamic Agents lean estiver ativo.
41
+
42
+ - **quick_id:** (ex.: `quick-2026-04-05-a1b2c3` — gerado por `/oxe-quick`)
43
+ - **quick_agents_status:** `active` | `done` | `invalidated` | —
44
+ - **Notas:** (ex.: invalidado ao iniciar novo quick ou promover a spec/plan)
45
+
46
+ ## Loop (sessão) (opcional — `/oxe-loop`)
47
+
48
+ Preenchido por **`/oxe-loop`** durante retry iterativo de onda.
49
+
50
+ - **loop_onda:** (número da onda em retry, ex.: `2`)
51
+ - **loop_iteracao:** (tentativa atual / máximo, ex.: `2/3`)
52
+ - **loop_status:** `retrying` | `passed` | `escalated` | —
53
+ - **Notas:** (ex.: escalado para `/oxe-forensics` após 3 tentativas)
54
+
32
55
  ## Checklist da onda OXE (opcional — workflow execute)
33
56
 
34
57
  _(O agente pode preencher após cada onda.)_
@@ -3,12 +3,14 @@
3
3
  "profile": "balanced",
4
4
  "discuss_before_plan": false,
5
5
  "verification_depth": "standard",
6
+ "security_in_verify": false,
6
7
  "after_verify_suggest_pr": true,
7
8
  "after_verify_draft_commit": true,
8
9
  "after_verify_suggest_uat": false,
9
10
  "default_verify_command": "",
10
11
  "scan_max_age_days": 0,
11
12
  "compact_max_age_days": 0,
13
+ "lessons_max_age_days": 0,
12
14
  "scale_adaptive": true,
13
15
  "scan_focus_globs": [],
14
16
  "scan_ignore_globs": [],
@@ -11,6 +11,7 @@
11
11
  {
12
12
  "id": "agent-example",
13
13
  "role": "Papel legível (ex.: Database)",
14
+ "persona": "executor",
14
15
  "scope": [
15
16
  "Primeiro bullet do âmbito",
16
17
  "Segundo bullet"
@@ -1,7 +1,7 @@
1
1
  # OXE — Workflow: checkpoint
2
2
 
3
3
  <objective>
4
- Criar um **marco nomeado em disco** em **`.oxe/checkpoints/YYYY-MM-DD-HHmm-<slug>.md`** (data + hora + slug curto) e atualizar **`.oxe/CHECKPOINTS.md`** (índice): **snapshot da sessão / trilha corrente** para pausar e retomar sem apagar SPEC/PLAN.
4
+ Criar um **marco nomeado em disco** em `checkpoints/YYYY-MM-DD-HHmm-<slug>.md` do escopo resolvido e atualizar `CHECKPOINTS.md` correspondente (índice): **snapshot da sessão / trilha corrente** para pausar e retomar sem apagar SPEC/PLAN.
5
5
 
6
6
  **Não** duplica o papel de `git commit` nem de `verify`; é **registo explícito** para humanos e agentes. Para **atualizar o mapa do projeto inteiro** e alinhar `.oxe/codebase/` ao código, usar **`compact.md`** (`/oxe-compact`), não este passo.
7
7
  </objective>
@@ -9,24 +9,25 @@ Criar um **marco nomeado em disco** em **`.oxe/checkpoints/YYYY-MM-DD-HHmm-<slug
9
9
  <context>
10
10
  - **Checkpoint vs compact** e **momentos chave** da rotina: tabelas canónicas em **`help.md`** (secções *Checkpoint vs compact* e *Momentos chave*) — evitar divergência; este ficheiro descreve só a execução do checkpoint.
11
11
 
12
- - Entrada: texto do utilizador = **slug** e/ou **nota** (ex.: `antes-refactor-auth` + “estado estável, falta T4”).
13
- - Nome do ficheiro: **`YYYY-MM-DD-HHmm-<slug-kebab>.md`** (hora 24h local ou UTC — documentar na nota se misturar fusos).
14
- - Frontmatter YAML no checkpoint (ver `oxe/templates/CHECKPOINT.template.md`): `created`, `slug`, `linked` (lista de paths relativos à raiz do repo, tipicamente `.oxe/STATE.md`, `.oxe/SPEC.md`, …).
15
- - **Índice** `.oxe/CHECKPOINTS.md`: tabela **mais recente primeiro** com colunas **Data** | **Ficheiro** | **Slug** | **Nota (1 linha)**.
12
+ - Entrada: texto do utilizador = **slug** e/ou **nota** (ex.: `antes-refactor-auth` + “estado estável, falta T4”).
13
+ - Nome do ficheiro: **`YYYY-MM-DD-HHmm-<slug-kebab>.md`** (hora 24h local ou UTC — documentar na nota se misturar fusos).
14
+ - Frontmatter YAML no checkpoint (ver `oxe/templates/CHECKPOINT.template.md`): `created`, `slug`, `linked` (lista de paths relativos à raiz do repo, tipicamente `.oxe/STATE.md`, `.oxe/SPEC.md`, …).
15
+ - Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, checkpoints vivem em `.oxe/<active_session>/checkpoints/`; sem sessão ativa, usar `.oxe/checkpoints/`.
16
+ - **Índice** `CHECKPOINTS.md` do mesmo escopo: tabela **mais recente primeiro** com colunas **Data** | **Ficheiro** | **Slug** | **Nota (1 linha)**.
16
17
  - Não mover nem apagar artefactos canónicos; o checkpoint é **documento adicional**.
17
18
  </context>
18
19
 
19
20
  <process>
20
- 1. Garantir pasta **`.oxe/checkpoints/`**.
21
+ 1. Garantir pasta `checkpoints/` do escopo resolvido.
21
22
  2. Normalizar slug a partir dos argumentos do utilizador (kebab-case, ASCII; se vazio, usar `checkpoint`).
22
23
  3. Escolher nome único; se colisão, acrescentar sufixo `-b`, `-c`, …
23
24
  4. Escrever o ficheiro de checkpoint a partir do template: preencher frontmatter `linked` com os `.oxe/*.md` relevantes que **existem**; corpo com nota do utilizador e **snapshot** (trecho de STATE, uma linha de objetivo SPEC, resumo PLAN).
24
- 5. Se **`.oxe/CHECKPOINTS.md`** não existir, criar com título `# OXE — Índice de checkpoints` e tabela com cabeçalho; senão, **inserir linha no topo** da tabela.
25
+ 5. Se `CHECKPOINTS.md` do escopo resolvido não existir, criar com título `# OXE — Índice de checkpoints` e tabela com cabeçalho; senão, **inserir linha no topo** da tabela.
25
26
  6. Responder no chat: caminho do ficheiro novo + como usar na retomada (ler checkpoint + `linked` + próximo `oxe:*`).
26
27
  </process>
27
28
 
28
29
  <success_criteria>
29
- - [ ] Novo ficheiro em `.oxe/checkpoints/` com frontmatter e corpo úteis.
30
- - [ ] `CHECKPOINTS.md` atualizado com entrada correspondente.
30
+ - [ ] Novo ficheiro em `checkpoints/` do escopo correto com frontmatter e corpo úteis.
31
+ - [ ] `CHECKPOINTS.md` do mesmo escopo atualizado com entrada correspondente.
31
32
  - [ ] SPEC/PLAN/VERIFY intocados salvo o utilizador pedir outra coisa explicitamente.
32
33
  </success_criteria>
@@ -8,13 +8,14 @@ Diferente de **`verify`**, que audita **aceite** contra SPEC/PLAN. Depois de est
8
8
 
9
9
  <context>
10
10
  - Pré-requisito: sintoma reproduzível ou descrição clara (mensagem de erro, Tn em falha).
11
- - Preferir ancorar ao identificador de tarefa **`Tn`** do `.oxe/PLAN.md` quando existir.
12
- - Artefato: **`.oxe/DEBUG.md`** ficheiro único com **sessões** datadas (append); não dispersar em vários ficheiros sem convenção.
11
+ - Preferir ancorar ao identificador de tarefa **`Tn`** do `PLAN.md` do escopo resolvido quando existir.
12
+ - Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, usar `.oxe/<active_session>/execution/DEBUG.md`; sem sessão ativa, usar `.oxe/DEBUG.md`.
13
+ - Artefato: **`DEBUG.md`** no escopo correto — ficheiro único com **sessões** datadas (append); não dispersar em vários ficheiros sem convenção.
13
14
  </context>
14
15
 
15
16
  <process>
16
- 1. Ler `.oxe/PLAN.md` e `.oxe/STATE.md`; se o foco for uma tarefa, localizar **Tn** e o bloco **Verificar**.
17
- 2. Registar em **`.oxe/DEBUG.md`** uma nova sessão:
17
+ 1. Ler `PLAN.md` do escopo resolvido e `.oxe/STATE.md`; se o foco for uma tarefa, localizar **Tn** e o bloco **Verificar**.
18
+ 2. Registar em **`DEBUG.md`** do escopo resolvido uma nova sessão:
18
19
  - **Data** / **Sintoma** (com stack ou comando que falhou).
19
20
  - **Hipóteses** (ordenadas por plausibilidade).
20
21
  - **Experiências** — o que foi tentado e resultado (uma linha cada).
@@ -25,7 +26,7 @@ Diferente de **`verify`**, que audita **aceite** contra SPEC/PLAN. Depois de est
25
26
  </process>
26
27
 
27
28
  <success_criteria>
28
- - [ ] `.oxe/DEBUG.md` contém sessão datada com sintoma e **Próximo passo** explícito.
29
+ - [ ] `DEBUG.md` no escopo correto contém sessão datada com sintoma e **Próximo passo** explícito.
29
30
  - [ ] Quando aplicável, a sessão referencia **Tn** do PLAN.
30
31
  - [ ] Não se confunde com verify: não se declara “entrega aprovada” só com debug.
31
32
  </success_criteria>
@@ -6,9 +6,10 @@ Esclarecer requisitos **antes** do plano: registrar perguntas, respostas e decis
6
6
  Usar quando: SPEC existe mas há ambiguidade, risco técnico, ou `discuss_before_plan: true` em `.oxe/config.json`.
7
7
  </objective>
8
8
 
9
- <context>
10
- - Ler `.oxe/SPEC.md`, `.oxe/STATE.md` e trechos relevantes de `.oxe/codebase/OVERVIEW.md` / `STACK.md`.
11
- - Se existir **`.oxe/OBSERVATIONS.md`** com entradas `pendente` de impacto `spec`, `plan` ou `all`, carregá-las como contexto adicional para as perguntas e decisões; marcá-las `incorporada discuss (data)` após uso.
9
+ <context>
10
+ - Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, usar `.oxe/<active_session>/spec/` para `SPEC.md` e `DISCUSS.md`; sem sessão ativa, manter `.oxe/`.
11
+ - Ler `SPEC.md` do escopo resolvido, `.oxe/STATE.md` e trechos relevantes de `.oxe/codebase/OVERVIEW.md` / `STACK.md`.
12
+ - Se existir `OBSERVATIONS.md` do escopo resolvido com entradas `pendente` de impacto `spec`, `plan` ou `all`, carregá-las como contexto adicional para as perguntas e decisões; marcá-las `incorporada → discuss (data)` após uso.
12
13
  - Se existir **`.oxe/NOTES.md`**, rever bullets em aberto: promover para perguntas/decisões em `DISCUSS.md` ou marcar como *descartado* / *adiado* com uma linha de justificativa.
13
14
  - Se `.oxe/config.json` existir e `discuss_before_plan` for `true`, tratar este passo como **recomendado** antes de `oxe:plan`.
14
15
  </context>
@@ -25,16 +26,16 @@ Regras:
25
26
  </decision_ids>
26
27
 
27
28
  <process>
28
- 1. Se não existir `.oxe/SPEC.md`, pedir **spec** primeiro (ou **quick** se for trabalho trivial).
29
+ 1. Se não existir `SPEC.md` no escopo resolvido, pedir **spec** primeiro (ou **quick** se for trabalho trivial).
29
30
  2. Se existir **`.oxe/NOTES.md`**, rever bullets em aberto e decidir o que entra em **Perguntas** ou **Decisões** (ou marcar *descartado* / *adiado* com justificativa curta).
30
31
  3. Identificar **lacunas** (escopo, dados, UX, edge cases, compatibilidade) — no máximo **7** perguntas objetivas.
31
- 4. Criar ou atualizar **`.oxe/DISCUSS.md`** com estrutura fixa:
32
+ 4. Criar ou atualizar **`DISCUSS.md`** no escopo resolvido com estrutura fixa:
32
33
  - **Contexto** — 2–4 bullets do que já se sabe da SPEC.
33
34
  - **Perguntas** — numeradas; para cada uma: resposta (se o usuário já respondeu na mensagem) ou `_(pendente)_`.
34
35
  - **Decisões** — tabela com colunas **ID** / **Decisão** / **Data** / **Impacto no plano** (só as já fechadas). Atribuir IDs **D-01**, **D-02**, … em sequência.
35
36
  - **Implicações para o plano** — bullets (ex.: "migrations necessárias", "feature flag").
36
37
  5. Se ainda houver perguntas **pendentes** críticas, listá-las no chat (máx. 7) e parar até resposta; depois atualizar DISCUSS.md.
37
- 6. Atualizar **`.oxe/STATE.md`**: fase `discuss_complete`, próximo passo `oxe:plan`. Registrar os IDs de decisão na seção **Decisões persistentes** do STATE (ex.: `D-01: escolheu JWT — 2025-01-15`).
38
+ 6. Atualizar **`.oxe/STATE.md`** global: fase `discuss_complete`, próximo passo `oxe:plan`. Registrar os IDs de decisão na seção **Decisões persistentes** do STATE (ex.: `D-01: escolheu JWT — 2025-01-15`).
38
39
  7. Resumo no chat em ≤8 linhas, listando decisões com seus IDs.
39
40
  </process>
40
41
 
@@ -69,7 +70,7 @@ updated: YYYY-MM-DD
69
70
  </discuss_md_format>
70
71
 
71
72
  <success_criteria>
72
- - [ ] `.oxe/DISCUSS.md` existe com perguntas e decisões alinhadas à SPEC.
73
+ - [ ] `DISCUSS.md` existe no escopo correto com perguntas e decisões alinhadas à SPEC.
73
74
  - [ ] Cada decisão fechada tem ID único **D-NN** na tabela de Decisões.
74
75
  - [ ] Se existir `.oxe/NOTES.md`, as entradas relevantes foram tratadas (promovidas, descartadas ou adiadas com nota).
75
76
  - [ ] Nenhuma ambiguidade crítica ficou sem registro (como pendente ou suposição explícita na SPEC).
@@ -3,13 +3,13 @@
3
3
  <objective>
4
4
  Guiar a **implementação** de um plano OXE com dois modos possíveis:
5
5
 
6
- **Modo Solo (padrão):** seguir `.oxe/PLAN.md` onda a onda sem `plan-agents.json`. O agente implementa diretamente cada tarefa Tn da onda atual, roda a verificação e avança. Não exige nenhum artefato além do PLAN.md.
6
+ **Modo Solo (padrão):** seguir `PLAN.md` do escopo resolvido da sessão onda a onda sem `plan-agents.json`. O agente implementa diretamente cada tarefa Tn da onda atual, roda a verificação e avança. Não exige nenhum artefato além do PLAN.md.
7
7
 
8
- **Modo com Agentes (extensão):** quando existe `.oxe/plan-agents.json` válido (schema 2, lifecycle ativo, runId alinhado ao STATE), adotar roles e personas por agente conforme o blueprint.
8
+ **Modo com Agentes (extensão):** quando existe `plan-agents.json` válido no escopo resolvido (schema 2+, lifecycle ativo, runId alinhado ao STATE), adotar roles e personas por agente conforme o blueprint.
9
9
 
10
10
  **Seleção de execução (redução de requisições):** quando o plano tem 2+ ondas, o usuário escolhe entre Completo (1 sessão), Por onda (N sessões) ou Por tarefa (N tarefas). A escolha é feita **uma vez** no início.
11
11
 
12
- Se existir apenas **`.oxe/QUICK.md`**: tratar passos numerados como onda única (modo sempre Completo).
12
+ Se existir apenas **`QUICK.md`** no escopo resolvido: tratar passos numerados como onda única (modo sempre Completo).
13
13
  </objective>
14
14
 
15
15
  <modo_solo>
@@ -32,6 +32,8 @@ O modo padrão. Funciona sem `plan-agents.json`. O agente lê PLAN.md, segue as
32
32
  <execution_mode_selection>
33
33
  ## Seleção de Modo de Execução
34
34
 
35
+ **Argumento direto:** se o foco/argumento recebido já for `A`, `B` ou `C` (sozinho), usar diretamente como seleção de modo sem apresentar o menu.
36
+
35
37
  **Quando aplicar:** ao início do execute, se PLAN.md tiver **2 ou mais ondas**. Apresentar UMA VEZ e armazenar a escolha em STATE.md para não perguntar novamente nas rodadas seguintes.
36
38
 
37
39
  **Não aplicar** quando: QUICK.md (sempre Completo), PLAN.md com 1 onda (executar diretamente).
@@ -88,9 +90,9 @@ Quando o comando `**Verificar:**` de uma tarefa `Tn` falha, **não parar silenci
88
90
  </failure_mode>
89
91
 
90
92
  <context>
91
- **Observações pendentes:** verificar `.oxe/OBSERVATIONS.md` no início de cada onda. Se houver entradas `pendente` com impacto `execute` ou `all`, incorporar no trabalho da onda atual e marcá-las `incorporada → execute (data)`.
93
+ **Observações pendentes:** verificar `OBSERVATIONS.md` do escopo resolvido no início de cada onda. Se houver entradas `pendente` com impacto `execute` ou `all`, incorporar no trabalho da onda atual e marcá-las `incorporada → execute (data)`.
92
94
 
93
- **Quick-agents (lean PDDA):** se existir **`.oxe/quick-agents.json`** com `status: active` e a execução for baseada em **`QUICK.md`** (não há PLAN.md), adotar o `role` e `persona` de cada agente para os `steps[]` atribuídos. Ao concluir todos os steps, marcar `quick-agents.json` → `status: done` e sugerir `/oxe-verify`.
95
+ **Quick-agents (lean PDDA):** se existir **`quick-agents.json`** do escopo resolvido com `status: active` e a execução for baseada em **`QUICK.md`** (não há PLAN.md), adotar o `role` e `persona` de cada agente para os `steps[]` atribuídos. Ao concluir todos os steps, marcar `quick-agents.json` → `status: done` e sugerir `/oxe-verify`.
94
96
 
95
97
  **Model hints (blueprint com agentes):** ao apresentar a atribuição de cada agente no início da onda, exibir `model_hint` se presente:
96
98
  ```
@@ -99,7 +101,7 @@ Tarefas: T1, T2
99
101
  ```
100
102
  Se `model_hint` estiver ausente, não exibir a linha. O usuário pode configurar o modelo no IDE antes de iniciar aquele agente.
101
103
 
102
- **Blueprint plan-agent (Modo com Agentes):** adotar `role`/`scope` de **`.oxe/plan-agents.json`** SOMENTE quando:
104
+ **Blueprint plan-agent (Modo com Agentes):** adotar `role`/`scope` de **`plan-agents.json`** do escopo resolvido SOMENTE quando:
103
105
  1. `lifecycle.status` ∈ `{ pending_execute, executing }` (não usar se `closed` ou `invalidated`).
104
106
  2. **`runId`** no JSON coincide com **`run_id`** no STATE.md (secção Blueprint de agentes).
105
107
  3. O pedido mapeia para pelo menos uma tarefa **`Tn`** no **`PLAN.md`**.
@@ -108,7 +110,7 @@ Se condições não atendidas: responder sem persona; sugerir `/oxe-plan-agent`
108
110
 
109
111
  **Transição `pending_execute` → `executing`:** na primeira onda com blueprint válido, atualizar `plan-agents.json` → `lifecycle: { "status": "executing", "since": "<ISO>" }` e espelhar em STATE.md.
110
112
 
111
- **Protocolo agente → agente (blueprint):** mensagens em `.oxe/plan-agent-messages/` conforme `oxe/workflows/references/plan-agent-chat-protocol.md`.
113
+ **Protocolo agente → agente (blueprint):** mensagens em `plan-agent-messages/` do escopo resolvido conforme `oxe/workflows/references/plan-agent-chat-protocol.md`.
112
114
 
113
115
  **Se PLAN.md não existir mas QUICK.md existir:** seguir QUICK.md — passos = onda única, sempre Modo Completo.
114
116
 
@@ -120,9 +122,9 @@ Se condições não atendidas: responder sem persona; sugerir `/oxe-plan-agent`
120
122
  </context>
121
123
 
122
124
  <process>
123
- 1. Ler **`.oxe/STATE.md`**, **`PLAN.md`** (se existir) e **`QUICK.md`** (se PLAN não existir).
124
- 2. Verificar **`.oxe/OBSERVATIONS.md`** — incorporar pendentes de impacto `execute` ou `all` antes de iniciar.
125
- 3. **Seleção de modo** (apenas se PLAN.md com 2+ ondas e `execute_mode` não definido em STATE): apresentar opções A/B/C e aguardar escolha; registrar em STATE.md.
125
+ 1. Ler **`.oxe/STATE.md`** global para resolver `active_session`, depois ler **`PLAN.md`** (se existir) e **`QUICK.md`** do escopo resolvido.
126
+ 2. Verificar **`OBSERVATIONS.md`** do escopo resolvido — incorporar pendentes de impacto `execute` ou `all` antes de iniciar.
127
+ 3. **Seleção de modo** (apenas se PLAN.md com 2+ ondas e `execute_mode` não definido em STATE): se o argumento já for `A`, `B` ou `C`, usá-lo diretamente; senão apresentar opções A/B/C e aguardar escolha; registrar em STATE.md.
126
128
  4. Identificar **onda ou bloco atual**: no PLAN, todas as tarefas da mesma onda sem dependências pendentes; no QUICK, passos ainda não marcados como feitos.
127
129
  5. Listar no chat: tarefas/passos desta onda, arquivos prováveis, comando **Verificar** de cada tarefa.
128
130
  6. **Implementar** conforme o modo escolhido:
@@ -136,8 +138,8 @@ Se condições não atendidas: responder sem persona; sugerir `/oxe-plan-agent`
136
138
  - [ ] Implementação da onda concluída
137
139
  - [ ] Comando Verificar de cada tarefa executado (ou agendado)
138
140
  ```
139
- 8. Atualizar **`.oxe/STATE.md`**: última onda executada, tarefas concluídas (Tn), próximo passo.
140
- 9. Marcar OBS incorporadas como `incorporada → execute (data)` em `.oxe/OBSERVATIONS.md`.
141
+ 8. Atualizar **`.oxe/STATE.md`** global com progresso resumido e, com sessão ativa, escrever o detalhe operacional em `execution/STATE.md`.
142
+ 9. Marcar OBS incorporadas como `incorporada → execute (data)` em `OBSERVATIONS.md` do escopo resolvido.
141
143
  </process>
142
144
 
143
145
  <success_criteria>
@@ -1,14 +1,14 @@
1
1
  # OXE — Workflow: forensics
2
2
 
3
3
  <objective>
4
- Diagnosticar **incidentes de fluxo** após falha ou incoerência entre artefatos `.oxe/`, Git e saída de `oxe-cc doctor`: produzir **`.oxe/FORENSICS.md`** com linha do tempo, hipótese de causa e **exatamente um** próximo passo canónico OXE (`scan`, `plan` ou `execute` — incluindo ações como reinstalar workflows ou correr verify como parte do movimento **execute**).
4
+ Diagnosticar **incidentes de fluxo** após falha ou incoerência entre artefatos `.oxe/`, Git e saída de `oxe-cc doctor`: produzir **`FORENSICS.md`** no escopo resolvido com linha do tempo, hipótese de causa e **exatamente um** próximo passo canónico OXE (`scan`, `plan` ou `execute` — incluindo ações como reinstalar workflows ou correr verify como parte do movimento **execute**).
5
5
 
6
6
  Não reescrever `SPEC.md` nem apagar `PLAN.md`; apenas **recomendar** o reingresso na trilha.
7
7
  </objective>
8
8
 
9
9
  <context>
10
- - Usar quando: `VERIFY.md` com falhas ou gaps não explicados, `oxe-cc doctor` com **FALHA**, `STATE.md` contradiz ficheiros presentes (ex.: “onda concluída” sem `VERIFY.md`), ou o utilizador indica estar **preso** após várias tentativas de replan.
11
- - Ler: `.oxe/STATE.md`, `.oxe/VERIFY.md` (se existir), `.oxe/PLAN.md`, `.oxe/SPEC.md` (se existir), `.oxe/QUICK.md` (se existir).
10
+ - Usar quando: `VERIFY.md` com falhas ou gaps não explicados, `oxe-cc doctor` com **FALHA**, `STATE.md` contradiz ficheiros presentes (ex.: “onda concluída” sem `VERIFY.md`), ou o utilizador indica estar **preso** após várias tentativas de replan.
11
+ - Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`; ler `.oxe/STATE.md` global e os artefatos de sessão (`VERIFY.md`, `PLAN.md`, `SPEC.md`, `QUICK.md`) no escopo resolvido.
12
12
  - **Git é opcional:** em sandbox sem Git ou sem permissão de terminal, **não** falhar o workflow; registar em `FORENSICS.md` que Git não foi avaliado.
13
13
  - Opcional: saída resumida de `npx oxe-cc doctor` no diretório do projeto.
14
14
  - Se o sintoma for **mapa OXE desatualizado** (ex.: `STACK.md` / estrutura em `.oxe/codebase/` claramente atrás do repo) sem workflows em falta, a **Hipótese de causa** ou a **Justificativa** pode mencionar **`/oxe-compact`** como ação complementar **depois** de escolhido o passo canónico — o próximo passo OXE recomendado continua a ser **um** entre `scan` | `plan` | `execute`.
@@ -25,18 +25,18 @@ Não reescrever `SPEC.md` nem apagar `PLAN.md`; apenas **recomendar** o reingres
25
25
  <process>
26
26
  1. Confirmar diretório raiz do projeto e existência de `.oxe/`.
27
27
  2. Recolher evidência: STATE, VERIFY, PLAN, SPEC, QUICK (trechos relevantes), saída de **doctor** se disponível, e **Git (opcional)** conforme bloco no context (se indisponível, seguir sem Git).
28
- 3. Redigir **`.oxe/FORENSICS.md`** com secções fixas:
28
+ 3. Redigir **`FORENSICS.md`** no escopo resolvido com secções fixas:
29
29
  - **Data** (ISO) e **Sintoma** (1–3 frases).
30
30
  - **Linha do tempo** — bullets curtos (o que se tentou, ordem aproximada); **incorporar** commits/datas e ficheiros mais tocados quando houver evidência Git; se Git não foi avaliado, linha explícita: *Git não avaliado (ambiente/indisponível)*.
31
31
  - **Hipótese de causa** — uma ou duas hipóteses ranqueadas (ex.: plano desalinhado, mapa desatualizado, workflows em falta, implementação incompleta); usar padrões Git (ficheiros repetidos, working tree suja) quando útil.
32
32
  - **Próximo passo OXE recomendado:** **um único** valor entre `scan` | `plan` | `execute` e o **comando** correspondente (`/oxe-scan`, `/oxe-plan`, `/oxe-execute` ou `npx oxe-cc@latest` / `npx oxe-cc doctor` quando a causa for tooling).
33
33
  - **Justificativa** — uma frase que liga evidência ao passo escolhido.
34
- 4. Atualizar **`.oxe/STATE.md`** com uma linha opcional sob decisões ou contexto: referência a `FORENSICS.md` e fase sugerida (ex.: `forensics_complete` → próximo conforme passo recomendado).
34
+ 4. Atualizar **`.oxe/STATE.md`** global com uma linha opcional sob decisões ou contexto: referência a `FORENSICS.md` e fase sugerida (ex.: `forensics_complete` → próximo conforme passo recomendado).
35
35
  5. Responder no chat em ≤8 linhas: resumo do diagnóstico e **só** o próximo passo (sem lista equiparável de alternativas).
36
36
  </process>
37
37
 
38
38
  <success_criteria>
39
- - [ ] `.oxe/FORENSICS.md` existe com **Próximo passo OXE recomendado** igual a **um** entre `scan`, `plan`, `execute`.
39
+ - [ ] `FORENSICS.md` existe no escopo correto com **Próximo passo OXE recomendado** igual a **um** entre `scan`, `plan`, `execute`.
40
40
  - [ ] Não há conclusão “feito” sem indicar reingresso na trilha canónica.
41
41
  - [ ] `SPEC.md` / `PLAN.md` não foram apagados nem substituídos sem ação explícita do utilizador.
42
42
  </success_criteria>