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.
Files changed (105) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +5 -3
  3. package/bin/lib/oxe-agent-install.cjs +125 -24
  4. package/bin/lib/oxe-release.cjs +1 -0
  5. package/bin/oxe-cc.js +87 -39
  6. package/commands/oxe/debug.md +6 -1
  7. package/commands/oxe/discuss.md +7 -2
  8. package/commands/oxe/execute.md +7 -2
  9. package/commands/oxe/plan-agent.md +7 -2
  10. package/commands/oxe/plan.md +7 -2
  11. package/commands/oxe/scan.md +6 -1
  12. package/commands/oxe/spec.md +6 -1
  13. package/commands/oxe/verify.md +6 -1
  14. package/docs/CONTENT-MIGRATION-AUDIT.md +49 -0
  15. package/docs/RUNTIME-SMOKE-MATRIX.md +1 -1
  16. package/lib/runtime/compiler/graph-compiler.js +32 -0
  17. package/lib/runtime/context/context-pack-builder.d.ts +15 -0
  18. package/lib/runtime/context/context-pack-builder.js +78 -0
  19. package/lib/runtime/events/catalog.d.ts +1 -1
  20. package/lib/runtime/events/catalog.js +5 -0
  21. package/lib/runtime/executor/action-tool-map.d.ts +3 -0
  22. package/lib/runtime/executor/action-tool-map.js +41 -0
  23. package/lib/runtime/executor/built-in-tools.d.ts +8 -0
  24. package/lib/runtime/executor/built-in-tools.js +267 -0
  25. package/lib/runtime/executor/index.d.ts +6 -0
  26. package/lib/runtime/executor/index.js +12 -0
  27. package/lib/runtime/executor/llm-task-executor.d.ts +29 -0
  28. package/lib/runtime/executor/llm-task-executor.js +138 -0
  29. package/lib/runtime/executor/node-prompt-builder.d.ts +3 -0
  30. package/lib/runtime/executor/node-prompt-builder.js +36 -0
  31. package/lib/runtime/executor/stream-completion.d.ts +38 -0
  32. package/lib/runtime/executor/stream-completion.js +105 -0
  33. package/lib/runtime/index.d.ts +1 -0
  34. package/lib/runtime/index.js +2 -0
  35. package/lib/runtime/models/failure.d.ts +5 -0
  36. package/lib/runtime/models/failure.js +2 -0
  37. package/lib/runtime/plugins/capability-adapter.d.ts +9 -0
  38. package/lib/runtime/plugins/capability-adapter.js +111 -8
  39. package/lib/runtime/plugins/plugin-abi.d.ts +8 -0
  40. package/lib/runtime/plugins/plugin-registry.d.ts +2 -1
  41. package/lib/runtime/plugins/plugin-registry.js +6 -1
  42. package/lib/runtime/reducers/run-state-reducer.js +39 -2
  43. package/lib/runtime/scheduler/scheduler.d.ts +14 -2
  44. package/lib/runtime/scheduler/scheduler.js +131 -11
  45. package/lib/runtime/verification/verification-manifest.d.ts +5 -2
  46. package/oxe/agents/oxe-assumptions-analyzer.md +136 -0
  47. package/oxe/agents/oxe-codebase-mapper.md +142 -0
  48. package/oxe/agents/oxe-debugger.md +145 -0
  49. package/oxe/agents/oxe-executor.md +139 -0
  50. package/oxe/agents/oxe-integration-checker.md +142 -0
  51. package/oxe/agents/oxe-plan-checker.md +143 -0
  52. package/oxe/agents/oxe-planner.md +151 -0
  53. package/oxe/agents/oxe-research-synthesizer.md +146 -0
  54. package/oxe/agents/oxe-researcher.md +163 -0
  55. package/oxe/agents/oxe-ui-auditor.md +151 -0
  56. package/oxe/agents/oxe-ui-checker.md +157 -0
  57. package/oxe/agents/oxe-ui-researcher.md +179 -0
  58. package/oxe/agents/oxe-validation-auditor.md +154 -0
  59. package/oxe/agents/oxe-verifier.md +132 -0
  60. package/oxe/personas/README.md +91 -39
  61. package/oxe/personas/architect.md +149 -37
  62. package/oxe/personas/db-specialist.md +149 -36
  63. package/oxe/personas/debugger.md +155 -38
  64. package/oxe/personas/executor.md +164 -38
  65. package/oxe/personas/planner.md +165 -36
  66. package/oxe/personas/researcher.md +148 -35
  67. package/oxe/personas/ui-specialist.md +164 -36
  68. package/oxe/personas/verifier.md +174 -39
  69. package/oxe/templates/FIXTURE-PACK.template.json +18 -11
  70. package/oxe/templates/FIXTURE-PACK.template.md +19 -10
  71. package/oxe/templates/IMPLEMENTATION-PACK.template.json +26 -10
  72. package/oxe/templates/IMPLEMENTATION-PACK.template.md +32 -20
  73. package/oxe/templates/PLAN.template.md +62 -31
  74. package/oxe/templates/REFERENCE-ANCHORS.template.md +14 -10
  75. package/oxe/templates/SUMMARY.template.md +50 -20
  76. package/oxe/workflows/debug.md +9 -7
  77. package/oxe/workflows/execute.md +11 -8
  78. package/oxe/workflows/forensics.md +5 -3
  79. package/oxe/workflows/plan.md +277 -0
  80. package/oxe/workflows/scan.md +355 -69
  81. package/oxe/workflows/spec.md +302 -9
  82. package/oxe/workflows/ui-review.md +5 -4
  83. package/oxe/workflows/ui-spec.md +4 -3
  84. package/oxe/workflows/verify.md +8 -5
  85. package/package.json +1 -1
  86. package/packages/runtime/package.json +1 -1
  87. package/packages/runtime/src/compiler/graph-compiler.ts +40 -0
  88. package/packages/runtime/src/context/context-pack-builder.ts +80 -0
  89. package/packages/runtime/src/events/catalog.ts +5 -0
  90. package/packages/runtime/src/executor/action-tool-map.ts +46 -0
  91. package/packages/runtime/src/executor/built-in-tools.ts +276 -0
  92. package/packages/runtime/src/executor/index.ts +6 -0
  93. package/packages/runtime/src/executor/llm-task-executor.ts +194 -0
  94. package/packages/runtime/src/executor/node-prompt-builder.ts +45 -0
  95. package/packages/runtime/src/executor/stream-completion.ts +145 -0
  96. package/packages/runtime/src/index.ts +3 -0
  97. package/packages/runtime/src/models/failure.ts +11 -0
  98. package/packages/runtime/src/plugins/capability-adapter.ts +117 -10
  99. package/packages/runtime/src/plugins/plugin-abi.ts +9 -0
  100. package/packages/runtime/src/plugins/plugin-registry.ts +10 -1
  101. package/packages/runtime/src/reducers/run-state-reducer.ts +59 -2
  102. package/packages/runtime/src/scheduler/scheduler.ts +152 -14
  103. package/packages/runtime/src/verification/verification-manifest.ts +12 -8
  104. package/vscode-extension/oxe-agents-1.7.0.vsix +0 -0
  105. package/vscode-extension/package.json +1 -1
