oxe-cc 1.6.0 → 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/CHANGELOG.md +18 -0
- package/README.md +5 -3
- package/bin/lib/oxe-agent-install.cjs +125 -24
- package/bin/lib/oxe-release.cjs +1 -0
- package/bin/oxe-cc.js +87 -39
- 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/RUNTIME-SMOKE-MATRIX.md +1 -1
- 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/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/FIXTURE-PACK.template.json +18 -11
- package/oxe/templates/FIXTURE-PACK.template.md +19 -10
- package/oxe/templates/IMPLEMENTATION-PACK.template.json +26 -10
- package/oxe/templates/IMPLEMENTATION-PACK.template.md +32 -20
- package/oxe/templates/PLAN.template.md +62 -31
- package/oxe/templates/REFERENCE-ANCHORS.template.md +14 -10
- package/oxe/templates/SUMMARY.template.md +50 -20
- package/oxe/workflows/debug.md +9 -7
- package/oxe/workflows/execute.md +11 -8
- package/oxe/workflows/forensics.md +5 -3
- package/oxe/workflows/plan.md +277 -0
- 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 +8 -5
- 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.7.0.vsix +0 -0
- package/vscode-extension/package.json +1 -1
package/oxe/workflows/plan.md
CHANGED
|
@@ -23,6 +23,8 @@ Se o usuário pedir **--replan** (ou replanejamento implícito após `verify_fai
|
|
|
23
23
|
<execution_rational_artifacts>
|
|
24
24
|
## Artefatos racionais obrigatórios
|
|
25
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
|
+
|
|
26
28
|
### IMPLEMENTATION-PACK
|
|
27
29
|
Contrato de implementação por tarefa `Tn`, com:
|
|
28
30
|
- caminhos exatos dos arquivos alvo, sem `...` e sem "arquivos prováveis" vagos;
|
|
@@ -30,6 +32,7 @@ Contrato de implementação por tarefa `Tn`, com:
|
|
|
30
32
|
- assinatura/shape de entrada e saída;
|
|
31
33
|
- dependências, invariantes, `not_allowed`, `write_set`, `expected_checks` e `requires_fixture`;
|
|
32
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.
|
|
33
36
|
|
|
34
37
|
### REFERENCE-ANCHORS
|
|
35
38
|
Materializa referências críticas que hoje ficam frouxas no plano:
|
|
@@ -43,6 +46,7 @@ Fixtures mínimos por fluxo/tarefa de risco:
|
|
|
43
46
|
- payloads, arquivos exemplo, trechos significativos, offsets/campos críticos;
|
|
44
47
|
- expected outputs ou checks parciais/completos;
|
|
45
48
|
- queries/checks de validação e smoke commands.
|
|
49
|
+
- negative cases mínimos para validação de erro, limite ou regressão principal.
|
|
46
50
|
|
|
47
51
|
Regra de readiness:
|
|
48
52
|
- `IMPLEMENTATION-PACK` precisa estar `ready`;
|
|
@@ -180,6 +184,279 @@ Depois do resumo e antes das tarefas, o `PLAN.md` deve conter também:
|
|
|
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
|
|