oxe-cc 0.6.5 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/.cursor/commands/oxe-ask.md +11 -0
  2. package/.cursor/commands/oxe-capabilities.md +11 -0
  3. package/.cursor/commands/oxe-dashboard.md +11 -0
  4. package/.github/prompts/oxe-ask.prompt.md +12 -0
  5. package/.github/prompts/oxe-capabilities.prompt.md +12 -0
  6. package/.github/prompts/oxe-dashboard.prompt.md +12 -0
  7. package/CHANGELOG.md +33 -0
  8. package/README.md +189 -34
  9. package/assets/oxe-framework-artifacts-paper.png +0 -0
  10. package/bin/banner.txt +1 -1
  11. package/bin/lib/oxe-azure.cjs +1445 -0
  12. package/bin/lib/oxe-dashboard.cjs +588 -0
  13. package/bin/lib/oxe-install-resolve.cjs +4 -1
  14. package/bin/lib/oxe-operational.cjs +670 -0
  15. package/bin/lib/oxe-project-health.cjs +655 -118
  16. package/bin/oxe-cc.js +1404 -17
  17. package/commands/oxe/ask.md +14 -0
  18. package/commands/oxe/capabilities.md +13 -0
  19. package/commands/oxe/dashboard.md +14 -0
  20. package/lib/sdk/README.md +9 -7
  21. package/lib/sdk/index.cjs +56 -0
  22. package/lib/sdk/index.d.ts +73 -0
  23. package/oxe/templates/ACTIVE-RUN.template.json +32 -0
  24. package/oxe/templates/CAPABILITIES.template.md +7 -0
  25. package/oxe/templates/CAPABILITY.template.md +45 -0
  26. package/oxe/templates/CHECKPOINTS.template.md +7 -0
  27. package/oxe/templates/CONFIG.md +3 -2
  28. package/oxe/templates/EXECUTION-RUNTIME.template.md +68 -0
  29. package/oxe/templates/INVESTIGATION.template.md +38 -0
  30. package/oxe/templates/NOTES.template.md +16 -0
  31. package/oxe/templates/PLAN-REVIEW.template.md +31 -0
  32. package/oxe/templates/PLAN.template.md +22 -7
  33. package/oxe/templates/RESEARCH.template.md +11 -4
  34. package/oxe/templates/SPEC.template.md +6 -4
  35. package/oxe/templates/STATE.md +45 -7
  36. package/oxe/templates/config.template.json +14 -5
  37. package/oxe/workflows/ask.md +71 -0
  38. package/oxe/workflows/capabilities.md +23 -0
  39. package/oxe/workflows/dashboard.md +23 -0
  40. package/oxe/workflows/discuss.md +11 -9
  41. package/oxe/workflows/execute.md +46 -17
  42. package/oxe/workflows/help.md +273 -239
  43. package/oxe/workflows/next.md +10 -8
  44. package/oxe/workflows/obs.md +70 -20
  45. package/oxe/workflows/plan-agent.md +2 -1
  46. package/oxe/workflows/plan.md +70 -21
  47. package/oxe/workflows/quick.md +14 -6
  48. package/oxe/workflows/references/adaptive-discovery.md +27 -0
  49. package/oxe/workflows/references/flow-robustness-contract.md +80 -0
  50. package/oxe/workflows/research.md +12 -8
  51. package/oxe/workflows/retro.md +30 -5
  52. package/oxe/workflows/scan.md +1 -0
  53. package/oxe/workflows/spec.md +58 -33
  54. package/oxe/workflows/verify.md +40 -10
  55. package/package.json +2 -2
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: oxe:ask
3
+ description: "Perguntar ao OXE sobre a situação atual com leitura robusta de STATE, sessão ativa e artefatos da trilha"
4
+ argument-hint: "[pergunta em texto livre]"
5
+ allowed-tools:
6
+ - Read
7
+ - Bash
8
+ - Glob
9
+ - Grep
10
+ ---
11
+
12
+ **Workflow canónico:** `oxe/workflows/ask.md`
13
+
14
+ Execute integralmente esse ficheiro na raiz do repositório em que estás a trabalhar. Usa o texto em `$ARGUMENTS` como pergunta e foco.
@@ -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 | — | — |
@@ -8,8 +8,9 @@ Copie `oxe/templates/config.template.json` para **`.oxe/config.json`** no seu pr
8
8
  |-------|------|-------------|