@@ -1,69 +1,355 @@
1
- # OXE — Workflow: scan
2
-
3
- > **[DEPRECATED v1.1.0]** Este comando foi incorporado por `/oxe-spec`.
4
- > Use: `/oxe-spec --refresh` (atualização incremental) ou `/oxe-spec --full` (scan completo).
5
- > Este alias continuará funcionando nesta versão por compatibilidade.
6
-
7
- <objective>
8
- Analisar o codebase e produzir documentação **estruturada e enxuta** em `.oxe/codebase/`, atualizando `.oxe/STATE.md`. Cada documento deve ser navegável por humanos e por agentes sem carregar o repositório inteiro no contexto.
9
-
10
- **Foco opcional:** se o usuário indicar uma área (ex.: `api`, `auth`), priorizar essa pasta ou módulo nos mapeamentos.
11
-
12
- Se **`.oxe/config.json`** tiver `scan_focus_globs` ou `scan_ignore_globs`, **priorizar** os caminhos do foco e **reduzir detalhe** nas áreas ignoradas (ainda assim mencionar que existem).
13
- </objective>
14
-
15
- <context>
16
- - Diretório de saída: **`.oxe/`** na raiz do projeto (não `.planning/`).
17
- - Se `.oxe/` não existir, criar.
18
- - Carregar `oxe/templates/STATE.md` (ou `.oxe` relativo aos workflows instalados) como base se `STATE.md` ainda não existir; se existir, preservar histórico útil e atualizar **Último scan** (campo **Data:** em formato ISO **YYYY-MM-DD** quando possível, para o `oxe-cc doctor` calcular scan antigo) e **Fase**.
19
- - Se existir **`.oxe/config.json`**, respeitar preferências documentadas em `oxe/templates/CONFIG.md`; **não** sobrescrever o arquivo no scan.
20
- - Não apagar `SPEC.md` / `PLAN.md` se já existirem — apenas atualizar o codebase.
21
- - Entre scans completos, **`compact.md`** (`/oxe-compact`) pode **atualizar incrementalmente** os mesmos sete ficheiros em `.oxe/codebase/` comparando-os ao repo e registar mudanças em **`CODEBASE-DELTA.md`**. Caso típico: o scan descreveu **Angular 17** (ou outra stack) e o projeto **já foi migrado** na implementação (ex.: **Angular 21**) — o **compact** alinha **`STACK.md`** (e ficheiros relacionados) ao que está **implementado agora**, sem apagar o trabalho útil do scan anterior.
22
-
23
- </context>
24
-
25
- <mode_detection>
26
- ## Detecção automática de modo: bootstrap vs refresh
27
-
28
- Antes de iniciar, verificar se `.oxe/codebase/` existe com os sete mapas:
29
-
30
- - **Modo bootstrap** (padrão quando codebase/ não existe ou está incompleto): produzir os sete arquivos do zero. Comportamento descrito no `<process>` abaixo.
31
- - **Modo refresh** (quando codebase/ existe e tem os sete mapas): executar a lógica de `oxe/workflows/compact.md` — comparar mapas existentes ao repo atual, atualizar incrementalmente, produzir `CODEBASE-DELTA.md` e `RESUME.md`. **Não refazer do zero.**
32
-
33
- Flag `--full`: forçar modo bootstrap mesmo se codebase/ existir.
34
- Flag `--refresh`: forçar modo refresh.
35
-
36
- **Sem flag:** automático por contexto. Se os mapas existem e o último scan foi há menos de `scan_max_age_days` (config), sugerir refresh mas perguntar ao usuário antes de executar o scan completo.
37
- </mode_detection>
38
-
39
- <process>
40
- 1. Garantir pastas `.oxe/` e `.oxe/codebase/`.
41
- 2. Inventariar o repo (Glob/Grep): linguagens, manifests (`package.json`, `pom.xml`, `go.mod`, etc.), pastas principais aplicando foco/ignore da config se houver.
42
- 2d. **Detecção de Azure:** se o inventário revelar uso de Azure — pacotes `@azure/*` em `package.json`, `com.microsoft.azure.*` em `pom.xml`, `github.com/Azure/...` em `go.mod`, imports `azure.*` em `.py` / `.cs` / `.java`, ou variáveis de ambiente com prefixo `AZURE_` — registrar em **INTEGRATIONS.md** com: serviços detectados, versão do SDK quando disponível, variáveis de ambiente usadas (sem valores) e referência ao provider nativo `oxe-cc azure`. Se `.oxe/cloud/azure/INVENTORY.md` existir, mencionar o inventário materializado em INTEGRATIONS.md. **Esta detecção é apenas informativa** — registra a presença de SDKs Azure em INTEGRATIONS.md, mas não altera o fluxo canônico OXE nem aciona steps Azure em projetos que não dependem do provider. O provider `oxe-cc azure` é opt-in: só deve ser usado quando o usuário informar explicitamente na SPEC ou ativar via `oxe-cc azure auth login`.
43
- 2b. **Legado / brownfield:** se o inventário revelar sinais de mainframe ou desktop legado (ex.: `*.cbl`, `*.jcl`, pastas `jcl/`, `cpy/` ou `copy/`, `*.cpy`, `*.frm` / `*.vbp`, volume de `*.sql` com procedures), aplicar **`oxe/workflows/references/legacy-brownfield.md`** ao preencher STACK, STRUCTURE, INTEGRATIONS, TESTING e CONCERNS — **sem** assumir Node/Java nem omitir TESTING.md quando não houver CI.
44
- 2c. **`docs/` / `src/docs/` com documentação humana:** se existir pasta de documentação com índice (`docs/INDICE-GERAL.md`, `docs/README.md`, `**/00-*INDICE*.md`, ou enciclopédia por camadas), em **OVERVIEW** e **STRUCTURE** resumir o **papel das subpastas** (ex.: `tecnico/`, `negocio/`, `glossary/`, comparativos, baixa plataforma) e linkar o ficheiro índice em backticks. Em **INTEGRATIONS** (e se útil em OVERVIEW), quando o repo for híbrido host + distribuído + externos, incluir bullets **Alta plataforma**, **Baixa plataforma**, **Externo** conforme `legacy-brownfield.md`. Sugerir template opcional `oxe/templates/DOCS_BROWNFIELD_LAYOUT.md` ao utilizador se a árvore `docs/` estiver em crescimento.
45
- 3. Produzir **sete** arquivos em `.oxe/codebase/` (paralelize subagentes quando disponível):
46
- - **OVERVIEW.md** — propósito aparente do projeto, módulos de alto nível, fluxo principal (5–15 tópicos); se houver índice em `docs/`, um tópico deve apontar para ele.
47
- - **STACK.md** runtime, frameworks, build, versões relevantes, dependências críticas.
48
- - **STRUCTURE.md** árvore lógica (não listar mil arquivos): entrypoints, `src/` por domínio, onde ficam testes e configs; **e** papel de `docs/` ou `src/docs/` quando existirem.
49
- - **TESTING.md** como rodar testes/lint/format (comandos exatos), frameworks de teste, pastas `*test*`, CI se houver.
50
- - **INTEGRATIONS.md** APIs externas, bancos, auth, filas, segredos (nomes de env **sem valores**), webhooks; em sistemas legado híbridos, taxonomia alta/baixa/externo quando aplicável. Se não houver integrações, escrever explicitamente *Não detectado* com uma linha de contexto.
51
- - **CONVENTIONS.md** estilo de código (naming, formatação, imports), padrões de erros/logging, organização de módulos; **prescreve** o que seguir em novas alterações (com paths em backticks).
52
- - **CONCERNS.md** dívida técnica, áreas frágeis, riscos de segurança/desempenho, dependências sensíveis; cada item com impacto breve e **arquivos** referenciados.
53
- 4. Atualizar **`.oxe/STATE.md`**: **Data** do scan (ISO), fase sugerida `scan_complete`, próximo passo `oxe:spec` ou `oxe:plan` se houver SPEC.
54
- 5. **Scale-adaptive** (se `scale_adaptive: true` em `.oxe/config.json` ou não configurado ativo por padrão):
55
- - Contar arquivos de código (excluindo `node_modules`, `dist`, `build`).
56
- - Contar dependências diretas (se houver `package.json`, `pom.xml`, `go.mod`, etc.).
57
- - Sugerir profile adequado no chat:
58
- - **< 50 arquivos, < 10 dependências** → sugerir `profile: "fast"` no config.
59
- - **50–500 arquivos** sugerir `profile: "balanced"` (padrão).
60
- - **> 500 arquivos ou sistema legado** → sugerir `profile: "strict"`.
61
- - Se houver `profile` no `.oxe/config.json`, não sugerir mudança — apenas confirmar.
62
- 6. Resumir em 5–10 linhas no chat: o que foi escrito, o próximo passo sugerido, e (se scale-adaptive ativo) o profile recomendado.
63
- </process>
64
-
65
- <success_criteria>
66
- - [ ] Os sete arquivos em `.oxe/codebase/` existem e têm conteúdo útil.
67
- - [ ] `.oxe/STATE.md` reflete último scan (com **Data** preenchida quando possível) e próximo passo.
68
- - [ ] Comandos de teste em TESTING.md foram validados ou marcados como “não verificado” se o ambiente não permitir rodar.
69
- </success_criteria>
1
+ # OXE — Workflow: scan
2
+
3
+ <objective>
4
+ Analisar o codebase e produzir documentação **estruturada, densa e navegável** em `.oxe/codebase/`, atualizando `.oxe/STATE.md`.
5
+
6
+ **Meta:** os sete documentos produzidos devem ser tão informativos que um agente novo — humano ou `LlmTaskExecutor` — consiga formular tarefas precisas e executar mudanças corretas sem abrir código-fonte adicional nos casos comuns.
7
+
8
+ **Foco opcional:** se o usuário indicar uma área (ex.: `api`, `auth`), priorizar essa pasta ou módulo nos mapeamentos. Produzir os sete documentos mesmo com foco, mas com detalhe reduzido nas demais áreas mencionando que existem.
9
+
10
+ Se **`.oxe/config.json`** tiver `scan_focus_globs` ou `scan_ignore_globs`, **priorizar** os caminhos do foco e **reduzir detalhe** nas áreas ignoradas ainda assim mencioná-las com path e propósito resumido.
11
+ </objective>
12
+
13
+ <context>
14
+ - Diretório de saída: **`.oxe/`** na raiz do projeto. Criar se não existir.
15
+ - Carregar `oxe/templates/STATE.md` como base se `STATE.md` ainda não existir; se existir, preservar histórico e atualizar **Último scan** (campo **Data:** em formato ISO **YYYY-MM-DD**) e **Fase**.
16
+ - Se existir **`.oxe/config.json`**, respeitar `scan_focus_globs`, `scan_ignore_globs`, `scan_max_age_days`, `scale_adaptive`, `profile`. **Não** sobrescrever o arquivo no scan.
17
+ - Não apagar `SPEC.md` / `PLAN.md` se já existirem — apenas atualizar o codebase.
18
+ - Entre scans completos, **`compact.md`** (`/oxe-compact`) pode **atualizar incrementalmente** os mesmos sete ficheiros comparando-os ao repo atual e registar mudanças em **`CODEBASE-DELTA.md`**.
19
+ - **Prioridade de leitura de contexto:** carregar `.oxe/context/packs/scan.md` e `.oxe/context/packs/scan.json` **antes** de qualquer Glob/Grep abrangente. Se o pack existir e estiver fresco, usá-lo como mapa primário e reduzir leituras adicionais. Se stale, ausente ou incompleto, fazer fallback explícito para leitura direta e registrar o motivo.
20
+ </context>
21
+
22
+ <mode_detection>
23
+ ## Detecção automática de modo: bootstrap vs refresh
24
+
25
+ Antes de iniciar, verificar se `.oxe/codebase/` já existe com os sete mapas:
26
+
27
+ - **Modo bootstrap** (padrão quando codebase/ não existe ou está incompleto): produzir os sete arquivos do zero.
28
+ - **Modo refresh** (quando codebase/ existe e tem os sete mapas): executar lógica de `oxe/workflows/compact.md` — comparar mapas ao repo atual, atualizar incrementalmente, produzir `CODEBASE-DELTA.md` e `RESUME.md`. **Não refazer do zero.**
29
+
30
+ **Flags:**
31
+ - `--full`: forçar modo bootstrap mesmo se codebase/ existir.
32
+ - `--refresh`: forçar modo refresh.
33
+ - **Sem flag:** automático. Se mapas existem e o último scan foi há menos de `scan_max_age_days` (default: 7 dias), sugerir refresh e perguntar antes de executar scan completo.
34
+
35
+ **Staleness check:** se `STATE.md` tiver `scan_date` e a diferença para hoje superar `scan_max_age_days`, alertar que os mapas podem estar desatualizados antes de usá-los como base para plan/spec.
36
+ </mode_detection>
37
+
38
+ <architectural_detection>
39
+ ## Detecção de padrão arquitetural
40
+
41
+ Antes de produzir os documentos, classificar o padrão arquitetural dominante. Isso calibra o nível de detalhe e as seções prioritárias em cada documento.
42
+
43
+ ### Padrões e sinais
44
+
45
+ | Padrão | Sinais principais |
46
+ |--------|------------------|
47
+ | **Monolito MVC** | Único `main.*` na raiz de `src/`; pastas `controllers/`, `services/`, `repositories/`, `models/`; único manifest de build |
48
+ | **Microserviços** | Múltiplos `package.json`/`pom.xml` em subpastas de serviço; `docker-compose.yml` com múltiplos serviços; pastas `services/<nome>/` com entrypoint próprio |
49
+ | **Monorepo** | `packages/<nome>/` com build independente; `turbo.json`, `nx.json`, `lerna.json`, `pnpm-workspace.yaml` |
50
+ | **DDD / Camadas** | Pastas `domain/`, `application/`, `infrastructure/`, `presentation/`; entities, value objects, aggregates separados de implementações |
51
+ | **CQRS** | Pastas `commands/` e `queries/` separadas; padrão `*Command.ts`/`*Query.ts` + `*Handler.ts`; bus de comandos/eventos |
52
+ | **Hexagonal / Clean** | Pastas `adapters/`, `ports/`, `core/`; inversão de dependência; interfaces no core, implementações em adapters |
53
+ | **Event-driven** | SDKs de broker (`kafka`, `rabbitmq`, `@azure/service-bus`, `sqs`, `celery`); arquivos `*.consumer.ts`, `*.producer.ts`, `*.handler.ts` |
54
+ | **CLI** | `commander`, `yargs`, `argparse`, `click`, `cobra`; entrypoint é um executável; sem servidor HTTP |
55
+ | **Serverless** | `serverless.yml`, SAM templates, `*.lambda.ts`; handlers independentes sem servidor longo |
56
+
57
+ ### Detecção de domínios funcionais
58
+
59
+ Identificar domínios funcionais para calibrar INTEGRATIONS, CONCERNS e CONVENTIONS:
60
+
61
+ | Domínio | Sinais de detecção |
62
+ |---------|--------------------|
63
+ | **AUTH** | `jwt`, `passport`, `oauth`, `session`, `bcrypt`, `keycloak`, `auth0`, `cognito`, `rbac`, `acl` |
64
+ | **API REST** | `express`, `fastapi`, `spring-web`, `routes/`, `controllers/`, `@Controller`, `@RestController` |
65
+ | **GraphQL** | `graphql`, `apollo`, `resolvers/`, `*.graphql`, `*.gql`, `@Resolver` |
66
+ | **DB relacional** | `typeorm`, `prisma`, `sequelize`, `migrations/`, `*.sql`, `knex`, `drizzle`, `hibernate` |
67
+ | **DB NoSQL** | `mongoose`, `mongodb`, `dynamodb`, `firestore`, `redis`, `elasticsearch` |
68
+ | **Filas/eventos** | `kafka`, `rabbitmq`, `sqs`, `@azure/service-bus`, `bull`, `celery`, `nats`, `pulsar` |
69
+ | **Storage** | `s3`, `blob`, `multer`, `sharp`, `uploads/`, `minio`, `gcs` |
70
+ | **Email/notificação** | `nodemailer`, `sendgrid`, `mailgun`, `ses`, `twilio`, `fcm`, `apns` |
71
+ | **Frontend/UI** | `react`, `vue`, `angular`, `svelte`, `next`, `nuxt`, `components/`, `pages/` |
72
+ | **Infra/IaC** | `*.tf`, `*.bicep`, `*.arm.json`, `helm/`, `k8s/`, `cdk/`, `pulumi/` |
73
+
74
+ ### Registrar em OVERVIEW.md
75
+
76
+ Ao final da detecção, adicionar seção em OVERVIEW.md:
77
+ ```
78
+ ## Padrão arquitetural
79
+ - **Dominante:** [padrão detectado]
80
+ - **Evidências:** `[arquivo1]`, `[arquivo2]`, `[pasta3]`
81
+ - **Domínios funcionais:** AUTH, API REST, DB relacional [lista dos detectados]
82
+ - **Desvios / notas:** [ex.: "camada de domínio incompleta — services acessam DB diretamente em billing/"]
83
+ ```
84
+ </architectural_detection>
85
+
86
+ <document_quality_guide>
87
+ ## Guia de qualidade por documento
88
+
89
+ Cada documento deve atingir o nível descrito abaixo. Use como checklist interno **antes de finalizar** cada arquivo.
90
+
91
+ ---
92
+
93
+ ### OVERVIEW.md — o mapa de orientação
94
+
95
+ **Objetivo:** permitir que qualquer agente entenda o sistema em 60 segundos sem abrir código.
96
+
97
+ **Deve conter:**
98
+ - Propósito em 1-2 frases (o que, para quem, por quê)
99
+ - Padrão arquitetural com evidências (ver `<architectural_detection>`)
100
+ - Domínios funcionais com 1 linha cada
101
+ - Fluxo principal end-to-end em 5-15 bullets (descrever o que acontece, não listar arquivos)
102
+ - Módulos de alto nível com papel resumido
103
+ - Link para documentação humana se existir (`docs/`, `README.md`)
104
+
105
+ | Ruim ❌ | Bom ✅ |
106
+ |---------|--------|
107
+ | "Sistema de gestão de usuários" | "API REST multi-tenant que gerencia autenticação JWT + RBAC para N organizações; exposta via Express em `api/`; dados persistidos em PostgreSQL via TypeORM" |
108
+ | "Tem frontend e backend" | "Monorepo: `api/` (Express), `web/` (Next.js), `shared/` (tipos + validações); comunicação via REST; state via React Query no client" |
109
+ | Copiar o README | Síntese do README + observações do código que o README não cobre |
110
+
111
+ **Anti-padrões:** frases genéricas sem evidência; listar arquivos individuais; omitir o padrão arquitetural.
112
+
113
+ ---
114
+
115
+ ### STACK.md — o inventário tecnológico
116
+
117
+ **Deve conter:**
118
+ - Runtime e versão exata (ex.: `Node.js 20.11 LTS`)
119
+ - Framework principal e versão (ex.: `Express 4.18.3`)
120
+ - Banco de dados com driver/ORM e versão (ex.: `PostgreSQL 15.6 via TypeORM 0.3.20`)
121
+ - Build toolchain com versão (ex.: `Vite 5.2`, `Maven 3.9.6`)
122
+ - **Dependências críticas** com versão e papel — as que, se mudarem, quebram o sistema
123
+ - Variáveis de ambiente chave que afetam comportamento (nomes, sem valores)
124
+ - DevDependencies relevantes (linters, test runner)
125
+
126
+ | Ruim ❌ | Bom ✅ |
127
+ |---------|--------|
128
+ | "Usa Node e TypeScript" | "`Node.js 20.11 LTS`, `TypeScript 5.4` (strict), `Express 4.18.3`, `TypeORM 0.3.20`" |
129
+ | "Tem dependências externas" | "Deps críticas: `zod@3.22` (validação em runtime em todas as rotas), `ioredis@5.3` (cache + rate-limit), `jsonwebtoken@9.0` (tokens JWT); mudar versão desses 3 afeta testes de integração" |
130
+
131
+ **Anti-padrões:** listar 200 deps sem filtrar; omitir versões; ignorar env vars que afetam stack.
132
+
133
+ ---
134
+
135
+ ### STRUCTURE.md — o mapa de navegação
136
+
137
+ **Deve conter:**
138
+ - Árvore lógica de no máximo 3 níveis (não listar cada arquivo — agregar por propósito)
139
+ - Entrypoints: onde o programa começa e como inicializar
140
+ - Organização de `src/` por domínio com papel de cada pasta
141
+ - Onde ficam: testes, configs, scripts de build, migrations, assets
142
+ - Convenções de nomeação de arquivos (ex.: `*.controller.ts`, `*.service.ts`)
143
+ - **"Onde adicionar novo código"** para pelo menos 3 tipos de mudança comuns
144
+
145
+ | Ruim ❌ | Bom ✅ |
146
+ |---------|--------|
147
+ | "Tem pasta src/" | "`src/` por domínio: `auth/` (JWT + guards), `users/` (CRUD + perfil), `billing/` (Stripe + invoices). Cada domínio: `*.controller.ts`, `*.service.ts`, `*.repository.ts`, `*.dto.ts`, `*.spec.ts`" |
148
+ | Lista de todos os arquivos | "Para novo endpoint: criar `src/<dominio>/<dominio>.controller.ts` + registrar em `<dominio>.module.ts`. Para nova migration: `src/migrations/YYYYMMDD-<descricao>.ts`" |
149
+
150
+ **Anti-padrões:** listar arquivos individualmente; omitir onde ficam os testes; não dizer onde adicionar código novo.
151
+
152
+ ---
153
+
154
+ ### TESTING.md — o guia de execução
155
+
156
+ **Deve conter:**
157
+ - Comandos exatos para: unit tests, integration tests, e2e, lint, format, typecheck
158
+ - Cobertura atual (se disponível no config ou CI)
159
+ - Frameworks: test runner, assertions, mocking, factories/builders
160
+ - Onde ficam os testes (pasta, convenção de nome)
161
+ - Como rodar um único teste/arquivo (ex.: `npx jest src/auth/auth.service.spec.ts`)
162
+ - Como rodar em watch mode
163
+ - **Pré-requisitos de ambiente** para integration/e2e (DB, Redis, serviços externos)
164
+ - Status do CI: arquivo de config, checks que rodam, tempo estimado
165
+
166
+ | Ruim ❌ | Bom ✅ |
167
+ |---------|--------|
168
+ | "Use npm test" | "`npm test` (unit, sem deps externas), `npm run test:e2e` (requer PostgreSQL :5432 + Redis :6379); arquivo único: `npx jest <path>` ; watch: `npx jest --watch`" |
169
+ | "Tem testes" | "Jest 29 + ts-jest; factories com `@faker-js/faker`; e2e via `@nestjs/testing` + `supertest` + banco real em Docker; cobertura alvo: 80%; CI: `.github/workflows/ci.yml`, ~4 min" |
170
+
171
+ **Anti-padrões:** não listar o que o comando faz; omitir pré-requisitos de ambiente; marcar "não verificado" sem tentar.
172
+
173
+ ---
174
+
175
+ ### INTEGRATIONS.md — o inventário de integrações
176
+
177
+ **Deve conter:**
178
+ - Para cada integração: nome, propósito, SDK/protocolo, variáveis de ambiente (sem valores)
179
+ - Bancos: tipo, conexão, env vars, tamanho de pool
180
+ - Auth externos: OAuth providers, SAML IdPs, env vars
181
+ - Filas/mensageria: broker, tópicos/queues, padrão (pub/sub, consumer group)
182
+ - APIs de terceiros: endpoint base, autenticação usada, rate limits conhecidos
183
+ - Webhooks: quais recebe e quais envia, endpoints
184
+ - Storage externo: serviço, env vars
185
+ - **Se não houver integrações externas:** escrever explicitamente "**Não detectado**" com contexto
186
+
187
+ | Ruim ❌ | Bom ✅ |
188
+ |---------|--------|
189
+ | "Usa banco de dados" | "**PostgreSQL 15** via TypeORM: env `DATABASE_URL` (connection string) + `DATABASE_SSL` (boolean); pool de 10 conexões; migrations em `src/migrations/`" |
190
+ | "Integra com pagamentos" | "**Stripe v14 SDK**: env `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`; fluxos: `checkout.session.create`, `customer.subscription.update`; webhooks em `POST /webhooks/stripe`" |
191
+
192
+ **Anti-padrões:** omitir nomes de env vars; dizer "integra com cloud" sem especificar; esquecer webhooks bidirecionais.
193
+
194
+ ---
195
+
196
+ ### CONVENTIONS.md — o guia de contribuição
197
+
198
+ **Deve conter:**
199
+ - Nomenclatura de arquivos (ex.: `kebab-case` para arquivos, `PascalCase` para classes)
200
+ - Nomenclatura de funções e variáveis
201
+ - Estrutura de módulos: como exportar, onde colocar tipos, como organizar imports
202
+ - **Padrão de erros/exceptions:** como lançar, como capturar, classes customizadas
203
+ - **Padrão de logging:** nível, formato, campos obrigatórios
204
+ - Validação de entrada: onde validar, qual biblioteca
205
+ - Comentários: quando escrever, quando não escrever
206
+ - Paths reais em backticks como evidência (não apenas regras abstratas)
207
+ - Desvios recorrentes detectados (padrões não-oficiais que existem no código)
208
+
209
+ | Ruim ❌ | Bom ✅ |
210
+ |---------|--------|
211
+ | "Use boas práticas" | "Erros: lançar `AppException` de `src/shared/exceptions/app.exception.ts` com `code` e `statusCode`; nunca lançar `Error` puro em código de domínio" |
212
+ | "Nomenclatura padrão" | "Arquivos: `kebab-case`; classes: `PascalCase`; interfaces: `PascalCase` sem prefixo `I`; constantes: `UPPER_SNAKE_CASE`; enums: `PascalCase`" |
213
+
214
+ **Anti-padrões:** inventar convenções não verificadas no código; omitir padrão de erros; ignorar desvios recorrentes que existem de fato.
215
+
216
+ ---
217
+
218
+ ### CONCERNS.md — o radar de risco
219
+
220
+ **Deve conter:**
221
+ - **Dívida técnica:** área, descrição, arquivo(s) em backtick, impacto (`low`/`medium`/`high`/`critical`)
222
+ - **Riscos de segurança:** vulnerabilidade potencial, onde está, mitigação sugerida
223
+ - **Riscos de desempenho:** ponto de gargalo, evidência, impacto
224
+ - **Dependências sensíveis:** lib com histórico de CVEs, lib abandonada, versão desatualizada com problema conhecido
225
+ - **Código frágil:** módulos sem testes, alta complexidade ciclomática, sem tipagem, acoplamento alto
226
+ - Não inventar concerns — apenas registrar evidências observadas (padrões, versões, ausência de testes)
227
+ - Cada item: **área**, **descrição**, **arquivo(s)** em backtick, **impacto**
228
+
229
+ | Ruim ❌ | Bom ✅ |
230
+ |---------|--------|
231
+ | "Tem alguns problemas" | "**[high] Sem validação em rotas admin:** `src/admin/admin.controller.ts:L45-L78` — nenhum DTO; qualquer payload aceito; risco de injection" |
232
+ | "Código legado" | "**[medium] `src/legacy/report-generator.ts`:** 800 linhas, 0 testes, `any` extensivo, última modificação há 2 anos; qualquer mudança é de alto risco" |
233
+
234
+ **Anti-padrões:** concerns genéricos sem arquivo/evidência; classificar tudo como `high`; omitir riscos de segurança detectados.
235
+
236
+ ---
237
+
238
+ ### Estratégia de cross-referência entre documentos
239
+
240
+ Os sete documentos complementam sem repetir. Use estas convenções:
241
+
242
+ | Quando A menciona... | B deve... |
243
+ |----------------------|-----------|
244
+ | OVERVIEW menciona módulo | STRUCTURE explicar onde está |
245
+ | STACK menciona dep crítica | CONCERNS mencionar se tem risco ou está desatualizada |
246
+ | INTEGRATIONS menciona integração | CONCERNS mencionar se tem ponto fraco ou env var ausente |
247
+ | CONVENTIONS menciona padrão | STRUCTURE mostrar onde ele é aplicado |
248
+ | TESTING menciona integração com banco | INTEGRATIONS já detalhou o banco |
249
+
250
+ **Regra:** ao escrever um documento, referenciar o irmão relevante com path em backtick. Ex.: em CONCERNS: "Ver `INTEGRATIONS.md` para detalhes de conexão."
251
+ </document_quality_guide>
252
+
253
+ <process>
254
+ 1. Garantir pastas `.oxe/` e `.oxe/codebase/`.
255
+
256
+ 2. **Carregar context pack:** ler `.oxe/context/packs/scan.md` e `.oxe/context/packs/scan.json` se existirem. Se fresco/coerente, usar como mapa primário. Se ausente/stale, registrar `fallback para leitura direta`.
257
+
258
+ 3. **Inventariar o repo:** Glob/Grep para linguagens, manifests (`package.json`, `pom.xml`, `go.mod`, `pyproject.toml`, `Cargo.toml`, `*.csproj`), pastas principais — aplicando foco/ignore da config.
259
+
260
+ 3a. **Detecção arquitetural:** aplicar `<architectural_detection>` — classificar padrão dominante e domínios funcionais. Registrar em OVERVIEW.md.
261
+
262
+ 3b. **Legado / brownfield:** se sinais de mainframe ou desktop legado (`*.cbl`, `*.jcl`, `*.cpy`, `*.frm`, `*.vbp`, volume de `*.sql` com procedures), aplicar **`oxe/workflows/references/legacy-brownfield.md`** ao preencher STACK, STRUCTURE, INTEGRATIONS, TESTING e CONCERNS.
263
+
264
+ 3c. **Detecção de Azure:** se uso de Azure detectado (`@azure/*`, `com.microsoft.azure.*`, imports `azure.*`, env vars `AZURE_*`), registrar em INTEGRATIONS.md com serviços, versão SDK, env vars (sem valores). Provider `oxe-cc azure` é opt-in — apenas informativo.
265
+
266
+ 3d. **Documentação humana:** se `docs/` ou `src/docs/` com índice existirem, resumir papel das subpastas em OVERVIEW e STRUCTURE e linkar o ficheiro índice.
267
+
268
+ 4. **Produzir os sete documentos** em `.oxe/codebase/` (paralelizar sub-agentes quando disponível):
269
+ - **OVERVIEW.md** — propósito, padrão arquitetural, domínios, fluxo principal, módulos
270
+ - **STACK.md** — runtime, frameworks, deps críticas com versões, env vars chave
271
+ - **STRUCTURE.md** — árvore lógica (máx 3 níveis), entrypoints, onde adicionar código
272
+ - **TESTING.md** — comandos exatos, frameworks, pré-requisitos, CI
273
+ - **INTEGRATIONS.md** — APIs, bancos, auth, filas, webhooks, storage
274
+ - **CONVENTIONS.md** — nomenclatura, erros, logging, imports, validação
275
+ - **CONCERNS.md** — dívida técnica com arquivo+impacto, riscos
276
+
277
+ Aplicar `<document_quality_guide>` como rubrica para cada documento antes de finalizar.
278
+
279
+ 5. Atualizar **`.oxe/STATE.md`**: `Data:` (ISO), fase `scan_complete`, próximo passo `oxe:spec` ou `oxe:plan` se já houver SPEC.
280
+
281
+ 6. **Scale-adaptive** (ativo por padrão se não configurado):
282
+ - Contar arquivos de código (excluindo `node_modules`, `dist`, `build`, `.git`).
283
+ - **< 50 arquivos, < 10 deps** → sugerir `profile: "fast"`, scan completo em 1 passo.
284
+ - **50–500 arquivos** → sugerir `profile: "balanced"` (padrão).
285
+ - **> 500 arquivos ou legado** → sugerir `profile: "strict"`, considerar sub-agentes por módulo.
286
+ - Se `profile` já configurado em `.oxe/config.json`: confirmar sem sugerir mudança.
287
+
288
+ 7. **Paralelização de sub-agentes** (quando > 100 arquivos de código e sub-agentes disponíveis):
289
+ - Sub-agente A: OVERVIEW + STACK (manifests, entrypoints, deps)
290
+ - Sub-agente B: STRUCTURE + CONVENTIONS (organização de src/, linters, configs)
291
+ - Sub-agente C: TESTING + INTEGRATIONS (specs, env vars, integrações externas)
292
+ - Sub-agente D: CONCERNS (análise de código crítico, CVEs, dívida técnica)
293
+ Consolidar e aplicar cross-referências após todos terminarem. OVERVIEW pode precisar de ajuste final após os outros.
294
+
295
+ 8. Aplicar `<quality_gate>` — corrigir documentos que falham antes de finalizar.
296
+
297
+ 9. Resumir no chat (5-10 linhas): padrão arquitetural detectado, domínios funcionais, profile recomendado, próximo passo sugerido, e concerns críticos se houver (máx 3 bullets).
298
+ </process>
299
+
300
+ <quality_gate>
301
+ ## Gate de qualidade do scan
302
+
303
+ Percorrer este checklist antes de finalizar. Corrigir documentos que falham.
304
+
305
+ **Completude estrutural:**
306
+ - [ ] Os sete arquivos existem em `.oxe/codebase/` com conteúdo > 10 linhas cada
307
+ - [ ] Nenhum arquivo termina com `...` ou texto truncado
308
+ - [ ] Nenhum documento é uma lista genérica sem evidência de arquivo/versão
309
+
310
+ **OVERVIEW:**
311
+ - [ ] Padrão arquitetural declarado com ≥ 3 evidências (arquivos/pastas em backtick)
312
+ - [ ] Domínios funcionais listados (ou "nenhum detectado" explícito)
313
+ - [ ] Fluxo principal tem ≥ 5 steps concretos (o que acontece, não o que existe)
314
+
315
+ **STACK:**
316
+ - [ ] Runtime com versão exata
317
+ - [ ] Framework principal com versão exata
318
+ - [ ] ≥ 3 dependências críticas com versão e papel explicado
319
+
320
+ **STRUCTURE:**
321
+ - [ ] ≥ 1 entrypoint identificado com caminho de arquivo
322
+ - [ ] "Onde adicionar novo código" respondido para ≥ 2 tipos de mudança
323
+
324
+ **TESTING:**
325
+ - [ ] Comando de teste principal com path exato, ou marcado "não verificado: [motivo]"
326
+ - [ ] Pré-requisitos de ambiente listados (ou "nenhum" explícito)
327
+
328
+ **INTEGRATIONS:**
329
+ - [ ] Variáveis de ambiente nomeadas por integração, ou "Não detectado" explícito
330
+
331
+ **CONVENTIONS:**
332
+ - [ ] Padrão de erros/exceptions documentado com classe real ou "não padronizado"
333
+ - [ ] Nomenclatura de arquivos com exemplo real em backtick
334
+
335
+ **CONCERNS:**
336
+ - [ ] Cada item tem ≥ 1 arquivo em backtick como evidência
337
+ - [ ] Cada item tem impacto estimado (`low`/`medium`/`high`/`critical`)
338
+
339
+ **Cross-referências:**
340
+ - [ ] ≥ 3 cross-referências entre documentos com path em backtick
341
+
342
+ **STATE.md:**
343
+ - [ ] `Data:` preenchida em ISO (YYYY-MM-DD)
344
+ - [ ] Fase: `scan_complete`
345
+ - [ ] Próximo passo definido (`oxe:spec` ou `oxe:plan`)
346
+ </quality_gate>
347
+
348
+ <success_criteria>
349
+ - [ ] Os sete arquivos em `.oxe/codebase/` existem com conteúdo denso — cada documento passou pelo `<document_quality_guide>` correspondente.
350
+ - [ ] Padrão arquitetural e domínios funcionais detectados e documentados em OVERVIEW.md.
351
+ - [ ] Pelo menos 3 cross-referências entre documentos usando paths em backtick.
352
+ - [ ] Comandos em TESTING.md foram validados ou marcados "não verificado: [motivo]".
353
+ - [ ] `.oxe/STATE.md` com `Data:` preenchida, fase `scan_complete`, próximo passo definido.
354
+ - [ ] Gate de qualidade passou — ou lacunas documentadas explicitamente com justificativa.
355
+ </success_criteria>