oxe-cc 0.7.1 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor/commands/oxe-ask.md +34 -0
- package/.cursor/commands/oxe-capabilities.md +34 -0
- package/.cursor/commands/oxe-checkpoint.md +34 -0
- package/.cursor/commands/oxe-compact.md +33 -0
- package/.cursor/commands/oxe-dashboard.md +34 -0
- package/.cursor/commands/oxe-debug.md +34 -0
- package/.cursor/commands/oxe-discuss.md +34 -0
- package/.cursor/commands/oxe-execute.md +34 -0
- package/.cursor/commands/oxe-forensics.md +34 -0
- package/.cursor/commands/oxe-help.md +33 -0
- package/.cursor/commands/oxe-loop.md +34 -0
- package/.cursor/commands/oxe-milestone.md +34 -0
- package/.cursor/commands/oxe-next.md +33 -0
- package/.cursor/commands/oxe-obs.md +34 -0
- package/.cursor/commands/oxe-plan-agent.md +33 -0
- package/.cursor/commands/oxe-plan.md +34 -0
- package/.cursor/commands/oxe-project.md +34 -0
- package/.cursor/commands/oxe-quick.md +34 -0
- package/.cursor/commands/oxe-research.md +34 -0
- package/.cursor/commands/oxe-retro.md +34 -0
- package/.cursor/commands/oxe-review-pr.md +34 -0
- package/.cursor/commands/oxe-route.md +34 -0
- package/.cursor/commands/oxe-scan.md +34 -0
- package/.cursor/commands/oxe-security.md +34 -0
- package/.cursor/commands/oxe-session.md +34 -0
- package/.cursor/commands/oxe-skill.md +45 -0
- package/.cursor/commands/oxe-spec.md +34 -0
- package/.cursor/commands/oxe-ui-review.md +34 -0
- package/.cursor/commands/oxe-ui-spec.md +34 -0
- package/.cursor/commands/oxe-update.md +33 -0
- package/.cursor/commands/oxe-validate-gaps.md +34 -0
- package/.cursor/commands/oxe-verify.md +34 -0
- package/.cursor/commands/oxe-workstream.md +34 -0
- package/.cursor/commands/oxe.md +38 -2
- package/.github/copilot-instructions.md +8 -5
- package/.github/prompts/oxe-ask.prompt.md +33 -0
- package/.github/prompts/oxe-capabilities.prompt.md +33 -0
- package/.github/prompts/oxe-checkpoint.prompt.md +45 -12
- package/.github/prompts/oxe-compact.prompt.md +44 -11
- package/.github/prompts/oxe-dashboard.prompt.md +33 -0
- package/.github/prompts/oxe-debug.prompt.md +45 -12
- package/.github/prompts/oxe-discuss.prompt.md +33 -0
- package/.github/prompts/oxe-execute.prompt.md +45 -12
- package/.github/prompts/oxe-forensics.prompt.md +45 -12
- package/.github/prompts/oxe-help.prompt.md +42 -9
- package/.github/prompts/oxe-loop.prompt.md +45 -12
- package/.github/prompts/oxe-milestone.prompt.md +45 -12
- package/.github/prompts/oxe-next.prompt.md +42 -9
- package/.github/prompts/oxe-obs.prompt.md +45 -12
- package/.github/prompts/oxe-plan-agent.prompt.md +43 -10
- package/.github/prompts/oxe-plan.prompt.md +45 -12
- package/.github/prompts/oxe-project.prompt.md +45 -12
- package/.github/prompts/oxe-quick.prompt.md +45 -12
- package/.github/prompts/oxe-research.prompt.md +45 -12
- package/.github/prompts/oxe-retro.prompt.md +45 -12
- package/.github/prompts/oxe-review-pr.prompt.md +45 -12
- package/.github/prompts/oxe-route.prompt.md +45 -12
- package/.github/prompts/oxe-scan.prompt.md +45 -12
- package/.github/prompts/oxe-security.prompt.md +45 -12
- package/.github/prompts/oxe-session.prompt.md +33 -0
- package/.github/prompts/oxe-skill.prompt.md +45 -0
- package/.github/prompts/oxe-spec.prompt.md +45 -12
- package/.github/prompts/oxe-ui-review.prompt.md +45 -12
- package/.github/prompts/oxe-ui-spec.prompt.md +45 -12
- package/.github/prompts/oxe-update.prompt.md +44 -11
- package/.github/prompts/oxe-validate-gaps.prompt.md +45 -12
- package/.github/prompts/oxe-verify.prompt.md +45 -12
- package/.github/prompts/oxe-workstream.prompt.md +45 -12
- package/.github/prompts/oxe.prompt.md +45 -12
- package/AGENTS.md +6 -4
- package/CHANGELOG.md +45 -0
- package/README.md +38 -8
- package/bin/lib/oxe-agent-install.cjs +69 -55
- package/bin/lib/oxe-context-engine.cjs +866 -0
- package/bin/lib/oxe-dashboard.cjs +605 -588
- package/bin/lib/oxe-operational.cjs +105 -0
- package/bin/lib/oxe-plugins.cjs +115 -0
- package/bin/lib/oxe-project-health.cjs +1139 -666
- package/bin/lib/oxe-runtime-semantics.cjs +459 -0
- package/bin/lib/oxe-security.cjs +64 -0
- package/bin/oxe-cc.js +615 -46
- package/commands/oxe/ask.md +33 -0
- package/commands/oxe/capabilities.md +33 -0
- package/commands/oxe/checkpoint.md +49 -16
- package/commands/oxe/compact.md +43 -10
- package/commands/oxe/dashboard.md +33 -0
- package/commands/oxe/debug.md +49 -16
- package/commands/oxe/discuss.md +33 -0
- package/commands/oxe/execute.md +49 -16
- package/commands/oxe/forensics.md +49 -16
- package/commands/oxe/help.md +44 -11
- package/commands/oxe/loop.md +50 -17
- package/commands/oxe/milestone.md +49 -16
- package/commands/oxe/next.md +45 -12
- package/commands/oxe/obs.md +49 -16
- package/commands/oxe/oxe.md +49 -16
- package/commands/oxe/plan-agent.md +48 -15
- package/commands/oxe/plan.md +48 -15
- package/commands/oxe/project.md +49 -16
- package/commands/oxe/quick.md +49 -16
- package/commands/oxe/research.md +49 -16
- package/commands/oxe/retro.md +49 -16
- package/commands/oxe/review-pr.md +49 -16
- package/commands/oxe/route.md +44 -11
- package/commands/oxe/scan.md +49 -16
- package/commands/oxe/security.md +49 -16
- package/commands/oxe/session.md +33 -0
- package/commands/oxe/skill.md +49 -0
- package/commands/oxe/spec.md +47 -14
- package/commands/oxe/ui-review.md +49 -16
- package/commands/oxe/ui-spec.md +49 -16
- package/commands/oxe/update.md +49 -16
- package/commands/oxe/validate-gaps.md +49 -16
- package/commands/oxe/verify.md +48 -15
- package/commands/oxe/workstream.md +49 -16
- package/lib/sdk/index.cjs +140 -7
- package/lib/sdk/index.d.ts +266 -1
- package/oxe/templates/HYPOTHESES.template.md +33 -0
- package/oxe/templates/PLAN.template.md +53 -22
- package/oxe/templates/SESSION.template.md +2 -0
- package/oxe/templates/SKILL.template.md +26 -0
- package/oxe/templates/WORKFLOW_AUTHORING.md +18 -2
- package/oxe/templates/config.template.json +16 -14
- package/oxe/workflows/ask.md +28 -7
- package/oxe/workflows/capabilities.md +2 -0
- package/oxe/workflows/dashboard.md +12 -2
- package/oxe/workflows/debug.md +9 -4
- package/oxe/workflows/discuss.md +12 -6
- package/oxe/workflows/execute.md +34 -12
- package/oxe/workflows/forensics.md +14 -9
- package/oxe/workflows/help.md +20 -9
- package/oxe/workflows/loop.md +13 -7
- package/oxe/workflows/next.md +6 -4
- package/oxe/workflows/plan-agent.md +3 -2
- package/oxe/workflows/plan.md +26 -3
- package/oxe/workflows/quick.md +10 -3
- package/oxe/workflows/references/reasoning-discovery.md +28 -0
- package/oxe/workflows/references/reasoning-execution.md +29 -0
- package/oxe/workflows/references/reasoning-planning.md +32 -0
- package/oxe/workflows/references/reasoning-review.md +29 -0
- package/oxe/workflows/references/reasoning-status.md +24 -0
- package/oxe/workflows/references/workflow-runtime-contracts.json +879 -0
- package/oxe/workflows/research.md +8 -2
- package/oxe/workflows/retro.md +7 -2
- package/oxe/workflows/review-pr.md +12 -8
- package/oxe/workflows/route.md +16 -13
- package/oxe/workflows/security.md +3 -2
- package/oxe/workflows/session.md +44 -0
- package/oxe/workflows/skill.md +44 -0
- package/oxe/workflows/spec.md +21 -18
- package/oxe/workflows/ui-review.md +13 -7
- package/oxe/workflows/update.md +3 -1
- package/oxe/workflows/validate-gaps.md +12 -6
- package/oxe/workflows/verify-audit.md +73 -0
- package/oxe/workflows/verify.md +40 -16
- package/package.json +84 -83
|
@@ -7,6 +7,7 @@ Não substitui **SPEC** nem **PLAN**; alimenta decisões que depois entram na SP
|
|
|
7
7
|
</objective>
|
|
8
8
|
|
|
9
9
|
<context>
|
|
10
|
+
- Aplicar `oxe/workflows/references/reasoning-discovery.md`. A investigação deve separar fatos, inferências e lacunas antes de consolidar conclusões.
|
|
10
11
|
- Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, research vive em `.oxe/<active_session>/research/`; sem sessão ativa, usar `.oxe/research/`.
|
|
11
12
|
- Tratar pesquisa como **investigação estruturada**, não como nota solta. Cada investigação deve ter objetivo, fontes, modo, profundidade, conclusões e impacto na trilha.
|
|
12
13
|
- **Uma sessão = um ficheiro novo** em `research/`; não sobrescrever notas antigas salvo correção explícita do utilizador.
|
|
@@ -45,8 +46,13 @@ Anotar `thinking_depth: surface | standard | deep` no frontmatter da nota de pes
|
|
|
45
46
|
6. Atualizar `INVESTIGATIONS.md` do escopo resolvido com objetivo, fontes, modo, profundidade, conclusão e impacto na trilha. Se não existir, criá-lo.
|
|
46
47
|
7. Ler **`.oxe/SPEC.md`**, **`.oxe/codebase/*`** e código alvo (Glob/Grep/Read) conforme âmbito.
|
|
47
48
|
8. Atualizar **`.oxe/STATE.md`**: nota de fase / próximo passo típico `oxe:plan`, ou `oxe:spec` se faltar contrato, ou `oxe:ui-spec` se o foco for UI antes do plano.
|
|
48
|
-
9. Responder no chat em 5–10 linhas
|
|
49
|
-
|
|
49
|
+
9. Responder no chat em 5–10 linhas, nesta ordem:
|
|
50
|
+
- **Fatos**
|
|
51
|
+
- **Inferências**
|
|
52
|
+
- **Lacunas**
|
|
53
|
+
- **Próximo passo**
|
|
54
|
+
Incluir o caminho da nota nova e a confirmação de atualização do índice.
|
|
55
|
+
</process>
|
|
50
56
|
|
|
51
57
|
<success_criteria>
|
|
52
58
|
- [ ] Existe novo ficheiro em `research/YYYY-MM-DD-<slug>.md` no escopo correto com secções base preenchidas de forma útil.
|
package/oxe/workflows/retro.md
CHANGED
|
@@ -72,8 +72,13 @@ Ao ler `LESSONS.md`, priorizar entradas com **`Frequência >= 2`** ou **`Impacto
|
|
|
72
72
|
- Apenas entradas genuinamente novas recebem uma nova linha na tabela de índice (mais recente primeiro).
|
|
73
73
|
- Adicionar seção `### C-NN` com as lições novas do ciclo (ou referência às entradas incrementadas).
|
|
74
74
|
- **Nunca apagar** entradas anteriores — só mudar `Status: resolvido` se a lição foi definitivamente superada.
|
|
75
|
-
8. Atualizar
|
|
76
|
-
|
|
75
|
+
8. **Atualizar `.oxe/lessons-metrics.json`** (se existir) ou criar se LESSONS.md já tiver entradas:
|
|
76
|
+
- Para cada lição nova ou incrementada neste ciclo, verificar se já existe entrada em `lessons-metrics.json` com o mesmo `id` (L-NN).
|
|
77
|
+
- Se existe: chamar `updateLessonMetric` com `{ cycle: "C-NN", verify_status: "<verify_complete|verify_failed>", saved_hours: <estimativa ou 0> }`.
|
|
78
|
+
- Se não existe: criar nova entrada com `applied_cycles: ["C-NN"]`, `outcomes: [...]`, `success_rate: 1.0` (ou `0.0` se falhou), `status: "active"`, `deprecation_threshold: 0.5`.
|
|
79
|
+
- Lições com `success_rate < 0.5` e ≥ 3 observações → marcar `status: "deprecated"` e registrar aviso no chat.
|
|
80
|
+
9. Atualizar **`.oxe/STATE.md`**: campo `last_retro: YYYY-MM-DD`.
|
|
81
|
+
10. Responder no chat: ID do ciclo (C-NN), número de lições registradas, lição mais crítica em 1 frase, lições depreciadas (se houver), sugestão do próximo ciclo (`/oxe-scan` ou `/oxe-spec`).
|
|
77
82
|
</process>
|
|
78
83
|
|
|
79
84
|
<success_criteria>
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
Rever alterações como num pull request: **URL do GitHub** (`…/pull/<n>`), **branches** ou **SHAs**. Cobre diff, risco, convenções do projeto e sugestões acionáveis. **Não** substitui CI nem testes manuais; complementa-os.
|
|
5
5
|
</objective>
|
|
6
6
|
|
|
7
|
-
<context>
|
|
8
|
-
-
|
|
7
|
+
<context>
|
|
8
|
+
- Aplicar `oxe/workflows/references/reasoning-review.md`. A revisão deve ser findings-first, com severidade e evidência antes de qualquer resumo.
|
|
9
|
+
- **Base** e **head** são nomes de branch, tags ou SHAs (ex.: `main` e `feature/foo`).
|
|
9
10
|
- **URL de PR no GitHub** — O usuário pode colar o link (ex.: `https://github.com/org/repo/pull/10` ou atalho `org/repo#10`). O número da PR é o segmento depois de `/pull/`.
|
|
10
11
|
- Em Git, o diff “estilo PR” (só o que a branch introduz) usa o **merge base**: `git diff base...head` (três pontos).
|
|
11
12
|
- Diff literal entre pontas: `git diff base..head` (dois pontos) — útil quando o usuário pede explicitamente.
|
|
@@ -28,12 +29,14 @@ Rever alterações como num pull request: **URL do GitHub** (`…/pull/<n>`), **
|
|
|
28
29
|
Se o sandbox bloquear Git, pedir ao usuário que cole o output de `git diff base...head` ou use o diff da UI do GitHub/GitLab.
|
|
29
30
|
Se o diff já foi obtido no passo 2 (URL da PR), **não** repetir este passo.
|
|
30
31
|
4. **Ler contexto do projeto** — Se existirem, usar trechos relevantes de `.oxe/codebase/CONVENTIONS.md`, `STACK.md`, `OVERVIEW.md` e, se aplicável, `.oxe/SPEC.md` / `.oxe/PLAN.md` para alinhar expectativas (sem assumir que o PR cobre só OXE).
|
|
31
|
-
5. **Analisar** — Estruturar a resposta com:
|
|
32
|
-
- **
|
|
33
|
-
- **Arquivos / áreas** — Agrupar por domínio (API, UI, config, etc.).
|
|
34
|
-
- **Riscos** — Regressões, breaking changes, segurança (inputs, segredos, auth), desempenho óbvio, migrações.
|
|
35
|
-
- **Testes** — O que deveria ser coberto ou rodar localmente (comandos sugeridos se conhecidos do repo).
|
|
36
|
-
- **
|
|
32
|
+
5. **Analisar** — Estruturar a resposta com:
|
|
33
|
+
- **Findings** — achados ordenados por severidade, com arquivo/área afetada e evidência.
|
|
34
|
+
- **Arquivos / áreas** — Agrupar por domínio (API, UI, config, etc.).
|
|
35
|
+
- **Riscos** — Regressões, breaking changes, segurança (inputs, segredos, auth), desempenho óbvio, migrações.
|
|
36
|
+
- **Testes** — O que deveria ser coberto ou rodar localmente (comandos sugeridos se conhecidos do repo).
|
|
37
|
+
- **Perguntas abertas** — pontos que impedem confiança alta na revisão.
|
|
38
|
+
- **Resumo** — O que muda em 3–6 frases, apenas depois dos achados.
|
|
39
|
+
- **Checklist PR** — Título sugerido, descrição curta, breaking changes, rollback.
|
|
37
40
|
6. **Opcional em disco** — Se o usuário pedir registro: criar ou atualizar **`.oxe/PR-REVIEW.md`** com data, URL ou refs (base/head), resumo, achados e próximos passos (Markdown legível).
|
|
38
41
|
</process>
|
|
39
42
|
|
|
@@ -42,4 +45,5 @@ Rever alterações como num pull request: **URL do GitHub** (`…/pull/<n>`), **
|
|
|
42
45
|
- [ ] A análise baseia-se no diff (terminal ou colado), não só em suposições.
|
|
43
46
|
- [ ] Há seção de riscos e de testes/verificação sugerida.
|
|
44
47
|
- [ ] Nenhum segredo ou credencial é repetido na análise; redigir se aparecerem no diff.
|
|
48
|
+
- [ ] Se `.oxe/PR-REVIEW.md` foi criado (passo 6), a resposta menciona o caminho do artefato gerado.
|
|
45
49
|
</success_criteria>
|
package/oxe/workflows/route.md
CHANGED
|
@@ -6,19 +6,22 @@ Desambiguar pedidos em **linguagem natural** e devolver **exatamente um** destin
|
|
|
6
6
|
Este passo é **meta**: só orientação. A execução real pertence ao workflow apontado.
|
|
7
7
|
</objective>
|
|
8
8
|
|
|
9
|
-
<context>
|
|
10
|
-
- A
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
- **
|
|
21
|
-
|
|
9
|
+
<context>
|
|
10
|
+
- Aplicar `oxe/workflows/references/reasoning-status.md`. A saída deve ser curta, orientada a decisão e com confiança explícita quando houver ambiguidade real.
|
|
11
|
+
- A tabela canónica de mapeamento vive em **`oxe/workflows/help.md`** na secção **Router (linguagem natural)**.
|
|
12
|
+
- Saída no chat: **um** comando (`/oxe-*` ou `npx oxe-cc …`) e **uma** frase de justificativa — alinhado a `next.md` (sem alternativas equiparáveis).
|
|
13
|
+
</context>
|
|
14
|
+
|
|
15
|
+
<process>
|
|
16
|
+
1. Ler a secção **Router** em `oxe/workflows/help.md` (ou `.oxe/workflows/help.md` no projeto).
|
|
17
|
+
2. Classificar a intenção do utilizador e escolher **uma** linha da tabela.
|
|
18
|
+
3. Se a classificação não for claramente dominante, ainda devolver um único destino, mas explicitar a confiança da escolha e a lacuna que poderia mudar o roteamento.
|
|
19
|
+
4. Responder apenas:
|
|
20
|
+
- **Comando:** …
|
|
21
|
+
- **Workflow:** `oxe/workflows/<nome>.md`
|
|
22
|
+
- **Por quê:** (uma frase)
|
|
23
|
+
- **Confiança:** alta | média | baixa (só quando houver ambiguidade real)
|
|
24
|
+
5. Não criar ficheiros em `.oxe/` salvo o utilizador pedir explícito registo; se o utilizador pedir rastreio: acrescentar uma linha em **`.oxe/STATE.md`** (ex.: `last_route: /oxe-scan — YYYY-MM-DD`).
|
|
22
25
|
</process>
|
|
23
26
|
|
|
24
27
|
<success_criteria>
|
|
@@ -9,6 +9,7 @@ Não substitui ferramentas de análise estática (SAST) — identifica padrões
|
|
|
9
9
|
</objective>
|
|
10
10
|
|
|
11
11
|
<context>
|
|
12
|
+
- Aplicar `oxe/workflows/references/reasoning-review.md`. O resumo em chat deve começar por achados, não por panorama narrativo.
|
|
12
13
|
- Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. O relatório de segurança segue a sessão ativa em `verification/`, mas continua a ler `codebase/` global.
|
|
13
14
|
- **Fonte de stack:** `.oxe/codebase/STACK.md` determina quais categorias OWASP são pertinentes (ex.: app sem DB descarta A03:Injection-SQL; API sem auth descarta A07:Authentication).
|
|
14
15
|
- **Fontes de código:** `.oxe/codebase/STRUCTURE.md`, `.oxe/codebase/CONCERNS.md`, `.oxe/codebase/INTEGRATIONS.md` orientam quais arquivos focar.
|
|
@@ -49,8 +50,8 @@ Antes de auditar, determinar quais categorias se aplicam lendo `STACK.md` e `INT
|
|
|
49
50
|
4. Ler `PLAN.md` do escopo resolvido se existir — vincular achados P0/P1 a tarefas `Tn` existentes quando possível, ou criar sugestão `T_new`.
|
|
50
51
|
5. Escrever `SECURITY.md` no escopo resolvido a partir de `oxe/templates/SECURITY.template.md`.
|
|
51
52
|
6. Atualizar `.oxe/STATE.md`: nota de segurança (ex.: `security_audit: YYYY-MM-DD | P0:N | P1:N | P2:N`).
|
|
52
|
-
7. Responder no chat
|
|
53
|
-
</process>
|
|
53
|
+
7. Responder no chat nesta ordem: **Findings**, **Perguntas abertas**, **Riscos residuais**, **Resumo**. P0 presentes → bloquear deploy; apenas P2 → ação opcional.
|
|
54
|
+
</process>
|
|
54
55
|
|
|
55
56
|
<success_criteria>
|
|
56
57
|
- [ ] `SECURITY.md` existe no escopo correto com categorias OWASP selecionadas e justificativa de descarte.
|
package/oxe/workflows/session.md
CHANGED
|
@@ -11,6 +11,8 @@ Subcomandos:
|
|
|
11
11
|
- `status`
|
|
12
12
|
- `close`
|
|
13
13
|
- `migrate <nome>`
|
|
14
|
+
- `fork [nome-opcional]`
|
|
15
|
+
- `revert <checkpoint-slug>`
|
|
14
16
|
</objective>
|
|
15
17
|
|
|
16
18
|
<context>
|
|
@@ -137,6 +139,45 @@ Subcomandos:
|
|
|
137
139
|
- ignorados por inexistência
|
|
138
140
|
</process_migrate>
|
|
139
141
|
|
|
142
|
+
<process_fork>
|
|
143
|
+
## `fork [nome-opcional]`
|
|
144
|
+
|
|
145
|
+
1. Verificar que existe `active_session` em `.oxe/STATE.md`. Se não houver, informar e sair.
|
|
146
|
+
2. Ler `SESSION.md` da sessão ativa; anotar ID de origem (`sNNN`).
|
|
147
|
+
3. Calcular próximo ID `sMMM` a partir de `.oxe/SESSIONS.md`.
|
|
148
|
+
4. Se nome não fornecido, usar `fork-<slug-original>`.
|
|
149
|
+
5. Criar `.oxe/sessions/sMMM-<slug>/` com as mesmas subpastas: `spec/`, `plan/`, `execution/`, `verification/`, `checkpoints/`, `research/`, `artifacts/`, `workstreams/`.
|
|
150
|
+
6. **Copiar** (não mover) todos os arquivos da sessão ativa para a nova sessão, preservando estrutura de diretórios. Não copiar diretórios vazios.
|
|
151
|
+
7. Criar `SESSION.md` na nova sessão a partir de `SESSION.template.md`, com:
|
|
152
|
+
- `forked_from: sNNN`
|
|
153
|
+
- `forked_at: YYYY-MM-DD`
|
|
154
|
+
- `Status: active`
|
|
155
|
+
- `Resumo: Fork de sNNN — <slug-original>`
|
|
156
|
+
8. Atualizar `.oxe/SESSIONS.md`:
|
|
157
|
+
- Adicionar linha da nova sessão (topo, status `active`)
|
|
158
|
+
- **Não** alterar status da sessão original
|
|
159
|
+
9. Atualizar `.oxe/STATE.md`:
|
|
160
|
+
- `active_session: sessions/sMMM-<slug>`
|
|
161
|
+
- `session_id: sMMM`
|
|
162
|
+
10. Registar evento no Histórico da SESSION.md original: `YYYY-MM-DD | Forked → sMMM`
|
|
163
|
+
11. Responder no chat: ID novo, path, contagem de artefatos copiados, e lembrar que a sessão original permanece intacta.
|
|
164
|
+
</process_fork>
|
|
165
|
+
|
|
166
|
+
<process_revert>
|
|
167
|
+
## `revert <checkpoint-slug>`
|
|
168
|
+
|
|
169
|
+
1. Verificar que existe sessão ativa ou operar na raiz `.oxe/`.
|
|
170
|
+
2. Resolver o checkpoint: procurar em `checkpoints/` (do escopo resolvido) arquivo cujo slug corresponda ao argumento. Se não encontrar, listar checkpoints disponíveis e pedir escolha.
|
|
171
|
+
3. Ler o conteúdo do checkpoint (seção `## Snapshot`):
|
|
172
|
+
- Extrair campos de STATE: `phase`, `next_step` (campo `Comando:`), `execute_mode`, `Última onda executada`, `Tarefas concluídas`
|
|
173
|
+
4. Atualizar `.oxe/STATE.md` com os valores do snapshot:
|
|
174
|
+
- Sobrescrever os campos extraídos do snapshot
|
|
175
|
+
- **Não apagar** campos ausentes no snapshot (preservar `active_session`, `session_id`, config refs, etc.)
|
|
176
|
+
5. Registar no Histórico da SESSION.md (se sessão ativa): `YYYY-MM-DD | Revertido para checkpoint <slug>`
|
|
177
|
+
6. Registar evento em `EXECUTION-RUNTIME.md` se existir: `Revert to checkpoint <slug>`
|
|
178
|
+
7. Responder no chat: quais campos foram restaurados, quais permaneceram intactos, e próximo passo sugerido baseado no STATE restaurado.
|
|
179
|
+
</process_revert>
|
|
180
|
+
|
|
140
181
|
<process_default>
|
|
141
182
|
## Sem subcomando
|
|
142
183
|
|
|
@@ -150,4 +191,7 @@ Subcomandos:
|
|
|
150
191
|
- [ ] `.oxe/SESSIONS.md` usa as colunas mínimas `ID | Nome | Status | Criada | Última atividade | Resumo | Path`.
|
|
151
192
|
- [ ] `close` arquiva sem apagar artefatos.
|
|
152
193
|
- [ ] `migrate` move só artefatos session-scoped e preserva os globais.
|
|
194
|
+
- [ ] `fork` cria sessão nova com cópia dos artefatos sem modificar a sessão de origem.
|
|
195
|
+
- [ ] `fork` registra `forked_from` na SESSION.md da sessão derivada.
|
|
196
|
+
- [ ] `revert` restaura STATE.md a partir do snapshot do checkpoint, sem apagar campos ausentes.
|
|
153
197
|
</success_criteria>
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# OXE — Workflow: skill
|
|
2
|
+
|
|
3
|
+
<objective>
|
|
4
|
+
Descobrir, invocar e gerenciar **skills** — wrappers de invocação que unificam personas (comportamento LLM) e capabilities (ferramentas executáveis) num único ponto de entrada via `@<skill-id>`.
|
|
5
|
+
|
|
6
|
+
Subcomandos:
|
|
7
|
+
- `list`
|
|
8
|
+
- `explain <id>`
|
|
9
|
+
- `new <id>`
|
|
10
|
+
- `@<id>` (invocação inline)
|
|
11
|
+
</objective>
|
|
12
|
+
|
|
13
|
+
<context>
|
|
14
|
+
- **Skills globais** vivem em `oxe/personas/` (type: persona) — 8 roles builtin do pacote: `executor`, `planner`, `verifier`, `researcher`, `debugger`, `architect`, `ui-specialist`, `db-specialist`. Invocáveis via `@executor`, `@researcher`, etc.
|
|
15
|
+
- **Skills de projeto** vivem em `.oxe/skills/<id>/SKILL.md` com frontmatter OXE. Têm prioridade sobre globais quando IDs colidem.
|
|
16
|
+
- **Capabilities como skills:** capabilities em `.oxe/capabilities/<id>/` que tenham `SKILL.md` próprio também aparecem como skills de projeto.
|
|
17
|
+
- **Resolução:** project (`.oxe/skills/`) → capabilities (`.oxe/capabilities/`) → global (`oxe/personas/`). Primeiro match vence.
|
|
18
|
+
- Template: `oxe/templates/SKILL.template.md`
|
|
19
|
+
</context>
|
|
20
|
+
|
|
21
|
+
<process>
|
|
22
|
+
1. **`list`** — Enumerar skills disponíveis em três camadas:
|
|
23
|
+
- Ler `oxe/personas/*.md` no pacote (globais, type persona)
|
|
24
|
+
- Ler `.oxe/skills/*/SKILL.md` se existir (projeto)
|
|
25
|
+
- Ler `.oxe/capabilities/*/SKILL.md` se existir (capabilities com manifest de skill)
|
|
26
|
+
- Apresentar tabela: `ID | Type | Scope | Invoke | Descrição`
|
|
27
|
+
2. **`explain <id>`** — Resolver o skill pelo ID (project → capabilities → global), exibir frontmatter + seção Descrição + Saída esperada. Se não encontrar, listar skills disponíveis.
|
|
28
|
+
3. **`new <id>`** — Criar `.oxe/skills/<id>/SKILL.md` a partir de `SKILL.template.md`. Solicitar ao utilizador: `name`, `type` (persona/capability/composite), `description`. Se o ID já existir, informar e oferecer `explain <id>`.
|
|
29
|
+
4. **`@<id>` (inline)** — Quando o chat mencionar `@skill-id`:
|
|
30
|
+
- Resolver o skill pela ordem: project → capabilities → global
|
|
31
|
+
- Para type `persona`: ler e adotar o conteúdo da persona referenciada (princípios, ativação, saída esperada)
|
|
32
|
+
- Para type `capability`: ler manifesto da capability e orientar uso conforme `approval_policy`
|
|
33
|
+
- Para type `composite`: carregar ambas as referências em `references[]`
|
|
34
|
+
- Se não encontrado: listar skills disponíveis e pedir correção
|
|
35
|
+
5. Atualizar `.oxe/STATE.md` apenas se o utilizador pedir registo explícito: `last_skill_invoked: @<id> — YYYY-MM-DD`.
|
|
36
|
+
</process>
|
|
37
|
+
|
|
38
|
+
<success_criteria>
|
|
39
|
+
- [ ] `@<id>` resolve para exatamente um skill sem ambiguidade.
|
|
40
|
+
- [ ] Skills de projeto têm prioridade sobre globais quando IDs colidem.
|
|
41
|
+
- [ ] Nenhum artefato de SPEC/PLAN foi criado ou alterado por este passo.
|
|
42
|
+
- [ ] `list` mostra skills de todas as três camadas com escopo identificado.
|
|
43
|
+
</success_criteria>
|
|
44
|
+
</output>
|
package/oxe/workflows/spec.md
CHANGED
|
@@ -13,8 +13,10 @@ Para trabalho **muito pequeno** que não justifica spec completa: redirecionar p
|
|
|
13
13
|
Se **`.oxe/config.json`** tiver `discuss_before_plan: true`: mencionar no final da Fase 5 que o próximo passo é **`oxe:discuss`** antes do plano.
|
|
14
14
|
</objective>
|
|
15
15
|
|
|
16
|
-
<context>
|
|
17
|
-
**
|
|
16
|
+
<context>
|
|
17
|
+
**Contrato de raciocínio:** aplicar `oxe/workflows/references/reasoning-discovery.md`. Antes de perguntar, explorar o que o repo e os artefatos já respondem; separar fatos, inferências e lacunas.
|
|
18
|
+
|
|
19
|
+
**Pré-requisito preferível:** scan executado. Se não existir, mencionar na spec que o mapa está pendente.
|
|
18
20
|
|
|
19
21
|
**Contrato de robustez:** seguir `oxe/workflows/references/flow-robustness-contract.md`. Antes de escrever, resolver artefatos obrigatórios, validar pré-condições e só então produzir a spec. O output desta fase deve deixar evidência estruturada suficiente para o `plan` decidir se o plano é realmente o melhor disponível.
|
|
20
22
|
|
|
@@ -220,22 +222,23 @@ O resultado desta reflexão é **invisível ao usuário** — é trabalho intern
|
|
|
220
222
|
- Atualizar `STATE.md`: `phase: spec_ready`, próximo passo conforme escolha
|
|
221
223
|
</fase_5_aprovacao>
|
|
222
224
|
|
|
223
|
-
<process>
|
|
224
|
-
1. Ler `.oxe/STATE.md`, `OVERVIEW.md`, `STACK.md` e `OBSERVATIONS.md` do escopo ativo (verificar pendentes).
|
|
225
|
-
2.
|
|
226
|
-
3.
|
|
227
|
-
4. **Fase
|
|
228
|
-
5. **Fase
|
|
229
|
-
6. **Fase
|
|
230
|
-
7.
|
|
231
|
-
|
|
232
|
-
-
|
|
233
|
-
-
|
|
234
|
-
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
9.
|
|
238
|
-
10.
|
|
225
|
+
<process>
|
|
226
|
+
1. Ler `.oxe/STATE.md`, `OVERVIEW.md`, `STACK.md` e `OBSERVATIONS.md` do escopo ativo (verificar pendentes).
|
|
227
|
+
2. Fazer uma exploração inicial do repo e dos artefatos antes da primeira rodada de perguntas. Consolidar internamente: fatos confirmados, inferências e lacunas.
|
|
228
|
+
3. Aplicar `adaptive-discovery.md`: classificar a demanda, verificar se há capabilities úteis e se investigações anteriores reduzem incerteza.
|
|
229
|
+
4. **Fase 1 — Perguntas:** enviar bloco coeso de 3-5 perguntas; máx 3 rodadas; confirmar entendimento.
|
|
230
|
+
5. **Fase 2 — Pesquisa:** propor áreas de investigação; aguardar aprovação; executar se aprovado.
|
|
231
|
+
6. **Fase 3 — Requisitos:** extrair tabela R-ID com v1/v2/fora e critérios A*; incorporar OBS pendentes; apresentar para validação.
|
|
232
|
+
7. **Fase 4 — Roteiro:** agrupar requisitos v1 em fases; escrever `ROADMAP.md` no escopo ativo.
|
|
233
|
+
8. Escrever **`SPEC.md`** usando `oxe/templates/SPEC.template.md` no escopo ativo:
|
|
234
|
+
- Frontmatter YAML (`oxe_doc: spec`, `status`, `updated`, `inputs`)
|
|
235
|
+
- Objetivo, Escopo (dentro/fora), Critérios de aceite (tabela A*), Suposições e riscos, Referências
|
|
236
|
+
- Preencher explicitamente `Tipo de demanda` e `Incertezas estruturadas`
|
|
237
|
+
- Preservar chaves existentes se SPEC.md já existir; atualizar `updated:`
|
|
238
|
+
8b. **Auto-reflexão:** executar integralmente o bloco `<auto_reflexao>` antes de avançar. Corrigir a spec conforme necessário. Não apresentar a lista de verificação ao usuário — apenas a spec corrigida.
|
|
239
|
+
9. **Fase 5 — Aprovação:** apresentar resumo, aguardar aprovação do roteiro, redirecionar.
|
|
240
|
+
10. Atualizar **`.oxe/STATE.md`** global: `phase: spec_ready`, próximo passo e referência curta à sessão ativa quando existir.
|
|
241
|
+
11. Marcar OBS incorporadas em `OBSERVATIONS.md` do escopo ativo se houver pendentes de impacto `spec`.
|
|
239
242
|
</process>
|
|
240
243
|
|
|
241
244
|
<success_criteria>
|
|
@@ -6,18 +6,24 @@ Produzir **`.oxe/UI-REVIEW.md`**: auditoria da implementação UI face a **`.oxe
|
|
|
6
6
|
Não substitui **`verify`**: cruza contrato UI; o verify global continua a amarrar PLAN + SPEC + evidência técnica.
|
|
7
7
|
</objective>
|
|
8
8
|
|
|
9
|
-
<context>
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
|
|
9
|
+
<context>
|
|
10
|
+
- Aplicar `oxe/workflows/references/reasoning-review.md`. A revisão UI deve começar pelos achados e bloqueios, não por resumo.
|
|
11
|
+
- Se não existir `UI-SPEC.md`, pedir **`/oxe-ui-spec`** primeiro ou documentar em UI-REVIEW que a revisão é **ad hoc** (menos preferível).
|
|
12
|
+
- Incluir checklist curta (ex.: pilares: semântica, foco, contraste, mensagens de erro, mobile).
|
|
13
|
+
- **Bloqueios P0** (ex.: inacessível, fluxo quebrado) devem ser listados explicitamente; P1/P2 como melhorias.
|
|
14
|
+
</context>
|
|
14
15
|
|
|
15
16
|
<process>
|
|
16
17
|
1. Resolver `active_session` conforme `session-path-resolution.md`; ler `UI-SPEC.md` e `SPEC.md` do escopo resolvido e inspecionar ficheiros de UI relevantes (paths do PLAN ou indicados pelo utilizador).
|
|
17
18
|
2. Escrever **`UI-REVIEW.md`** no escopo de `verification/` da sessão ativa (ou `.oxe/` legado) com: **Data**, **Âmbito revisto**, **Checklist** (passou / falhou / N/A), **Bloqueios**, **Sugestões**.
|
|
18
19
|
3. Atualizar **`.oxe/STATE.md`** global se útil (referência a UI-REVIEW pendente de verify).
|
|
19
|
-
4. Indicar no chat
|
|
20
|
-
|
|
20
|
+
4. Indicar no chat nesta ordem:
|
|
21
|
+
- **Findings**
|
|
22
|
+
- **Perguntas abertas**
|
|
23
|
+
- **Riscos residuais**
|
|
24
|
+
- **Resumo**
|
|
25
|
+
Se há P0 → próximo passo típico **`/oxe-execute`** (correções); senão **`/oxe-verify`** para fecho global.
|
|
26
|
+
</process>
|
|
21
27
|
|
|
22
28
|
<success_criteria>
|
|
23
29
|
- [ ] `UI-REVIEW.md` referencia secções do `UI-SPEC.md` quando existir.
|
package/oxe/workflows/update.md
CHANGED
|
@@ -16,7 +16,8 @@ Alinhar o projeto e integrações OXE à **versão mais recente** do pacote **ox
|
|
|
16
16
|
1. Na raiz do projeto, executar **`npx oxe-cc update --check`** (ou equivalente com `oxe-cc` no PATH). Relatar ao utilizador: versão em execução, `latest` no npm e se há atualização.
|
|
17
17
|
2. Se o utilizador quiser atualizar (ou se `--check` indicou versão mais nova e pediu explícito), executar **`npx oxe-cc update`** na mesma raiz — opcionalmente **`npx oxe-cc update --if-newer`** para evitar npx quando já está na última. Repassar flags extra ao pacote novo se o utilizador pedir (ex.: `--cursor --global`).
|
|
18
18
|
3. Após uma instalação bem-sucedida, executar **`npx oxe-cc doctor`** e resumir o resultado (OK vs avisos/erros).
|
|
19
|
-
4.
|
|
19
|
+
4. Registar a atualização em **`.oxe/STATE.md`** do projeto (se existir): acrescentar linha `oxe_updated: YYYY-MM-DD vX.Y.Z` ou nota na secção Decisões com a versão nova.
|
|
20
|
+
5. Se o utilizador usar **Copilot CLI / skills**, lembrar **`/skills reload`** (ou reinício) após mudanças nos ficheiros do HOME; no **Gemini CLI**, **`/commands reload`** quando aplicável.
|
|
20
21
|
</process>
|
|
21
22
|
|
|
22
23
|
<output>
|
|
@@ -29,5 +30,6 @@ Alinhar o projeto e integrações OXE à **versão mais recente** do pacote **ox
|
|
|
29
30
|
- [ ] Correram na raiz do projeto, nesta ordem quando aplicável: `npx oxe-cc update --check`; depois `npx oxe-cc update` ou `npx oxe-cc update --if-newer` (ou o utilizador recusou atualizar após o `--check`).
|
|
30
31
|
- [ ] Após qualquer instalação concluída, correr `npx oxe-cc doctor` e reportar se passou ou que avisos/erros restam.
|
|
31
32
|
- [ ] O resumo menciona versões ou resultado da consulta ao npm quando `--check` ou update foi usado.
|
|
33
|
+
- [ ] `.oxe/STATE.md` foi atualizado com a versão instalada (passo 4), quando o ficheiro existe.
|
|
32
34
|
- [ ] Reload de skills/comandos externos (Copilot CLI, Gemini) foi lembrado quando relevante.
|
|
33
35
|
</success_criteria>
|
|
@@ -7,29 +7,35 @@ Não substitui **`verify`**: não reescreve a evidência em `VERIFY.md`; adicion
|
|
|
7
7
|
</objective>
|
|
8
8
|
|
|
9
9
|
<context>
|
|
10
|
+
- Aplicar `oxe/workflows/references/reasoning-review.md`. Este passo deve apresentar gaps e achados antes de qualquer resumo.
|
|
10
11
|
- Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, `VERIFY.md`, `PLAN.md`, `SPEC.md` e `VALIDATION-GAPS.md` vivem no escopo da sessão; sem sessão ativa, manter `.oxe/`.
|
|
11
|
-
- **Pré-requisitos:** `VERIFY.md` e `PLAN.md` existem no escopo resolvido. `SPEC.md` altamente recomendado para cruzar IDs **A***.
|
|
12
|
+
- **Pré-requisitos:** `VERIFY.md` e `PLAN.md` existem no escopo resolvido. `SPEC.md` altamente recomendado para cruzar IDs **A***.
|
|
12
13
|
- **Quando usar:** equipas que querem fechar dívida de testes, evidência fraca ou desalinhamento após um verify (passou ou falhou).
|
|
13
14
|
- **Edição do PLAN:** só se o utilizador pedir explicitamente incorporar as sugestões no plano.
|
|
14
15
|
</context>
|
|
15
16
|
|
|
16
17
|
<process>
|
|
17
|
-
1. Ler `PLAN.md` (cada `### Tn`, **Verificar**, **Aceite vinculado:**), `VERIFY.md` (tabelas de tarefas e de critérios SPEC), e `SPEC.md` do escopo resolvido se existir.
|
|
18
|
+
1. Ler `PLAN.md` (cada `### Tn`, **Verificar**, **Aceite vinculado:**), `VERIFY.md` (tabelas de tarefas e de critérios SPEC), e `SPEC.md` do escopo resolvido se existir.
|
|
18
19
|
2. Aplicar checklist de deteção (marcar cada achado nos **Gaps**):
|
|
19
20
|
- **A*** na SPEC sem linha clara na tabela de critérios do VERIFY, ou com evidência inexistente/vaga.
|
|
20
21
|
- **Tn** com `Comando: —` ou **Manual** vago quando o critério associado pede rigor reprodutível.
|
|
21
22
|
- VERIFY indica sucesso mas a coluna de evidência é só genérica (sem path, comando ou trecho identificável).
|
|
22
23
|
- Tarefa no PLAN sem linha correspondente na tabela de tarefas do VERIFY (verify focado em subset — documentar como gap de escopo).
|
|
23
|
-
3. Escrever ou atualizar **`VALIDATION-GAPS.md`** no escopo resolvido com secções fixas:
|
|
24
|
+
3. Escrever ou atualizar **`VALIDATION-GAPS.md`** no escopo resolvido com secções fixas:
|
|
24
25
|
- **Data** (ISO) e **Contexto** (verify passou / falhou; ambiente se relevante).
|
|
25
26
|
- **Gaps** — tabela: **ID ou Tn** | **Tipo de gap** | **Severidade sugerida** (P0/P1/P2) | **Nota**.
|
|
26
27
|
- **Sugestões de tarefas** — rascunhos `T_new` ou bullets para incorporar no próximo `oxe:plan --replan`; **apenas texto**.
|
|
27
|
-
4. Atualizar **`.oxe/STATE.md
|
|
28
|
-
5. Responder no chat
|
|
29
|
-
|
|
28
|
+
4. Atualizar **`.oxe/STATE.md`**: quando existirem gaps com severidade **P0 ou P1**, registar referência a `VALIDATION-GAPS.md` pendente de ação (campo `next_step` ou secção Decisões). Para gaps apenas P2 ou puramente informativos, a atualização é opcional.
|
|
29
|
+
5. Responder no chat nesta ordem:
|
|
30
|
+
- **Findings** — gaps críticos primeiro
|
|
31
|
+
- **Perguntas abertas**
|
|
32
|
+
- **Riscos residuais**
|
|
33
|
+
- **Resumo** — próximo passo lógico (`oxe:plan --replan`, `oxe:execute`, ou “nenhuma ação” se só informativo)
|
|
34
|
+
</process>
|
|
30
35
|
|
|
31
36
|
<success_criteria>
|
|
32
37
|
- [ ] `VALIDATION-GAPS.md` reflete análise cruzada PLAN + VERIFY (+ SPEC quando existir).
|
|
33
38
|
- [ ] `PLAN.md` não foi alterado sem pedido explícito do utilizador.
|
|
39
|
+
- [ ] `.oxe/STATE.md` foi atualizado quando existiam gaps P0/P1 (passo 4).
|
|
34
40
|
- [ ] Fica claro que este passo **não** substitui um novo **`verify`** quando houver correções implementadas.
|
|
35
41
|
</success_criteria>
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_doc: verify-audit
|
|
3
|
+
status: stable
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# OXE — Auditoria Adversarial (Verify Auditor)
|
|
7
|
+
|
|
8
|
+
<objective>
|
|
9
|
+
Auditar a verificação produzida pelo executor de forma **adversarial e independente**:
|
|
10
|
+
encontrar critérios sem evidência suficiente, evidências ambíguas, gaps não declarados —
|
|
11
|
+
sem acesso ao raciocínio do executor.
|
|
12
|
+
</objective>
|
|
13
|
+
|
|
14
|
+
<context>
|
|
15
|
+
**IMPORTANTE:** Este workflow opera com contexto propositalmente restrito.
|
|
16
|
+
|
|
17
|
+
- **Você NÃO tem acesso** a `PLAN.md`, `EXECUTION-RUNTIME.md` nem ao histórico de decisões do executor.
|
|
18
|
+
- **Você TEM acesso** apenas a `SPEC.md` (critérios A*) e `VERIFY.md` (evidências declaradas).
|
|
19
|
+
- Sua instrução é **falsificar, não confirmar**.
|
|
20
|
+
|
|
21
|
+
Razão: um auditor que conhece o raciocínio do executor tende a confirmar as premissas do executor,
|
|
22
|
+
não a testá-las. A restrição de contexto é intencional e fundamental para o valor desta camada.
|
|
23
|
+
</context>
|
|
24
|
+
|
|
25
|
+
<process>
|
|
26
|
+
1. Ler `SPEC.md` — mapear todos os critérios `A*` com ID, texto e `howToVerify`.
|
|
27
|
+
|
|
28
|
+
2. Ler `VERIFY.md` — para cada critério `A*` identificado:
|
|
29
|
+
- **PASS**: evidência presente, específica, verificável independentemente (comando + output, arquivo + conteúdo, teste + resultado).
|
|
30
|
+
- **FAIL**: evidência ausente, genérica ("foi testado"), ou contraditória com o critério.
|
|
31
|
+
- **INSUFICIENTE**: evidência parcial — menciona o critério mas sem resultado concreto ou rastreável.
|
|
32
|
+
|
|
33
|
+
3. Para cada critério com FAIL ou INSUFICIENTE:
|
|
34
|
+
- Identificar o **tipo de gap**: evidência ausente / evidência ambígua / critério não testável como escrito / escopo divergente.
|
|
35
|
+
- Sugerir o que tornaria a evidência suficiente.
|
|
36
|
+
|
|
37
|
+
4. Verificar coerência interna do VERIFY.md:
|
|
38
|
+
- Há critérios documentados em VERIFY.md que não existem em SPEC.md? (scope creep)
|
|
39
|
+
- Há seções de VERIFY.md com conclusão `verify_complete` mas com FAIL/INSUFICIENTE não resolvidos?
|
|
40
|
+
|
|
41
|
+
5. Escrever seção `## Auditoria Adversarial` no VERIFY.md com:
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
## Auditoria Adversarial
|
|
45
|
+
|
|
46
|
+
**Resultado:** APROVADO / REPROVADO / CONDICIONADO
|
|
47
|
+
|
|
48
|
+
| ID | Status | Observação do auditor |
|
|
49
|
+
|-----|--------------|-----------------------|
|
|
50
|
+
| A1 | PASS | Evidência: output de `npm test` em linha 47 do VERIFY.md |
|
|
51
|
+
| A3 | INSUFICIENTE | Mencionado como testado mas sem output de comando ou arquivo de resultado |
|
|
52
|
+
| A5 | FAIL | Critério exige P95 < 200ms; VERIFY.md não apresenta medição de latência |
|
|
53
|
+
|
|
54
|
+
**Gaps não declarados pelo executor:**
|
|
55
|
+
- (se nenhum: "Nenhum gap adicional identificado.")
|
|
56
|
+
|
|
57
|
+
**Riscos residuais:**
|
|
58
|
+
- (riscos que passaram pelo executor mas que o auditor considera relevantes)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Resultado global:**
|
|
62
|
+
- `APROVADO` — todos os critérios são PASS.
|
|
63
|
+
- `CONDICIONADO` — critérios INSUFICIENTES resolvíveis com evidência adicional sem re-executar.
|
|
64
|
+
- `REPROVADO` — um ou mais critérios FAIL ou gaps estruturais não declarados.
|
|
65
|
+
</process>
|
|
66
|
+
|
|
67
|
+
<success_criteria>
|
|
68
|
+
- [ ] Todos os critérios A* de SPEC.md foram avaliados.
|
|
69
|
+
- [ ] Evidências PASS têm referência rastreável (linha, arquivo, comando, output).
|
|
70
|
+
- [ ] Critérios FAIL e INSUFICIENTE têm sugestão de como fechar o gap.
|
|
71
|
+
- [ ] Seção `## Auditoria Adversarial` escrita em VERIFY.md.
|
|
72
|
+
- [ ] Resultado global (APROVADO / CONDICIONADO / REPROVADO) declarado explicitamente.
|
|
73
|
+
</success_criteria>
|
package/oxe/workflows/verify.md
CHANGED
|
@@ -14,10 +14,13 @@ Se o usuário indicar uma tarefa (ex.: `T2`), focar só nela nas camadas 1–2;
|
|
|
14
14
|
</objective>
|
|
15
15
|
|
|
16
16
|
<context>
|
|
17
|
+
- Aplicar `oxe/workflows/references/reasoning-review.md` como contrato deste passo. A resposta no chat deve começar por achados, não por resumo.
|
|
17
18
|
- Resolver `active_session` conforme `oxe/workflows/references/session-path-resolution.md`. Com sessão ativa, `VERIFY.md`, `VALIDATION-GAPS.md`, `SECURITY.md`, `UI-REVIEW.md` e `SUMMARY.md` vivem no escopo da sessão; `.oxe/STATE.md` continua global.
|
|
18
19
|
- Seguir `oxe/workflows/references/flow-robustness-contract.md`. O verify não valida só se passou; valida também se o plano estava bem calibrado para começar.
|
|
19
|
-
-
|
|
20
|
-
- Se
|
|
20
|
+
- Antes da leitura ampla, resolver `.oxe/context/packs/verify.md` e `.oxe/context/packs/verify.json` como entrada prioritária do passo.
|
|
21
|
+
- Se o pack estiver fresco e coerente, usar `read_order`, `selected_artifacts`, `gaps` e `conflicts` como mapa primário da evidência. Se estiver stale, ausente ou com lacunas críticas, fazer fallback explícito para leitura direta e registar isso em `VERIFY.md`.
|
|
22
|
+
- Ler `EXECUTION-RUNTIME.md` e `CHECKPOINTS.md` do escopo resolvido quando existirem. Eles são evidência tática para saber o que realmente foi executado, bloqueado, aprovado ou desviado.
|
|
23
|
+
- Se a trilha tocar Azure, ler `.oxe/cloud/azure/INVENTORY.md`, `SERVICEBUS.md`, `EVENTGRID.md`, `SQL.md` e `operations/*.md|json` para confirmar recursos reais, checkpoints e mutações aplicadas.
|
|
21
24
|
- **Observações CI como evidência:** se `OBSERVATIONS.md` do escopo resolvido tiver obs do tipo `ci_failure` com `CI-evidência` preenchida, usar como evidência adicional para critérios A* de qualidade (ex.: cobertura, build verde). Se obs tiver `ci_run_url`, referenciar na coluna **Evidência** da tabela de critérios. Se obs estiver `pendente` e critério A* de qualidade existir, marcar o critério como `evidence_pending_ci` — não como passou — até o CI ser resolvido.
|
|
22
25
|
- Preferir rodar comandos reais no terminal quando o ambiente permitir; se o sandbox bloquear, marcar como "não executado aqui" e deixar o comando para o usuário.
|
|
23
26
|
- Não destruir `PLAN.md`; registrar achados em `VERIFY.md`.
|
|
@@ -102,13 +105,18 @@ Registrar em `VERIFY.md`: `Resultado de calibração | Confiança declarada | Re
|
|
|
102
105
|
|
|
103
106
|
<process>
|
|
104
107
|
1. **Camada 1 — Auditoria de pré-execução:** checar integridade do PLAN.md e DISCUSS.md conforme `<camada_1_pre_exec_audit>`. Documentar resultado.
|
|
105
|
-
2.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
108
|
+
2. Resolver o context pack `verify` primeiro:
|
|
109
|
+
- ler `.oxe/context/packs/verify.md|json` (ou `oxe-cc context inspect --workflow verify --json`);
|
|
110
|
+
- se estiver fresco e coerente, usar o pack como mapa primário da verificação;
|
|
111
|
+
- se estiver stale, incompleto ou ausente, registar `fallback para leitura direta` antes de ampliar a leitura.
|
|
112
|
+
3. Ler `SPEC.md`, `PLAN.md` e `DISCUSS.md` do escopo resolvido, além de `.oxe/STATE.md` global. Com pack válido, começar pelos artefatos de `read_order`; só expandir a leitura quando faltar evidência para um critério, tarefa, decisão ou checkpoint.
|
|
113
|
+
4. **Camada 2:** Para cada tarefa relevante, executar **Verificar: Comando** do PLAN (ou subconjunto se foco Tn). Para **cada ID de critério** da SPEC (A1, A2, …), registrar se passou com evidência.
|
|
114
|
+
5. **Camada 3:** Se existir `.oxe/DISCUSS.md` com IDs D-NN, executar **Fidelidade de decisões** conforme `<camada_3_fidelidade_decisoes>`.
|
|
115
|
+
6. Executar a verificação de coerência do runtime e checkpoints conforme `<runtime_e_checkpoints>`.
|
|
116
|
+
6a. Para operações Azure, confirmar o estado final com inventário/saída real do provider Azure; não considerar mutação aprovada sem evidência em `.oxe/cloud/azure/operations/`.
|
|
117
|
+
6b. Escrever **`VERIFY.md`** no escopo resolvido com:
|
|
111
118
|
- Data, ambiente (SO / versão do Node se relevante).
|
|
119
|
+
- **Seção — Contexto consumido:** pack usado, freshness, fallback acionado (ou não) e artefatos adicionais lidos fora do pack.
|
|
112
120
|
- **Seção — Auditoria de pré-execução:** resultado da Camada 1.
|
|
113
121
|
- **Tabela — Tarefas:** Tarefa (Tn) | Verificação (comando/checklist) | Passou? | Notas.
|
|
114
122
|
- **Tabela — Critérios SPEC:** ID (A1…) | Critério (resumo) | Evidência | Passou? | Notas.
|
|
@@ -117,14 +125,30 @@ Registrar em `VERIFY.md`: `Resultado de calibração | Confiança declarada | Re
|
|
|
117
125
|
- **Seção — Calibração do plano:** resultado conforme `<calibracao_do_plano>`.
|
|
118
126
|
- **Checklist UAT** (Camada 4).
|
|
119
127
|
- **Gaps** — o que falhou e sugestão de correção; se não houver, escrever `Nenhum gap restante`.
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
+
7. Atualizar **`.oxe/STATE.md`** global: `verify_complete` ou `verify_failed` + próximo passo (replan, corrigir ou publicar).
|
|
129
|
+
7a. **Registro de calibração:** após escrever `STATE.md`, se `PLAN.md` contiver bloco `<confidence_vector>` — extrair o vetor e comparar com o resultado real. Criar ou atualizar `.oxe/calibration.json` com um novo record no formato:
|
|
130
|
+
```json
|
|
131
|
+
{ "cycle": "C-NN", "plan_global_confidence": 0.74, "plan_dimensions": { "technical_risk": 0.45 }, "outcome": { "verify_status": "complete", "actual_waves": 3, "estimated_waves": 2 }, "calibration_error": { "technical_risk": 0.35 } }
|
|
132
|
+
```
|
|
133
|
+
O `calibration_error` de cada dimensão = `|score declarado - resultado observado|`. Para `technical_risk` e `dependencies`, o resultado observado é estimado por: `1.0` se sem bloqueios nessa dimensão, `0.5` se houve 1 bloqueio, `0.0` se houve 2+ bloqueios. Omitir o registro se PLAN.md não tiver `<confidence_vector>`.
|
|
134
|
+
7b. **Camada 4a — Auditoria Adversarial (opcional):** se `adversarial_verify: true` em `.oxe/config.json` (padrão: `false`):
|
|
135
|
+
- Abrir novo contexto com pack no modo auditor: `oxe-cc context inspect --workflow verify --mode auditor --json` (inclui apenas `state`, `spec`, `verify` — exclui `plan`, `runtime`).
|
|
136
|
+
- Executar `oxe/workflows/verify-audit.md` com esse contexto restrito.
|
|
137
|
+
- O auditor não vê PLAN.md nem EXECUTION-RUNTIME.md — restrição intencional.
|
|
138
|
+
- Incorporar a seção `## Auditoria Adversarial` no VERIFY.md.
|
|
139
|
+
- Se o resultado for `REPROVADO`, registrar `verify_failed` e não avançar para SUMMARY/commit.
|
|
140
|
+
7c. **Blueprint plan-agent:** se **todas** as verificações relevantes **passaram**, existir **`.oxe/plan-agents.json`** com `oxePlanAgentsSchema >= 2` e `lifecycle.status === "executing"` (ou `pending_execute`), actualizar o JSON: `lifecycle: { "status": "closed", "since": "<ISO>" }` e espelhar em **`STATE.md`** (**lifecycle_status** → `closed`). Não fechar como `closed` se `verify_failed` ou gaps por resolver.
|
|
141
|
+
8. Acrescentar entrada em **`SUMMARY.md`** do escopo resolvido: se não existir, criar a partir de **`oxe/templates/SUMMARY.template.md`**. **Obrigatório** quando `verify_failed` ou quando a seção **Gaps** tiver itens.
|
|
142
|
+
8b. **Retrospectiva (pós-verify):** se `verify_complete`, sugerir **`/oxe-retro`** para capturar aprendizados do ciclo em `.oxe/LESSONS.md`. Especialmente importante quando: houve replanejamento (`--replan`), houve falhas em execute que precisaram de debug, critérios A* foram ajustados durante o ciclo, ou o ciclo durou mais de 2 ondas. Retro antes do próximo spec garante que lições orientem o próximo ciclo.
|
|
143
|
+
8c. **Camada 5 — Validate-gaps automático:** se `verification_depth: "thorough"` em `.oxe/config.json`, executar a lógica de `oxe/workflows/validate-gaps.md` e adicionar seção **Gaps de Cobertura** ao VERIFY.md (mesmo conteúdo de VALIDATION-GAPS.md). Também escrever `.oxe/VALIDATION-GAPS.md` separado.
|
|
144
|
+
8d. **Camada 6 — Security automático:** se `security_in_verify: true` em `.oxe/config.json`, executar a lógica de `oxe/workflows/security.md` e adicionar seção **Auditoria de Segurança** ao VERIFY.md. Também escrever `.oxe/SECURITY.md` separado. Achados P0 bloqueiam o `verify_complete` — registrar `verify_failed` até P0s serem resolvidos.
|
|
145
|
+
9. **Só se todas as verificações relevantes passarem:** se `after_verify_draft_commit` não for `false`: acrescentar em **VERIFY.md** a seção **Rascunho de commit** — mensagem convencional (ex.: `feat:` / `fix:`) + bullets alinhados aos critérios **A*** e decisões **D-NN**; **não** incluir segredos.
|
|
146
|
+
10. **Só se passou:** se `after_verify_suggest_pr` não for `false`: acrescentar **Checklist PR** — branch base, título sugerido, screenshots se UI, links a SPEC/PLAN/DISCUSS, testes executados.
|
|
147
|
+
11. No chat, responder nesta ordem:
|
|
148
|
+
- **Findings**
|
|
149
|
+
- **Perguntas abertas**
|
|
150
|
+
- **Riscos residuais**
|
|
151
|
+
- **Resumo**
|
|
128
152
|
</process>
|
|
129
153
|
|
|
130
154
|
<success_criteria>
|