oxe-cc 0.6.5 → 0.7.0
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-ask.md +11 -0
- package/.cursor/commands/oxe-capabilities.md +11 -0
- package/.cursor/commands/oxe-dashboard.md +11 -0
- package/.github/prompts/oxe-ask.prompt.md +12 -0
- package/.github/prompts/oxe-capabilities.prompt.md +12 -0
- package/.github/prompts/oxe-dashboard.prompt.md +12 -0
- package/CHANGELOG.md +33 -0
- package/README.md +189 -34
- package/assets/oxe-framework-artifacts-paper.png +0 -0
- package/bin/banner.txt +1 -1
- package/bin/lib/oxe-azure.cjs +1445 -0
- package/bin/lib/oxe-dashboard.cjs +588 -0
- package/bin/lib/oxe-install-resolve.cjs +4 -1
- package/bin/lib/oxe-operational.cjs +670 -0
- package/bin/lib/oxe-project-health.cjs +655 -118
- package/bin/oxe-cc.js +1404 -17
- package/commands/oxe/ask.md +14 -0
- package/commands/oxe/capabilities.md +13 -0
- package/commands/oxe/dashboard.md +14 -0
- package/lib/sdk/README.md +9 -7
- package/lib/sdk/index.cjs +56 -0
- package/lib/sdk/index.d.ts +73 -0
- package/oxe/templates/ACTIVE-RUN.template.json +32 -0
- package/oxe/templates/CAPABILITIES.template.md +7 -0
- package/oxe/templates/CAPABILITY.template.md +45 -0
- package/oxe/templates/CHECKPOINTS.template.md +7 -0
- package/oxe/templates/CONFIG.md +3 -2
- package/oxe/templates/EXECUTION-RUNTIME.template.md +68 -0
- package/oxe/templates/INVESTIGATION.template.md +38 -0
- package/oxe/templates/NOTES.template.md +16 -0
- package/oxe/templates/PLAN-REVIEW.template.md +31 -0
- package/oxe/templates/PLAN.template.md +22 -7
- package/oxe/templates/RESEARCH.template.md +11 -4
- package/oxe/templates/SPEC.template.md +6 -4
- package/oxe/templates/STATE.md +45 -7
- package/oxe/templates/config.template.json +14 -5
- package/oxe/workflows/ask.md +71 -0
- package/oxe/workflows/capabilities.md +23 -0
- package/oxe/workflows/dashboard.md +23 -0
- package/oxe/workflows/discuss.md +11 -9
- package/oxe/workflows/execute.md +46 -17
- package/oxe/workflows/help.md +273 -239
- package/oxe/workflows/next.md +10 -8
- package/oxe/workflows/obs.md +70 -20
- package/oxe/workflows/plan-agent.md +2 -1
- package/oxe/workflows/plan.md +70 -21
- package/oxe/workflows/quick.md +14 -6
- package/oxe/workflows/references/adaptive-discovery.md +27 -0
- package/oxe/workflows/references/flow-robustness-contract.md +80 -0
- package/oxe/workflows/research.md +12 -8
- package/oxe/workflows/retro.md +30 -5
- package/oxe/workflows/scan.md +1 -0
- package/oxe/workflows/spec.md +58 -33
- package/oxe/workflows/verify.md +40 -10
- package/package.json +2 -2
package/oxe/workflows/next.md
CHANGED
|
@@ -4,12 +4,13 @@
|
|
|
4
4
|
Inspecionar `.oxe/STATE.md` global, a sessão ativa quando existir, e a existência de `SPEC.md`, `PLAN.md`, `QUICK.md`, `VERIFY.md` e `.oxe/codebase/` para recomendar **exatamente um** próximo passo OXE e **uma** frase de justificativa — sem lista de alternativas equiparáveis.
|
|
5
5
|
</objective>
|
|
6
6
|
|
|
7
|
-
<context>
|
|
7
|
+
<context>
|
|
8
8
|
- O usuário pode rodar **`npx oxe-cc status`** no terminal para a mesma lógica resumida. **`npx oxe-cc status --hints`** (ou **`--json --hints`**) acrescenta lembretes **paralelos** (idade do scan/compact por config) — **não** altera o único passo canónico que este workflow deve devolver.
|
|
9
9
|
- Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, preferir os artefatos da sessão antes de olhar a raiz legada.
|
|
10
|
-
- Se houver empate aparente (ex.: poderia ser spec ou quick), preferir **spec** quando já existir mapa de codebase; preferir **quick** só se o usuário deixar explícito que é correção mínima.
|
|
11
|
-
- **Blueprint plan-agent:** se **`.oxe/plan-agents.json`** tiver `lifecycle.status === "invalidated"`, o próximo passo **não** assume papéis desse JSON; continuar a raciocinar só com **PLAN.md** / **QUICK.md** / **VERIFY.md** e **STATE.md**. Se o utilizador quiser de novo agentes + mensagens, indicar **`/oxe-plan-agent`**.
|
|
12
|
-
|
|
10
|
+
- Se houver empate aparente (ex.: poderia ser spec ou quick), preferir **spec** quando já existir mapa de codebase; preferir **quick** só se o usuário deixar explícito que é correção mínima.
|
|
11
|
+
- **Blueprint plan-agent:** se **`.oxe/plan-agents.json`** tiver `lifecycle.status === "invalidated"`, o próximo passo **não** assume papéis desse JSON; continuar a raciocinar só com **PLAN.md** / **QUICK.md** / **VERIFY.md** e **STATE.md**. Se o utilizador quiser de novo agentes + mensagens, indicar **`/oxe-plan-agent`**.
|
|
12
|
+
- Priorizar sempre o passo que **reduz incerteza primeiro**. Se o plano existente não for o melhor plano atual ou estiver abaixo do limiar de confiança, o próximo passo não pode ser `execute`.
|
|
13
|
+
</context>
|
|
13
14
|
|
|
14
15
|
<process>
|
|
15
16
|
1. Se `.oxe/` ou `STATE.md` não existir → **único** passo: **scan** (ou `oxe-cc init-oxe` seguido de scan).
|
|
@@ -20,10 +21,11 @@ Inspecionar `.oxe/STATE.md` global, a sessão ativa quando existir, e a existên
|
|
|
20
21
|
- Senão → **execute** (há passos curtos a implementar).
|
|
21
22
|
4. Se não houver `SPEC.md` no escopo resolvido e não for quick intencional declarado → **spec** (passo único).
|
|
22
23
|
5. Se houver SPEC no escopo resolvido mas não PLAN → se `.oxe/config.json` tiver `discuss_before_plan: true` e faltar **`DISCUSS.md`** com decisões → **discuss**; senão → **plan**.
|
|
23
|
-
6. Se PLAN existe
|
|
24
|
-
7. Se PLAN existe
|
|
25
|
-
8. Se
|
|
26
|
-
9. Se VERIFY
|
|
24
|
+
6. Se PLAN existe mas a seção **Autoavaliação do Plano** disser `Melhor plano atual: não`, ou a `Confiança` estiver abaixo do limiar configurado (padrão 70%), o próximo passo deve ser **plan** (replanejar) ou **discuss/research** se a própria autoavaliação indicar isso.
|
|
25
|
+
7. Se PLAN existe, **VERIFY.md** ainda **não** existe ou está claramente antes da implementação atual → **execute** (onda atual).
|
|
26
|
+
8. Se PLAN existe e VERIFY falta após implementação declarada → **verify**.
|
|
27
|
+
9. Se VERIFY indica falha ou gaps não resolvidos → **plan** (replanejamento) como passo único, com referência a `SUMMARY.md`.
|
|
28
|
+
10. Se VERIFY OK e estado coerente → **spec** ou **quick** para **próxima** entrega, ou mensagem “fluxo da feature atual concluído”.
|
|
27
29
|
|
|
28
30
|
**Saída obrigatória (só isto, nesta ordem):**
|
|
29
31
|
|
package/oxe/workflows/obs.md
CHANGED
|
@@ -8,30 +8,32 @@ Registrar uma **observação contextual** em **`.oxe/OBSERVATIONS.md`** durante
|
|
|
8
8
|
Entrada: texto livre com a observação (restrição, descoberta técnica, preferência, risco, decisão).
|
|
9
9
|
</objective>
|
|
10
10
|
|
|
11
|
-
<context>
|
|
11
|
+
<context>
|
|
12
12
|
- Pode ser chamado **a qualquer momento**: antes, durante ou após qualquer passo da trilha OXE.
|
|
13
13
|
- Não interrompe o fluxo em curso — a observação é armazenada e incorporada na próxima oportunidade.
|
|
14
|
-
- Se chamado **durante execute** (fase `executing` no STATE) com impacto `execute` ou `all`:
|
|
15
|
-
- Ler **`.oxe/STATE.md`** para capturar o contexto automático (fase atual, tarefa ativa, workstream ativo).
|
|
16
|
-
- Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, `OBSERVATIONS.md` vive em `.oxe/<active_session>/execution/`; sem sessão ativa, manter `.oxe/`.
|
|
17
|
-
- Usar `oxe/templates/OBSERVATIONS.template.md` para criar o arquivo se ainda não existir.
|
|
18
|
-
</context>
|
|
14
|
+
- Se chamado **durante execute** (fase `executing` no STATE) com impacto `execute` ou `all`: classificar a severidade e responder adaptativamente — `blocking` interrompe a onda e requer resolução explícita; `adjustment` incorpora como restrição na onda atual sem bloquear; `info` aplica na próxima oportunidade.
|
|
15
|
+
- Ler **`.oxe/STATE.md`** para capturar o contexto automático (fase atual, tarefa ativa, workstream ativo).
|
|
16
|
+
- Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, `OBSERVATIONS.md` vive em `.oxe/<active_session>/execution/`; sem sessão ativa, manter `.oxe/`.
|
|
17
|
+
- Usar `oxe/templates/OBSERVATIONS.template.md` para criar o arquivo se ainda não existir.
|
|
18
|
+
</context>
|
|
19
19
|
|
|
20
20
|
<format_observations_md>
|
|
21
|
-
Arquivo: **`OBSERVATIONS.md`** no escopo resolvido da sessão
|
|
21
|
+
Arquivo: **`OBSERVATIONS.md`** no escopo resolvido da sessão
|
|
22
22
|
|
|
23
23
|
```markdown
|
|
24
24
|
# Observações OXE
|
|
25
25
|
|
|
26
|
-
| ID | Data | Contexto | Impacto | Status |
|
|
27
|
-
|
|
28
|
-
| OBS-001 | 2026-04-04 | execute/T3 | spec, plan | pendente |
|
|
29
|
-
| OBS-002 | 2026-04-04 | pós-spec | execute | incorporada → execute (2026-04-04) |
|
|
26
|
+
| ID | Data | Contexto | Impacto | Severidade | Status |
|
|
27
|
+
|----|------|----------|---------|------------|--------|
|
|
28
|
+
| OBS-001 | 2026-04-04 | execute/T3 | spec, plan | adjustment | pendente |
|
|
29
|
+
| OBS-002 | 2026-04-04 | pós-spec | execute | info | incorporada → execute (2026-04-04) |
|
|
30
30
|
|
|
31
31
|
---
|
|
32
32
|
|
|
33
33
|
### OBS-001 — 2026-04-04 | execute/T3
|
|
34
34
|
**Impacto:** spec, plan
|
|
35
|
+
**Severidade:** adjustment
|
|
36
|
+
**Tipo:** new_constraint
|
|
35
37
|
**Afeta (spec):** R3, R5
|
|
36
38
|
**Afeta (plan):** T4, T7
|
|
37
39
|
**Status:** pendente
|
|
@@ -42,6 +44,7 @@ JWT expiration deve ser configurável via `JWT_EXPIRES_IN` env var, não hardcod
|
|
|
42
44
|
|
|
43
45
|
### OBS-002 — 2026-04-04 | pós-spec
|
|
44
46
|
**Impacto:** execute
|
|
47
|
+
**Severidade:** info
|
|
45
48
|
**Status:** incorporada → execute (2026-04-04)
|
|
46
49
|
|
|
47
50
|
API deve retornar mensagens de erro em português do Brasil.
|
|
@@ -65,27 +68,71 @@ Se ambíguo, usar `all` (princípio de maior abrangência).
|
|
|
65
68
|
- `execute` — afeta a implementação da tarefa atual ou próxima
|
|
66
69
|
- `all` — afeta múltiplas camadas
|
|
67
70
|
|
|
71
|
+
**Severidade:** classificar automaticamente com base no conteúdo:
|
|
72
|
+
|
|
73
|
+
| Texto menciona | Severidade |
|
|
74
|
+
|----------------|------------|
|
|
75
|
+
| Coverage %, threshold, CI falhou, pipeline, Actions, test failed, falha no build | `blocking` |
|
|
76
|
+
| Erro técnico, exception, versão incompatível, dependência ausente, requisito incompatível | `blocking` |
|
|
77
|
+
| "não pode", "proibido", "exige", novo requisito que afeta tarefas em andamento | `adjustment` |
|
|
78
|
+
| Preferência, restrição técnica, descoberta que exige ajuste em tarefas existentes | `adjustment` |
|
|
79
|
+
| Contexto adicional, observação informativa, descoberta sem impacto imediato | `info` |
|
|
80
|
+
|
|
81
|
+
Se ambíguo entre `blocking` e `adjustment`, usar `blocking` (princípio de segurança).
|
|
82
|
+
|
|
83
|
+
**Tipo:** classificar automaticamente (campo omitido quando nenhum padrão se aplica):
|
|
84
|
+
|
|
85
|
+
| Texto menciona | Tipo |
|
|
86
|
+
|----------------|------|
|
|
87
|
+
| Coverage, threshold, Actions, CI, pipeline, test pass/fail, build falhou | `ci_failure` |
|
|
88
|
+
| "não pode", "proibido", "exige", "requisito" | `new_constraint` |
|
|
89
|
+
| Erro, exception, versão incompatível, dependência, module not found | `technical_blocker` |
|
|
90
|
+
|
|
91
|
+
**CI-evidência** (somente quando `Tipo: ci_failure`): extrair e registrar na seção `### OBS-NNN`:
|
|
92
|
+
```
|
|
93
|
+
**CI-evidência:**
|
|
94
|
+
coverage_pct: 87
|
|
95
|
+
coverage_threshold: 90
|
|
96
|
+
failing_files: [src/auth.ts, src/utils.ts]
|
|
97
|
+
ci_run_url: https://github.com/...
|
|
98
|
+
failing_tests: [nome do teste]
|
|
99
|
+
```
|
|
100
|
+
Campos não encontrados no texto são omitidos. Esta evidência é consumida por `/oxe-verify` como fonte para critérios A* de qualidade.
|
|
101
|
+
|
|
68
102
|
**Status lifecycle:** `pendente` → `incorporada → <workflow> (YYYY-MM-DD)`
|
|
69
103
|
</format_observations_md>
|
|
70
104
|
|
|
71
105
|
<process>
|
|
72
106
|
1. Ler **`.oxe/STATE.md`**: capturar `phase`, `last_task` ou tarefa ativa na onda, `active_workstream`.
|
|
73
|
-
2. Determinar o **próximo ID** (OBS-NNN): contar entradas existentes em `OBSERVATIONS.md` do escopo resolvido ou começar em OBS-001.
|
|
107
|
+
2. Determinar o **próximo ID** (OBS-NNN): contar entradas existentes em `OBSERVATIONS.md` do escopo resolvido ou começar em OBS-001.
|
|
74
108
|
3. Classificar o **impacto** automaticamente com base no texto; se ambíguo, usar `all`.
|
|
75
109
|
3b. **Propagação automática de constraints:**
|
|
76
110
|
- Se existir **`.oxe/SPEC.md`**: ler a tabela de requisitos (R-ID) e critérios (A*) e identificar quais são diretamente afetados pelo texto da observação. Registrar em `**Afeta (spec):**`.
|
|
77
111
|
- Se existir **`.oxe/PLAN.md`**: ler as tarefas (Tn) e identificar quais podem precisar de ajuste no campo `Verificar` ou `Implementar`. Registrar em `**Afeta (plan):**`.
|
|
78
112
|
- Se nenhum R-ID ou Tn identificável: registrar `**Afeta:** (a cruzar na próxima incorporação)`.
|
|
79
113
|
- Esta propagação é automática e não requer input do usuário.
|
|
80
|
-
|
|
114
|
+
3c. Classificar a **severidade** automaticamente usando a tabela de `<format_observations_md>`. Registrar como campo `**Severidade:**` na seção `### OBS-NNN` e na coluna da tabela de índice. Se ambíguo entre `blocking` e `adjustment`, usar `blocking`.
|
|
115
|
+
3d. Classificar o **tipo** automaticamente (se identificável). Se `Tipo: ci_failure`, extrair evidências estruturadas do texto (`coverage_pct`, `coverage_threshold`, `failing_files`, `ci_run_url`, `failing_tests`) e registrar como `**CI-evidência:**` na seção `### OBS-NNN`. Omitir campos não encontrados.
|
|
116
|
+
4. Criar ou atualizar **`OBSERVATIONS.md`** no escopo resolvido:
|
|
81
117
|
- Adicionar linha na tabela de índice.
|
|
82
118
|
- Adicionar seção `### OBS-NNN` com contexto, impacto, status e texto.
|
|
83
|
-
5. Avaliar **urgência
|
|
119
|
+
5. Avaliar **urgência** e responder adaptativamente:
|
|
84
120
|
- Se `phase` ∈ `{ executing, quick_active }` **e** impacto ∈ `{ execute, all }`:
|
|
85
|
-
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
121
|
+
- **Se `Severidade: blocking`:**
|
|
122
|
+
1. Identificar tarefas do PLAN que tocam os arquivos/áreas afetados (campo `**Afeta (plan):**`)
|
|
123
|
+
2. Propor micro-ajustes alinhados ao plano: sub-tarefas dentro das tarefas existentes — não adicionar escopo novo
|
|
124
|
+
3. Apresentar três opções ao usuário:
|
|
125
|
+
- **A) Ajuste inline:** adicionar sub-tarefas à tarefa atual e retomar execução imediatamente
|
|
126
|
+
- **B) Micro-replan:** pausar onda, atualizar PLAN.md com as sub-tarefas, retomar após confirmação
|
|
127
|
+
- **C) Registrar apenas:** incorporar na próxima rodada sem interromper a onda atual
|
|
128
|
+
4. Seja qual opção for escolhida: se `ACTIVE-RUN.json` existir, registrar `blocker_info: { obs_id, severity, type, affected_tasks }` e emitir evento em `OXE-EVENTS.ndjson` (tipo `obs_blocking`)
|
|
129
|
+
- **Se `Severidade: adjustment`:**
|
|
130
|
+
- Apresentar ao usuário: "Observação registrada (ajuste). Incorporar na onda atual ou na próxima?"
|
|
131
|
+
- Se onda atual: incorporar imediatamente nas tarefas afetadas como restrição ou nota de implementação
|
|
132
|
+
- Se próxima onda: confirmar que será incorporado automaticamente no início da próxima onda
|
|
133
|
+
- **Se `Severidade: info`** (ou sem campo Severidade):
|
|
134
|
+
- Confirmar registro; mencionar que será incorporado quando o workflow relevante for chamado
|
|
135
|
+
- Em qualquer outro caso (fora de executing/quick_active): confirmar registro e mencionar quando será incorporado.
|
|
89
136
|
6. Atualizar **`.oxe/STATE.md`**: adicionar ou atualizar campo `obs_pendentes: true` (remover ou marcar `false` quando todos os OBS estiverem `incorporada`).
|
|
90
137
|
7. Responder no chat com: ID atribuído (OBS-NNN), impacto classificado, próximo passo sugerido (qual workflow incorporará a observação).
|
|
91
138
|
</process>
|
|
@@ -107,7 +154,10 @@ Qualquer workflow que leia `.oxe/OBSERVATIONS.md` deve:
|
|
|
107
154
|
<success_criteria>
|
|
108
155
|
- [ ] `.oxe/OBSERVATIONS.md` existe com entrada OBS-NNN na tabela e seção de detalhe.
|
|
109
156
|
- [ ] Impacto classificado corretamente (spec | plan | execute | all).
|
|
157
|
+
- [ ] Severidade classificada corretamente (info | adjustment | blocking); campo presente na tabela e na seção `### OBS-NNN`.
|
|
158
|
+
- [ ] Tipo detectado e registrado quando padrão identificável; `CI-evidência` extraída se `Tipo: ci_failure`.
|
|
110
159
|
- [ ] `STATE.md` tem `obs_pendentes: true`.
|
|
111
|
-
- [ ] Se
|
|
112
|
-
- [ ]
|
|
160
|
+
- [ ] Se `Severidade: blocking` durante executing: opções A/B/C apresentadas ao usuário; `ACTIVE-RUN.json` atualizado com `blocker_info` se existir.
|
|
161
|
+
- [ ] Se `Severidade: adjustment` durante executing: usuário consultado sobre incorporar na onda atual ou na próxima.
|
|
162
|
+
- [ ] Resposta no chat inclui ID, impacto, severidade e próximo passo de incorporação.
|
|
113
163
|
</success_criteria>
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<objective>
|
|
4
4
|
Produzir **dois artefactos alinhados**:
|
|
5
5
|
|
|
6
|
-
1. **`.oxe/PLAN.md`** — mesmo contrato que o workflow **`plan.md`** (tarefas `Tn`, **Onda**, **Depende de**, **Verificar**, **Aceite vinculado**), para **`/oxe-execute`**, **`/oxe-verify`** e gates OXE existentes.
|
|
6
|
+
1. **`.oxe/PLAN.md`** — mesmo contrato que o workflow **`plan.md`** (tarefas `Tn`, **Onda**, **Depende de**, **Verificar**, **Aceite vinculado**, **Autoavaliação do Plano** com rubrica e confiança determinística), para **`/oxe-execute`**, **`/oxe-verify`** e gates OXE existentes.
|
|
7
7
|
2. **`.oxe/plan-agents.json`** — **blueprint de execução**: objetivo, **agentes** (papéis, âmbito, entradas/saídas esperadas, dependências entre agentes), **estratégia em ondas** (`execution.waves`), **`runId`** e **`lifecycle`** (schema **2**).
|
|
8
8
|
|
|
9
9
|
O plano **não** é só uma lista de tarefas: cada agente é um **pacote de contexto** (o que ler, o que produzir, que `Tn` cobre). A execução real continua a ser feita pelo utilizador ou por subagentes da IDE, guiados por este blueprint e pelo `PLAN.md`.
|
|
@@ -15,6 +15,7 @@ Se o utilizador pedir **`--replan`**: aplicar a mesma lógica de replanejamento
|
|
|
15
15
|
|
|
16
16
|
<context>
|
|
17
17
|
- Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, `PLAN.md`, `plan-agents.json` e `plan-agent-messages/` vivem em `.oxe/<active_session>/plan/`; sem sessão ativa, manter `.oxe/`.
|
|
18
|
+
- O `plan-agent` herda integralmente o contrato `oxe/workflows/references/flow-robustness-contract.md`. Não pode emitir percentuais concorrentes por agente; a confiança final do plano é única e visível no `PLAN.md`.
|
|
18
19
|
- **Pré-requisitos** iguais a **`plan.md`**: `.oxe/SPEC.md` obrigatória; `discuss_before_plan` + `DISCUSS.md` quando configurado; consumir **NOTES**, **UI-SPEC**, **DISCUSS**, **RESEARCH**, **CODEBASE-DELTA** / **RESUME**, **config.json** (`plan_max_tasks_per_wave`, `default_verify_command`) como em **`plan.md`**.
|
|
19
20
|
- **Fonte de verdade das tarefas:** `PLAN.md`. O JSON referencia tarefas via **`taskIds`** em cada agente — **não** duplicar o texto de **Verificar** no JSON; copiar só paths/resumo curto em **`outputs`** quando útil para routing.
|
|
20
21
|
- **Agentes ≠ ferramentas externas fixas:** `role` e `scope` descrevem o **comportamento esperado** de um contexto focado (ex.: “Backend Auth Specialist”), não um binário. Quem executa pode ser um único modelo com instruções diferentes por onda.
|
package/oxe/workflows/plan.md
CHANGED
|
@@ -3,25 +3,28 @@
|
|
|
3
3
|
<objective>
|
|
4
4
|
Produzir **`.oxe/PLAN.md`**: tarefas **pequenas**, **ondas** (paralelizáveis vs sequenciais), e **cada tarefa com bloco de verificação** (comando de teste e/ou checklist manual).
|
|
5
5
|
|
|
6
|
-
Base: `SPEC.md` do escopo resolvido da sessão (critérios com IDs **A1**, **A2**, …) + `.oxe/codebase/*` + código quando necessário (Grep/Read pontual).
|
|
6
|
+
Base: `SPEC.md` do escopo resolvido da sessão (critérios com IDs **A1**, **A2**, …) + `.oxe/codebase/*` + código quando necessário (Grep/Read pontual).
|
|
7
7
|
|
|
8
8
|
Se o usuário pedir **--replan** (ou replanejamento implícito após `verify_failed`):
|
|
9
|
-
- Ler `VERIFY.md` e `SUMMARY.md` do escopo resolvido, e o `PLAN.md` atual.
|
|
9
|
+
- Ler `VERIFY.md` e `SUMMARY.md` do escopo resolvido, e o `PLAN.md` atual.
|
|
10
10
|
- Preservar tarefas já concluídas ou renumerar com nota em **Replanejamento**; não apagar histórico útil — deslocar para a seção **Replanejamento** e reescrever **Tarefas** conforme necessário.
|
|
11
11
|
- Se **SUMMARY.md** não existir, criar a partir de `oxe/templates/SUMMARY.template.md` para registrar o contexto do replan (ou dar append se já existir).
|
|
12
12
|
</objective>
|
|
13
13
|
|
|
14
|
-
<context>
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
14
|
+
<context>
|
|
15
|
+
- Seguir `oxe/workflows/references/flow-robustness-contract.md` como contrato canónico de robustez. A ordem obrigatória é: ler artefatos, resolver sessão/paths, validar pré-condições, escrever o plano, autoavaliar o plano, registrar próximo passo único.
|
|
16
|
+
- Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, o plano vive em `.oxe/<active_session>/plan/` e lê a spec em `.oxe/<active_session>/spec/`.
|
|
17
|
+
- Quando existirem, ler `INVESTIGATIONS.md`, `RESEARCH.md`, `CAPABILITIES.md`, `memory/` do projeto e `CHECKPOINTS.md` para calibrar dependências, riscos, automações disponíveis e gates humanos necessários.
|
|
18
|
+
- Se a SPEC ou artefatos do projeto mencionarem **Azure explicitamente** (Azure Service Bus, Azure SQL, Azure Event Grid, az CLI, ARM, subscription Azure, ou `.oxe/cloud/azure/` existir no projeto), **antes de detalhar tarefas**: (1) verificar `auth-status.json` — se `login_active: false` ou `subscription_id` ausente, registrar como **pré-condição bloqueante** no PLAN.md e sugerir `oxe-cc azure status` / `oxe-cc azure auth login`; (2) verificar staleness do inventário via `inventory.synced_at` — se stale além de `inventory_max_age_hours`, sugerir `oxe-cc azure sync` antes de executar; (3) se `vpn_required: true` no config, registrar como restrição explícita nas tarefas de mutação Azure. O plano deve vincular tarefas a recursos existentes em INVENTORY.md, SERVICEBUS.md, EVENTGRID.md ou SQL.md, ou declarar explicitamente os recursos Azure a criar com `oxe-cc azure <domínio> plan`. **SQL genérico, bancos on-prem ou outras nuvens não acionam este bloco.**
|
|
19
|
+
- Se existir `OBSERVATIONS.md` do escopo resolvido com entradas `pendente` de impacto `plan` ou `all`, incorporar nas tarefas relevantes antes de finalizar o plano (ajustar implementação, verificação ou escopo de Tn) e marcar essas entradas como `incorporada → plan (data)`.
|
|
20
|
+
- Se existir **`.oxe/global/LESSONS.md`**, ler entradas com `Aplicar em: /oxe-plan` e `Status: ativo`. **Priorizar entradas com `Frequência >= 2` ou `Impacto: alto`** — aplicar como restrições explícitas no planejamento: ajuste de complexidade de tarefas, padrões de verificação, escolha de modo solo vs agentes. Lições com `Frequência: 1` e `Impacto: baixo` são contexto secundário. Registrar aplicações como comentário no PLAN.md: `<!-- lição C-NN aplicada: ... -->`.
|
|
18
21
|
- **LESSONS + OBS juntos:** se houver tanto LESSONS quanto OBS pendentes, LESSONS orientam o *como planejar* e OBS orientam o *o que incluir*. Não confundir os papéis.
|
|
19
22
|
- Não inventar APIs inexistentes: cruzar com **STRUCTURE.md**, **INTEGRATIONS.md** e arquivos reais; respeitar **CONCERNS.md** (evitar agravar dívida conhecida sem tarefa explícita).
|
|
20
|
-
- Se existir **`.oxe/NOTES.md`**, rever entradas em aberto: incorporar em tarefas (com **Aceite vinculado** quando aplicável) ou registar na secção **Replanejamento** / nota explícita *fora de âmbito desta trilha*.
|
|
21
|
-
- Se existir `UI-SPEC.md` no escopo resolvido, as tarefas de UI devem referenciar secções do UI-SPEC no texto de **Implementação** ou **Verificar**.
|
|
22
|
-
- Se existir `DISCUSS.md` no escopo resolvido, alinhar tarefas às decisões registradas. Referenciar IDs **D-NN** no campo **Decisão vinculada:** de cada tarefa impactada — se nenhuma decisão impactar a tarefa, omitir o campo. A rastreabilidade D-NN → Tn → verify é usada pela seção **Fidelidade de decisões** do verify.
|
|
23
|
-
- Se existir `RESEARCH.md` e notas em `research/*.md` do escopo resolvido, ler o índice e as notas cujo **Tema** cruza o âmbito do plano (ou as mais recentes relevantes). Se o índice marcar **Estado** pendente em tópico bloqueante, pedir nova sessão **research** ou **discuss**, ou registar **suposição explícita** no PLAN antes de ondas que dependam dessa decisão.
|
|
24
|
-
- Se existir `plan-agents.json` no escopo resolvido (gerado por **`/oxe-plan-agent`**), um **--replan** ou renumerar tarefas deve **atualizar o JSON em conjunto** com o `PLAN.md` (cobertura `taskIds`, ondas e dependências entre agentes) — ver **`oxe/workflows/plan-agent.md`**. Preferir **`/oxe-plan-agent --replan`** para regerar **`runId`**, **`lifecycle`** (`pending_execute`) e alinhar **STATE.md**; se só **`/oxe-plan`** for usado, ou o JSON fica manualmente sincronizado, ou marcar no JSON `lifecycle.invalidatedBy: new_plan` até novo plan-agent.
|
|
23
|
+
- Se existir **`.oxe/NOTES.md`**, rever entradas em aberto: incorporar em tarefas (com **Aceite vinculado** quando aplicável) ou registar na secção **Replanejamento** / nota explícita *fora de âmbito desta trilha*. Se não existir e houver necessidade de registrar notas, criar a partir de `oxe/templates/NOTES.template.md`.
|
|
24
|
+
- Se existir `UI-SPEC.md` no escopo resolvido, as tarefas de UI devem referenciar secções do UI-SPEC no texto de **Implementação** ou **Verificar**.
|
|
25
|
+
- Se existir `DISCUSS.md` no escopo resolvido, alinhar tarefas às decisões registradas. Referenciar IDs **D-NN** no campo **Decisão vinculada:** de cada tarefa impactada — se nenhuma decisão impactar a tarefa, omitir o campo. A rastreabilidade D-NN → Tn → verify é usada pela seção **Fidelidade de decisões** do verify.
|
|
26
|
+
- Se existir `RESEARCH.md` e notas em `research/*.md` do escopo resolvido, ler o índice e as notas cujo **Tema** cruza o âmbito do plano (ou as mais recentes relevantes). Se o índice marcar **Estado** pendente em tópico bloqueante, pedir nova sessão **research** ou **discuss**, ou registar **suposição explícita** no PLAN antes de ondas que dependam dessa decisão.
|
|
27
|
+
- Se existir `plan-agents.json` no escopo resolvido (gerado por **`/oxe-plan-agent`**), um **--replan** ou renumerar tarefas deve **atualizar o JSON em conjunto** com o `PLAN.md` (cobertura `taskIds`, ondas e dependências entre agentes) — ver **`oxe/workflows/plan-agent.md`**. Preferir **`/oxe-plan-agent --replan`** para regerar **`runId`**, **`lifecycle`** (`pending_execute`) e alinhar **STATE.md**; se só **`/oxe-plan`** for usado, ou o JSON fica manualmente sincronizado, ou marcar no JSON `lifecycle.invalidatedBy: new_plan` até novo plan-agent.
|
|
25
28
|
- Se existirem **`.oxe/CODEBASE-DELTA.md`** e/ou **`.oxe/RESUME.md`** (tipicamente após **`/oxe-compact`**), ler **antes** de detalhar tarefas: o delta resume o que mudou nos mapas face ao código; o RESUME ancora fase e trilha OXE — **não** substituem SPEC nem os sete ficheiros em `codebase/`.
|
|
26
29
|
- Se existir **`.oxe/config.json`** com `default_verify_command` não vazio, usar como fallback quando a SPEC não indicar comando.
|
|
27
30
|
- Se existir **`plan_max_tasks_per_wave` > 0** na config, **não** colocar mais tarefas do que esse número na mesma **Onda**; dividir em mais ondas.
|
|
@@ -47,6 +50,45 @@ Cada tarefa em PLAN.md deve seguir a ordem abaixo — **Verificar vem ANTES de I
|
|
|
47
50
|
<!-- oxe-task: {"id":"Tn","wave":1,"type":"feature","files":[],"done":false,"complexity":"S"} -->
|
|
48
51
|
```
|
|
49
52
|
|
|
53
|
+
Depois do resumo e antes das tarefas, o `PLAN.md` deve conter também:
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
## Autoavaliação do Plano
|
|
57
|
+
- **Melhor plano atual:** sim | não
|
|
58
|
+
- **Confiança:** 0–100%
|
|
59
|
+
- **Base da confiança:**
|
|
60
|
+
- Completude dos requisitos: NN/25
|
|
61
|
+
- Dependências conhecidas: NN/15
|
|
62
|
+
- Risco técnico: NN/20
|
|
63
|
+
- Impacto no código existente: NN/15
|
|
64
|
+
- Clareza da validação / testes: NN/15
|
|
65
|
+
- Lacunas externas / decisões pendentes: NN/10
|
|
66
|
+
- **Principais incertezas:** ...
|
|
67
|
+
- **Alternativas descartadas:** ...
|
|
68
|
+
- **Condição para replanejar:** ...
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Rubrica fixa de confiança (determinística):**
|
|
72
|
+
| Dimensão | Peso |
|
|
73
|
+
|----------|------|
|
|
74
|
+
| Completude dos requisitos | 25 |
|
|
75
|
+
| Dependências conhecidas | 15 |
|
|
76
|
+
| Risco técnico | 20 |
|
|
77
|
+
| Impacto no código existente | 15 |
|
|
78
|
+
| Clareza da validação / testes | 15 |
|
|
79
|
+
| Lacunas externas / decisões pendentes | 10 |
|
|
80
|
+
|
|
81
|
+
**Faixas semânticas obrigatórias:**
|
|
82
|
+
- `85–100%` → pronto para executar
|
|
83
|
+
- `70–84%` → executável com risco controlado
|
|
84
|
+
- `50–69%` → precisa refino antes de execução
|
|
85
|
+
- `<50%` → não executar
|
|
86
|
+
|
|
87
|
+
**Entradas obrigatórias da confiança:**
|
|
88
|
+
- usar as incertezas estruturadas da SPEC e as investigações concluídas como base direta da rubrica;
|
|
89
|
+
- se o plano depender de capability nativa, investigação ainda não feita ou checkpoint humano antes de side effect crítico, isso deve aparecer explicitamente em tarefas, riscos e autoavaliação.
|
|
90
|
+
- se o plano depender de mutação Azure, incluir checkpoint formal antes de `apply`, mencionar a capability Azure correspondente e ligar a evidência esperada em `.oxe/cloud/azure/operations/`.
|
|
91
|
+
|
|
50
92
|
**Escala de Complexidade:**
|
|
51
93
|
| Valor | Esforço estimado | Sinal de alerta |
|
|
52
94
|
|-------|-----------------|-----------------|
|
|
@@ -67,13 +109,18 @@ Antes de finalizar a resposta ao utilizador, o agente **deve** percorrer este ga
|
|
|
67
109
|
|
|
68
110
|
1. **Depende de:** em cada `### Tn`, apenas IDs `Tk` que existem no mesmo ficheiro, ou `—`.
|
|
69
111
|
2. **Ciclos:** não há cadeia circular óbvia (ex.: T2→T3→T2); se houver, quebrar dependência ou onda.
|
|
70
|
-
3. **Cobertura A*:** todos os IDs da tabela de critérios em `SPEC.md` do escopo resolvido aparecem em **Aceite vinculado:** de alguma tarefa, ou há nota explícita de **gap** no PLAN (fora de âmbito / adiado) por ID.
|
|
112
|
+
3. **Cobertura A*:** todos os IDs da tabela de critérios em `SPEC.md` do escopo resolvido aparecem em **Aceite vinculado:** de alguma tarefa, ou há nota explícita de **gap** no PLAN (fora de âmbito / adiado) por ID.
|
|
71
113
|
4. **Ondas:** cada número de **Onda:** usado tem pelo menos uma tarefa; sem ondas vazias.
|
|
72
114
|
5. **`plan_max_tasks_per_wave`:** se `.oxe/config.json` tiver valor **> 0**, contar tarefas por **Onda**; nenhuma onda excede o limite.
|
|
73
|
-
6. **UI-SPEC:** se existir `UI-SPEC.md` no escopo resolvido, toda tarefa cuja **Implementar** ou **Verificar** toque UI deve citar **secção § do UI-SPEC** ou path explícito.
|
|
74
|
-
7. **Fidelidade de decisões:** se existir `DISCUSS.md` com IDs **D-NN** no escopo resolvido, cada decisão com impacto técnico deve aparecer em **Decisão vinculada:** de alguma tarefa, ou ter nota explícita de gap. Sem cobertura para D-NN técnico = falha do gate.
|
|
115
|
+
6. **UI-SPEC:** se existir `UI-SPEC.md` no escopo resolvido, toda tarefa cuja **Implementar** ou **Verificar** toque UI deve citar **secção § do UI-SPEC** ou path explícito.
|
|
116
|
+
7. **Fidelidade de decisões:** se existir `DISCUSS.md` com IDs **D-NN** no escopo resolvido, cada decisão com impacto técnico deve aparecer em **Decisão vinculada:** de alguma tarefa, ou ter nota explícita de gap. Sem cobertura para D-NN técnico = falha do gate.
|
|
75
117
|
8. **Complexidade XL:** toda tarefa com `Complexidade: XL` deve ter sub-tarefas explícitas (ex.: T3.1, T3.2 — como bullets dentro da tarefa) **ou** justificativa na tarefa explicando por que não pode ser quebrada. Tarefa XL sem sub-tarefas e sem justificativa = falha do gate.
|
|
76
118
|
9. **Test-first:** em toda tarefa, `Verificar` deve preceder `Implementar` no texto. Se a ordem estiver invertida, corrigir antes de finalizar.
|
|
119
|
+
10. **Autoavaliação presente:** o `PLAN.md` contém `## Autoavaliação do Plano`, `Melhor plano atual`, `Confiança`, rubrica completa e `Condição para replanejar`.
|
|
120
|
+
11. **Calibração de execução:** se `Melhor plano atual: não` ou `Confiança < limiar configurado`, o plano não pode recomendar execução direta; deve recomendar refino, discuss ou research.
|
|
121
|
+
12. **Rastreabilidade de evidência:** cada tarefa deve ter entrada observável de origem na SPEC, no codebase, em DISCUSS, OBS, RESEARCH ou LESSONS; tarefa sem evidência de entrada explícita = falha do gate.
|
|
122
|
+
13. **Mudanças de risco:** tarefas com risco relevante (migração, auth, schema, contrato público, segurança) devem incluir contenção, rollback, fallback ou verificação reforçada.
|
|
123
|
+
14. **Cobertura R-ID:** se `SPEC.md` contiver tabela de requisitos com IDs `R-NN` e status `v1`/`v2`, cada R-ID em escopo deve ter ao menos um critério A* mapeado em **Aceite vinculado:** de alguma tarefa — rastrear `R-NN → A* → Tn`. R-IDs com `v1`/`v2` sem nenhuma tarefa associada = falha do gate; documentar como gap explícito quando intencional (ex.: `<!-- R-03: adiado para próximo ciclo -->`).
|
|
77
124
|
|
|
78
125
|
Se após correções estruturais persistir ambiguidade de produto: **uma** frase recomendando `oxe:discuss` ou `oxe:spec`.
|
|
79
126
|
|
|
@@ -81,20 +128,22 @@ Resumo obrigatório no chat: `Gate do plano: OK` ou `Gate do plano: corrigido (N
|
|
|
81
128
|
</plan_quality_gate>
|
|
82
129
|
|
|
83
130
|
<process>
|
|
84
|
-
1. Resolver `active_session` e ler `SPEC.md` do escopo correto (obrigatório). Se faltar, pedir **spec** primeiro.
|
|
85
|
-
2. Se `.oxe/config.json` tiver `discuss_before_plan: true` e **não** existir `DISCUSS.md` no escopo resolvido com decisões fechadas, pedir **discuss** antes de planejar.
|
|
131
|
+
1. Resolver `active_session` e ler `SPEC.md` do escopo correto (obrigatório). Se faltar, pedir **spec** primeiro.
|
|
132
|
+
2. Se `.oxe/config.json` tiver `discuss_before_plan: true` e **não** existir `DISCUSS.md` no escopo resolvido com decisões fechadas, pedir **discuss** antes de planejar.
|
|
86
133
|
3. Se existir **`.oxe/NOTES.md`**, consumir ou explicitamente adiar cada bullet relevante (ver **context**).
|
|
87
134
|
4. Ler `.oxe/codebase/*.md` (incl. CONVENTIONS / CONCERNS) e inspecionar pontos de entrada se a spec exigir.
|
|
88
|
-
5. Escrever ou atualizar `PLAN.md` no escopo resolvido usando `oxe/templates/PLAN.template.md` como cabeçalho; **preservar** YAML inicial (`oxe_doc: plan`, `status`, `inputs`) se já existir e **atualizar** `updated:` (ISO); em **--replan**, preencher a seção **Replanejamento** (data, motivo, lições de VERIFY/SUMMARY, tarefas removidas/alteradas).
|
|
135
|
+
5. Escrever ou atualizar `PLAN.md` no escopo resolvido usando `oxe/templates/PLAN.template.md` como cabeçalho; **preservar** YAML inicial (`oxe_doc: plan`, `status`, `inputs`) se já existir e **atualizar** `updated:` (ISO); em **--replan**, preencher a seção **Replanejamento** (data, motivo, lições de VERIFY/SUMMARY, tarefas removidas/alteradas).
|
|
89
136
|
6. Definir ondas: onda 1 = tarefas sem dependência entre si; onda seguinte = dependentes; respeitar `plan_max_tasks_per_wave` se configurado.
|
|
90
|
-
7.
|
|
91
|
-
8.
|
|
92
|
-
9.
|
|
93
|
-
10.
|
|
137
|
+
7. Preencher `## Autoavaliação do Plano` com a rubrica fixa. A confiança é a soma ponderada das seis dimensões; não inventar percentagem sem justificar os pontos.
|
|
138
|
+
8. Aplicar integralmente o bloco **`<plan_quality_gate>`** acima ao `PLAN.md` em disco; corrigir o ficheiro até passar ou documentar gaps explícitos.
|
|
139
|
+
9. Atualizar `.oxe/STATE.md` global: fase `plan_ready`, próximo passo `oxe:execute` apenas se `Melhor plano atual: sim` e a confiança estiver no limiar executável; caso contrário, próximo passo deve reduzir incerteza (`oxe:discuss`, `oxe:research` ou replanejamento).
|
|
140
|
+
10. **Sugestão de agentes (inteligente):** após o gate passar, verificar se o plano tem 3+ domínios distintos (ex.: backend + frontend + DB, ou auth + notificações + UI). Se sim, sugerir proativamente: "Este plano tem N domínios distintos. Quer gerar um blueprint de agentes com `/oxe-plan --agents`?" — não executar automaticamente, apenas oferecer. Se o usuário incluiu `--agents` no input original, executar imediatamente a lógica de `oxe/workflows/plan-agent.md`.
|
|
141
|
+
11. Listar no chat: resultado do gate (OK ou corrigido), ondas, contagem de tarefas, comando de teste guarda-chuva se houver, melhor-plano-atual e confiança.
|
|
94
142
|
</process>
|
|
95
143
|
|
|
96
144
|
<success_criteria>
|
|
97
145
|
- [ ] Cada tarefa tem seção **Verificar** com comando ou checklist explícito.
|
|
98
146
|
- [ ] Dependências entre tarefas estão explícitas.
|
|
99
147
|
- [ ] Cada critério da SPEC (IDs **A***) está mapeado em **Aceite vinculado** de alguma tarefa ou explicitamente marcado como gap no plano.
|
|
148
|
+
- [ ] Cada R-ID `v1`/`v2` do SPEC tem ao menos um A* coberto por alguma tarefa, ou gap documentado (gate 14).
|
|
100
149
|
</success_criteria>
|
package/oxe/workflows/quick.md
CHANGED
|
@@ -8,9 +8,10 @@ Quando o trabalho envolve **2 ou mais domínios distintos** (ex.: backend + fron
|
|
|
8
8
|
Usar quando: correção pontual, refactor local, feature pequena ou protótipo que **não** justifica critérios de aceite completos.
|
|
9
9
|
</objective>
|
|
10
10
|
|
|
11
|
-
<context>
|
|
12
|
-
-
|
|
13
|
-
-
|
|
11
|
+
<context>
|
|
12
|
+
- Seguir `oxe/workflows/references/flow-robustness-contract.md`. Quick continua leve, mas não pode fingir que existe plano formal quando ele não existe.
|
|
13
|
+
- Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, `QUICK.md` e `quick-agents.json` vivem em `.oxe/<active_session>/plan/`; sem sessão ativa, manter `.oxe/`.
|
|
14
|
+
- Ler `.oxe/STATE.md` e, se existirem, `OVERVIEW.md` e `STACK.md` em `.oxe/codebase/` para não contradizer o repo.
|
|
14
15
|
- Não apagar `SPEC.md` / `PLAN.md` se existirem; este fluxo é paralelo ou temporário.
|
|
15
16
|
- **Blueprint plan-agent:** este fluxo **não** reutiliza papéis (`role` / `scope`) de **`.oxe/plan-agents.json`**. Se existir `plan-agents.json` com **`oxePlanAgentsSchema: 2`** e `lifecycle.status` **não** for já `invalidated`, **invalidar** o blueprint após criar/substituir **`QUICK.md`**: `lifecycle: { "status": "invalidated", "since": "<ISO>", "invalidatedBy": "quick", "invalidatedReason": "oxe-quick substitui trilha focada do blueprint" }`. Actualizar **`.oxe/STATE.md`** — secção **Blueprint de agentes (sessão)**: **lifecycle_status** → `invalidated`, nota "invalidado por quick". Não escrever novas mensagens em **`.oxe/plan-agent-messages/`** para o `runId` invalidado.
|
|
16
17
|
- **Quick-agents anterior:** se existir **`.oxe/quick-agents.json`** com `status` diferente de `done` ou `invalidated`, invalidá-lo antes de criar o novo (`status: "invalidated", "since": "<ISO>", "reason": "novo quick iniciado"`).
|
|
@@ -121,6 +122,7 @@ Uso **sem** novo slash: é o mesmo `/oxe-quick` com redação mínima.
|
|
|
121
122
|
- **Verificar** — um comando de terminal **ou** checklist manual explícito.
|
|
122
123
|
- **Agentes dinâmicos** — seção opcional quando PDDA estiver ativo (ver acima).
|
|
123
124
|
- **Promover para spec/plan?** — preencher sempre; se qualquer gatilho abaixo for verdadeiro, resposta **sim** e parar de acumular trabalho no QUICK — passar a **`/oxe-spec`** (e depois discuss/plan conforme config).
|
|
125
|
+
- **Confiança formal do plano:** se ainda não houver `PLAN.md`, declarar explicitamente no QUICK que **não houve plano formal**; não inventar percentagem de confiança aqui.
|
|
124
126
|
|
|
125
127
|
O perfil fast **não** é uma segunda trilha: continua sujeito à mesma promoção obrigatória quando o trabalho deixa de ser trivial.
|
|
126
128
|
|
|
@@ -141,16 +143,19 @@ No final de **`.oxe/QUICK.md`**, mantenha a linha:
|
|
|
141
143
|
Se **sim**, o próximo passo recomendado no chat é **`/oxe-spec`** (depois discuss/plan conforme config).
|
|
142
144
|
|
|
143
145
|
<process>
|
|
144
|
-
|
|
146
|
+
0. **Git safety check (pré-execução):** antes de criar ou substituir QUICK.md, verificar `git status` do projeto (se `.git` existir). Se houver mudanças não commitadas **não relacionadas** ao objetivo deste quick, alertar: *"Existem mudanças não commitadas. Quer commitar antes de começar este quick?"* — não bloquear a execução, apenas perguntar. Prosseguir se o usuário confirmar ou se não houver git.
|
|
147
|
+
1. Garantir `.oxe/` (usar template de STATE só se `STATE.md` não existir). Verificar `OBSERVATIONS.md` do escopo resolvido — se houver entradas `pendente` com impacto `all`, registrar como restrições nos **Passos** ou no **Contexto** do QUICK.md antes de finalizar; marcar as OBS como `incorporada → quick (data)`.
|
|
145
148
|
2. Avaliar se PDDA lean se aplica (ver `<plan_driven_dynamic_agents_lean>` — domínios distintos, 5+ passos, ou flag `--agents`).
|
|
146
|
-
3. Criar ou substituir **`QUICK.md`** no escopo resolvido com:
|
|
149
|
+
3. Criar ou substituir **`QUICK.md`** no escopo resolvido com:
|
|
147
150
|
- **Objetivo** — uma frase. *(Esta é a minispec: restringe o escopo de todos os agentes e passos.)*
|
|
148
151
|
- **Contexto** — 2–5 bullets (arquivos/pastas já vistos).
|
|
149
152
|
- **Passos** — lista numerada, **máximo 10** passos acionáveis; se PDDA ativo, anotar `<!-- agente: id -->` em cada passo.
|
|
150
153
|
- **Agentes dinâmicos** *(somente se PDDA ativo)* — tabela com ID, papel, steps, persona.
|
|
151
154
|
- **Verificar** — pelo menos um: comando de terminal (ex.: `npm test`) **ou** checklist manual explícito. *(Este é o critério de aceite da minispec.)*
|
|
152
155
|
- **Promover para spec/plan?** — conforme seção acima.
|
|
153
|
-
|
|
156
|
+
- **Plano formal existente?** — `não`; usar `sim` apenas se este quick estiver ancorado a um `PLAN.md` já aprovado no mesmo escopo.
|
|
157
|
+
- **Scope check (inline):** durante a implementação, ao fim de cada passo, verificar se algum critério de promoção foi atingido (>8 arquivos, contrato público, segurança, >10 passos). Se sim, pausar e apresentar: *"O escopo deste quick cresceu: [critério atingido]. Recomendar promoção para /oxe-spec. Continuar mesmo assim?"*
|
|
158
|
+
4. Se PDDA ativo, criar **`quick-agents.json`** no escopo resolvido usando `oxe/templates/quick-agents.template.json`:
|
|
154
159
|
- Gerar `quickId` novo (`quick-<YYYY-MM-DD>-<6hex>`).
|
|
155
160
|
- `status: "active"`, `since: "<ISO agora>"`.
|
|
156
161
|
- Preencher `agents[]` derivando de cada grupo de passos do QUICK.md.
|
|
@@ -158,12 +163,15 @@ Se **sim**, o próximo passo recomendado no chat é **`/oxe-spec`** (depois disc
|
|
|
158
163
|
6. Se existir **`.oxe/quick-agents.json`** anterior com `status` não-terminal, invalidá-lo (ver **context**).
|
|
159
164
|
7. Atualizar **`.oxe/STATE.md`**: fase `quick_active`, próximo passo `oxe:execute` ou implementação manual + `oxe:verify`; se PDDA ativo, registrar `quick_agents_status: active` e `quick_id: <quickId>`.
|
|
160
165
|
8. Responder no chat com resumo em ≤10 linhas: objetivo, passos, agentes (se PDDA ativo), verificação; se promover = sim, destacar **`/oxe-spec`** como próximo passo lógico; se blueprint plan-agent foi invalidado, mencionar **`/oxe-plan-agent`** para novo roteiro.
|
|
166
|
+
9. **Sugestão de commit (pós-verify bem-sucedido):** após o bloco **Verificar** passar, sugerir ao usuário: *"Quick concluído. Commitar? `git add -p && git commit -m 'quick: <objetivo em uma linha>'`"* — apenas sugerir, não executar automaticamente.
|
|
161
167
|
</process>
|
|
162
168
|
|
|
163
169
|
<success_criteria>
|
|
164
170
|
- [ ] `.oxe/QUICK.md` existe com objetivo (minispec), passos (mini-plano) e bloco **Verificar** (critério de aceite).
|
|
165
171
|
- [ ] `STATE.md` reflete fase `quick_active` e próximo passo coerente.
|
|
166
172
|
- [ ] Fica explícito quando **promover** para spec/plan (regra acima + campo no arquivo).
|
|
173
|
+
- [ ] Scope creep gate verificado ao fim de cada passo; se critério atingido, pausa apresentada ao usuário.
|
|
174
|
+
- [ ] Após verify bem-sucedido, sugestão de commit apresentada (não executada automaticamente).
|
|
167
175
|
- [ ] Se havia blueprint schema 2 activo, `plan-agents.json` e `STATE.md` reflectem **`invalidated`** por quick.
|
|
168
176
|
- [ ] Se PDDA ativo: `quick-agents.json` existe com `status: active`, `quickId` único, agentes com `role` específico à demanda, `steps` alinhados aos passos do QUICK.md; seção `## Agentes dinâmicos` presente no QUICK.md.
|
|
169
177
|
- [ ] Se PDDA ativo: máximo 3 agentes; se mais necessário, QUICK.md declara `Promover para spec/plan?: sim` com razão "necessita > 3 agentes".
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# OXE — Descoberta Adaptativa
|
|
2
|
+
|
|
3
|
+
<objective>
|
|
4
|
+
Reduzir ambiguidade antes da escrita de `SPEC.md` e melhorar a qualidade do plano. Esta referência orienta `spec` e `ask`.
|
|
5
|
+
</objective>
|
|
6
|
+
|
|
7
|
+
## Regras
|
|
8
|
+
|
|
9
|
+
- Classificar a demanda o mais cedo possível: `feature`, `bugfix`, `refactor`, `research`, `ops`, `mixed`.
|
|
10
|
+
- Modular as perguntas pelo tipo de demanda e pelo risco.
|
|
11
|
+
- Limitar rodadas; consolidar entendimento antes de escrever artefatos.
|
|
12
|
+
- Registrar incertezas estruturadas, não apenas em texto solto.
|
|
13
|
+
|
|
14
|
+
## Blocos mínimos
|
|
15
|
+
|
|
16
|
+
- **Objetivo final**
|
|
17
|
+
- **Impacto / público**
|
|
18
|
+
- **Restrições técnicas**
|
|
19
|
+
- **Riscos e casos extremos**
|
|
20
|
+
- **Evidência faltante**
|
|
21
|
+
|
|
22
|
+
## Saída esperada
|
|
23
|
+
|
|
24
|
+
- resumo de entendimento;
|
|
25
|
+
- demanda classificada;
|
|
26
|
+
- incertezas remanescentes;
|
|
27
|
+
- recomendação de próximo passo compatível com o risco.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# OXE — Contrato de Robustez do Fluxo
|
|
2
|
+
|
|
3
|
+
<objective>
|
|
4
|
+
Definir um contrato canónico para reduzir alucinação estrutural no OXE. Este ficheiro é consumido por `spec`, `plan`, `quick`, `execute`, `verify`, `next`, `status` e `doctor`.
|
|
5
|
+
</objective>
|
|
6
|
+
|
|
7
|
+
## Ordem determinística do fluxo
|
|
8
|
+
|
|
9
|
+
Todo passo OXE deve seguir esta ordem, sem saltar etapas:
|
|
10
|
+
|
|
11
|
+
1. Ler os artefatos obrigatórios do estado atual.
|
|
12
|
+
2. Resolver `active_session` e os paths do escopo.
|
|
13
|
+
3. Validar pré-condições mínimas antes de prosseguir.
|
|
14
|
+
4. Produzir a saída principal do passo.
|
|
15
|
+
5. Executar autoavaliação ou gate de qualidade do próprio passo.
|
|
16
|
+
6. Registrar um próximo passo único.
|
|
17
|
+
|
|
18
|
+
## Invariantes mínimos
|
|
19
|
+
|
|
20
|
+
Todo workflow deve declarar com clareza:
|
|
21
|
+
|
|
22
|
+
- quais artefatos lê;
|
|
23
|
+
- quais artefatos escreve;
|
|
24
|
+
- quais invariantes valida antes de operar;
|
|
25
|
+
- qual fallback legado é permitido quando não há sessão ativa.
|
|
26
|
+
|
|
27
|
+
## Proibição de saltos sem evidência
|
|
28
|
+
|
|
29
|
+
- `plan` não deve avançar sem `SPEC.md` válido.
|
|
30
|
+
- `execute` não deve avançar sem `PLAN.md` ou `QUICK.md` válido no escopo resolvido.
|
|
31
|
+
- `verify` não deve avançar sem evidência mínima de execução ou de artefatos resultantes.
|
|
32
|
+
- `next` não deve sugerir um passo que viole os gates acima.
|
|
33
|
+
|
|
34
|
+
## Contrato de autoavaliação do plano
|
|
35
|
+
|
|
36
|
+
Todo `PLAN.md` deve conter uma seção visível `## Autoavaliação do Plano` com:
|
|
37
|
+
|
|
38
|
+
- `Melhor plano atual:` `sim` ou `não`
|
|
39
|
+
- `Confiança:` `0–100%`
|
|
40
|
+
- `Base da confiança:` rubrica fixa, não narrativa livre
|
|
41
|
+
- `Principais incertezas:` lista curta
|
|
42
|
+
- `Alternativas descartadas:` resumo curto
|
|
43
|
+
- `Condição para replanejar:` critério objetivo
|
|
44
|
+
|
|
45
|
+
### Rubrica obrigatória
|
|
46
|
+
|
|
47
|
+
| Dimensão | Peso |
|
|
48
|
+
|----------|------|
|
|
49
|
+
| Completude dos requisitos | 25 |
|
|
50
|
+
| Dependências conhecidas | 15 |
|
|
51
|
+
| Risco técnico | 20 |
|
|
52
|
+
| Impacto no código existente | 15 |
|
|
53
|
+
| Clareza da validação / testes | 15 |
|
|
54
|
+
| Lacunas externas / decisões pendentes | 10 |
|
|
55
|
+
|
|
56
|
+
**Total:** 100 pontos
|
|
57
|
+
|
|
58
|
+
### Faixas semânticas
|
|
59
|
+
|
|
60
|
+
- `85–100%` → pronto para executar
|
|
61
|
+
- `70–84%` → executável com risco controlado
|
|
62
|
+
- `50–69%` → precisa refino antes de execução
|
|
63
|
+
- `<50%` → não executar
|
|
64
|
+
|
|
65
|
+
## Calibração pós-execução
|
|
66
|
+
|
|
67
|
+
`verify` deve comparar o resultado real com a autoavaliação do plano:
|
|
68
|
+
|
|
69
|
+
- confiança alta + falha precoce = erro de calibração do plano;
|
|
70
|
+
- confiança baixa + falha em risco previsto = autoavaliação aderente;
|
|
71
|
+
- confiança alta + sucesso consistente = plano calibrado;
|
|
72
|
+
- confiança baixa + sucesso amplo = plano conservador demais.
|
|
73
|
+
|
|
74
|
+
## Uso por `status` e `doctor`
|
|
75
|
+
|
|
76
|
+
`status` e `doctor` devem refletir a saúde lógica do fluxo com categorias determinísticas:
|
|
77
|
+
|
|
78
|
+
- `healthy` — sem bloqueio lógico conhecido;
|
|
79
|
+
- `warning` — fluxo operável, mas com gaps ou drift relevante;
|
|
80
|
+
- `broken` — artefato crítico ausente, incoerência severa ou gate indispensável falhado.
|
|
@@ -6,16 +6,19 @@ Produzir **notas de pesquisa rastreáveis** em `research/YYYY-MM-DD-<slug>.md` d
|
|
|
6
6
|
Não substitui **SPEC** nem **PLAN**; alimenta decisões que depois entram na SPEC ou no PLAN.
|
|
7
7
|
</objective>
|
|
8
8
|
|
|
9
|
-
<context>
|
|
9
|
+
<context>
|
|
10
10
|
- Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, research vive em `.oxe/<active_session>/research/`; sem sessão ativa, usar `.oxe/research/`.
|
|
11
|
+
- Tratar pesquisa como **investigação estruturada**, não como nota solta. Cada investigação deve ter objetivo, fontes, modo, profundidade, conclusões e impacto na trilha.
|
|
11
12
|
- **Uma sessão = um ficheiro novo** em `research/`; não sobrescrever notas antigas salvo correção explícita do utilizador.
|
|
12
13
|
- Nome do ficheiro: **`YYYY-MM-DD-<slug-kebab>.md`** (data ISO do dia acordado na mensagem ou data atual; slug único, curto, ASCII preferível).
|
|
13
14
|
- **Índice:** `RESEARCH.md` do mesmo escopo deve conter tabela **Histórico** (mais recente primeiro) com colunas: **Data** | **Ficheiro** (`research/...`) | **Tema / âmbito** | **Tipo** (ex.: spike, mapa-sistema, reversa, modernização, decisão) | **Estado** (decidido / pendente / parcial) | **Resumo** (uma linha). Opcional: bloco **Última sessão** no topo com link para a nota mais recente.
|
|
14
15
|
- Preferir **`.oxe/SPEC.md`** existente; se o pedido for mapear/reverter **antes** de spec, criar a nota mesmo assim com **Contexto** a declarar ausência de SPEC e próximo passo `oxe:spec`.
|
|
15
16
|
- **Progressive disclosure:** sistemas grandes → profundidade por área; várias sessões/notas datadas em vez de um único ficheiro enorme.
|
|
16
|
-
- Template: **`oxe/templates/RESEARCH.template.md`**.
|
|
17
|
-
-
|
|
18
|
-
|
|
17
|
+
- Template: **`oxe/templates/RESEARCH.template.md`**.
|
|
18
|
+
- Ler `INVESTIGATIONS.md` e investigações anteriores do escopo resolvido antes de abrir nova pesquisa sobre o mesmo assunto.
|
|
19
|
+
- Ler `.oxe/CAPABILITIES.md` quando a investigação depender de capability local, script ou conector já existente.
|
|
20
|
+
- Segurança: não gravar segredos nem valores de variáveis de ambiente.
|
|
21
|
+
</context>
|
|
19
22
|
|
|
20
23
|
<thinking_depth>
|
|
21
24
|
## Profundidade de Raciocínio
|
|
@@ -36,12 +39,13 @@ Anotar `thinking_depth: surface | standard | deep` no frontmatter da nota de pes
|
|
|
36
39
|
<process>
|
|
37
40
|
1. Garantir pastas `.oxe/` e `research/` do escopo resolvido.
|
|
38
41
|
2. Escolher `YYYY-MM-DD-<slug>.md` único; se colisão, acrescentar sufixo ao slug (ex. `-b`).
|
|
39
|
-
3. Criar a nota a partir de `RESEARCH.template.md`: preencher secções **base**; preencher secções de **reforço** ou marcar **N/A** com justificação curta quando o âmbito for sistema grande, reversa ou modernização.
|
|
42
|
+
3. Criar a nota a partir de `RESEARCH.template.md`: preencher secções **base**; preencher secções de **reforço** ou marcar **N/A** com justificação curta quando o âmbito for sistema grande, reversa ou modernização.
|
|
40
43
|
4. Se `RESEARCH.md` do escopo resolvido não existir, criá-lo com título `# OXE — Índice de pesquisa`, parágrafo introdutório, secção **Histórico** com cabeçalho de tabela e primeira linha.
|
|
41
44
|
5. Se já existir, **atualizar** `RESEARCH.md` do escopo resolvido: nova linha no topo da tabela **Histórico** (mais recente primeiro); opcionalmente atualizar **Última sessão** com link para o ficheiro novo.
|
|
42
|
-
6.
|
|
43
|
-
7.
|
|
44
|
-
8.
|
|
45
|
+
6. Atualizar `INVESTIGATIONS.md` do escopo resolvido com objetivo, fontes, modo, profundidade, conclusão e impacto na trilha. Se não existir, criá-lo.
|
|
46
|
+
7. Ler **`.oxe/SPEC.md`**, **`.oxe/codebase/*`** e código alvo (Glob/Grep/Read) conforme âmbito.
|
|
47
|
+
8. Atualizar **`.oxe/STATE.md`**: nota de fase / próximo passo típico `oxe:plan`, ou `oxe:spec` se faltar contrato, ou `oxe:ui-spec` se o foco for UI antes do plano.
|
|
48
|
+
9. Responder no chat em 5–10 linhas: caminho da nota nova, confirmação de atualização do índice, próximo passo OXE.
|
|
45
49
|
</process>
|
|
46
50
|
|
|
47
51
|
<success_criteria>
|