oxe-cc 0.6.2 → 0.6.4
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/.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.prompt.md +12 -12
- package/AGENTS.md +75 -8
- package/CHANGELOG.md +74 -0
- package/README.md +323 -323
- 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/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/STATE.md +19 -1
- package/oxe/templates/config.template.json +2 -0
- package/oxe/templates/plan-agents.template.json +1 -0
- package/oxe/workflows/loop.md +57 -57
- package/oxe/workflows/next.md +4 -1
- package/oxe/workflows/obs.md +10 -0
- package/oxe/workflows/oxe.md +115 -115
- package/oxe/workflows/project.md +50 -50
- package/oxe/workflows/quick.md +1 -1
- package/oxe/workflows/retro.md +62 -62
- package/oxe/workflows/security.md +61 -61
- package/oxe/workflows/verify.md +2 -0
- 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.
|
package/oxe/templates/STATE.md
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
- **Data:** (**YYYY-MM-DD** — preenchido por **`/oxe-compact`**: refresh incremental dos mapas em `.oxe/codebase/` + `CODEBASE-DELTA.md` + `RESUME.md`)
|
|
15
15
|
- **Notas:** (opcional; ex.: "só STRUCTURE e TESTING")
|
|
16
|
+
- **last_retro:** (YYYY-MM-DD — preenchido por **`/oxe-retro`** ao concluir retrospectiva; lido por `oxe-cc doctor` para rastrear ciclos sem lições)
|
|
16
17
|
|
|
17
18
|
## Contexto do plano / quick (opcional)
|
|
18
19
|
|
|
@@ -22,13 +23,30 @@
|
|
|
22
23
|
|
|
23
24
|
## Blueprint de agentes (sessão) (opcional — `/oxe-plan-agent`)
|
|
24
25
|
|
|
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.
|
|
26
|
+
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
27
|
|
|
27
28
|
- **run_id:** (igual a `runId` no JSON; — se não houver blueprint)
|
|
28
29
|
- **lifecycle_status:** `pending_execute` | `executing` | `closed` | `invalidated` | —
|
|
29
30
|
- **Última onda (execute):** (número ou —)
|
|
30
31
|
- **Notas:** (ex.: invalidado por quick; mensagens em `.oxe/plan-agent-messages/`)
|
|
31
32
|
|
|
33
|
+
## Quick agents (sessão) (opcional — `/oxe-quick` com PDDA)
|
|
34
|
+
|
|
35
|
+
Preenchido por **`/oxe-quick`** quando Plan-Driven Dynamic Agents lean estiver ativo.
|
|
36
|
+
|
|
37
|
+
- **quick_id:** (ex.: `quick-2026-04-05-a1b2c3` — gerado por `/oxe-quick`)
|
|
38
|
+
- **quick_agents_status:** `active` | `done` | `invalidated` | —
|
|
39
|
+
- **Notas:** (ex.: invalidado ao iniciar novo quick ou promover a spec/plan)
|
|
40
|
+
|
|
41
|
+
## Loop (sessão) (opcional — `/oxe-loop`)
|
|
42
|
+
|
|
43
|
+
Preenchido por **`/oxe-loop`** durante retry iterativo de onda.
|
|
44
|
+
|
|
45
|
+
- **loop_onda:** (número da onda em retry, ex.: `2`)
|
|
46
|
+
- **loop_iteracao:** (tentativa atual / máximo, ex.: `2/3`)
|
|
47
|
+
- **loop_status:** `retrying` | `passed` | `escalated` | —
|
|
48
|
+
- **Notas:** (ex.: escalado para `/oxe-forensics` após 3 tentativas)
|
|
49
|
+
|
|
32
50
|
## Checklist da onda OXE (opcional — workflow execute)
|
|
33
51
|
|
|
34
52
|
_(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": [],
|
package/oxe/workflows/loop.md
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
# OXE — Workflow: loop (execução iterativa até verificação passar)
|
|
2
|
-
|
|
3
|
-
<objective>
|
|
4
|
-
Executar uma **onda do PLAN.md** em ciclo iterativo até que a verificação inline passe ou o limite de tentativas seja atingido. Complementa o **Modo B** (por onda) do **`execute.md`** com retries automáticos e diagnóstico inline de falhas.
|
|
5
|
-
|
|
6
|
-
Quando verify falha, não interrompe — diagnostica (2-3 hipóteses), corrige, tenta de novo. Escala para **`/oxe-forensics`** apenas quando esgota as tentativas.
|
|
7
|
-
</objective>
|
|
8
|
-
|
|
9
|
-
<context>
|
|
10
|
-
- **Pré-requisito:** `.oxe/PLAN.md` existente com pelo menos 1 onda; `STATE.md` com fase ≥ `plan_ready`.
|
|
11
|
-
- **Máximo de iterações:** padrão = 3; configurável via argumento `max:<N>` (ex.: `/oxe-loop onda 2 max:5`). Nunca exceder 10.
|
|
12
|
-
- **Artefato:** não cria novos arquivos — atualiza `STATE.md` com campos `loop_*` e registra cada iteração como bloco inline no chat.
|
|
13
|
-
- **Escalação:** se esgotou tentativas e ainda falhou → registrar estado em STATE.md + sugerir `/oxe-forensics` com contexto das hipóteses já tentadas.
|
|
14
|
-
- **Não substitui** `/oxe-verify` global (4 camadas): o loop faz verificação **inline por onda** (comando `**Verificar:**` de cada Tn); o verify completo deve ser chamado ao final de todas as ondas.
|
|
15
|
-
</context>
|
|
16
|
-
|
|
17
|
-
<loop_state>
|
|
18
|
-
## Campos em STATE.md durante o loop
|
|
19
|
-
|
|
20
|
-
```yaml
|
|
21
|
-
loop_onda: 2 # número da onda sendo executada
|
|
22
|
-
loop_iteracao: 2/3 # tentativa atual / máximo
|
|
23
|
-
loop_status: retrying # retrying | passed | escalated
|
|
24
|
-
loop_hipoteses: ["H1: ...", "H2: ..."] # hipóteses da última falha
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Limpar campos `loop_*` ao concluir com `passed` (ou manter `escalated` se escalou para forensics).
|
|
28
|
-
</loop_state>
|
|
29
|
-
|
|
30
|
-
<process>
|
|
31
|
-
1. Ler `.oxe/STATE.md` e `.oxe/PLAN.md`. Identificar a onda alvo (argumento do usuário ou próxima onda pendente em STATE).
|
|
32
|
-
2. Registrar em STATE.md: `loop_onda: N`, `loop_iteracao: 1/<max>`, `loop_status: retrying`.
|
|
33
|
-
3. **Iteração:**
|
|
34
|
-
a. Listar tarefas da onda N com seus comandos `**Verificar:**`.
|
|
35
|
-
b. Implementar todas as tarefas da onda (seguindo `execute.md` `<modo_solo>`).
|
|
36
|
-
c. Executar os comandos `Verificar` de cada `Tn`.
|
|
37
|
-
d. **Se todos passaram:** registrar `loop_status: passed`; limpar campos `loop_*`; atualizar STATE.md com onda concluída; informar usuário e sugerir próxima onda ou `/oxe-verify`.
|
|
38
|
-
e. **Se algum falhou:**
|
|
39
|
-
- Listar 2-3 hipóteses de causa (baseado no erro/output da verificação).
|
|
40
|
-
- Registrar `loop_hipoteses` em STATE.md.
|
|
41
|
-
- Incrementar iteração: `loop_iteracao: K+1/<max>`.
|
|
42
|
-
- Se `K+1 > max`: ir para passo 4 (escalação).
|
|
43
|
-
- Senão: aplicar fix para a hipótese mais provável → voltar a `c`.
|
|
44
|
-
4. **Escalação (tentativas esgotadas):**
|
|
45
|
-
- Registrar `loop_status: escalated` em STATE.md.
|
|
46
|
-
- Exibir no chat: tentativas realizadas, hipóteses testadas, evidência de cada falha.
|
|
47
|
-
- Sugerir `/oxe-forensics` com contexto: "onda N falhou após <max> tentativas — hipóteses testadas: H1, H2, H3".
|
|
48
|
-
</process>
|
|
49
|
-
|
|
50
|
-
<success_criteria>
|
|
51
|
-
- [ ] STATE.md tem campos `loop_*` atualizados a cada iteração.
|
|
52
|
-
- [ ] Cada falha gera 2-3 hipóteses registradas antes de tentar fix.
|
|
53
|
-
- [ ] Ao passar: campos `loop_*` limpos; onda marcada como concluída em STATE.md.
|
|
54
|
-
- [ ] Ao esgotar: `loop_status: escalated` + sugestão de `/oxe-forensics` com contexto completo.
|
|
55
|
-
- [ ] Nunca excede `max` iterações configurado.
|
|
56
|
-
- [ ] Não altera `.oxe/PLAN.md` (só implementa o que já está planejado).
|
|
57
|
-
</success_criteria>
|
|
1
|
+
# OXE — Workflow: loop (execução iterativa até verificação passar)
|
|
2
|
+
|
|
3
|
+
<objective>
|
|
4
|
+
Executar uma **onda do PLAN.md** em ciclo iterativo até que a verificação inline passe ou o limite de tentativas seja atingido. Complementa o **Modo B** (por onda) do **`execute.md`** com retries automáticos e diagnóstico inline de falhas.
|
|
5
|
+
|
|
6
|
+
Quando verify falha, não interrompe — diagnostica (2-3 hipóteses), corrige, tenta de novo. Escala para **`/oxe-forensics`** apenas quando esgota as tentativas.
|
|
7
|
+
</objective>
|
|
8
|
+
|
|
9
|
+
<context>
|
|
10
|
+
- **Pré-requisito:** `.oxe/PLAN.md` existente com pelo menos 1 onda; `STATE.md` com fase ≥ `plan_ready`.
|
|
11
|
+
- **Máximo de iterações:** padrão = 3; configurável via argumento `max:<N>` (ex.: `/oxe-loop onda 2 max:5`). Nunca exceder 10.
|
|
12
|
+
- **Artefato:** não cria novos arquivos — atualiza `STATE.md` com campos `loop_*` e registra cada iteração como bloco inline no chat.
|
|
13
|
+
- **Escalação:** se esgotou tentativas e ainda falhou → registrar estado em STATE.md + sugerir `/oxe-forensics` com contexto das hipóteses já tentadas.
|
|
14
|
+
- **Não substitui** `/oxe-verify` global (4 camadas): o loop faz verificação **inline por onda** (comando `**Verificar:**` de cada Tn); o verify completo deve ser chamado ao final de todas as ondas.
|
|
15
|
+
</context>
|
|
16
|
+
|
|
17
|
+
<loop_state>
|
|
18
|
+
## Campos em STATE.md durante o loop
|
|
19
|
+
|
|
20
|
+
```yaml
|
|
21
|
+
loop_onda: 2 # número da onda sendo executada
|
|
22
|
+
loop_iteracao: 2/3 # tentativa atual / máximo
|
|
23
|
+
loop_status: retrying # retrying | passed | escalated
|
|
24
|
+
loop_hipoteses: ["H1: ...", "H2: ..."] # hipóteses da última falha
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Limpar campos `loop_*` ao concluir com `passed` (ou manter `escalated` se escalou para forensics).
|
|
28
|
+
</loop_state>
|
|
29
|
+
|
|
30
|
+
<process>
|
|
31
|
+
1. Ler `.oxe/STATE.md` e `.oxe/PLAN.md`. Identificar a onda alvo (argumento do usuário ou próxima onda pendente em STATE).
|
|
32
|
+
2. Registrar em STATE.md: `loop_onda: N`, `loop_iteracao: 1/<max>`, `loop_status: retrying`.
|
|
33
|
+
3. **Iteração:**
|
|
34
|
+
a. Listar tarefas da onda N com seus comandos `**Verificar:**`.
|
|
35
|
+
b. Implementar todas as tarefas da onda (seguindo `execute.md` `<modo_solo>`).
|
|
36
|
+
c. Executar os comandos `Verificar` de cada `Tn`.
|
|
37
|
+
d. **Se todos passaram:** registrar `loop_status: passed`; limpar campos `loop_*`; atualizar STATE.md com onda concluída; informar usuário e sugerir próxima onda ou `/oxe-verify`.
|
|
38
|
+
e. **Se algum falhou:**
|
|
39
|
+
- Listar 2-3 hipóteses de causa (baseado no erro/output da verificação).
|
|
40
|
+
- Registrar `loop_hipoteses` em STATE.md.
|
|
41
|
+
- Incrementar iteração: `loop_iteracao: K+1/<max>`.
|
|
42
|
+
- Se `K+1 > max`: ir para passo 4 (escalação).
|
|
43
|
+
- Senão: aplicar fix para a hipótese mais provável → voltar a `c`.
|
|
44
|
+
4. **Escalação (tentativas esgotadas):**
|
|
45
|
+
- Registrar `loop_status: escalated` em STATE.md.
|
|
46
|
+
- Exibir no chat: tentativas realizadas, hipóteses testadas, evidência de cada falha.
|
|
47
|
+
- Sugerir `/oxe-forensics` com contexto: "onda N falhou após <max> tentativas — hipóteses testadas: H1, H2, H3".
|
|
48
|
+
</process>
|
|
49
|
+
|
|
50
|
+
<success_criteria>
|
|
51
|
+
- [ ] STATE.md tem campos `loop_*` atualizados a cada iteração.
|
|
52
|
+
- [ ] Cada falha gera 2-3 hipóteses registradas antes de tentar fix.
|
|
53
|
+
- [ ] Ao passar: campos `loop_*` limpos; onda marcada como concluída em STATE.md.
|
|
54
|
+
- [ ] Ao esgotar: `loop_status: escalated` + sugestão de `/oxe-forensics` com contexto completo.
|
|
55
|
+
- [ ] Nunca excede `max` iterações configurado.
|
|
56
|
+
- [ ] Não altera `.oxe/PLAN.md` (só implementa o que já está planejado).
|
|
57
|
+
</success_criteria>
|
package/oxe/workflows/next.md
CHANGED
|
@@ -13,7 +13,10 @@ Inspecionar `.oxe/STATE.md` e a existência de `SPEC.md`, `PLAN.md`, `QUICK.md`,
|
|
|
13
13
|
<process>
|
|
14
14
|
1. Se `.oxe/` ou `STATE.md` não existir → **único** passo: **scan** (ou `oxe-cc init-oxe` seguido de scan).
|
|
15
15
|
2. Se não houver `.oxe/codebase/*.md` completos (sete mapas) e o trabalho **não** for só um quick isolado → **scan**.
|
|
16
|
-
3. Se fase `quick_active` ou existir `QUICK.md` **sem** `PLAN.md
|
|
16
|
+
3. Se fase `quick_active` ou existir `QUICK.md` **sem** `PLAN.md`:
|
|
17
|
+
- Se `QUICK.md` contiver linha `Promover para spec/plan?: sim` → **spec** (promoção declarada pelo autor; ignorar demais heurísticas).
|
|
18
|
+
- Se o `QUICK.md` tiver **mais de 10 passos**, ou o utilizador/descrição indicar **contrato público**, **segurança**, **dados pessoais**, ou **>8 ficheiros** tocados ou previstos → **spec** (promoção obrigatória).
|
|
19
|
+
- Senão → **execute** (há passos curtos a implementar).
|
|
17
20
|
4. Se não houver `SPEC.md` e não for quick intencional declarado → **spec** (passo único).
|
|
18
21
|
5. Se houver SPEC mas não PLAN → se `.oxe/config.json` tiver `discuss_before_plan: true` e faltar **`.oxe/DISCUSS.md`** com decisões → **discuss**; senão → **plan**.
|
|
19
22
|
6. Se PLAN existe, **VERIFY.md** ainda **não** existe ou está claramente antes da implementação atual → **execute** (onda atual).
|
package/oxe/workflows/obs.md
CHANGED
|
@@ -49,6 +49,16 @@ API deve retornar mensagens de erro em português do Brasil.
|
|
|
49
49
|
**IDs:** sequenciais `OBS-001`, `OBS-002`, … (continuar do último ID existente no arquivo).
|
|
50
50
|
|
|
51
51
|
**Impacto:** classificar automaticamente com base no conteúdo:
|
|
52
|
+
|
|
53
|
+
| Texto menciona | Impacto atribuído |
|
|
54
|
+
|----------------|------------------|
|
|
55
|
+
| Requisitos, critérios A*, escopo, SPEC | `spec` |
|
|
56
|
+
| Tarefas Tn, ondas, verificação, PLAN | `plan` |
|
|
57
|
+
| Implementação, arquivos de código, comportamento técnico | `execute` |
|
|
58
|
+
| Dois ou mais dos acima, ou restrição global | `all` |
|
|
59
|
+
|
|
60
|
+
Se ambíguo, usar `all` (princípio de maior abrangência).
|
|
61
|
+
|
|
52
62
|
- `spec` — afeta requisitos, critérios de aceite ou escopo
|
|
53
63
|
- `plan` — afeta tarefas, ondas, dependências ou verificação
|
|
54
64
|
- `execute` — afeta a implementação da tarefa atual ou próxima
|