oxe-cc 1.9.1 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor/commands/oxe-dashboard.md +2 -2
- package/.cursor/commands/oxe-execute.md +2 -2
- package/.cursor/commands/oxe-plan.md +2 -2
- package/.cursor/commands/oxe-quick.md +2 -2
- package/.cursor/commands/oxe-spec.md +3 -3
- package/.github/prompts/oxe-dashboard.prompt.md +2 -2
- package/.github/prompts/oxe-execute.prompt.md +2 -2
- package/.github/prompts/oxe-plan.prompt.md +2 -2
- package/.github/prompts/oxe-quick.prompt.md +2 -2
- package/.github/prompts/oxe-spec.prompt.md +3 -3
- package/CHANGELOG.md +14 -0
- package/README.md +18 -15
- package/bin/lib/oxe-context-engine.cjs +2 -0
- package/bin/lib/oxe-operational.cjs +23 -7
- package/bin/lib/oxe-project-health.cjs +41 -9
- package/bin/lib/oxe-rationality.cjs +146 -1
- package/bin/lib/oxe-release.cjs +31 -2
- package/bin/oxe-cc.js +38 -24
- package/commands/oxe/dashboard.md +2 -2
- package/commands/oxe/execute.md +2 -2
- package/commands/oxe/plan.md +2 -2
- package/commands/oxe/quick.md +2 -2
- package/commands/oxe/spec.md +3 -3
- package/docs/RELEASE-READINESS.md +2 -0
- package/lib/runtime/scheduler/multi-agent-coordinator.d.ts +9 -0
- package/lib/runtime/scheduler/multi-agent-coordinator.js +60 -9
- package/oxe/templates/REFERENCE-ANCHORS.template.md +12 -5
- package/oxe/templates/SPEC.template.md +10 -0
- package/oxe/templates/VISUAL-INPUTS.template.json +27 -0
- package/oxe/templates/VISUAL-INPUTS.template.md +36 -0
- package/oxe/workflows/execute.md +3 -0
- package/oxe/workflows/plan.md +13 -9
- package/oxe/workflows/references/workflow-runtime-contracts.json +44 -29
- package/oxe/workflows/spec.md +19 -8
- package/oxe/workflows/ui-spec.md +3 -2
- package/package.json +1 -1
- package/packages/runtime/package.json +1 -1
- package/packages/runtime/src/scheduler/multi-agent-coordinator.ts +67 -9
- package/vscode-extension/package.json +1 -1
|
@@ -9,7 +9,7 @@ oxe_tool_profile: read_heavy
|
|
|
9
9
|
oxe_confidence_policy: explicit
|
|
10
10
|
oxe_context_tier: standard
|
|
11
11
|
oxe_contract_version: 2.0.0
|
|
12
|
-
oxe_semantics_hash:
|
|
12
|
+
oxe_semantics_hash: 13daa3c62e0efaa4
|
|
13
13
|
---
|
|
14
14
|
|
|
15
15
|
OXE — visualizar runtime, ondas, checkpoints e saúde operacional da trilha
|
|
@@ -25,7 +25,7 @@ OXE — visualizar runtime, ondas, checkpoints e saúde operacional da trilha
|
|
|
25
25
|
- **Política de confiança:** explícita
|
|
26
26
|
- **Tier de contexto padrão:** padrão
|
|
27
27
|
- **Versão do contrato:** 2.0.0
|
|
28
|
-
- **Checksum semântico:** `
|
|
28
|
+
- **Checksum semântico:** `13daa3c62e0efaa4`
|
|
29
29
|
- **Entrada de contexto prioritária:** `.oxe/context/packs/dashboard.md` e `.oxe/context/packs/dashboard.json`
|
|
30
30
|
- **Regra pack-first:** ler o context pack primeiro; se estiver stale, incompleto ou ausente, cair para leitura direta com fallback explícito.
|
|
31
31
|
- **Inspeção estruturada:** `oxe-cc context inspect --workflow dashboard --json`
|
|
@@ -9,7 +9,7 @@ oxe_tool_profile: write_bounded
|
|
|
9
9
|
oxe_confidence_policy: explicit
|
|
10
10
|
oxe_context_tier: standard
|
|
11
11
|
oxe_contract_version: 2.0.0
|
|
12
|
-
oxe_semantics_hash:
|
|
12
|
+
oxe_semantics_hash: 0e6003de070d497f
|
|
13
13
|
---
|
|
14
14
|
|
|
15
15
|
OXE — Executar plano (solo ou com agentes): escolha Completo (1 sessão) | Por onda | Por tarefa para controlar requisições
|
|
@@ -25,7 +25,7 @@ OXE — Executar plano (solo ou com agentes): escolha Completo (1 sessão) | Por
|
|
|
25
25
|
- **Política de confiança:** explícita
|
|
26
26
|
- **Tier de contexto padrão:** padrão
|
|
27
27
|
- **Versão do contrato:** 2.0.0
|
|
28
|
-
- **Checksum semântico:** `
|
|
28
|
+
- **Checksum semântico:** `0e6003de070d497f`
|
|
29
29
|
- **Entrada de contexto prioritária:** `.oxe/context/packs/execute.md` e `.oxe/context/packs/execute.json`
|
|
30
30
|
- **Regra pack-first:** ler o context pack primeiro; se estiver stale, incompleto ou ausente, cair para leitura direta com fallback explícito.
|
|
31
31
|
- **Inspeção estruturada:** `oxe-cc context inspect --workflow execute --json`
|
|
@@ -9,7 +9,7 @@ oxe_tool_profile: mixed
|
|
|
9
9
|
oxe_confidence_policy: rubric
|
|
10
10
|
oxe_context_tier: standard
|
|
11
11
|
oxe_contract_version: 2.0.0
|
|
12
|
-
oxe_semantics_hash:
|
|
12
|
+
oxe_semantics_hash: 210518babb4788d0
|
|
13
13
|
---
|
|
14
14
|
|
|
15
15
|
OXE — Gera .oxe/PLAN.md com verificação por tarefa
|
|
@@ -25,7 +25,7 @@ OXE — Gera .oxe/PLAN.md com verificação por tarefa
|
|
|
25
25
|
- **Política de confiança:** rubrica
|
|
26
26
|
- **Tier de contexto padrão:** padrão
|
|
27
27
|
- **Versão do contrato:** 2.0.0
|
|
28
|
-
- **Checksum semântico:** `
|
|
28
|
+
- **Checksum semântico:** `210518babb4788d0`
|
|
29
29
|
- **Entrada de contexto prioritária:** `.oxe/context/packs/plan.md` e `.oxe/context/packs/plan.json`
|
|
30
30
|
- **Regra pack-first:** ler o context pack primeiro; se estiver stale, incompleto ou ausente, cair para leitura direta com fallback explícito.
|
|
31
31
|
- **Inspeção estruturada:** `oxe-cc context inspect --workflow plan --json`
|
|
@@ -9,7 +9,7 @@ oxe_tool_profile: mixed
|
|
|
9
9
|
oxe_confidence_policy: rubric
|
|
10
10
|
oxe_context_tier: standard
|
|
11
11
|
oxe_contract_version: 2.0.0
|
|
12
|
-
oxe_semantics_hash:
|
|
12
|
+
oxe_semantics_hash: ea0c06ca7b5c87bb
|
|
13
13
|
---
|
|
14
14
|
|
|
15
15
|
OXE — Modo rápido com Plan-Driven Dynamic Agents lean: objetivo → passos → agentes por domínio (opcional) → verificar
|
|
@@ -25,7 +25,7 @@ OXE — Modo rápido com Plan-Driven Dynamic Agents lean: objetivo → passos
|
|
|
25
25
|
- **Política de confiança:** rubrica
|
|
26
26
|
- **Tier de contexto padrão:** padrão
|
|
27
27
|
- **Versão do contrato:** 2.0.0
|
|
28
|
-
- **Checksum semântico:** `
|
|
28
|
+
- **Checksum semântico:** `ea0c06ca7b5c87bb`
|
|
29
29
|
- **Entrada de contexto prioritária:** `.oxe/context/packs/quick.md` e `.oxe/context/packs/quick.json`
|
|
30
30
|
- **Regra pack-first:** ler o context pack primeiro; se estiver stale, incompleto ou ausente, cair para leitura direta com fallback explícito.
|
|
31
31
|
- **Inspeção estruturada:** `oxe-cc context inspect --workflow quick --json`
|
|
@@ -9,7 +9,7 @@ oxe_tool_profile: read_heavy
|
|
|
9
9
|
oxe_confidence_policy: explicit
|
|
10
10
|
oxe_context_tier: standard
|
|
11
11
|
oxe_contract_version: 2.0.0
|
|
12
|
-
oxe_semantics_hash:
|
|
12
|
+
oxe_semantics_hash: 4ec66ac1e704fdbf
|
|
13
13
|
---
|
|
14
14
|
|
|
15
15
|
OXE — Spec em 5 fases: perguntas → pesquisa → requisitos (R-ID v1/v2/fora) → roteiro (.oxe/ROADMAP.md) → aprovação → plan
|
|
@@ -25,7 +25,7 @@ OXE — Spec em 5 fases: perguntas → pesquisa → requisitos (R-ID v1/v2/fora)
|
|
|
25
25
|
- **Política de confiança:** explícita
|
|
26
26
|
- **Tier de contexto padrão:** padrão
|
|
27
27
|
- **Versão do contrato:** 2.0.0
|
|
28
|
-
- **Checksum semântico:** `
|
|
28
|
+
- **Checksum semântico:** `4ec66ac1e704fdbf`
|
|
29
29
|
- **Entrada de contexto prioritária:** `.oxe/context/packs/spec.md` e `.oxe/context/packs/spec.json`
|
|
30
30
|
- **Regra pack-first:** ler o context pack primeiro; se estiver stale, incompleto ou ausente, cair para leitura direta com fallback explícito.
|
|
31
31
|
- **Inspeção estruturada:** `oxe-cc context inspect --workflow spec --json`
|
|
@@ -44,4 +44,4 @@ OXE — Spec em 5 fases: perguntas → pesquisa → requisitos (R-ID v1/v2/fora)
|
|
|
44
44
|
|
|
45
45
|
<!-- oxe-workflow-resolution:end -->
|
|
46
46
|
|
|
47
|
-
Usa o resto desta mensagem e ficheiros anexados como entrada do utilizador.
|
|
47
|
+
Usa o resto desta mensagem e ficheiros anexados como entrada do utilizador. Se houver imagem, screenshot ou mockup e o runtime suportar visão, materializar a interpretação em `VISUAL-INPUTS`; se não suportar, declarar a limitação e não inventar detalhes visuais.
|
|
@@ -11,7 +11,7 @@ oxe_tool_profile: read_heavy
|
|
|
11
11
|
oxe_confidence_policy: explicit
|
|
12
12
|
oxe_context_tier: standard
|
|
13
13
|
oxe_contract_version: 2.0.0
|
|
14
|
-
oxe_semantics_hash:
|
|
14
|
+
oxe_semantics_hash: 13daa3c62e0efaa4
|
|
15
15
|
---
|
|
16
16
|
|
|
17
17
|
<!-- oxe-reasoning-contract:start -->
|
|
@@ -25,7 +25,7 @@ oxe_semantics_hash: ebb4473c14e5b080
|
|
|
25
25
|
- **Política de confiança:** explícita
|
|
26
26
|
- **Tier de contexto padrão:** padrão
|
|
27
27
|
- **Versão do contrato:** 2.0.0
|
|
28
|
-
- **Checksum semântico:** `
|
|
28
|
+
- **Checksum semântico:** `13daa3c62e0efaa4`
|
|
29
29
|
- **Entrada de contexto prioritária:** `.oxe/context/packs/dashboard.md` e `.oxe/context/packs/dashboard.json`
|
|
30
30
|
- **Regra pack-first:** ler o context pack primeiro; se estiver stale, incompleto ou ausente, cair para leitura direta com fallback explícito.
|
|
31
31
|
- **Inspeção estruturada:** `oxe-cc context inspect --workflow dashboard --json`
|
|
@@ -11,7 +11,7 @@ oxe_tool_profile: write_bounded
|
|
|
11
11
|
oxe_confidence_policy: explicit
|
|
12
12
|
oxe_context_tier: standard
|
|
13
13
|
oxe_contract_version: 2.0.0
|
|
14
|
-
oxe_semantics_hash:
|
|
14
|
+
oxe_semantics_hash: 0e6003de070d497f
|
|
15
15
|
---
|
|
16
16
|
|
|
17
17
|
<!-- oxe-reasoning-contract:start -->
|
|
@@ -25,7 +25,7 @@ oxe_semantics_hash: 7b3446b77aef9353
|
|
|
25
25
|
- **Política de confiança:** explícita
|
|
26
26
|
- **Tier de contexto padrão:** padrão
|
|
27
27
|
- **Versão do contrato:** 2.0.0
|
|
28
|
-
- **Checksum semântico:** `
|
|
28
|
+
- **Checksum semântico:** `0e6003de070d497f`
|
|
29
29
|
- **Entrada de contexto prioritária:** `.oxe/context/packs/execute.md` e `.oxe/context/packs/execute.json`
|
|
30
30
|
- **Regra pack-first:** ler o context pack primeiro; se estiver stale, incompleto ou ausente, cair para leitura direta com fallback explícito.
|
|
31
31
|
- **Inspeção estruturada:** `oxe-cc context inspect --workflow execute --json`
|
|
@@ -11,7 +11,7 @@ oxe_tool_profile: mixed
|
|
|
11
11
|
oxe_confidence_policy: rubric
|
|
12
12
|
oxe_context_tier: standard
|
|
13
13
|
oxe_contract_version: 2.0.0
|
|
14
|
-
oxe_semantics_hash:
|
|
14
|
+
oxe_semantics_hash: 210518babb4788d0
|
|
15
15
|
---
|
|
16
16
|
|
|
17
17
|
<!-- oxe-reasoning-contract:start -->
|
|
@@ -25,7 +25,7 @@ oxe_semantics_hash: 5c589398cb807029
|
|
|
25
25
|
- **Política de confiança:** rubrica
|
|
26
26
|
- **Tier de contexto padrão:** padrão
|
|
27
27
|
- **Versão do contrato:** 2.0.0
|
|
28
|
-
- **Checksum semântico:** `
|
|
28
|
+
- **Checksum semântico:** `210518babb4788d0`
|
|
29
29
|
- **Entrada de contexto prioritária:** `.oxe/context/packs/plan.md` e `.oxe/context/packs/plan.json`
|
|
30
30
|
- **Regra pack-first:** ler o context pack primeiro; se estiver stale, incompleto ou ausente, cair para leitura direta com fallback explícito.
|
|
31
31
|
- **Inspeção estruturada:** `oxe-cc context inspect --workflow plan --json`
|
|
@@ -11,7 +11,7 @@ oxe_tool_profile: mixed
|
|
|
11
11
|
oxe_confidence_policy: rubric
|
|
12
12
|
oxe_context_tier: standard
|
|
13
13
|
oxe_contract_version: 2.0.0
|
|
14
|
-
oxe_semantics_hash:
|
|
14
|
+
oxe_semantics_hash: ea0c06ca7b5c87bb
|
|
15
15
|
---
|
|
16
16
|
|
|
17
17
|
<!-- oxe-reasoning-contract:start -->
|
|
@@ -25,7 +25,7 @@ oxe_semantics_hash: 2193373eb2691e0d
|
|
|
25
25
|
- **Política de confiança:** rubrica
|
|
26
26
|
- **Tier de contexto padrão:** padrão
|
|
27
27
|
- **Versão do contrato:** 2.0.0
|
|
28
|
-
- **Checksum semântico:** `
|
|
28
|
+
- **Checksum semântico:** `ea0c06ca7b5c87bb`
|
|
29
29
|
- **Entrada de contexto prioritária:** `.oxe/context/packs/quick.md` e `.oxe/context/packs/quick.json`
|
|
30
30
|
- **Regra pack-first:** ler o context pack primeiro; se estiver stale, incompleto ou ausente, cair para leitura direta com fallback explícito.
|
|
31
31
|
- **Inspeção estruturada:** `oxe-cc context inspect --workflow quick --json`
|
|
@@ -11,7 +11,7 @@ oxe_tool_profile: read_heavy
|
|
|
11
11
|
oxe_confidence_policy: explicit
|
|
12
12
|
oxe_context_tier: standard
|
|
13
13
|
oxe_contract_version: 2.0.0
|
|
14
|
-
oxe_semantics_hash:
|
|
14
|
+
oxe_semantics_hash: 4ec66ac1e704fdbf
|
|
15
15
|
---
|
|
16
16
|
|
|
17
17
|
<!-- oxe-reasoning-contract:start -->
|
|
@@ -25,7 +25,7 @@ oxe_semantics_hash: eea8766eab635c97
|
|
|
25
25
|
- **Política de confiança:** explícita
|
|
26
26
|
- **Tier de contexto padrão:** padrão
|
|
27
27
|
- **Versão do contrato:** 2.0.0
|
|
28
|
-
- **Checksum semântico:** `
|
|
28
|
+
- **Checksum semântico:** `4ec66ac1e704fdbf`
|
|
29
29
|
- **Entrada de contexto prioritária:** `.oxe/context/packs/spec.md` e `.oxe/context/packs/spec.json`
|
|
30
30
|
- **Regra pack-first:** ler o context pack primeiro; se estiver stale, incompleto ou ausente, cair para leitura direta com fallback explícito.
|
|
31
31
|
- **Inspeção estruturada:** `oxe-cc context inspect --workflow spec --json`
|
|
@@ -44,4 +44,4 @@ oxe_semantics_hash: eea8766eab635c97
|
|
|
44
44
|
|
|
45
45
|
<!-- oxe-workflow-resolution:end -->
|
|
46
46
|
|
|
47
|
-
Usa o resto desta mensagem e ficheiros anexados como entrada do utilizador.
|
|
47
|
+
Usa o resto desta mensagem e ficheiros anexados como entrada do utilizador. Se houver imagem, screenshot ou mockup e o runtime suportar visão, materializar a interpretação em `VISUAL-INPUTS`; se não suportar, declarar a limitação e não inventar detalhes visuais.
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,20 @@ Todas as versões seguem [Semantic Versioning](https://semver.org/). As mudança
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [1.10.0] — 2026-05-05
|
|
8
|
+
|
|
9
|
+
### Operational Maturity
|
|
10
|
+
|
|
11
|
+
Esta release amplia a prova operacional do OXE para cenários mais próximos de uso real, sem abrir novos comandos públicos.
|
|
12
|
+
|
|
13
|
+
- `test:runtime-real` passa a cobrir cenários multi-wave, multi-file, gate pendente, verify parcial e promoção bloqueada por ausência de evidência técnica
|
|
14
|
+
- `workspace-merge-report.json` passa a carregar `evidence_refs`, `diff_summary`, arquivos aplicados, status de verify pós-execução e próxima ação operacional por task
|
|
15
|
+
- `status`, `runtime status` e `runtime agents status` expõem merge readiness, blockers e próxima ação multi-agent de forma mais direta
|
|
16
|
+
- `workspaceMode: product_package` deixa de marcar `contextQuality` como crítico quando não há ciclo OXE ativo no próprio repositório do pacote
|
|
17
|
+
- smoke multi-runtime reforça Codex e Copilot VS Code com validação explícita de prompts/skills, manifesto e referências quebradas
|
|
18
|
+
- `doctor --release` passa a validar o conteúdo mínimo dos relatórios runtime-real e multi-agent-real da linha `1.10.0`
|
|
19
|
+
- `/oxe-spec` passa a ter contrato multimodal: imagens, screenshots e mockups enviados no chat devem virar `VISUAL-INPUTS.md/json`, anchors visuais e readiness bloqueante quando críticos para UI/fluxo
|
|
20
|
+
|
|
7
21
|
## [1.9.1] — 2026-05-04
|
|
8
22
|
|
|
9
23
|
### Multi-Agent Real
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
[](https://www.npmjs.com/package/oxe-cc)
|
|
8
8
|
[](LICENSE)
|
|
9
9
|
|
|
10
|
-
**Versão:** `1.
|
|
10
|
+
**Versão:** `1.10.0` · [package.json](package.json)
|
|
11
11
|
|
|
12
12
|
**Framework OXE — Orchestrated eXperience Engineering**
|
|
13
13
|
|
|
@@ -34,9 +34,10 @@ Ele se apoia em três princípios:
|
|
|
34
34
|
|
|
35
35
|
- **Spec-driven design** — antes de escrever código, você define *o que* construir e *como saber que está pronto*. Essa especificação restringe e guia tudo o que vem depois.
|
|
36
36
|
- **Context engineering** — o estado do trabalho fica em arquivos pequenos dentro de `.oxe/`, não na memória do chat. O agente lê o que precisa, quando precisa — sem sobrecarregar o contexto com decisões já tomadas.
|
|
37
|
-
- **Lessons loop** — ao fim de cada ciclo, `/oxe-retro` extrai 3–5 lições prescritivas que o próximo spec/plan lê automaticamente. Depois de alguns ciclos, os planos ficam dramaticamente melhores porque os erros anteriores não se repetem.
|
|
38
|
-
- **Plan-Driven Dynamic Agents** — quando há múltiplos domínios, o plano cria agentes específicos para *aquela demanda*. Agentes não são reaproveitados entre projetos ou demandas.
|
|
39
|
-
- **Semântica de raciocínio multi-runtime** — discovery, planning, execution, review e status seguem contratos cognitivos explícitos. O mesmo workflow OXE deve gerar respostas exploratórias, decision-complete e auditáveis em Copilot, Cursor, Claude, Codex e demais runtimes suportados.
|
|
37
|
+
- **Lessons loop** — ao fim de cada ciclo, `/oxe-retro` extrai 3–5 lições prescritivas que o próximo spec/plan lê automaticamente. Depois de alguns ciclos, os planos ficam dramaticamente melhores porque os erros anteriores não se repetem.
|
|
38
|
+
- **Plan-Driven Dynamic Agents** — quando há múltiplos domínios, o plano cria agentes específicos para *aquela demanda*. Agentes não são reaproveitados entre projetos ou demandas.
|
|
39
|
+
- **Semântica de raciocínio multi-runtime** — discovery, planning, execution, review e status seguem contratos cognitivos explícitos. O mesmo workflow OXE deve gerar respostas exploratórias, decision-complete e auditáveis em Copilot, Cursor, Claude, Codex e demais runtimes suportados.
|
|
40
|
+
- **Entradas visuais rastreáveis** — imagens, screenshots e mockups enviados ao chat são interpretados pelo runtime hospedeiro quando ele tem visão, mas o OXE exige que essa interpretação vire `VISUAL-INPUTS.md/json` e anchors antes de alimentar plan/execute.
|
|
40
41
|
|
|
41
42
|
O resultado: **menos requisições**, **mais coerência**, e uma experiência de engenharia orquestrada que funciona do mesmo jeito em qualquer IDE.
|
|
42
43
|
|
|
@@ -68,15 +69,16 @@ O OXE já não é só um conjunto de prompts e markdowns. Hoje ele combina:
|
|
|
68
69
|
|
|
69
70
|
Em termos práticos, o estado operacional real agora passa por:
|
|
70
71
|
|
|
71
|
-
- `ACTIVE-RUN.json`
|
|
72
|
-
- `.oxe/runs/<run_id>.json`
|
|
73
|
-
- `.oxe/runs/<run_id>/verification-manifest.json`
|
|
74
|
-
- `.oxe/runs/<run_id>/residual-risk-ledger.json`
|
|
75
|
-
- `.oxe/runs/<run_id>/evidence-coverage.json`
|
|
76
|
-
- `.oxe/
|
|
77
|
-
-
|
|
78
|
-
|
|
79
|
-
|
|
72
|
+
- `ACTIVE-RUN.json`
|
|
73
|
+
- `.oxe/runs/<run_id>.json`
|
|
74
|
+
- `.oxe/runs/<run_id>/verification-manifest.json`
|
|
75
|
+
- `.oxe/runs/<run_id>/residual-risk-ledger.json`
|
|
76
|
+
- `.oxe/runs/<run_id>/evidence-coverage.json`
|
|
77
|
+
- `.oxe/runs/<run_id>/workspace-merge-report.json`
|
|
78
|
+
- `.oxe/execution/GATES.json`
|
|
79
|
+
- `OXE-EVENTS.ndjson`
|
|
80
|
+
|
|
81
|
+
Contrato estável desta release:
|
|
80
82
|
|
|
81
83
|
- `execute` e `verify` são `runtime-first` quando `oxe-cc runtime` está disponível
|
|
82
84
|
- `status`, `doctor`, dashboard e CLI de runtime leem o mesmo estado canónico
|
|
@@ -250,7 +252,7 @@ Cada passo lê o anterior como contexto e escreve seu artefato no escopo correto
|
|
|
250
252
|
| Comando | O que entrega |
|
|
251
253
|
|---------|--------------|
|
|
252
254
|
| `/oxe` | Sem input → próximo passo. Com pergunta → situação atual (artefatos reais). Com "help" → trilha principal. |
|
|
253
|
-
| `/oxe-spec` | **5 fases**: perguntas → pesquisa → requisitos R-ID → roteiro → aprovação. `--refresh` / `--full` fazem scan antes. `--research` ativa spike explícito. `--ui` gera UI-SPEC ao final.
|
|
255
|
+
| `/oxe-spec` | **5 fases**: perguntas → pesquisa → requisitos R-ID → roteiro → aprovação. `--refresh` / `--full` fazem scan antes. `--research` ativa spike explícito. `--ui` gera UI-SPEC ao final. Se houver imagem/screenshot/mockup no chat, materializa `VISUAL-INPUTS` quando o runtime suportar visão ou registra limitação explícita. |
|
|
254
256
|
| `/oxe-plan` | **Test-first:** `Verificar` vem antes de `Implementar` em cada tarefa. `PLAN.md` com `## Autoavaliação do Plano` (rubrica fixa + confiança determinística). Usa investigações e capabilities como evidência. |
|
|
255
257
|
| `/oxe-execute` | Execução A/B/C. Valida autoavaliação antes de implementar. `--note` registra observação. `--debug` aciona diagnóstico inline. `--deep-diagnosis` escalona para forensics. `--checkpoint "<nome>"` cria snapshot. `--iterative` ativa loop de retry. Usa `EXECUTION-RUNTIME.md`, `ACTIVE-RUN.json`, `OXE-EVENTS.ndjson`. |
|
|
256
258
|
| `/oxe-verify` | Até 6 camadas: audit + critérios + decisões + coerência operacional + calibração + UAT. `--gaps` ativa Camada 5 (cobertura). `--security` ativa Camada 6 (OWASP). `--ui` inclui UI-REVIEW. `--pr` / `--diff` incluem revisão de PR. Retro automática ao fechar (`--skip-retro` para desativar). |
|
|
@@ -283,7 +285,8 @@ Estes comportamentos continuam existindo, mas agora são ativados como flags dos
|
|
|
283
285
|
|---------------|-------------|
|
|
284
286
|
| Scan / refresh do codebase | `/oxe-spec --refresh` (incremental) ou `--full` (completo) |
|
|
285
287
|
| Research / spike / engenharia reversa | `/oxe-spec --research` |
|
|
286
|
-
| Contrato UI/UX | `/oxe-spec --ui` |
|
|
288
|
+
| Contrato UI/UX | `/oxe-spec --ui` |
|
|
289
|
+
| Imagem, screenshot ou mockup como entrada de spec | anexar no chat junto com `/oxe-spec`; o OXE materializa a interpretação em `.oxe/investigations/visual/VISUAL-INPUTS.*` quando o runtime tiver visão |
|
|
287
290
|
| Registrar observação durante execução | `/oxe-execute --note "texto"` |
|
|
288
291
|
| Diagnóstico técnico inline | `/oxe-execute --debug` |
|
|
289
292
|
| Diagnóstico pós-falha persistente | `/oxe-execute --deep-diagnosis` |
|
|
@@ -231,6 +231,8 @@ function resolveArtifactCandidates(projectRoot, activeSession) {
|
|
|
231
231
|
reference_anchors: withFallback('reference_anchors', 'reference_anchors', scoped.referenceAnchors, base.referenceAnchors),
|
|
232
232
|
fixture_pack_md: withFallback('fixture_pack_md', 'fixtures', scoped.fixturePackMd, base.fixturePackMd),
|
|
233
233
|
fixture_pack_json: withFallback('fixture_pack_json', 'fixtures', scoped.fixturePackJson, base.fixturePackJson),
|
|
234
|
+
visual_inputs_md: withFallback('visual_inputs_md', 'visual_inputs', scoped.visualInputsMd, base.visualInputsMd),
|
|
235
|
+
visual_inputs_json: withFallback('visual_inputs_json', 'visual_inputs', scoped.visualInputsJson, base.visualInputsJson),
|
|
234
236
|
plan_agents: withFallback('plan_agents', 'plan_agents', scoped.planAgents, base.planAgents),
|
|
235
237
|
quick: withFallback('quick', 'plan', scoped.quick, base.quick),
|
|
236
238
|
runtime: withFallback('runtime', 'runtime', scoped.runtime, base.runtime),
|
|
@@ -913,9 +913,11 @@ function readRuntimeMultiAgentStatus(projectRoot, activeSession, options = {}) {
|
|
|
913
913
|
mergeBlockers: [],
|
|
914
914
|
mergeReadiness: null,
|
|
915
915
|
arbitrationRequired: false,
|
|
916
|
+
health: 'unknown',
|
|
917
|
+
nextAction: 'Execute ou compile uma run antes de inspecionar status multi-agent.',
|
|
916
918
|
summary: null,
|
|
917
919
|
};
|
|
918
|
-
}
|
|
920
|
+
}
|
|
919
921
|
const runDir = path.join(projectRoot, '.oxe', 'runs', runId);
|
|
920
922
|
const statePath = path.join(runDir, 'multi-agent-state.json');
|
|
921
923
|
const summaryPath = path.join(runDir, 'multi-agent-summary.json');
|
|
@@ -931,9 +933,21 @@ function readRuntimeMultiAgentStatus(projectRoot, activeSession, options = {}) {
|
|
|
931
933
|
const workspaceMergeReport = runtime && typeof runtime.loadWorkspaceMergeReport === 'function'
|
|
932
934
|
? runtime.loadWorkspaceMergeReport(projectRoot, runId)
|
|
933
935
|
: readJsonIfExists(workspaceMergePath);
|
|
934
|
-
const handoffs = readJsonIfExists(handoffsPath);
|
|
935
|
-
const arbitrationResults = readJsonIfExists(arbitrationPath);
|
|
936
|
-
|
|
936
|
+
const handoffs = readJsonIfExists(handoffsPath);
|
|
937
|
+
const arbitrationResults = readJsonIfExists(arbitrationPath);
|
|
938
|
+
const mergeBlockers = workspaceMergeReport && Array.isArray(workspaceMergeReport.blockers) ? workspaceMergeReport.blockers : [];
|
|
939
|
+
const mergeReadiness = workspaceMergeReport && workspaceMergeReport.merge_readiness ? workspaceMergeReport.merge_readiness : null;
|
|
940
|
+
let nextAction = null;
|
|
941
|
+
if (!state) {
|
|
942
|
+
nextAction = 'Execute runtime com plan-agents.json válido para materializar o estado multi-agent.';
|
|
943
|
+
} else if (mergeBlockers.length > 0) {
|
|
944
|
+
nextAction = 'Resolva os merge blockers do workspace antes de promover ou aplicar novos resultados.';
|
|
945
|
+
} else if (mergeReadiness === 'partial') {
|
|
946
|
+
nextAction = 'Conclua verify/evidence pós-merge ou aplique os worktrees pendentes antes de fechar a run.';
|
|
947
|
+
} else if (mergeReadiness === 'ready') {
|
|
948
|
+
nextAction = 'Multi-agent merge pronto; avance para runtime verify ou promotion conforme o ciclo.';
|
|
949
|
+
}
|
|
950
|
+
return {
|
|
937
951
|
path: statePath,
|
|
938
952
|
enabled: Boolean(state),
|
|
939
953
|
runId,
|
|
@@ -942,13 +956,15 @@ function readRuntimeMultiAgentStatus(projectRoot, activeSession, options = {}) {
|
|
|
942
956
|
agents: state && Array.isArray(state.agent_results) ? state.agent_results : [],
|
|
943
957
|
ownership: state && Array.isArray(state.ownership) ? state.ownership : [],
|
|
944
958
|
orphanReassignments: state && Array.isArray(state.orphan_reassignments) ? state.orphan_reassignments : [],
|
|
945
|
-
handoffs: Array.isArray(handoffs) ? handoffs : [],
|
|
959
|
+
handoffs: Array.isArray(handoffs) ? handoffs : [],
|
|
946
960
|
arbitrationResults: Array.isArray(arbitrationResults) ? arbitrationResults : [],
|
|
947
961
|
workspaceMergeReport: workspaceMergeReport || null,
|
|
948
962
|
worktrees: workspaceMergeReport && Array.isArray(workspaceMergeReport.records) ? workspaceMergeReport.records : [],
|
|
949
|
-
mergeBlockers
|
|
950
|
-
mergeReadiness
|
|
963
|
+
mergeBlockers,
|
|
964
|
+
mergeReadiness,
|
|
951
965
|
arbitrationRequired: Boolean(workspaceMergeReport && workspaceMergeReport.arbitration_required),
|
|
966
|
+
health: summary && summary.health ? summary.health : (mergeBlockers.length > 0 ? 'degraded' : 'unknown'),
|
|
967
|
+
nextAction,
|
|
952
968
|
summary: summary || null,
|
|
953
969
|
};
|
|
954
970
|
}
|
|
@@ -658,6 +658,8 @@ function oxePaths(target) {
|
|
|
658
658
|
referenceAnchors: path.join(oxe, 'REFERENCE-ANCHORS.md'),
|
|
659
659
|
fixturePackMd: path.join(oxe, 'FIXTURE-PACK.md'),
|
|
660
660
|
fixturePackJson: path.join(oxe, 'FIXTURE-PACK.json'),
|
|
661
|
+
visualInputsMd: path.join(oxe, 'investigations', 'visual', 'VISUAL-INPUTS.md'),
|
|
662
|
+
visualInputsJson: path.join(oxe, 'investigations', 'visual', 'VISUAL-INPUTS.json'),
|
|
661
663
|
quick: path.join(oxe, 'QUICK.md'),
|
|
662
664
|
verify: path.join(oxe, 'VERIFY.md'),
|
|
663
665
|
discuss: path.join(oxe, 'DISCUSS.md'),
|
|
@@ -700,6 +702,8 @@ function scopedOxePaths(target, activeSession) {
|
|
|
700
702
|
referenceAnchors: path.join(sessionRoot, 'plan', 'REFERENCE-ANCHORS.md'),
|
|
701
703
|
fixturePackMd: path.join(sessionRoot, 'plan', 'FIXTURE-PACK.md'),
|
|
702
704
|
fixturePackJson: path.join(sessionRoot, 'plan', 'FIXTURE-PACK.json'),
|
|
705
|
+
visualInputsMd: path.join(sessionRoot, 'research', 'investigations', 'visual', 'VISUAL-INPUTS.md'),
|
|
706
|
+
visualInputsJson: path.join(sessionRoot, 'research', 'investigations', 'visual', 'VISUAL-INPUTS.json'),
|
|
703
707
|
quick: path.join(sessionRoot, 'plan', 'QUICK.md'),
|
|
704
708
|
verify: path.join(sessionRoot, 'verification', 'VERIFY.md'),
|
|
705
709
|
summary: path.join(sessionRoot, 'verification', 'SUMMARY.md'),
|
|
@@ -741,6 +745,8 @@ function resolvedReadableOxePaths(target, activeSession) {
|
|
|
741
745
|
referenceAnchors: preferScoped('referenceAnchors'),
|
|
742
746
|
fixturePackMd: preferScoped('fixturePackMd'),
|
|
743
747
|
fixturePackJson: preferScoped('fixturePackJson'),
|
|
748
|
+
visualInputsMd: preferScoped('visualInputsMd'),
|
|
749
|
+
visualInputsJson: preferScoped('visualInputsJson'),
|
|
744
750
|
quick: preferScoped('quick'),
|
|
745
751
|
verify: preferScoped('verify'),
|
|
746
752
|
summary: preferScoped('summary'),
|
|
@@ -1317,8 +1323,8 @@ function listOxePromptFiles(dir) {
|
|
|
1317
1323
|
if (!fs.existsSync(dir)) return [];
|
|
1318
1324
|
return fs
|
|
1319
1325
|
.readdirSync(dir, { withFileTypes: true })
|
|
1320
|
-
.filter((entry) => entry.isFile() && /^oxe-.*\.prompt\.md$/i.test(entry.name))
|
|
1321
|
-
.map((entry) => path.join(dir, entry.name))
|
|
1326
|
+
.filter((entry) => entry.isFile() && (entry.name === 'oxe.prompt.md' || /^oxe-.*\.prompt\.md$/i.test(entry.name)))
|
|
1327
|
+
.map((entry) => path.join(dir, entry.name))
|
|
1322
1328
|
.sort();
|
|
1323
1329
|
}
|
|
1324
1330
|
|
|
@@ -1439,9 +1445,9 @@ function copilotIntegrationReport(target) {
|
|
|
1439
1445
|
if (legacyHasOxeBlock) {
|
|
1440
1446
|
warnings.push('Bloco OXE legado detectado em ~/.copilot/copilot-instructions.md');
|
|
1441
1447
|
}
|
|
1442
|
-
if (legacyHasOtherManagedBlocks) {
|
|
1443
|
-
warnings.push('copilot-instructions global contém blocos geridos por outro framework; isso pode contaminar respostas do Copilot');
|
|
1444
|
-
}
|
|
1448
|
+
if (legacyHasOtherManagedBlocks) {
|
|
1449
|
+
warnings.push('copilot-instructions global contém blocos geridos por outro framework; isso pode contaminar respostas do Copilot — execute `oxe-cc uninstall --copilot-legacy-clean` se quiser limpar o legado global.');
|
|
1450
|
+
}
|
|
1445
1451
|
if (!manifestRaw.ok && fs.existsSync(workspace.manifest)) {
|
|
1446
1452
|
warnings.push(`Manifesto Copilot VS Code inválido: ${manifestRaw.error}`);
|
|
1447
1453
|
} else if (!fs.existsSync(workspace.manifest) && workspacePromptFiles.length > 0) {
|
|
@@ -1856,11 +1862,14 @@ function planSelfEvaluationWarnings(planPath, threshold) {
|
|
|
1856
1862
|
* implementationPackReady: boolean,
|
|
1857
1863
|
* referenceAnchorsReady: boolean,
|
|
1858
1864
|
* fixturePackReady: boolean,
|
|
1865
|
+
* visualInputReadiness?: string,
|
|
1866
|
+
* visualInputsReady?: boolean,
|
|
1859
1867
|
* executionRationalityReady: boolean,
|
|
1860
1868
|
* criticalExecutionGaps: string[],
|
|
1861
1869
|
* implementationPack: { path?: string | null, tasks?: unknown[] } | null,
|
|
1862
1870
|
* referenceAnchors: { path?: string | null, anchors?: unknown[], missingCriticalCount?: number } | null,
|
|
1863
1871
|
* fixturePack: { path?: string | null, fixtures?: unknown[] } | null,
|
|
1872
|
+
* visualInputs?: { path?: string | null, inputCount?: number, criticalInputCount?: number } | null,
|
|
1864
1873
|
* }} summary
|
|
1865
1874
|
* @returns {string[]}
|
|
1866
1875
|
*/
|
|
@@ -1877,6 +1886,9 @@ function executionRationalityWarningsFromSummary(summary) {
|
|
|
1877
1886
|
if (!summary.fixturePackReady) {
|
|
1878
1887
|
warns.push(`FIXTURE-PACK não está pronto em ${summary.fixturePack && summary.fixturePack.path ? summary.fixturePack.path : '.oxe/FIXTURE-PACK.json'}`);
|
|
1879
1888
|
}
|
|
1889
|
+
if (summary.visualInputReadiness === 'blocked') {
|
|
1890
|
+
warns.push(`VISUAL-INPUTS bloqueado em ${summary.visualInputs && summary.visualInputs.path ? summary.visualInputs.path : '.oxe/investigations/visual/VISUAL-INPUTS.json'}`);
|
|
1891
|
+
}
|
|
1880
1892
|
if (Array.isArray(summary.criticalExecutionGaps) && summary.criticalExecutionGaps.length) {
|
|
1881
1893
|
warns.push(...summary.criticalExecutionGaps);
|
|
1882
1894
|
}
|
|
@@ -2191,6 +2203,9 @@ function suggestNextStep(target, cfg = {}) {
|
|
|
2191
2203
|
referenceAnchors: p.referenceAnchors,
|
|
2192
2204
|
fixturePackJson: p.fixturePackJson,
|
|
2193
2205
|
fixturePackMd: p.fixturePackMd,
|
|
2206
|
+
spec: p.spec,
|
|
2207
|
+
visualInputsJson: p.visualInputsJson,
|
|
2208
|
+
visualInputsMd: p.visualInputsMd,
|
|
2194
2209
|
});
|
|
2195
2210
|
if (
|
|
2196
2211
|
shouldEnforceExecutionRationalityGate(phase)
|
|
@@ -2368,6 +2383,9 @@ function buildHealthReport(target) {
|
|
|
2368
2383
|
referenceAnchors: p.referenceAnchors,
|
|
2369
2384
|
fixturePackJson: p.fixturePackJson,
|
|
2370
2385
|
fixturePackMd: p.fixturePackMd,
|
|
2386
|
+
spec: p.spec,
|
|
2387
|
+
visualInputsJson: p.visualInputsJson,
|
|
2388
|
+
visualInputsMd: p.visualInputsMd,
|
|
2371
2389
|
});
|
|
2372
2390
|
const suppressExecutionWorkspaceGates = shouldSuppressExecutionWorkspaceGates(
|
|
2373
2391
|
workspaceInfo.workspaceMode,
|
|
@@ -2520,10 +2538,22 @@ function buildHealthReport(target) {
|
|
|
2520
2538
|
contextQuality.primaryStatus = contextPacks[firstWorkflow].context_quality.status;
|
|
2521
2539
|
}
|
|
2522
2540
|
}
|
|
2523
|
-
} catch (err) {
|
|
2524
|
-
contextWarn.push(`Contexto — falha ao inspecionar context packs: ${err instanceof Error ? err.message : String(err)}`);
|
|
2525
|
-
}
|
|
2526
|
-
|
|
2541
|
+
} catch (err) {
|
|
2542
|
+
contextWarn.push(`Contexto — falha ao inspecionar context packs: ${err instanceof Error ? err.message : String(err)}`);
|
|
2543
|
+
}
|
|
2544
|
+
if (suppressExecutionWorkspaceGates) {
|
|
2545
|
+
for (const key of Object.keys(contextPacks)) delete contextPacks[key];
|
|
2546
|
+
for (const key of Object.keys(packFreshness)) delete packFreshness[key];
|
|
2547
|
+
contextWarn.length = 0;
|
|
2548
|
+
activeSummaryRefs = { project: null, session: null, phase: null };
|
|
2549
|
+
contextQuality = {
|
|
2550
|
+
primaryWorkflow: 'release',
|
|
2551
|
+
primaryScore: null,
|
|
2552
|
+
primaryStatus: 'not_applicable',
|
|
2553
|
+
byWorkflow: {},
|
|
2554
|
+
};
|
|
2555
|
+
}
|
|
2556
|
+
const semanticsManifest = readJsonFileSafe(base.runtimeSemanticsManifest);
|
|
2527
2557
|
const semanticsAudit = runtimeSemantics.auditRuntimeTargets(target);
|
|
2528
2558
|
/** @type {string[]} */
|
|
2529
2559
|
const semanticsWarn = [];
|
|
@@ -2626,6 +2656,8 @@ function buildHealthReport(target) {
|
|
|
2626
2656
|
implementationPackReady: executionRationality.implementationPackReady,
|
|
2627
2657
|
referenceAnchorsReady: executionRationality.referenceAnchorsReady,
|
|
2628
2658
|
fixturePackReady: executionRationality.fixturePackReady,
|
|
2659
|
+
visualInputReadiness: executionRationality.visualInputReadiness,
|
|
2660
|
+
visualInputsReady: executionRationality.visualInputsReady,
|
|
2629
2661
|
executionRationalityReady: executionRationality.executionRationalityReady,
|
|
2630
2662
|
criticalExecutionGaps: executionRationality.criticalExecutionGaps,
|
|
2631
2663
|
executionRationality,
|