oxe-cc 1.5.1 → 1.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/AGENTS.md +1 -1
- package/CHANGELOG.md +45 -0
- package/README.md +19 -15
- package/bin/lib/oxe-agent-install.cjs +125 -24
- package/bin/lib/oxe-dashboard.cjs +21 -5
- package/bin/lib/oxe-project-health.cjs +120 -42
- package/bin/lib/oxe-release.cjs +77 -4
- package/bin/oxe-cc.js +155 -78
- package/commands/oxe/debug.md +6 -1
- package/commands/oxe/discuss.md +7 -2
- package/commands/oxe/execute.md +7 -2
- package/commands/oxe/plan-agent.md +7 -2
- package/commands/oxe/plan.md +7 -2
- package/commands/oxe/scan.md +6 -1
- package/commands/oxe/spec.md +6 -1
- package/commands/oxe/verify.md +6 -1
- package/docs/CONTENT-MIGRATION-AUDIT.md +49 -0
- package/docs/RELEASE-READINESS.md +8 -0
- package/docs/RUNTIME-SMOKE-MATRIX.md +9 -2
- package/lib/runtime/compiler/graph-compiler.js +32 -0
- package/lib/runtime/context/context-pack-builder.d.ts +15 -0
- package/lib/runtime/context/context-pack-builder.js +78 -0
- package/lib/runtime/events/catalog.d.ts +1 -1
- package/lib/runtime/events/catalog.js +5 -0
- package/lib/runtime/executor/action-tool-map.d.ts +3 -0
- package/lib/runtime/executor/action-tool-map.js +41 -0
- package/lib/runtime/executor/built-in-tools.d.ts +8 -0
- package/lib/runtime/executor/built-in-tools.js +267 -0
- package/lib/runtime/executor/index.d.ts +6 -0
- package/lib/runtime/executor/index.js +12 -0
- package/lib/runtime/executor/llm-task-executor.d.ts +29 -0
- package/lib/runtime/executor/llm-task-executor.js +138 -0
- package/lib/runtime/executor/node-prompt-builder.d.ts +3 -0
- package/lib/runtime/executor/node-prompt-builder.js +36 -0
- package/lib/runtime/executor/stream-completion.d.ts +38 -0
- package/lib/runtime/executor/stream-completion.js +105 -0
- package/lib/runtime/index.d.ts +1 -0
- package/lib/runtime/index.js +2 -0
- package/lib/runtime/models/failure.d.ts +5 -0
- package/lib/runtime/models/failure.js +2 -0
- package/lib/runtime/plugins/capability-adapter.d.ts +9 -0
- package/lib/runtime/plugins/capability-adapter.js +111 -8
- package/lib/runtime/plugins/plugin-abi.d.ts +8 -0
- package/lib/runtime/plugins/plugin-registry.d.ts +2 -1
- package/lib/runtime/plugins/plugin-registry.js +6 -1
- package/lib/runtime/reducers/run-state-reducer.js +39 -2
- package/lib/runtime/scheduler/scheduler.d.ts +14 -2
- package/lib/runtime/scheduler/scheduler.js +131 -11
- package/lib/runtime/verification/verification-manifest.d.ts +5 -2
- package/lib/sdk/index.cjs +10 -5
- package/lib/sdk/index.d.ts +21 -10
- package/oxe/agents/oxe-assumptions-analyzer.md +136 -0
- package/oxe/agents/oxe-codebase-mapper.md +142 -0
- package/oxe/agents/oxe-debugger.md +145 -0
- package/oxe/agents/oxe-executor.md +139 -0
- package/oxe/agents/oxe-integration-checker.md +142 -0
- package/oxe/agents/oxe-plan-checker.md +143 -0
- package/oxe/agents/oxe-planner.md +151 -0
- package/oxe/agents/oxe-research-synthesizer.md +146 -0
- package/oxe/agents/oxe-researcher.md +163 -0
- package/oxe/agents/oxe-ui-auditor.md +151 -0
- package/oxe/agents/oxe-ui-checker.md +157 -0
- package/oxe/agents/oxe-ui-researcher.md +179 -0
- package/oxe/agents/oxe-validation-auditor.md +154 -0
- package/oxe/agents/oxe-verifier.md +132 -0
- package/oxe/personas/README.md +91 -39
- package/oxe/personas/architect.md +149 -37
- package/oxe/personas/db-specialist.md +149 -36
- package/oxe/personas/debugger.md +155 -38
- package/oxe/personas/executor.md +164 -38
- package/oxe/personas/planner.md +165 -36
- package/oxe/personas/researcher.md +148 -35
- package/oxe/personas/ui-specialist.md +164 -36
- package/oxe/personas/verifier.md +174 -39
- package/oxe/templates/CONFIG.md +3 -3
- package/oxe/templates/EXECUTION-RUNTIME.template.md +1 -1
- package/oxe/templates/FIXTURE-PACK.template.json +29 -22
- package/oxe/templates/FIXTURE-PACK.template.md +20 -11
- package/oxe/templates/IMPLEMENTATION-PACK.template.json +55 -39
- package/oxe/templates/IMPLEMENTATION-PACK.template.md +28 -16
- package/oxe/templates/INVESTIGATION.template.md +38 -38
- package/oxe/templates/PLAN.template.md +63 -32
- package/oxe/templates/REFERENCE-ANCHORS.template.md +18 -14
- package/oxe/templates/RESEARCH.template.md +11 -11
- package/oxe/templates/SPEC.template.md +6 -6
- package/oxe/templates/SUMMARY.template.md +33 -3
- package/oxe/templates/config.template.json +1 -1
- package/oxe/workflows/debug.md +9 -7
- package/oxe/workflows/execute.md +31 -28
- package/oxe/workflows/forensics.md +5 -3
- package/oxe/workflows/milestone.md +12 -12
- package/oxe/workflows/next.md +1 -1
- package/oxe/workflows/plan.md +409 -132
- package/oxe/workflows/references/adaptive-discovery.md +27 -27
- package/oxe/workflows/references/flow-robustness-contract.md +80 -80
- package/oxe/workflows/references/session-path-resolution.md +71 -71
- package/oxe/workflows/references/workflow-runtime-contracts.json +127 -127
- package/oxe/workflows/scan.md +355 -69
- package/oxe/workflows/spec.md +302 -9
- package/oxe/workflows/ui-review.md +5 -4
- package/oxe/workflows/ui-spec.md +4 -3
- package/oxe/workflows/verify.md +12 -9
- package/oxe/workflows/workstream.md +16 -16
- package/package.json +1 -1
- package/packages/runtime/package.json +1 -1
- package/packages/runtime/src/compiler/graph-compiler.ts +40 -0
- package/packages/runtime/src/context/context-pack-builder.ts +80 -0
- package/packages/runtime/src/events/catalog.ts +5 -0
- package/packages/runtime/src/executor/action-tool-map.ts +46 -0
- package/packages/runtime/src/executor/built-in-tools.ts +276 -0
- package/packages/runtime/src/executor/index.ts +6 -0
- package/packages/runtime/src/executor/llm-task-executor.ts +194 -0
- package/packages/runtime/src/executor/node-prompt-builder.ts +45 -0
- package/packages/runtime/src/executor/stream-completion.ts +145 -0
- package/packages/runtime/src/index.ts +3 -0
- package/packages/runtime/src/models/failure.ts +11 -0
- package/packages/runtime/src/plugins/capability-adapter.ts +117 -10
- package/packages/runtime/src/plugins/plugin-abi.ts +9 -0
- package/packages/runtime/src/plugins/plugin-registry.ts +10 -1
- package/packages/runtime/src/reducers/run-state-reducer.ts +59 -2
- package/packages/runtime/src/scheduler/scheduler.ts +152 -14
- package/packages/runtime/src/verification/verification-manifest.ts +12 -8
- package/vscode-extension/oxe-agents-1.6.0.vsix +0 -0
- package/vscode-extension/oxe-agents-1.7.0.vsix +0 -0
- package/vscode-extension/package.json +1 -1
package/oxe/workflows/plan.md
CHANGED
|
@@ -1,83 +1,87 @@
|
|
|
1
1
|
# OXE — Workflow: plan
|
|
2
2
|
|
|
3
|
-
<objective>
|
|
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
|
-
|
|
6
|
-
Além do `PLAN.md`, este passo deve gerar no mesmo escopo resolvido da sessão os artefatos racionais de execução:
|
|
7
|
-
- `.oxe/IMPLEMENTATION-PACK.md`
|
|
8
|
-
- `.oxe/IMPLEMENTATION-PACK.json`
|
|
9
|
-
- `.oxe/REFERENCE-ANCHORS.md`
|
|
10
|
-
- `.oxe/FIXTURE-PACK.md`
|
|
11
|
-
- `.oxe/FIXTURE-PACK.json`
|
|
12
|
-
|
|
13
|
-
Esses artefatos são obrigatórios para considerar o plano executável. Quando algo não se aplicar, marcar explicitamente `not_applicable`; nunca omitir o arquivo.
|
|
14
|
-
|
|
15
|
-
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).
|
|
16
|
-
|
|
17
|
-
Se o usuário pedir **--replan** (ou replanejamento implícito após `verify_failed`):
|
|
18
|
-
- Ler `VERIFY.md` e `SUMMARY.md` do escopo resolvido, e o `PLAN.md` atual.
|
|
19
|
-
- 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.
|
|
20
|
-
- 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).
|
|
21
|
-
</objective>
|
|
22
|
-
|
|
23
|
-
<execution_rational_artifacts>
|
|
24
|
-
## Artefatos racionais obrigatórios
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
- **não**
|
|
68
|
-
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
-
|
|
3
|
+
<objective>
|
|
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
|
+
|
|
6
|
+
Além do `PLAN.md`, este passo deve gerar no mesmo escopo resolvido da sessão os artefatos racionais de execução:
|
|
7
|
+
- `.oxe/IMPLEMENTATION-PACK.md`
|
|
8
|
+
- `.oxe/IMPLEMENTATION-PACK.json`
|
|
9
|
+
- `.oxe/REFERENCE-ANCHORS.md`
|
|
10
|
+
- `.oxe/FIXTURE-PACK.md`
|
|
11
|
+
- `.oxe/FIXTURE-PACK.json`
|
|
12
|
+
|
|
13
|
+
Esses artefatos são obrigatórios para considerar o plano executável. Quando algo não se aplicar, marcar explicitamente `not_applicable`; nunca omitir o arquivo.
|
|
14
|
+
|
|
15
|
+
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).
|
|
16
|
+
|
|
17
|
+
Se o usuário pedir **--replan** (ou replanejamento implícito após `verify_failed`):
|
|
18
|
+
- Ler `VERIFY.md` e `SUMMARY.md` do escopo resolvido, e o `PLAN.md` atual.
|
|
19
|
+
- 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.
|
|
20
|
+
- 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).
|
|
21
|
+
</objective>
|
|
22
|
+
|
|
23
|
+
<execution_rational_artifacts>
|
|
24
|
+
## Artefatos racionais obrigatórios
|
|
25
|
+
|
|
26
|
+
Quando o plano tiver múltiplos domínios, usar os agentes especializados OXE como referência de qualidade: `oxe-planner`, `oxe-plan-checker`, `oxe-codebase-mapper`, `oxe-assumptions-analyzer`, `oxe-researcher`, `oxe-ui-checker` e `oxe-validation-auditor`. Eles não substituem o workflow; apenas ajudam a fechar evidência, contratos e gaps antes da execução.
|
|
27
|
+
|
|
28
|
+
### IMPLEMENTATION-PACK
|
|
29
|
+
Contrato de implementação por tarefa `Tn`, com:
|
|
30
|
+
- caminhos exatos dos arquivos alvo, sem `...` e sem "arquivos prováveis" vagos;
|
|
31
|
+
- symbols alvo (classe, função, método, listener, builder, config, migration);
|
|
32
|
+
- assinatura/shape de entrada e saída;
|
|
33
|
+
- dependências, invariantes, `not_allowed`, `write_set`, `expected_checks` e `requires_fixture`;
|
|
34
|
+
- snippets somente quando ancorados em evidência local ou materializada.
|
|
35
|
+
- sequência mínima de implementação, rollback/contensão para risco high/critical e imports/dependências obrigatórias.
|
|
36
|
+
|
|
37
|
+
### REFERENCE-ANCHORS
|
|
38
|
+
Materializa referências críticas que hoje ficam frouxas no plano:
|
|
39
|
+
- predecessor, layout, contrato externo ou `external-ref`;
|
|
40
|
+
- origem local ou materializada em `.oxe/investigations/externals/`;
|
|
41
|
+
- `source_ref`, `path`, `relevance`, `action`, `summary`, `status`;
|
|
42
|
+
- estados válidos: `resolved`, `missing`, `stale`, `conflicting`, `not_applicable`.
|
|
43
|
+
|
|
44
|
+
### FIXTURE-PACK
|
|
45
|
+
Fixtures mínimos por fluxo/tarefa de risco:
|
|
46
|
+
- payloads, arquivos exemplo, trechos significativos, offsets/campos críticos;
|
|
47
|
+
- expected outputs ou checks parciais/completos;
|
|
48
|
+
- queries/checks de validação e smoke commands.
|
|
49
|
+
- negative cases mínimos para validação de erro, limite ou regressão principal.
|
|
50
|
+
|
|
51
|
+
Regra de readiness:
|
|
52
|
+
- `IMPLEMENTATION-PACK` precisa estar `ready`;
|
|
53
|
+
- `REFERENCE-ANCHORS` não pode ter âncora crítica em `missing|stale|conflicting`;
|
|
54
|
+
- `FIXTURE-PACK` é obrigatório para tarefas mutáveis com parser/layout/integração/transformação/fila/migração/builder;
|
|
55
|
+
- qualquer `critical_gap` aberto derruba a prontidão executável do plano.
|
|
56
|
+
</execution_rational_artifacts>
|
|
57
|
+
|
|
58
|
+
<plan_iteration_contract>
|
|
59
|
+
## Contrato de iteração do plano
|
|
60
|
+
|
|
61
|
+
Quando já existir `PLAN.md` no escopo resolvido, a regra do OXE é esta:
|
|
62
|
+
|
|
63
|
+
1. **Mesmo escopo e mesma spec, mas o usuário quer refinar o plano**:
|
|
64
|
+
- tratar uma nova chamada de `/oxe-plan` como **replan implícito**, mesmo sem `--replan`;
|
|
65
|
+
- preservar histórico útil e preencher a seção **Replanejamento**.
|
|
66
|
+
2. **A estratégia técnica mudou** (arquitetura, tradeoff, sequencing, decisão de implementação, boundary entre componentes):
|
|
67
|
+
- **não** reescrever o plano como se fosse só refinamento;
|
|
68
|
+
- orientar ou executar `discuss` antes do novo plano;
|
|
69
|
+
- depois voltar a `plan` em modo de replanejamento.
|
|
70
|
+
3. **O escopo mudou** (requisitos, critérios A*, prioridade, corte de entrega, aceite, roadmap):
|
|
71
|
+
- **não** tratar como replan simples;
|
|
72
|
+
- voltar para `spec` antes de gerar novo plano.
|
|
73
|
+
4. **Regra de precedência**:
|
|
74
|
+
- mudança de escopo → `spec`
|
|
75
|
+
- mudança de estratégia → `discuss`
|
|
76
|
+
- mudança de decomposição/ordem/risco/validação mantendo o mesmo escopo → `plan --replan`
|
|
77
|
+
|
|
78
|
+
Resumo operacional:
|
|
79
|
+
- `/oxe-plan` repetido até o usuário ficar satisfeito é válido, mas, se já houver `PLAN.md`, isso deve ser tratado como **replan implícito** por padrão.
|
|
80
|
+
- O agente só deve continuar refinando o plano na mesma trilha quando os requisitos e critérios da `SPEC.md` permanecerem válidos.
|
|
81
|
+
</plan_iteration_contract>
|
|
82
|
+
|
|
83
|
+
<context>
|
|
84
|
+
- Aplicar `oxe/workflows/references/reasoning-planning.md` como contrato deste passo. O `PLAN.md` deve sair decision-complete e não deixar decisões relevantes para a execução.
|
|
81
85
|
- 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.
|
|
82
86
|
- 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/`.
|
|
83
87
|
- Antes do scan amplo, carregar `.oxe/context/packs/plan.md` e `.oxe/context/packs/plan.json` como entrada prioritária do contexto do passo.
|
|
@@ -152,11 +156,11 @@ Depois do resumo e antes das tarefas, o `PLAN.md` deve conter também:
|
|
|
152
156
|
| Clareza da validação / testes | 15 |
|
|
153
157
|
| Lacunas externas / decisões pendentes | 10 |
|
|
154
158
|
|
|
155
|
-
**Faixas semânticas obrigatórias:**
|
|
156
|
-
- `91–100%` → pronto para executar
|
|
157
|
-
- `80–90%` → plano racional, mas ainda não executável
|
|
158
|
-
- `50–79%` → precisa refino antes de execução
|
|
159
|
-
- `<50%` → não executar
|
|
159
|
+
**Faixas semânticas obrigatórias:**
|
|
160
|
+
- `91–100%` → pronto para executar
|
|
161
|
+
- `80–90%` → plano racional, mas ainda não executável
|
|
162
|
+
- `50–79%` → precisa refino antes de execução
|
|
163
|
+
- `<50%` → não executar
|
|
160
164
|
|
|
161
165
|
**Entradas obrigatórias da confiança:**
|
|
162
166
|
- usar as incertezas estruturadas da SPEC e as investigações concluídas como base direta da rubrica;
|
|
@@ -171,15 +175,288 @@ Depois do resumo e antes das tarefas, o `PLAN.md` deve conter também:
|
|
|
171
175
|
| `L` | < 1 dia, múltiplos componentes | Verificar que Verificar é específico |
|
|
172
176
|
| `XL` | > 1 dia, impacto arquitetural | **Gate: deve ser quebrada em sub-tarefas ou ter justificativa** |
|
|
173
177
|
|
|
174
|
-
**Princípio test-first:** escreva o `Verificar` antes de escrever o `Implementar`. A pergunta é: "Como saberei que está pronto?" — a resposta define o target; `Implementar` é o caminho mínimo até esse target.
|
|
175
|
-
|
|
176
|
-
**Contrato racional por tarefa:** se a tarefa for mutável ou tecnicamente relevante, o `PLAN.md` sozinho não basta. O `IMPLEMENTATION-PACK` deve fechar o write-set, os symbols e os checks; o `REFERENCE-ANCHORS` deve materializar evidência externa; o `FIXTURE-PACK` deve reduzir improviso em parsing/integração/transformação.
|
|
178
|
+
**Princípio test-first:** escreva o `Verificar` antes de escrever o `Implementar`. A pergunta é: "Como saberei que está pronto?" — a resposta define o target; `Implementar` é o caminho mínimo até esse target.
|
|
179
|
+
|
|
180
|
+
**Contrato racional por tarefa:** se a tarefa for mutável ou tecnicamente relevante, o `PLAN.md` sozinho não basta. O `IMPLEMENTATION-PACK` deve fechar o write-set, os symbols e os checks; o `REFERENCE-ANCHORS` deve materializar evidência externa; o `FIXTURE-PACK` deve reduzir improviso em parsing/integração/transformação.
|
|
177
181
|
|
|
178
182
|
**Projetos sem suíte de testes única (legado):** o bloco **Verificar** pode usar `Comando: —` e **Manual** com Grep, leitura de paths ou checklist — ver exemplos em **`oxe/workflows/references/legacy-brownfield.md`**. Todo critério **A*** da SPEC deve aparecer em **Aceite vinculado** de alguma tarefa ou como gap explícito.
|
|
179
183
|
|
|
180
184
|
**Comparativo host ↔ cliente (migração / paridade):** pode-se dedicar tarefas a produzir ou atualizar uma **matriz Markdown** (classificações: equivalente / implementação diferente / só host / só cliente) com colunas de artefactos reais no repo — ver secção *Molde de comparativo* em **`oxe/workflows/references/legacy-brownfield.md`**. Cada **Tn** deve manter **Aceite vinculado** aos **A*** que essa matriz satisfaz.
|
|
181
185
|
</format_plan>
|
|
182
186
|
|
|
187
|
+
<executor_node_contract>
|
|
188
|
+
## Contrato executor — mapeamento tarefa → GraphNode
|
|
189
|
+
|
|
190
|
+
Cada tarefa `Tn` do `PLAN.md` pode ser executada pelo `LlmTaskExecutor` quando convertida em `GraphNode`. O planejador deve pensar em cada tarefa já com essa estrutura em mente para garantir executabilidade direta.
|
|
191
|
+
|
|
192
|
+
### Campos do GraphNode que o plano deve alimentar
|
|
193
|
+
|
|
194
|
+
| Campo do GraphNode | Equivalente no PLAN.md |
|
|
195
|
+
|--------------------|------------------------|
|
|
196
|
+
| `id` | ID da tarefa (ex.: `T3`) |
|
|
197
|
+
| `title` | Título da tarefa |
|
|
198
|
+
| `mutation_scope` | Arquivos que serão modificados (em **Arquivos prováveis**) |
|
|
199
|
+
| `actions[].type` | Tipo de ação (derivado de **Implementar**) |
|
|
200
|
+
| `verify.must_pass` | Critérios de aceite (de **Verificar** + **Aceite vinculado**) |
|
|
201
|
+
| `verify.command` | Comando em **Verificar → Comando:** |
|
|
202
|
+
| `depends_on` | IDs em **Depende de:** |
|
|
203
|
+
|
|
204
|
+
### Catálogo de `action_type`
|
|
205
|
+
|
|
206
|
+
Ao escrever o campo **Implementar** de cada tarefa, classificar a ação principal:
|
|
207
|
+
|
|
208
|
+
| `action_type` | Quando usar | Tools disponíveis no executor |
|
|
209
|
+
|---------------|-------------|-------------------------------|
|
|
210
|
+
| `read_code` | Ler, mapear, investigar sem nenhuma mutação | `read_file`, `glob`, `grep` |
|
|
211
|
+
| `generate_patch` | Criar ou modificar arquivos de código | `read_file`, `write_file`, `patch_file` |
|
|
212
|
+
| `run_tests` | Executar suite de testes | `run_command` |
|
|
213
|
+
| `run_lint` | Executar linter, type-check ou análise estática | `run_command` |
|
|
214
|
+
| `collect_evidence` | Coletar artefatos, logs, relatórios | `read_file`, `glob`, `run_command` |
|
|
215
|
+
| `custom` | Combinação arbitrária ou não classificável | todas as tools |
|
|
216
|
+
|
|
217
|
+
**Regra:** tarefas de investigação/leitura devem usar `read_code` ou `collect_evidence`. Tarefas de codificação usam `generate_patch`. Nunca usar `custom` quando uma ação mais específica for suficiente — `custom` desativa otimizações de paralelismo.
|
|
218
|
+
|
|
219
|
+
### `mutation_scope` e idempotência no scheduler
|
|
220
|
+
|
|
221
|
+
O campo `mutation_scope` lista os arquivos que **serão criados ou modificados**. Ele define:
|
|
222
|
+
1. Se a tarefa pode rodar em paralelo com outras (sem mutation_scope = idempotente = segura)
|
|
223
|
+
2. Quais arquivos o executor tem permissão de escrever
|
|
224
|
+
3. O escopo de rollback em caso de falha
|
|
225
|
+
|
|
226
|
+
**Regras de mutation_scope para ondas:**
|
|
227
|
+
- Tarefas de leitura/investigação: `mutation_scope: []` → podem estar na mesma onda sem conflito
|
|
228
|
+
- Tarefas de escrita com arquivos **disjuntos**: podem estar na mesma onda em paralelo
|
|
229
|
+
- Tarefas de escrita com **algum arquivo em comum**: obrigatoriamente em ondas separadas
|
|
230
|
+
- Tarefas que executam comandos com side effects (migrations, deploys): sempre em série, onda própria
|
|
231
|
+
|
|
232
|
+
**Exemplo de particionamento correto:**
|
|
233
|
+
```
|
|
234
|
+
T1 — Criar entidade User mutation_scope: [src/users/user.entity.ts] → Onda 1
|
|
235
|
+
T2 — Criar entidade Order mutation_scope: [src/orders/order.entity.ts] → Onda 1 (paralelo)
|
|
236
|
+
T3 — Criar migration inicial mutation_scope: [src/migrations/001-init.ts] → Onda 2 (depende T1, T2)
|
|
237
|
+
T4 — Executar migration mutation_scope: [] (side effect: banco) → Onda 3, serial
|
|
238
|
+
T5 — Rodar suite de testes mutation_scope: [] (idempotente) → Onda 4
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Verificar como critério executável pelo agente
|
|
242
|
+
|
|
243
|
+
O campo **Verificar → Comando:** deve ser:
|
|
244
|
+
- Executável no ambiente do agente sem input interativo
|
|
245
|
+
- Determinístico: mesmo input → mesmo resultado
|
|
246
|
+
- Rápido o suficiente para feedback em tempo real (< 60s preferível)
|
|
247
|
+
|
|
248
|
+
Se o comando não for possível no agente (ex.: requer browser ou acesso manual), usar **Verificar → Manual:** com checklist de passos observáveis. Nunca deixar **Verificar** vazio em tarefa mutável.
|
|
249
|
+
</executor_node_contract>
|
|
250
|
+
|
|
251
|
+
<wave_design_patterns>
|
|
252
|
+
## Padrões de design de ondas
|
|
253
|
+
|
|
254
|
+
Ondas definem a ordem de execução e o nível de paralelismo. Use estes padrões como referência ao estruturar o plano.
|
|
255
|
+
|
|
256
|
+
### Padrão 1: Foundation → Core → Integration → Validation
|
|
257
|
+
|
|
258
|
+
O padrão mais comum para features novas de um único domínio:
|
|
259
|
+
|
|
260
|
+
```
|
|
261
|
+
Onda 1 — Foundation (sem dependências entre si, mutation_scope disjuntos):
|
|
262
|
+
T1 — Definir tipos e interfaces
|
|
263
|
+
T2 — Criar entidades / models
|
|
264
|
+
T3 — Criar schemas de validação
|
|
265
|
+
|
|
266
|
+
Onda 2 — Core (dependem da Onda 1):
|
|
267
|
+
T4 — Implementar serviço principal
|
|
268
|
+
T5 — Implementar repositório
|
|
269
|
+
T6 — Criar testes unitários do serviço
|
|
270
|
+
|
|
271
|
+
Onda 3 — Integration (dependem da Onda 2):
|
|
272
|
+
T7 — Criar controller / handler
|
|
273
|
+
T8 — Adicionar rota / endpoint
|
|
274
|
+
T9 — Criar testes de integração
|
|
275
|
+
|
|
276
|
+
Onda 4 — Validation (depende de tudo):
|
|
277
|
+
T10 — Executar suite de testes completa
|
|
278
|
+
T11 — Verificar tipagem (typecheck)
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### Padrão 2: Migration-safe (mudanças de schema)
|
|
282
|
+
|
|
283
|
+
Para mudanças que envolvem banco de dados com dados existentes:
|
|
284
|
+
|
|
285
|
+
```
|
|
286
|
+
Onda 1 — Schema prep (reversível, aditivo apenas):
|
|
287
|
+
T1 — Criar migration de schema (ADD COLUMN nullable ou com default)
|
|
288
|
+
T2 — Criar / atualizar types e DTOs
|
|
289
|
+
|
|
290
|
+
Onda 2 — Code adaptation (código adaptado ao novo schema):
|
|
291
|
+
T3 — Atualizar repositório para usar novos campos
|
|
292
|
+
T4 — Atualizar testes para o novo schema
|
|
293
|
+
|
|
294
|
+
Onda 3 — Gate + Execute:
|
|
295
|
+
T5 — [GATE HUMANO: revisar migration antes de aplicar em staging]
|
|
296
|
+
T6 — Executar migration em staging
|
|
297
|
+
T7 — Validar dados migrados (query de verificação)
|
|
298
|
+
|
|
299
|
+
Onda 4 — Cleanup (após validação aprovada):
|
|
300
|
+
T8 — Remover código de compatibilidade legado
|
|
301
|
+
T9 — Rodar suite completa contra staging
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Padrão 3: Refactor incremental (sem quebrar o sistema)
|
|
305
|
+
|
|
306
|
+
Para refatorações que não podem causar regressão:
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
Onda 1 — Nova interface ao lado da antiga (strangler fig):
|
|
310
|
+
T1 — Criar nova abstração / interface
|
|
311
|
+
T2 — Criar testes para nova interface (TDD)
|
|
312
|
+
|
|
313
|
+
Onda 2 — Migração parcial (módulo a módulo, paralela):
|
|
314
|
+
T3 — Migrar módulo A para nova interface
|
|
315
|
+
T4 — Migrar módulo B para nova interface
|
|
316
|
+
(paralelas se mutation_scope disjuntos)
|
|
317
|
+
|
|
318
|
+
Onda 3 — Cutover:
|
|
319
|
+
T5 — Remover interface antiga
|
|
320
|
+
T6 — Verificar que nenhum ponto usa a interface removida (grep)
|
|
321
|
+
|
|
322
|
+
Onda 4 — Validação final:
|
|
323
|
+
T7 — Rodar suite completa
|
|
324
|
+
T8 — Verificar cobertura de testes
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### Padrão 4: Investigação → Gate → Execução
|
|
328
|
+
|
|
329
|
+
Para mudanças em código desconhecido ou de alto risco:
|
|
330
|
+
|
|
331
|
+
```
|
|
332
|
+
Onda 1 — Investigação (idempotente, action_type: read_code/collect_evidence):
|
|
333
|
+
T1 — Mapear arquivos afetados (read_code)
|
|
334
|
+
T2 — Verificar testes existentes (collect_evidence)
|
|
335
|
+
T3 — Analisar dependências transitivas (read_code)
|
|
336
|
+
|
|
337
|
+
Onda 2 — Gate humano:
|
|
338
|
+
T4 — [GATE: revisar findings de T1-T3 antes de executar qualquer mutação]
|
|
339
|
+
|
|
340
|
+
Onda 3 — Execução (baseada nos findings):
|
|
341
|
+
T5 — Implementar mudança A
|
|
342
|
+
T6 — Implementar mudança B
|
|
343
|
+
T7 — Rodar testes de regressão
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### Regras universais de onda
|
|
347
|
+
|
|
348
|
+
1. **Sem dependência circular:** T2→T3→T2 é inválido; quebrar em sub-tarefas ou redesenhar.
|
|
349
|
+
2. **Onda não pode ter tarefas com mutation_scope em comum** — separar em ondas distintas.
|
|
350
|
+
3. **Gates humanos são tarefas explícitas:** aprovação humana = tarefa `T-GATE` que bloqueia a onda seguinte.
|
|
351
|
+
4. **Onda de validação sempre ao final:** o último grupo de tarefas deve incluir `run_tests` ou `run_lint`.
|
|
352
|
+
5. **Respeitar `plan_max_tasks_per_wave`** da config (default: ilimitado) — se configurado, dividir em mais ondas.
|
|
353
|
+
6. **Ondas sem tarefas são inválidas** — verificar que cada número de onda tem pelo menos uma tarefa (gate 4 do quality gate).
|
|
354
|
+
</wave_design_patterns>
|
|
355
|
+
|
|
356
|
+
<task_granularity_rubric>
|
|
357
|
+
## Rubrica de granularidade de tarefas
|
|
358
|
+
|
|
359
|
+
### O que define uma boa tarefa
|
|
360
|
+
|
|
361
|
+
| Dimensão | Boa tarefa | Tarefa problemática |
|
|
362
|
+
|----------|------------|---------------------|
|
|
363
|
+
| **Escopo** | 1-3 arquivos com propósito coeso | "Implementar o módulo inteiro" |
|
|
364
|
+
| **Verificação** | Comando único que passa/falha deterministicamente | "Verificar manualmente se funciona" |
|
|
365
|
+
| **Dependências** | 0-2 dependências explícitas | Cadeia de 5+ em série |
|
|
366
|
+
| **Tempo** | < 2h de trabalho focado | "Será rápido mas depende do ambiente" |
|
|
367
|
+
| **Reversibilidade** | Pode ser revertida sem afetar outras tarefas | Mudança destrutiva sem rollback |
|
|
368
|
+
| **Ação dominante** | Um único `action_type` cobre 80%+ do trabalho | Mistura de leitura, escrita e execução sem sequência clara |
|
|
369
|
+
|
|
370
|
+
### Tamanhos de referência
|
|
371
|
+
|
|
372
|
+
| Complexidade | Escopo típico | `action_type` típico | Verificar típico | Exemplos |
|
|
373
|
+
|-------------|---------------|----------------------|-----------------|---------|
|
|
374
|
+
| `S` | 1-2 arquivos, mudança localizada | `generate_patch` | `npm test -- auth` | Adicionar campo em DTO; corrigir tipo; nova constante |
|
|
375
|
+
| `M` | 2-5 arquivos, feature pequena | `generate_patch` + `run_tests` | `npm test -- users` | Novo endpoint CRUD; nova migration + model; novo middleware |
|
|
376
|
+
| `L` | 5-10 arquivos, feature completa | múltiplos | `npm test` (suite) | Sistema de auth; módulo de relatórios; integração com terceiro |
|
|
377
|
+
| `XL` | > 10 arquivos, ou impacto arquitetural | múltiplos | Múltiplos comandos + manual | Migração de banco; refactor de módulo core; nova infra |
|
|
378
|
+
|
|
379
|
+
### Sinais de que uma tarefa deve ser quebrada (XL obrigatório)
|
|
380
|
+
|
|
381
|
+
- `mutation_scope` com mais de 5 arquivos distintos sem relação direta
|
|
382
|
+
- **Verificar** tem 2+ comandos distintos que devem **todos** passar
|
|
383
|
+
- **Implementar** tem 3+ etapas com lógica condicional entre elas
|
|
384
|
+
- A tarefa envolve banco de dados **e** código **e** infraestrutura ao mesmo tempo
|
|
385
|
+
- A tarefa toca área listada em CONCERNS com impacto `high`/`critical` sem contenção explícita
|
|
386
|
+
|
|
387
|
+
**Quando a tarefa XL não pode ser quebrada:** exigir sub-tarefas Tn.1, Tn.2, … como bullets dentro da tarefa, ou justificativa explícita de por que não pode ser dividida. Sem sub-tarefas e sem justificativa = falha do quality gate (item 8).
|
|
388
|
+
|
|
389
|
+
### Tarefas de investigação (action_type: read_code / collect_evidence)
|
|
390
|
+
|
|
391
|
+
Tarefas de investigação são sempre `S` ou `M` — não escrevem código. Devem:
|
|
392
|
+
- Produzir um artefato observável (ex.: lista de arquivos afetados em OBSERVATIONS.md)
|
|
393
|
+
- Ter verificação por leitura (agente confirma que o artefato foi criado e tem conteúdo)
|
|
394
|
+
- Estar na Onda 1 (sem dependências, idempotentes, paralelas entre si)
|
|
395
|
+
- Nunca bloquear ondas de execução sem um gate de revisão explícito antes
|
|
396
|
+
|
|
397
|
+
### Anti-padrões de granularidade
|
|
398
|
+
|
|
399
|
+
| Anti-padrão | Por quê é ruim | Solução |
|
|
400
|
+
|-------------|----------------|---------|
|
|
401
|
+
| "Implementar tudo em T1" | XL sem sub-tarefas = sem plano real | Quebrar em S/M |
|
|
402
|
+
| "T2 faz o mesmo que T1 mas melhor" | Redundância sem distinção | Merge ou eliminar |
|
|
403
|
+
| "T5 depende de T1, T2, T3, T4" | Cadeia serial = bottleneck total | Verificar se todas as deps são reais |
|
|
404
|
+
| "Verificar: rodar o sistema e ver se funciona" | Não determinístico, não automatizável | Especificar comando exato |
|
|
405
|
+
| Tarefa `S` com mutation_scope de 10 arquivos | Inconsistente — complexidade subestimada | Elevar para `M` ou `L` |
|
|
406
|
+
</task_granularity_rubric>
|
|
407
|
+
|
|
408
|
+
<plan_anti_patterns>
|
|
409
|
+
## Anti-padrões de planejamento
|
|
410
|
+
|
|
411
|
+
### Decisão adiada para a execução
|
|
412
|
+
|
|
413
|
+
**Problema:** "A implementação de T3 dependerá do que T2 decidir sobre a estrutura de dados."
|
|
414
|
+
**Por quê é ruim:** o executor (humano ou `LlmTaskExecutor`) não tem contexto para tomar decisões de design no meio da execução. Decisões abertas viram improviso.
|
|
415
|
+
**Solução:** tomar a decisão antes de finalizar o plano. Se a decisão for complexa, criar tarefa de `read_code` na Onda 1 + gate humano, ou executar `oxe:discuss` antes.
|
|
416
|
+
|
|
417
|
+
### Verificar escrito depois de Implementar
|
|
418
|
+
|
|
419
|
+
**Problema:** escrever primeiro o que fazer e só depois como verificar.
|
|
420
|
+
**Por quê é ruim:** o executor não sabe o que "pronto" significa até o final — o trabalho pode ir na direção errada.
|
|
421
|
+
**Solução:** o campo **Verificar** deve preceder **Implementar** no texto. A pergunta é "como saberei que está pronto?" — a resposta define o target; **Implementar** é o caminho mínimo até esse target. (Ver também gate item 9.)
|
|
422
|
+
|
|
423
|
+
### Acoplamento de ondas desnecessário
|
|
424
|
+
|
|
425
|
+
**Problema:** T4 depende de T3 que depende de T2 que depende de T1 — toda a feature em série.
|
|
426
|
+
**Por quê é ruim:** impossibilita paralelismo; um atraso em T1 atrasa tudo; tempo de execução total aumenta linearmente.
|
|
427
|
+
**Solução:** verificar se cada dependência é real. T1 e T2 com `mutation_scope` disjuntos podem rodar em paralelo na mesma onda.
|
|
428
|
+
|
|
429
|
+
### mutation_scope vazio em tarefa de escrita
|
|
430
|
+
|
|
431
|
+
**Problema:** tarefa com `action_type: generate_patch` sem listar os arquivos afetados em **Arquivos prováveis**.
|
|
432
|
+
**Por quê é ruim:** o executor não sabe o que tem permissão de escrever; pode escrever nos arquivos errados ou duplicar código.
|
|
433
|
+
**Solução:** todo `generate_patch` deve ter `mutation_scope` com pelo menos 1 arquivo. Se o arquivo ainda não existe, listar o path planejado.
|
|
434
|
+
|
|
435
|
+
### Confiança > 90% sem artefatos racionais íntegros
|
|
436
|
+
|
|
437
|
+
**Problema:** declarar `Confiança: 95%` sem `IMPLEMENTATION-PACK`, `REFERENCE-ANCHORS` e `FIXTURE-PACK` completos.
|
|
438
|
+
**Por quê é ruim:** confiança sem evidência é otimismo sem base — o quality gate item 19 falha explicitamente.
|
|
439
|
+
**Solução:** reduzir para ≤ 90% até os três artefatos racionais estarem íntegros e sem `critical_gap` aberto.
|
|
440
|
+
|
|
441
|
+
### Risco sem contenção
|
|
442
|
+
|
|
443
|
+
**Problema:** tarefa de migration, mudança de auth, ou alteração de contrato público sem rollback ou fallback explícito.
|
|
444
|
+
**Por quê é ruim:** falha em produção sem plano de recuperação = incident sem saída clara.
|
|
445
|
+
**Solução:** toda tarefa de risco `high`/`critical` deve ter contenção em **Implementar**: ex.: "fazer backup da tabela antes da migration", "manter endpoint legado por uma versão". Ver quality gate item 13.
|
|
446
|
+
|
|
447
|
+
### "Tarefa de revisão final" no plano
|
|
448
|
+
|
|
449
|
+
**Problema:** última tarefa do plano é "revisar tudo e garantir que está correto".
|
|
450
|
+
**Por quê é ruim:** revisão final sem critério objetivo é o ciclo `verify`, não o `plan`. O plano termina com `run_tests`, não com inspeção manual aberta.
|
|
451
|
+
**Solução:** mover revisão manual para o fluxo `oxe:verify`. O plano termina com uma tarefa de `run_tests` ou `run_lint` determinística.
|
|
452
|
+
|
|
453
|
+
### Tarefa sem rastreabilidade de entrada
|
|
454
|
+
|
|
455
|
+
**Problema:** `T7 — Adicionar campo de auditoria` sem referência à SPEC, DISCUSS, OBS ou CONCERNS que a originou.
|
|
456
|
+
**Por quê é ruim:** o quality gate item 12 falha; a tarefa parece inventada sem evidência.
|
|
457
|
+
**Solução:** toda tarefa deve ter origem observável: `Aceite vinculado: A5` ou `Decisão vinculada: D-03` ou uma nota inline referenciando CONCERNS/OBS.
|
|
458
|
+
</plan_anti_patterns>
|
|
459
|
+
|
|
183
460
|
<plan_quality_gate>
|
|
184
461
|
Antes de finalizar a resposta ao utilizador, o agente **deve** percorrer este gate sobre o `PLAN.md` já escrito; se falhar, **corrigir o PLAN** na mesma sessão.
|
|
185
462
|
|
|
@@ -192,70 +469,70 @@ Antes de finalizar a resposta ao utilizador, o agente **deve** percorrer este ga
|
|
|
192
469
|
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.
|
|
193
470
|
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.
|
|
194
471
|
9. **Test-first:** em toda tarefa, `Verificar` deve preceder `Implementar` no texto. Se a ordem estiver invertida, corrigir antes de finalizar.
|
|
195
|
-
10. **Autoavaliação presente:** o `PLAN.md` contém `## Autoavaliação do Plano`, `Melhor plano atual`, `Confiança`, rubrica completa, bloco `<confidence_vector>` coerente e `Condição para replanejar`.
|
|
196
|
-
11. **Calibração de execução:** se `Melhor plano atual: não`, se a autoavaliação estiver estruturalmente incompleta, ou se `Confiança <= limiar configurado`, o plano não pode recomendar execução direta; deve recomendar refino, discuss ou research.
|
|
472
|
+
10. **Autoavaliação presente:** o `PLAN.md` contém `## Autoavaliação do Plano`, `Melhor plano atual`, `Confiança`, rubrica completa, bloco `<confidence_vector>` coerente e `Condição para replanejar`.
|
|
473
|
+
11. **Calibração de execução:** se `Melhor plano atual: não`, se a autoavaliação estiver estruturalmente incompleta, ou se `Confiança <= limiar configurado`, o plano não pode recomendar execução direta; deve recomendar refino, discuss ou research.
|
|
197
474
|
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.
|
|
198
|
-
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.
|
|
199
|
-
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 -->`).
|
|
200
|
-
15. **Contexto estruturado:** se houver pack do workflow `plan`, as lacunas e conflitos críticos do pack aparecem na autoavaliação do plano ou são explicitamente dados como resolvidos durante a leitura direta.
|
|
201
|
-
16. **Implementation contract:** toda tarefa mutável deve aparecer em `IMPLEMENTATION-PACK.json` com `exact_paths`, `symbols`, `contracts`, `write_set: "closed"`, `expected_checks` e `ready: true`. Path com `...`, símbolo indefinido ou contrato ausente = falha do gate.
|
|
202
|
-
17. **Reference anchors:** toda referência `external-ref`, "copiar do predecessor", "usar layout X" ou equivalente deve aparecer em `REFERENCE-ANCHORS.md` com `status: resolved`. Âncora crítica em `missing|stale|conflicting` = falha do gate.
|
|
203
|
-
18. **Fixture coverage:** toda tarefa de parser/layout/integração/transformação/fila/migração/builder deve ter fixture `ready` em `FIXTURE-PACK.json`, salvo `not_applicable` explicitamente justificado. Ausência de fixture em tarefa de risco = falha do gate.
|
|
204
|
-
19. **Confiança > 90 de verdade:** `Confiança > 90%` só é válida se `IMPLEMENTATION-PACK`, `REFERENCE-ANCHORS` e `FIXTURE-PACK` estiverem íntegros e sem `critical_gap` aberto. Caso contrário, reduzir a confiança para `<= 90%` e recomendar refino.
|
|
205
|
-
|
|
206
|
-
Se após correções estruturais persistir ambiguidade de produto: **uma** frase recomendando `oxe:discuss` ou `oxe:spec`.
|
|
475
|
+
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.
|
|
476
|
+
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 -->`).
|
|
477
|
+
15. **Contexto estruturado:** se houver pack do workflow `plan`, as lacunas e conflitos críticos do pack aparecem na autoavaliação do plano ou são explicitamente dados como resolvidos durante a leitura direta.
|
|
478
|
+
16. **Implementation contract:** toda tarefa mutável deve aparecer em `IMPLEMENTATION-PACK.json` com `exact_paths`, `symbols`, `contracts`, `write_set: "closed"`, `expected_checks` e `ready: true`. Path com `...`, símbolo indefinido ou contrato ausente = falha do gate.
|
|
479
|
+
17. **Reference anchors:** toda referência `external-ref`, "copiar do predecessor", "usar layout X" ou equivalente deve aparecer em `REFERENCE-ANCHORS.md` com `status: resolved`. Âncora crítica em `missing|stale|conflicting` = falha do gate.
|
|
480
|
+
18. **Fixture coverage:** toda tarefa de parser/layout/integração/transformação/fila/migração/builder deve ter fixture `ready` em `FIXTURE-PACK.json`, salvo `not_applicable` explicitamente justificado. Ausência de fixture em tarefa de risco = falha do gate.
|
|
481
|
+
19. **Confiança > 90 de verdade:** `Confiança > 90%` só é válida se `IMPLEMENTATION-PACK`, `REFERENCE-ANCHORS` e `FIXTURE-PACK` estiverem íntegros e sem `critical_gap` aberto. Caso contrário, reduzir a confiança para `<= 90%` e recomendar refino.
|
|
482
|
+
|
|
483
|
+
Se após correções estruturais persistir ambiguidade de produto: **uma** frase recomendando `oxe:discuss` ou `oxe:spec`.
|
|
207
484
|
|
|
208
485
|
Resumo obrigatório no chat: `Gate do plano: OK` ou `Gate do plano: corrigido (N problemas)`.
|
|
209
486
|
</plan_quality_gate>
|
|
210
487
|
|
|
211
488
|
<process>
|
|
212
|
-
1. Resolver `active_session` e ler `SPEC.md` do escopo correto (obrigatório). Se faltar, pedir **spec** primeiro.
|
|
213
|
-
1a. Se `PLAN.md` já existir no escopo resolvido:
|
|
214
|
-
- se o pedido atual só refina tarefas, ondas, dependências, riscos, validação ou sequencing, tratar como **replan implícito**;
|
|
215
|
-
- se o pedido atual mudar estratégia técnica, pedir ou executar `discuss` antes de seguir;
|
|
216
|
-
- se o pedido atual mudar escopo, critérios, prioridades ou aceite, pedir ou executar `spec` antes de seguir.
|
|
217
|
-
Registar explicitamente no chat qual dos três caminhos foi adotado.
|
|
218
|
-
1b. Resolver o context pack `plan` primeiro:
|
|
219
|
-
- ler `.oxe/context/packs/plan.md|json` (ou `oxe-cc context inspect --workflow plan --json`);
|
|
220
|
-
- se estiver fresco e coerente, usar o pack como mapa primário;
|
|
489
|
+
1. Resolver `active_session` e ler `SPEC.md` do escopo correto (obrigatório). Se faltar, pedir **spec** primeiro.
|
|
490
|
+
1a. Se `PLAN.md` já existir no escopo resolvido:
|
|
491
|
+
- se o pedido atual só refina tarefas, ondas, dependências, riscos, validação ou sequencing, tratar como **replan implícito**;
|
|
492
|
+
- se o pedido atual mudar estratégia técnica, pedir ou executar `discuss` antes de seguir;
|
|
493
|
+
- se o pedido atual mudar escopo, critérios, prioridades ou aceite, pedir ou executar `spec` antes de seguir.
|
|
494
|
+
Registar explicitamente no chat qual dos três caminhos foi adotado.
|
|
495
|
+
1b. Resolver o context pack `plan` primeiro:
|
|
496
|
+
- ler `.oxe/context/packs/plan.md|json` (ou `oxe-cc context inspect --workflow plan --json`);
|
|
497
|
+
- se estiver fresco e coerente, usar o pack como mapa primário;
|
|
221
498
|
- se estiver stale, incompleto ou ausente, registar `fallback para leitura direta` e seguir com leitura bruta.
|
|
222
|
-
1c. Com pack válido, ler primeiro o resumo do pack e os artefatos de `read_order`; só abrir outros artefatos quando faltarem evidências para fechar tarefas, riscos ou autoavaliação.
|
|
499
|
+
1c. Com pack válido, ler primeiro o resumo do pack e os artefatos de `read_order`; só abrir outros artefatos quando faltarem evidências para fechar tarefas, riscos ou autoavaliação.
|
|
223
500
|
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.
|
|
224
501
|
3. Se existir **`.oxe/NOTES.md`**, consumir ou explicitamente adiar cada bullet relevante (ver **context**).
|
|
225
502
|
4. Ler `.oxe/codebase/*.md` (incl. CONVENTIONS / CONCERNS) e inspecionar pontos de entrada se a spec exigir. Se o pack não bastar, expandir a leitura apenas para os artefatos adicionais necessários e registar essa expansão.
|
|
226
|
-
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** ou **replan implícito**, preencher a seção **Replanejamento** (data, motivo, lições de VERIFY/SUMMARY, tarefas removidas/alteradas).
|
|
227
|
-
5a. Gerar junto os artefatos racionais:
|
|
228
|
-
- `IMPLEMENTATION-PACK.md` e `IMPLEMENTATION-PACK.json` a partir de `oxe/templates/IMPLEMENTATION-PACK.template.*`
|
|
229
|
-
- `REFERENCE-ANCHORS.md` a partir de `oxe/templates/REFERENCE-ANCHORS.template.md`
|
|
230
|
-
- `FIXTURE-PACK.md` e `FIXTURE-PACK.json` a partir de `oxe/templates/FIXTURE-PACK.template.*`
|
|
231
|
-
Todos no mesmo escopo resolvido da sessão do `PLAN.md`.
|
|
503
|
+
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** ou **replan implícito**, preencher a seção **Replanejamento** (data, motivo, lições de VERIFY/SUMMARY, tarefas removidas/alteradas).
|
|
504
|
+
5a. Gerar junto os artefatos racionais:
|
|
505
|
+
- `IMPLEMENTATION-PACK.md` e `IMPLEMENTATION-PACK.json` a partir de `oxe/templates/IMPLEMENTATION-PACK.template.*`
|
|
506
|
+
- `REFERENCE-ANCHORS.md` a partir de `oxe/templates/REFERENCE-ANCHORS.template.md`
|
|
507
|
+
- `FIXTURE-PACK.md` e `FIXTURE-PACK.json` a partir de `oxe/templates/FIXTURE-PACK.template.*`
|
|
508
|
+
Todos no mesmo escopo resolvido da sessão do `PLAN.md`.
|
|
232
509
|
6. Definir ondas: onda 1 = tarefas sem dependência entre si; onda seguinte = dependentes; respeitar `plan_max_tasks_per_wave` se configurado.
|
|
233
510
|
6a. **Calibração histórica:** se `.oxe/calibration.json` existir e tiver ≥ 2 registros, ler as últimas 3 entradas antes de preencher a autoavaliação. Para cada dimensão com `calibration_error > 0.25` em 2+ ciclos consecutivos, adicionar `[⚠ historicamente subestimado]` na nota da dimensão e reduzir o score em 0.10 ou justificar explicitamente por que o ciclo atual é diferente.
|
|
234
|
-
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. As lacunas, conflitos e freshness do pack devem aparecer nessa autoavaliação quando forem relevantes. **Incluir o bloco `<confidence_vector>`** com as 6 dimensões usando o template em `oxe/templates/PLAN.template.md`.
|
|
235
|
-
7b. Antes de declarar `Confiança > 90%`, validar os artefatos racionais:
|
|
236
|
-
- `IMPLEMENTATION-PACK` sem write-set aberto e sem paths `...`;
|
|
237
|
-
- `REFERENCE-ANCHORS` com âncoras críticas resolvidas;
|
|
238
|
-
- `FIXTURE-PACK` cobrindo tarefas de risco.
|
|
239
|
-
Se algo falhar, a confiança deve cair para `<= 90%` e o próximo passo não pode ser `execute`.
|
|
511
|
+
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. As lacunas, conflitos e freshness do pack devem aparecer nessa autoavaliação quando forem relevantes. **Incluir o bloco `<confidence_vector>`** com as 6 dimensões usando o template em `oxe/templates/PLAN.template.md`.
|
|
512
|
+
7b. Antes de declarar `Confiança > 90%`, validar os artefatos racionais:
|
|
513
|
+
- `IMPLEMENTATION-PACK` sem write-set aberto e sem paths `...`;
|
|
514
|
+
- `REFERENCE-ANCHORS` com âncoras críticas resolvidas;
|
|
515
|
+
- `FIXTURE-PACK` cobrindo tarefas de risco.
|
|
516
|
+
Se algo falhar, a confiança deve cair para `<= 90%` e o próximo passo não pode ser `execute`.
|
|
240
517
|
7a. **Hipóteses Críticas:** ao criar tarefas `L` ou `XL` ou qualquer tarefa que dependa de lib externa, API de terceiros ou serviço de infra não testado ainda — adicionar seção `## Hipóteses Críticas` com pelo menos uma `<hypothesis>` por dependência crítica. Usar `oxe/templates/HYPOTHESES.template.md` como referência. Omitir a seção se todas as tarefas forem `S`/`M` e sem dependências externas não verificadas.
|
|
241
518
|
8. Aplicar integralmente o bloco **`<plan_quality_gate>`** acima ao `PLAN.md` em disco; corrigir o ficheiro até passar ou documentar gaps explícitos.
|
|
242
|
-
9. Atualizar `.oxe/STATE.md` global: fase `plan_ready`, próximo passo `oxe:execute` apenas se `Melhor plano atual: sim`, a autoavaliação estiver estruturalmente íntegra e a confiança superar o limiar executável; caso contrário, próximo passo deve reduzir incerteza (`oxe:discuss`, `oxe:research` ou replanejamento).
|
|
519
|
+
9. Atualizar `.oxe/STATE.md` global: fase `plan_ready`, próximo passo `oxe:execute` apenas se `Melhor plano atual: sim`, a autoavaliação estiver estruturalmente íntegra e a confiança superar o limiar executável; caso contrário, próximo passo deve reduzir incerteza (`oxe:discuss`, `oxe:research` ou replanejamento).
|
|
243
520
|
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`.
|
|
244
521
|
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.
|
|
245
|
-
12. No resumo em chat, deixar explícitos:
|
|
246
|
-
- objetivo e escopo do plano;
|
|
247
|
-
- principais riscos e contenções;
|
|
248
|
-
- assumptions relevantes;
|
|
249
|
-
- se o plano foi produzido com pack fresco ou com fallback explícito;
|
|
250
|
-
- se a chamada foi tratada como plano novo, replan implícito, ou se foi devolvida para `spec`/`discuss`;
|
|
251
|
-
- comando único recomendado para o próximo passo.
|
|
522
|
+
12. No resumo em chat, deixar explícitos:
|
|
523
|
+
- objetivo e escopo do plano;
|
|
524
|
+
- principais riscos e contenções;
|
|
525
|
+
- assumptions relevantes;
|
|
526
|
+
- se o plano foi produzido com pack fresco ou com fallback explícito;
|
|
527
|
+
- se a chamada foi tratada como plano novo, replan implícito, ou se foi devolvida para `spec`/`discuss`;
|
|
528
|
+
- comando único recomendado para o próximo passo.
|
|
252
529
|
</process>
|
|
253
530
|
|
|
254
531
|
<success_criteria>
|
|
255
532
|
- [ ] Cada tarefa tem seção **Verificar** com comando ou checklist explícito.
|
|
256
533
|
- [ ] Dependências entre tarefas estão explícitas.
|
|
257
|
-
- [ ] Cada critério da SPEC (IDs **A***) está mapeado em **Aceite vinculado** de alguma tarefa ou explicitamente marcado como gap no plano.
|
|
258
|
-
- [ ] Cada R-ID `v1`/`v2` do SPEC tem ao menos um A* coberto por alguma tarefa, ou gap documentado (gate 14).
|
|
259
|
-
- [ ] `IMPLEMENTATION-PACK`, `REFERENCE-ANCHORS` e `FIXTURE-PACK` existem no escopo resolvido e não ficaram em branco.
|
|
260
|
-
- [ ] Não há `critical_gap` aberto nos artefatos racionais quando a confiança declarada é `> 90%`.
|
|
261
|
-
</success_criteria>
|
|
534
|
+
- [ ] Cada critério da SPEC (IDs **A***) está mapeado em **Aceite vinculado** de alguma tarefa ou explicitamente marcado como gap no plano.
|
|
535
|
+
- [ ] Cada R-ID `v1`/`v2` do SPEC tem ao menos um A* coberto por alguma tarefa, ou gap documentado (gate 14).
|
|
536
|
+
- [ ] `IMPLEMENTATION-PACK`, `REFERENCE-ANCHORS` e `FIXTURE-PACK` existem no escopo resolvido e não ficaram em branco.
|
|
537
|
+
- [ ] Não há `critical_gap` aberto nos artefatos racionais quando a confiança declarada é `> 90%`.
|
|
538
|
+
</success_criteria>
|