9
9
  | `profile` | string | Profile de execução: `balanced` (padrão) \| `strict` \| `fast` \| `legacy`. Expande automaticamente outras keys — keys explícitas prevalecem. Ver tabela abaixo. |
10
10
  | `discuss_before_plan` | boolean | Se `true`, o fluxo recomenda **`oxe:discuss`** entre spec e plan. |
11
- | `verification_depth` | string | Profundidade da verificação: `standard` (padrão) \| `thorough` (ativa Camada 5 — validate-gaps automático) \| `quick` (skip camadas 3–4 e UAT). |
12
- | `security_in_verify` | boolean | Se `true`, executa auditoria OWASP automaticamente no **verify** como **Camada 6** (produz `.oxe/SECURITY.md`). Achados P0 bloqueiam `verify_complete`. Padrão: `false`. |
11
+ | `verification_depth` | string | Profundidade da verificação: `standard` (padrão) \| `thorough` (ativa Camada 5 — validate-gaps automático) \| `quick` (skip camadas 3–4 e UAT). |
12
+ | `plan_confidence_threshold` | number | Limiar mínimo de confiança para o `execute` aceitar um `PLAN.md`. Padrão: `70`. Abaixo disso, o fluxo deve reduzir incerteza antes de implementar. |
13
+ | `security_in_verify` | boolean | Se `true`, executa auditoria OWASP automaticamente no **verify** como **Camada 6** (produz `.oxe/SECURITY.md`). Achados P0 bloqueiam `verify_complete`. Padrão: `false`. |
13
14
  | `after_verify_suggest_pr` | boolean | Se `true`, o workflow **verify** inclui checklist de PR no fim. |
14
15
  | `after_verify_draft_commit` | boolean | Se `true`, o **verify** propõe rascunho de mensagem de commit alinhado aos critérios de aceite. |
15
16
  | `after_verify_suggest_uat` | boolean | Se `true`, o **verify** gera checklist UAT (Camada 4). Ativo automaticamente com `profile: strict`. |
@@ -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.
@@ -14,13 +14,28 @@ inputs: []
14
14
 
15
15
  > Gerado a partir de `.oxe/SPEC.md`. Cada tarefa deve ter bloco **Verificar**.
16
16
 
17
- ## Resumo
18
-
19
- - **Spec vinculada:** (data ou versão informal)
20
- - **Ondas:** (número)
21
- - **Tarefas:** (número)
22
-
23
- ## Dependências globais
17
+ ## Resumo
18
+
19
+ - **Spec vinculada:** (data ou versão informal)
20
+ - **Ondas:** (número)
21
+ - **Tarefas:** (número)
22
+
23
+ ## Autoavaliação do Plano
24
+
25
+ - **Melhor plano atual:** sim
26
+ - **Confiança:** 80%
27
+ - **Base da confiança:**
28
+ - Completude dos requisitos: 20/25
29
+ - Dependências conhecidas: 12/15
30
+ - Risco técnico: 15/20
31
+ - Impacto no código existente: 12/15
32
+ - Clareza da validação / testes: 13/15
33
+ - Lacunas externas / decisões pendentes: 8/10
34
+ - **Principais incertezas:** (0–3 bullets)
35
+ - **Alternativas descartadas:** (1–2 linhas)
36
+ - **Condição para replanejar:** (critério objetivo)
37
+
38
+ ## Dependências globais
24
39
 
25
40
  - (ex.: branch base, feature flags, migrations)
26
41
 
@@ -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