oxe-cc 0.6.6 → 0.7.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.
Files changed (48) hide show
  1. package/.cursor/commands/oxe-capabilities.md +11 -0
  2. package/.cursor/commands/oxe-dashboard.md +11 -0
  3. package/.github/copilot-instructions.md +13 -1
  4. package/.github/prompts/oxe-capabilities.prompt.md +12 -0
  5. package/.github/prompts/oxe-dashboard.prompt.md +12 -0
  6. package/CHANGELOG.md +33 -0
  7. package/README.md +147 -11
  8. package/assets/oxe-framework-artifacts-paper.png +0 -0
  9. package/bin/banner.txt +1 -1
  10. package/bin/lib/oxe-azure.cjs +1445 -0
  11. package/bin/lib/oxe-dashboard.cjs +588 -0
  12. package/bin/lib/oxe-install-resolve.cjs +4 -1
  13. package/bin/lib/oxe-operational.cjs +670 -0
  14. package/bin/lib/oxe-project-health.cjs +372 -28
  15. package/bin/oxe-cc.js +1517 -312
  16. package/commands/oxe/capabilities.md +13 -0
  17. package/commands/oxe/dashboard.md +14 -0
  18. package/lib/sdk/README.md +9 -7
  19. package/lib/sdk/index.cjs +56 -0
  20. package/lib/sdk/index.d.ts +73 -0
  21. package/oxe/templates/ACTIVE-RUN.template.json +32 -0
  22. package/oxe/templates/CAPABILITIES.template.md +7 -0
  23. package/oxe/templates/CAPABILITY.template.md +45 -0
  24. package/oxe/templates/CHECKPOINTS.template.md +7 -0
  25. package/oxe/templates/EXECUTION-RUNTIME.template.md +68 -0
  26. package/oxe/templates/INVESTIGATION.template.md +38 -0
  27. package/oxe/templates/NOTES.template.md +16 -0
  28. package/oxe/templates/PLAN-REVIEW.template.md +31 -0
  29. package/oxe/templates/RESEARCH.template.md +11 -4
  30. package/oxe/templates/SPEC.template.md +6 -4
  31. package/oxe/templates/STATE.md +45 -7
  32. package/oxe/templates/config.template.json +11 -3
  33. package/oxe/workflows/ask.md +10 -1
  34. package/oxe/workflows/capabilities.md +23 -0
  35. package/oxe/workflows/dashboard.md +23 -0
  36. package/oxe/workflows/discuss.md +11 -9
  37. package/oxe/workflows/execute.md +57 -35
  38. package/oxe/workflows/help.md +256 -225
  39. package/oxe/workflows/obs.md +70 -20
  40. package/oxe/workflows/plan.md +83 -74
  41. package/oxe/workflows/quick.md +16 -11
  42. package/oxe/workflows/references/adaptive-discovery.md +27 -0
  43. package/oxe/workflows/research.md +12 -8
  44. package/oxe/workflows/retro.md +30 -5
  45. package/oxe/workflows/scan.md +1 -0
  46. package/oxe/workflows/spec.md +65 -48
  47. package/oxe/workflows/verify.md +52 -37
  48. package/package.json +2 -2
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: oxe:capabilities
3
+ description: "Gerir capabilities nativas do projeto OXE"
4
+ argument-hint: "[list|install <id>|remove <id>|update]"
5
+ allowed-tools:
6
+ - Read
7
+ - Bash
8
+ - Glob
9
+ ---
10
+
11
+ **Workflow canónico:** `oxe/workflows/capabilities.md`
12
+
13
+ Execute integralmente esse ficheiro na raiz do repositório em que estás a trabalhar. Usa o texto em `$ARGUMENTS` como ação sobre capabilities.
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: oxe:dashboard
3
+ description: "Visualizar o runtime operacional, ondas, checkpoints e sinais principais da trilha OXE"
4
+ argument-hint: "[foco opcional]"
5
+ allowed-tools:
6
+ - Read
7
+ - Bash
8
+ - Glob
9
+ - Grep
10
+ ---
11
+
12
+ **Workflow canónico:** `oxe/workflows/dashboard.md`
13
+
14
+ Execute integralmente esse ficheiro na raiz do repositório em que estás a trabalhar. Usa o texto em `$ARGUMENTS` como foco opcional.
package/lib/sdk/README.md CHANGED
@@ -47,19 +47,21 @@ const { options, warnings: w } = oxe.install.resolveOptionsFromConfig(dir, {
47
47
  | **health** | `loadOxeConfigMerged`, `validateConfigShape`, `buildHealthReport`, `suggestNextStep`, `oxePaths`, constantes de config |
48
48
  | **workflows** | `resolveWorkflowsDir`, `listWorkflowMdFiles`, `diffWorkflows`, `validateWorkflowShapes` (avisos `WORKFLOW_SHAPE`) |
49
49
  | **install** | `resolveOptionsFromConfig` |
50
- | **manifest** | `loadFileManifest`, `writeFileManifest`, `sha256File`, `collectFilesRecursive` |
51
- | **agents** | `adjustWorkflowPathsForNestedLayout`, `parseCursorCommandFrontmatter` |
52
- | **doctor** | `runDoctorChecks` resultado estruturado (erros + avisos + diff de workflows + `workflowShape` com lint leve dos `.md`) |
50
+ | **manifest** | `loadFileManifest`, `writeFileManifest`, `sha256File`, `collectFilesRecursive` |
51
+ | **agents** | `adjustWorkflowPathsForNestedLayout`, `parseCursorCommandFrontmatter` |
52
+ | **azure** | `azurePaths`, `detectAzureCli`, `loadAzureProfile`, `syncAzureInventory`, `planAzureOperation`, `applyAzureOperation`, `azureDoctor` |
53
+ | **doctor** | `runDoctorChecks` — resultado estruturado (erros + avisos + diff de workflows + `workflowShape` com lint leve dos `.md`) |
53
54
 
54
55
  TypeScript: ver `index.d.ts` junto deste ficheiro.
55
56
 
56
57
  ## `health.buildHealthReport` e `parseLastCompactDate`
57
58
 
58
59
  - **`parseLastCompactDate(stateText)`** — lê a data em **`.oxe/STATE.md`** na secção **Último compact** (mesma convenção que **Último scan**). Devolve `Date | null` se a linha for placeholder ou ilegível.
59
- - **`buildHealthReport(projectRoot)`** — agrega fase, datas, avisos de SPEC/PLAN/VERIFY e o próximo passo sugerido. Campos usados em CI e em `oxe-cc status --json`:
60
- - **`scanDate`**, **`stale`** — último scan e idade face a `scan_max_age_days` (`stale: { stale, days }`).
61
- - **`compactDate`**, **`staleCompact`** — último compact e idade face a `compact_max_age_days`.
62
- - **`next`** — `{ step, cursorCmd, reason, artifacts }` (espelha a lógica de `suggestNextStep`).
60
+ - **`buildHealthReport(projectRoot)`** — agrega fase, datas, avisos de SPEC/PLAN/VERIFY e o próximo passo sugerido. Campos usados em CI e em `oxe-cc status --json`:
61
+ - **`scanDate`**, **`stale`** — último scan e idade face a `scan_max_age_days` (`stale: { stale, days }`).
62
+ - **`compactDate`**, **`staleCompact`** — último compact e idade face a `compact_max_age_days`.
63
+ - **`azureActive`**, **`azure`** — contexto Azure resolvido, inventário materializado, warnings e pendências do provider.
64
+ - **`next`** — `{ step, cursorCmd, reason, artifacts }` (espelha a lógica de `suggestNextStep`).
63
65
 
64
66
  ## `runDoctorChecks` e relatório de saúde
65
67
 
package/lib/sdk/index.cjs CHANGED
@@ -14,6 +14,9 @@ const installResolve = require('../../bin/lib/oxe-install-resolve.cjs');
14
14
  const agentInstall = require('../../bin/lib/oxe-agent-install.cjs');
15
15
  const security = require('../../bin/lib/oxe-security.cjs');
16
16
  const plugins = require('../../bin/lib/oxe-plugins.cjs');
17
+ const dashboard = require('../../bin/lib/oxe-dashboard.cjs');
18
+ const operational = require('../../bin/lib/oxe-operational.cjs');
19
+ const azure = require('../../bin/lib/oxe-azure.cjs');
17
20
 
18
21
  const PACKAGE_ROOT = path.join(__dirname, '..', '..');
19
22
 
@@ -543,6 +546,59 @@ module.exports = {
543
546
  initPluginsDir: plugins.initPluginsDir,
544
547
  },
545
548
 
549
+ /** Dashboard local: contexto consolidado e persistência de revisão do plano. */
550
+ dashboard: {
551
+ loadDashboardContext: dashboard.loadDashboardContext,
552
+ savePlanReviewStatus: dashboard.savePlanReviewStatus,
553
+ addPlanReviewComment: dashboard.addPlanReviewComment,
554
+ updatePlanReviewCommentStatus: dashboard.updatePlanReviewCommentStatus,
555
+ },
556
+
557
+ /** Runtime operacional: tracing, active run, catálogo de capabilities e memória em camadas. */
558
+ operational: {
559
+ operationalPaths: operational.operationalPaths,
560
+ appendEvent: operational.appendEvent,
561
+ readEvents: operational.readEvents,
562
+ summarizeEvents: operational.summarizeEvents,
563
+ writeRunState: operational.writeRunState,
564
+ readRunState: operational.readRunState,
565
+ buildOperationalGraph: operational.buildOperationalGraph,
566
+ applyRuntimeAction: operational.applyRuntimeAction,
567
+ parseCapabilityManifest: operational.parseCapabilityManifest,
568
+ readCapabilityCatalog: operational.readCapabilityCatalog,
569
+ buildMemoryLayers: operational.buildMemoryLayers,
570
+ },
571
+
572
+ /** Provider Azure nativo via Azure CLI. */
573
+ azure: {
574
+ MIN_AZURE_CLI_MAJOR: azure.MIN_AZURE_CLI_MAJOR,
575
+ AZURE_CAPABILITY_IDS: azure.AZURE_CAPABILITY_IDS,
576
+ RESOURCE_GRAPH_QUERY: azure.RESOURCE_GRAPH_QUERY,
577
+ DEFAULT_AZURE_PROFILE: azure.DEFAULT_AZURE_PROFILE,
578
+ azurePaths: azure.azurePaths,
579
+ ensureAzureArtifacts: azure.ensureAzureArtifacts,
580
+ isAzureContextEnabled: azure.isAzureContextEnabled,
581
+ detectAzureCli: azure.detectAzureCli,
582
+ loadAzureProfile: azure.loadAzureProfile,
583
+ loadAzureAuthStatus: azure.loadAzureAuthStatus,
584
+ loadAzureInventory: azure.loadAzureInventory,
585
+ listAzureOperations: azure.listAzureOperations,
586
+ summarizeInventory: azure.summarizeInventory,
587
+ searchAzureInventory: azure.searchAzureInventory,
588
+ diffInventory: azure.diffInventory,
589
+ statusAzure: azure.statusAzure,
590
+ ensureAzureCapabilities: azure.ensureAzureCapabilities,
591
+ getAzureContext: azure.getAzureContext,
592
+ loginAzure: azure.loginAzure,
593
+ setAzureSubscription: azure.setAzureSubscription,
594
+ syncAzureInventory: azure.syncAzureInventory,
595
+ executeAzureRead: azure.executeAzureRead,
596
+ planAzureOperation: azure.planAzureOperation,
597
+ applyAzureOperation: azure.applyAzureOperation,
598
+ azureDoctor: azure.azureDoctor,
599
+ redactObject: azure.redactObject,
600
+ },
601
+
546
602
  /** Um único objeto com verificações tipo `doctor` + relatório de saúde. */
547
603
  runDoctorChecks,
548
604
  };
@@ -45,6 +45,27 @@ export interface OxeNextSuggestion {
45
45
  artifacts: string[];
46
46
  }
47
47
 
48
+ export interface AzureInventorySummary {
49
+ total: number;
50
+ servicebus: number;
51
+ eventgrid: number;
52
+ sql: number;
53
+ other: number;
54
+ }
55
+
56
+ export interface AzureHealthContext {
57
+ profile: Record<string, unknown> | null;
58
+ authStatus: Record<string, unknown> | null;
59
+ inventorySummary: AzureInventorySummary | null;
60
+ inventoryPath: string;
61
+ operationsPath: string;
62
+ inventorySyncedAt: string | null;
63
+ inventoryStale: { stale: boolean; hours: number | null };
64
+ pendingOperations: number;
65
+ lastOperation: Record<string, unknown> | null;
66
+ warnings: string[];
67
+ }
68
+
48
69
  /** Relatório retornado por `health.buildHealthReport` e incluído em `runDoctorChecks`.healthReport. */
49
70
  export interface OxeHealthReport {
50
71
  configPath: string | null;
@@ -63,6 +84,8 @@ export interface OxeHealthReport {
63
84
  specWarn: string[];
64
85
  planWarn: string[];
65
86
  next: OxeNextSuggestion;
87
+ azureActive?: boolean;
88
+ azure?: AzureHealthContext | null;
66
89
  scanFocusGlobs?: unknown;
67
90
  scanIgnoreGlobs?: unknown;
68
91
  }
@@ -281,6 +304,56 @@ export interface OxeSdk {
281
304
  initPluginsDir: (projectRoot: string) => void;
282
305
  };
283
306
 
307
+ dashboard: {
308
+ loadDashboardContext: (projectRoot: string, opts?: { activeSession?: string | null }) => Record<string, unknown>;
309
+ savePlanReviewStatus: (projectRoot: string, input?: Record<string, unknown>) => Record<string, unknown>;
310
+ addPlanReviewComment: (projectRoot: string, input?: Record<string, unknown>) => Record<string, unknown>;
311
+ updatePlanReviewCommentStatus: (projectRoot: string, input?: Record<string, unknown>) => Record<string, unknown> | null;
312
+ };
313
+
314
+ operational: {
315
+ operationalPaths: (projectRoot: string, activeSession: string | null) => Record<string, string | null>;
316
+ appendEvent: (projectRoot: string, activeSession: string | null, event?: Record<string, unknown>) => Record<string, unknown>;
317
+ readEvents: (projectRoot: string, activeSession: string | null) => Array<Record<string, unknown>>;
318
+ summarizeEvents: (events: Array<Record<string, unknown>>) => Record<string, unknown>;
319
+ writeRunState: (projectRoot: string, activeSession: string | null, runState?: Record<string, unknown>) => Record<string, unknown>;
320
+ readRunState: (projectRoot: string, activeSession: string | null) => Record<string, unknown> | null;
321
+ buildOperationalGraph: (runState?: Record<string, unknown>) => { nodes: Array<Record<string, unknown>>; edges: Array<Record<string, unknown>> };
322
+ applyRuntimeAction: (projectRoot: string, activeSession: string | null, input?: Record<string, unknown>) => Record<string, unknown>;
323
+ parseCapabilityManifest: (text: string) => Record<string, unknown>;
324
+ readCapabilityCatalog: (projectRoot: string) => Array<Record<string, unknown>>;
325
+ buildMemoryLayers: (projectRoot: string, activeSession: string | null) => Record<string, unknown>;
326
+ };
327
+
328
+ azure: {
329
+ MIN_AZURE_CLI_MAJOR: number;
330
+ AZURE_CAPABILITY_IDS: string[];
331
+ RESOURCE_GRAPH_QUERY: string;
332
+ DEFAULT_AZURE_PROFILE: Record<string, unknown>;
333
+ azurePaths: (projectRoot: string) => Record<string, string>;
334
+ ensureAzureArtifacts: (projectRoot: string) => Record<string, string>;
335
+ isAzureContextEnabled: (projectRoot: string, config?: Record<string, unknown>) => boolean;
336
+ detectAzureCli: (projectRoot: string, options?: Record<string, unknown>) => Record<string, unknown>;
337
+ loadAzureProfile: (projectRoot: string) => Record<string, unknown>;
338
+ loadAzureAuthStatus: (projectRoot: string) => Record<string, unknown> | null;
339
+ loadAzureInventory: (projectRoot: string) => Record<string, unknown> | null;
340
+ listAzureOperations: (projectRoot: string) => Array<Record<string, unknown>>;
341
+ summarizeInventory: (items: Array<Record<string, unknown>>) => AzureInventorySummary;
342
+ searchAzureInventory: (projectRoot: string, query: string, filters?: { type?: string; resourceGroup?: string }) => Array<Record<string, unknown>>;
343
+ diffInventory: (previousItems: Array<Record<string, unknown>>, currentItems: Array<Record<string, unknown>>) => { added: Array<Record<string, unknown>>; removed: Array<Record<string, unknown>>; unchanged: number };
344
+ statusAzure: (projectRoot: string, config?: Record<string, unknown>, options?: Record<string, unknown>) => Record<string, unknown>;
345
+ ensureAzureCapabilities: (projectRoot: string) => string[];
346
+ getAzureContext: (projectRoot: string, options?: Record<string, unknown>) => Record<string, unknown>;
347
+ loginAzure: (projectRoot: string, options?: Record<string, unknown>) => Record<string, unknown>;
348
+ setAzureSubscription: (projectRoot: string, subscription: string, options?: Record<string, unknown>) => Record<string, unknown>;
349
+ syncAzureInventory: (projectRoot: string, options?: Record<string, unknown>) => Record<string, unknown>;
350
+ executeAzureRead: (projectRoot: string, activeSession: string | null, domain: string, verb: string, input: Record<string, unknown>, options?: Record<string, unknown>) => unknown;
351
+ planAzureOperation: (projectRoot: string, activeSession: string | null, domain: string, input: Record<string, unknown>, options?: Record<string, unknown>) => Record<string, unknown>;
352
+ applyAzureOperation: (projectRoot: string, activeSession: string | null, domain: string, input: Record<string, unknown>, options?: Record<string, unknown>) => Record<string, unknown>;
353
+ azureDoctor: (projectRoot: string, config?: Record<string, unknown>, options?: Record<string, unknown>) => Record<string, unknown>;
354
+ redactObject: (value: unknown) => unknown;
355
+ };
356
+
284
357
  runDoctorChecks: (args: {
285
358
  projectRoot: string;
286
359
  packageRoot?: string;
@@ -0,0 +1,32 @@
1
+ {
2
+ "run_id": "oxe-run-YYYYMMDD-001",
3
+ "status": "planned",
4
+ "created_at": "YYYY-MM-DDTHH:mm:ssZ",
5
+ "updated_at": "YYYY-MM-DDTHH:mm:ssZ",
6
+ "plan_ref": "PLAN.md",
7
+ "session_id": null,
8
+ "current_wave": null,
9
+ "cursor": {
10
+ "wave": null,
11
+ "task": null,
12
+ "mode": null
13
+ },
14
+ "active_tasks": [],
15
+ "pending_checkpoints": [],
16
+ "retries": [],
17
+ "failures": [],
18
+ "evidence": [],
19
+ "provider_context": {
20
+ "azure": null
21
+ },
22
+ "graph": {
23
+ "nodes": [],
24
+ "edges": []
25
+ },
26
+ "metrics": {
27
+ "predicted_confidence": null,
28
+ "coverage_ratio": null,
29
+ "retry_count": 0,
30
+ "checkpoint_count": 0
31
+ }
32
+ }
@@ -0,0 +1,7 @@
1
+ # OXE — Capabilities Instaladas
2
+
3
+ > Catálogo local de capabilities do projeto. Cada capability vive em `.oxe/capabilities/<id>/`.
4
+
5
+ | ID | Tipo | Status | Escopo | Política | Side effects | Requer env | Evidência | Resumo |
6
+ |----|------|--------|--------|-----------|--------------|------------|-----------|--------|
7
+ | (vazio) | — | — | — | — | — | — | — | Nenhuma capability instalada |
@@ -0,0 +1,45 @@
1
+ ---
2
+ oxe_capability: true
3
+ id: sample-capability
4
+ version: 1
5
+ type: script
6
+ status: active
7
+ scope: execute
8
+ requires_env: []
9
+ entrypoint: ""
10
+ approval_policy: require_approval_if_external_side_effect
11
+ side_effects: []
12
+ evidence_outputs: []
13
+ session_compatibility: [legacy, session]
14
+ ---
15
+
16
+ # OXE — Capability
17
+
18
+ ## Objetivo
19
+
20
+ - O que esta capability faz.
21
+
22
+ ## Escopo OXE
23
+
24
+ - `scan` | `ask` | `research` | `spec` | `plan` | `execute` | `verify`
25
+
26
+ ## Operações
27
+
28
+ - Operação 1
29
+
30
+ ## Entradas e saídas
31
+
32
+ - Entradas esperadas
33
+ - Saídas produzidas
34
+
35
+ ## Requisitos
36
+
37
+ - Variáveis de ambiente
38
+ - Dependências externas
39
+ - Aprovação necessária ou bypass permitido
40
+
41
+ ## Evidência e segurança
42
+
43
+ - Como a capability produz evidência útil.
44
+ - Limites e riscos.
45
+ - Side effects possíveis e como são governados.
@@ -0,0 +1,7 @@
1
+ # OXE — Checkpoints
2
+
3
+ > Índice de checkpoints formais do ciclo atual. Usado para aprovações humanas e gates sensíveis.
4
+
5
+ | ID | Tipo | Fase | Escopo | Estado | Política | Decisão | Override | Criado em | Resolvido em | Notas |
6
+ |----|------|------|--------|--------|----------|---------|----------|-----------|--------------|-------|
7
+ | CP-01 | approval | spec | definição de escopo | pending_approval | require_approval | — | — | YYYY-MM-DD | — | — |
@@ -0,0 +1,68 @@
1
+ ---
2
+ oxe_doc: execution_runtime
3
+ status: active
4
+ updated: YYYY-MM-DD
5
+ ---
6
+
7
+ # OXE — Runtime Operacional
8
+
9
+ > Estado tático da execução. Este ficheiro complementa `PLAN.md` e `STATE.md`, mas não os substitui.
10
+
11
+ ## Contexto
12
+
13
+ - **Sessão / escopo:** …
14
+ - **Plano vinculado:** `PLAN.md`
15
+ - **Run ID:** `oxe-run-YYYYMMDD-001`
16
+ - **Active run:** `.oxe/ACTIVE-RUN.json` ou artefato equivalente de sessão
17
+ - **Trace log:** `.oxe/OXE-EVENTS.ndjson` ou artefato equivalente de sessão
18
+ - **Autoavaliação do plano:** melhor=`sim|não` | confiança=`NN%`
19
+ - **Limiar de execução:** `70%`
20
+
21
+ ## Onda atual
22
+
23
+ - **Onda:** —
24
+ - **Estado:** planned | running | paused | waiting_approval | failed | completed | replaying | aborted
25
+ - **Tarefas ativas:** —
26
+ - **Última atualização:** YYYY-MM-DD
27
+
28
+ ## Agentes ativos
29
+
30
+ | ID | Papel | Tarefas | Estado | Último handoff |
31
+ |----|-------|---------|--------|----------------|
32
+ | … | … | T1, T2 | active | — |
33
+
34
+ ## Checkpoints
35
+
36
+ | ID | Tipo | Escopo | Estado | Política | Decisão | Evidência |
37
+ |----|------|--------|--------|----------|---------|-----------|
38
+ | CP-01 | approval | Onda 1 | pending_approval | require_approval | — | — |
39
+
40
+ ## Handoffs
41
+
42
+ - W1 · `agent-a -> agent-b`: …
43
+
44
+ ## Grafo operacional
45
+
46
+ - **Nós:** agent-a, capability-x, checkpoint-CP-01
47
+ - **Arestas:** handoff, dependency, blocked_by
48
+
49
+ ## Evidências produzidas
50
+
51
+ - `path/ou/artefato`: resumo curto
52
+
53
+ ## Bloqueios
54
+
55
+ - (nenhum ou lista)
56
+
57
+ ## Iterações / retries
58
+
59
+ - Tarefa/onda | Tentativa | Resultado | Nota
60
+
61
+ ## Tracing operacional
62
+
63
+ - `run_started` → `phase_entered` → `handoff` → `checkpoint_opened` → `checkpoint_resolved` → `verification_completed`
64
+
65
+ ## Próximo movimento operacional
66
+
67
+ - **Ação:** …
68
+ - **Motivo:** …
@@ -0,0 +1,38 @@
1
+ ---
2
+ oxe_doc: investigation
3
+ status: draft
4
+ updated: YYYY-MM-DD
5
+ objective: ""
6
+ mode: surface
7
+ sources: []
8
+ ---
9
+
10
+ # OXE — Investigação Estruturada
11
+
12
+ ## Objetivo
13
+
14
+ - Pergunta principal a responder.
15
+
16
+ ## Fontes
17
+
18
+ - Fonte / path / sistema
19
+
20
+ ## Método
21
+
22
+ - Como a investigação foi conduzida.
23
+
24
+ ## Evidências
25
+
26
+ - Evidência 1
27
+
28
+ ## Conclusões
29
+
30
+ - Conclusão 1
31
+
32
+ ## Impacto em spec/plan
33
+
34
+ - Como isto altera a SPEC, o plano ou a confiança.
35
+
36
+ ## Próximo passo
37
+
38
+ - O que ainda falta validar.
@@ -0,0 +1,16 @@
1
+ ---
2
+ oxe_doc: notes
3
+ updated: YYYY-MM-DD
4
+ ---
5
+
6
+ # OXE — Notes
7
+
8
+ Fila leve de anotações do projeto. Cada bullet é consumido em `/oxe-discuss` ou `/oxe-plan` e depois movido para **Notas incorporadas**.
9
+
10
+ ## Notas em aberto
11
+
12
+ - YYYY-MM-DD — (nota aqui)
13
+
14
+ ## Notas incorporadas
15
+
16
+ <!-- Notas movidas automaticamente após consumidas pelo discuss ou plan -->
@@ -0,0 +1,31 @@
1
+ ---
2
+ oxe_doc: plan_review
3
+ status: draft
4
+ updated: YYYY-MM-DD
5
+ plan_ref: PLAN.md
6
+ ---
7
+
8
+ # OXE — Revisão do Plano
9
+
10
+ ## Estado
11
+
12
+ - **Status:** draft
13
+ - **Atualizado em:** YYYY-MM-DDTHH:mm:ssZ
14
+ - **Origem:** dashboard local ou revisão textual
15
+
16
+ ## Decisão
17
+
18
+ - **Resultado:** pendente
19
+ - **Justificativa:** —
20
+
21
+ ## Comentários abertos
22
+
23
+ - Nenhum
24
+
25
+ ## Comentários resolvidos
26
+
27
+ - Nenhum
28
+
29
+ ## Próxima ação recomendada
30
+
31
+ - `/oxe-dashboard` para revisar visualmente, ou `/oxe-plan --replan` se houver ajustes estruturais.
@@ -1,4 +1,4 @@
1
- # OXE — Nota de pesquisa
1
+ # OXE — Nota de pesquisa
2
2
 
3
3
  > Um ficheiro por sessão: copie para `.oxe/research/YYYY-MM-DD-<slug-kebab>.md` (data ISO; slug curto e único).
4
4
 
@@ -7,9 +7,16 @@
7
7
  - Ligação à SPEC: objetivo, IDs **A*** tocados (ou *N/A — SPEC ainda não existe* + recomendação de `oxe:spec`).
8
8
  - Entrada do utilizador / âmbito (paths, módulos, perguntas).
9
9
 
10
- ## Perguntas em aberto
11
-
12
- 1. … (critério para considerar “fechado”)
10
+ ## Perguntas em aberto
11
+
12
+ 1. … (critério para considerar “fechado”)
13
+
14
+ ## Investigação estruturada
15
+
16
+ - **Objetivo:** …
17
+ - **Modo:** `surface` | `standard` | `deep`
18
+ - **Fontes:** …
19
+ - **Profundidade:** …
13
20
 
14
21
  ## Evidência
15
22
 
@@ -19,10 +19,12 @@ inputs: []
19
19
 
20
20
  (Uma frase: o que entregar.)
21
21
 
22
- ## Contexto
23
-
24
- - Repositório / produto: …
25
- - Links úteis: …
22
+ ## Contexto
23
+
24
+ - Repositório / produto: …
25
+ - Links úteis: …
26
+ - Tipo de demanda: feature | bugfix | refactor | research | ops | mixed
27
+ - Incertezas estruturadas: …
26
28
 
27
29
  ## Escopo
28
30
 
@@ -20,11 +20,32 @@
20
20
  - **Notas:** (opcional; ex.: "só STRUCTURE e TESTING")
21
21
  - **last_retro:** (YYYY-MM-DD — preenchido por **`/oxe-retro`** ao concluir retrospectiva; lido por `oxe-cc doctor` para rastrear ciclos sem lições)
22
22
 
23
- ## Contexto do plano / quick (opcional)
24
-
25
- - **Spec / plano:** (revisão informal ou data de `.oxe/SPEC.md` / `.oxe/PLAN.md`)
26
- - **Última onda executada:** (número ou —)
27
- - **Tarefas concluídas:** (ex.: T1, T2 ou passos 1–3 do QUICK.md)
23
+ ## Contexto do plano / quick (opcional)
24
+
25
+ - **Spec / plano:** (revisão informal ou data de `.oxe/SPEC.md` / `.oxe/PLAN.md`)
26
+ - **Última onda executada:** (número ou —)
27
+ - **Tarefas concluídas:** (ex.: T1, T2 ou passos 1–3 do QUICK.md)
28
+
29
+ ## Checkpoints de aprovação (opcional)
30
+
31
+ - **checkpoint_status:** `pending_approval` | `approved` | `rejected` | `overridden` | —
32
+ - **checkpoint_ref:** `.oxe/CHECKPOINTS.md` ou artefato de sessão correspondente
33
+ - **Notas:** (ex.: aguardando aprovação para Onda 2)
34
+
35
+ ## Runtime operacional (opcional)
36
+
37
+ - **runtime_status:** `planned` | `running` | `paused` | `waiting_approval` | `failed` | `completed` | `replaying` | `aborted` | —
38
+ - **runtime_ref:** `.oxe/EXECUTION-RUNTIME.md` ou artefato de sessão correspondente
39
+ - **active_run_ref:** `.oxe/ACTIVE-RUN.json` ou artefato de sessão correspondente
40
+ - **events_ref:** `.oxe/OXE-EVENTS.ndjson` ou artefato de sessão correspondente
41
+ - **Notas:** (agentes ativos, bloqueio principal, handoff pendente)
42
+
43
+ ## Revisão do plano (opcional — dashboard / aprovação)
44
+
45
+ - **plan_review_status:** `draft` | `in_review` | `approved` | `rejected` | `needs_revision` | —
46
+ - **plan_review_updated:** (ISO legível — ex.: `2026-04-10T14:22:00-03:00`)
47
+ - **plan_review_ref:** `.oxe/PLAN-REVIEW.md` ou artefato de sessão correspondente
48
+ - **Notas:** (ex.: aprovado para execute; revisão pendente da onda 2)
28
49
 
29
50
  ## Blueprint de agentes (sessão) (opcional — `/oxe-plan-agent`)
30
51
 
@@ -81,11 +102,28 @@ _(O agente pode preencher após cada onda.)_
81
102
 
82
103
  - (nome do workstream ativo — ou — para pipeline principal)
83
104
 
84
- ## Memory (sidecars de sessão) (opcional — `/oxe-memory`)
105
+ ## Memory (sidecars de sessão) (opcional — `/oxe-memory`)
85
106
 
86
107
  Sidecars de memória persistente por agente/sessão. Armazenados em `.oxe/memory/`.
87
108
 
88
- - (nenhum ou lista: ex.: `architect-2025-01-15.md`, `researcher-auth-2025-01-14.md`)
109
+ - (nenhum ou lista: ex.: `architect-2025-01-15.md`, `researcher-auth-2025-01-14.md`)
110
+
111
+ ## Camadas de memória (contrato)
112
+
113
+ - **memory_read_order:** `runtime_state -> session_memory -> project_memory -> evidence`
114
+ - **session_memory_ref:** `SESSION.md` ou —
115
+ - **project_memory_ref:** `.oxe/global/LESSONS.md`
116
+ - **evidence_ref:** `INVESTIGATIONS.md`, `VERIFY.md` e derivados
117
+
118
+ ## Capabilities nativas (opcional)
119
+
120
+ - **capabilities_ref:** `.oxe/CAPABILITIES.md`
121
+ - **Capabilities ativas:** (IDs ou —)
122
+
123
+ ## Investigações estruturadas (opcional)
124
+
125
+ - **investigations_ref:** `.oxe/INVESTIGATIONS.md` ou índice de sessão
126
+ - **Última investigação:** (path ou —)
89
127
 
90
128
  ## Decisões persistentes
91
129
 
@@ -16,9 +16,17 @@
16
16
  "scan_focus_globs": [],
17
17
  "scan_ignore_globs": [],
18
18
  "spec_required_sections": [],
19
- "plan_max_tasks_per_wave": 0,
20
- "install": {
21
- "profile": "recommended",
19
+ "plan_max_tasks_per_wave": 0,
20
+ "azure": {
21
+ "enabled": false,
22
+ "default_resource_group": "",
23
+ "preferred_locations": [],
24
+ "inventory_max_age_hours": 24,
25
+ "resource_graph_auto_install": true,
26
+ "vpn_required": false
27
+ },
28
+ "install": {
29
+ "profile": "recommended",
22
30
  "repo_layout": "nested",
23
31
  "vscode": false,
24
32
  "include_commands_dir": true,
@@ -10,6 +10,7 @@ Responder perguntas sobre a situação atual do trabalho OXE com máxima robuste
10
10
  - Com sessão ativa, priorizar artefatos em `.oxe/<active_session>/...` antes do modo legado.
11
11
  - Usar `.oxe/codebase/` como mapa do repositório, não como substituto dos artefatos da trilha.
12
12
  - Se a pergunta estiver ambígua, responder em modo “situação atual + próximos riscos + melhor próxima ação”.
13
+ - Aplicar discovery adaptativo leve: classificar se a pergunta é sobre estado atual, bloqueio, estratégia, execução, verificação, instalação ou investigação antes de decidir o conjunto de artefatos prioritários.
13
14
  </context>
14
15
 
15
16
  <process>
@@ -18,15 +19,20 @@ Responder perguntas sobre a situação atual do trabalho OXE com máxima robuste
18
19
  - `SESSION.md`
19
20
  - `spec/SPEC.md`, `spec/ROADMAP.md`, `spec/DISCUSS.md`, `spec/UI-SPEC.md` se existirem
20
21
  - `plan/PLAN.md`, `plan/QUICK.md`, `plan/plan-agents.json`, `plan/quick-agents.json` se existirem
21
- - `execution/STATE.md`, `execution/OBSERVATIONS.md`, `execution/DEBUG.md`, `execution/FORENSICS.md`, `execution/SUMMARY.md` se existirem
22
+ - `execution/STATE.md`, `execution/EXECUTION-RUNTIME.md`, `execution/CHECKPOINTS.md`, `execution/OBSERVATIONS.md`, `execution/DEBUG.md`, `execution/FORENSICS.md`, `execution/SUMMARY.md` se existirem
23
+ - `research/INVESTIGATIONS.md`, `research/RESEARCH.md`, `research/investigations/` se existirem
22
24
  - `verification/VERIFY.md`, `verification/VALIDATION-GAPS.md`, `verification/SECURITY.md`, `verification/UI-REVIEW.md` se existirem
23
25
  3. Sem sessão ativa, ler o equivalente legado na raiz `.oxe/`.
24
26
  4. Em ambos os casos, ler também:
25
27
  - `.oxe/codebase/OVERVIEW.md`
26
28
  - `.oxe/codebase/STACK.md`
27
29
  - `.oxe/codebase/CONCERNS.md`
30
+ - `.oxe/CAPABILITIES.md` e `.oxe/capabilities/` se a pergunta tocar execução, pesquisa, automação ou integrações
31
+ - `.oxe/INVESTIGATIONS.md` se a pergunta tocar incertezas, descoberta ou evidência
32
+ - `.oxe/memory/` se existir memória persistente relevante ao assunto
28
33
  - `.oxe/global/LESSONS.md` se existir, com fallback para `.oxe/LESSONS.md`
29
34
  - `.oxe/SESSIONS.md` se a pergunta mencionar sessões, histórico ou retomada
35
+ - `.oxe/cloud/azure/INVENTORY.md`, `SERVICEBUS.md`, `EVENTGRID.md`, `SQL.md` e `auth-status.json` se a pergunta tocar Azure, cloud, infraestrutura, mensageria, integração ou banco gerido
30
36
  5. Responder à pergunta do utilizador com base em evidência explícita dos artefatos lidos.
31
37
  6. Se faltar artefato crítico para responder com segurança, dizer exatamente o que falta e qual comando OXE fecha essa lacuna.
32
38
 
@@ -44,7 +50,10 @@ Se o utilizador só disser algo genérico como “o que está acontecendo?”,
44
50
 
45
51
  - Não assumir que `doctor` ou `status` sejam session-aware; eles não substituem a leitura direta dos artefatos da sessão.
46
52
  - Se houver conflito entre `.oxe/STATE.md` global e `execution/STATE.md` da sessão, explicitar o conflito.
53
+ - Se houver `CHECKPOINTS.md` com itens `pending_approval`, isso tem precedência operacional sobre o “próximo passo” implícito.
54
+ - Se `EXECUTION-RUNTIME.md` ou `INVESTIGATIONS.md` existirem, tratá-los como evidência tática complementar para explicar bloqueios, handoffs, riscos e lacunas.
47
55
  - Se `VERIFY.md` existir e contradizer o estado declarado, priorizar a evidência do `VERIFY.md` e mencionar a incoerência.
56
+ - Se existir inventário Azure materializado, priorizar esse inventário sobre suposições sobre recursos cloud.
48
57
  - Se o mapa `.oxe/codebase/` estiver ausente ou incompleto, dizer isso explicitamente antes de extrapolar sobre o repositório.
49
58
  </process>
50
59