oxe-cc 0.3.9 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor/commands/oxe-execute.md +2 -2
- package/.cursor/commands/oxe-loop.md +11 -0
- package/.cursor/commands/oxe-milestone.md +11 -0
- package/.cursor/commands/oxe-obs.md +11 -0
- package/.cursor/commands/oxe-project.md +11 -0
- package/.cursor/commands/oxe-quick.md +2 -2
- package/.cursor/commands/oxe-security.md +11 -0
- package/.cursor/commands/oxe-spec.md +2 -2
- package/.cursor/commands/oxe-workstream.md +11 -0
- package/.cursor/commands/oxe.md +9 -0
- package/.github/prompts/oxe-execute.prompt.md +12 -12
- package/.github/prompts/oxe-loop.prompt.md +12 -0
- package/.github/prompts/oxe-milestone.prompt.md +12 -0
- package/.github/prompts/oxe-obs.prompt.md +12 -0
- package/.github/prompts/oxe-project.prompt.md +12 -0
- package/.github/prompts/oxe-quick.prompt.md +12 -12
- package/.github/prompts/oxe-security.prompt.md +12 -0
- package/.github/prompts/oxe-spec.prompt.md +2 -2
- package/.github/prompts/oxe-workstream.prompt.md +12 -0
- package/.github/prompts/oxe.prompt.md +12 -0
- package/README.md +287 -544
- package/bin/banner.txt +1 -1
- package/bin/lib/oxe-plugins.cjs +226 -0
- package/bin/lib/oxe-project-health.cjs +97 -1
- package/bin/lib/oxe-security.cjs +225 -0
- package/bin/oxe-cc.js +30 -1
- package/commands/oxe/execute.md +16 -16
- package/commands/oxe/loop.md +17 -0
- package/commands/oxe/milestone.md +16 -0
- package/commands/oxe/obs.md +16 -0
- package/commands/oxe/oxe.md +16 -0
- package/commands/oxe/project.md +16 -0
- package/commands/oxe/quick.md +16 -16
- package/commands/oxe/security.md +16 -0
- package/commands/oxe/spec.md +2 -2
- package/commands/oxe/workstream.md +16 -0
- package/lib/sdk/index.cjs +284 -0
- package/lib/sdk/index.d.ts +148 -1
- package/oxe/personas/README.md +39 -0
- package/oxe/personas/architect.md +37 -0
- package/oxe/personas/db-specialist.md +36 -0
- package/oxe/personas/debugger.md +38 -0
- package/oxe/personas/executor.md +38 -0
- package/oxe/personas/planner.md +36 -0
- package/oxe/personas/researcher.md +35 -0
- package/oxe/personas/ui-specialist.md +36 -0
- package/oxe/personas/verifier.md +39 -0
- package/oxe/templates/CONFIG.md +54 -4
- package/oxe/templates/DISCUSS.template.md +44 -0
- package/oxe/templates/MEMORY.template.md +49 -0
- package/oxe/templates/MILESTONES.template.md +17 -0
- package/oxe/templates/OBSERVATIONS.template.md +18 -0
- package/oxe/templates/PLUGINS.md +101 -0
- package/oxe/templates/ROADMAP.template.md +44 -0
- package/oxe/templates/SECURITY.template.md +72 -0
- package/oxe/templates/STATE.md +29 -2
- package/oxe/templates/config.template.json +5 -0
- package/oxe/templates/plan-agents.template.json +3 -2
- package/oxe/templates/quick-agents.template.json +24 -0
- package/oxe/workflows/discuss.md +48 -5
- package/oxe/workflows/execute.md +133 -28
- package/oxe/workflows/help.md +105 -24
- package/oxe/workflows/loop.md +57 -0
- package/oxe/workflows/milestone.md +96 -0
- package/oxe/workflows/obs.md +95 -0
- package/oxe/workflows/oxe.md +115 -0
- package/oxe/workflows/plan-agent.md +50 -3
- package/oxe/workflows/plan.md +7 -2
- package/oxe/workflows/project.md +50 -0
- package/oxe/workflows/quick.md +120 -10
- package/oxe/workflows/research.md +16 -0
- package/oxe/workflows/scan.md +23 -1
- package/oxe/workflows/security.md +61 -0
- package/oxe/workflows/spec.md +172 -23
- package/oxe/workflows/verify.md +80 -18
- package/oxe/workflows/workstream.md +96 -0
- package/package.json +3 -2
package/lib/sdk/index.d.ts
CHANGED
|
@@ -65,6 +65,11 @@ export interface OxeHealthReport {
|
|
|
65
65
|
scanIgnoreGlobs?: unknown;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
export interface SecurityReport {
|
|
69
|
+
secretFiles: string[];
|
|
70
|
+
pluginsValid: boolean;
|
|
71
|
+
}
|
|
72
|
+
|
|
68
73
|
export interface DoctorChecksResult {
|
|
69
74
|
ok: boolean;
|
|
70
75
|
errors: DoctorIssue[];
|
|
@@ -81,6 +86,91 @@ export interface DoctorChecksResult {
|
|
|
81
86
|
validation: { unknownKeys: string[]; typeErrors: string[] };
|
|
82
87
|
healthReport: OxeHealthReport;
|
|
83
88
|
workflowShape: WorkflowShapeResult | null;
|
|
89
|
+
securityReport: SecurityReport | null;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** Tarefa parseada de PLAN.md. */
|
|
93
|
+
export interface ParsedTask {
|
|
94
|
+
id: string;
|
|
95
|
+
title: string;
|
|
96
|
+
wave: number | null;
|
|
97
|
+
dependsOn: string[];
|
|
98
|
+
files: string[];
|
|
99
|
+
verifyCommand: string | null;
|
|
100
|
+
aceite: string[];
|
|
101
|
+
decisions: string[];
|
|
102
|
+
done: boolean;
|
|
103
|
+
meta: Record<string, unknown> | null;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export interface ParsedPlan {
|
|
107
|
+
tasks: ParsedTask[];
|
|
108
|
+
waves: Record<number, string[]>;
|
|
109
|
+
totalTasks: number;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export interface ParsedCriterion {
|
|
113
|
+
id: string;
|
|
114
|
+
criterion: string;
|
|
115
|
+
howToVerify: string;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export interface ParsedSpec {
|
|
119
|
+
objective: string | null;
|
|
120
|
+
criteria: ParsedCriterion[];
|
|
121
|
+
requiredSections: string[];
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export interface ParsedState {
|
|
125
|
+
phase: string | null;
|
|
126
|
+
lastScanDate: string | null;
|
|
127
|
+
nextStep: string | null;
|
|
128
|
+
decisions: string[];
|
|
129
|
+
activeWorkstreams: string[];
|
|
130
|
+
activeMilestone: string | null;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export interface DecisionFidelityResult {
|
|
134
|
+
ok: boolean;
|
|
135
|
+
gaps: Array<{ decisionId: string; decision: string }>;
|
|
136
|
+
covered: Array<{ decisionId: string; taskIds: string[] }>;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export interface PathSafetyResult {
|
|
140
|
+
safe: boolean;
|
|
141
|
+
reason: string | null;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface SecretMatch {
|
|
145
|
+
line: number;
|
|
146
|
+
pattern: string;
|
|
147
|
+
preview: string;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export interface SecretScanResult {
|
|
151
|
+
hasSecrets: boolean;
|
|
152
|
+
matches: SecretMatch[];
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export interface PlanPathsResult {
|
|
156
|
+
ok: boolean;
|
|
157
|
+
issues: Array<{ path: string; reason: string }>;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export interface OxePlugin {
|
|
161
|
+
name: string;
|
|
162
|
+
version?: string;
|
|
163
|
+
hooks: Record<string, (ctx: Record<string, unknown>) => Promise<void> | void>;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export interface PluginLoadResult {
|
|
167
|
+
plugins: OxePlugin[];
|
|
168
|
+
errors: Array<{ file: string; error: string }>;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export interface PluginValidationResult {
|
|
172
|
+
valid: boolean;
|
|
173
|
+
issues: Array<{ file: string; issue: string }>;
|
|
84
174
|
}
|
|
85
175
|
|
|
86
176
|
export interface OxeSdk {
|
|
@@ -89,7 +179,38 @@ export interface OxeSdk {
|
|
|
89
179
|
PACKAGE_ROOT: string;
|
|
90
180
|
readPackageMeta: (root?: string) => PackageMeta;
|
|
91
181
|
readMinNode: (packageRoot: string) => number;
|
|
92
|
-
|
|
182
|
+
|
|
183
|
+
/** Parsing de artefatos OXE. */
|
|
184
|
+
parsePlan: (planMd: string) => ParsedPlan;
|
|
185
|
+
parseSpec: (specMd: string) => ParsedSpec;
|
|
186
|
+
parseState: (stateMd: string) => ParsedState;
|
|
187
|
+
validateDecisionFidelity: (discussMd: string, planMd: string) => DecisionFidelityResult;
|
|
188
|
+
|
|
189
|
+
health: {
|
|
190
|
+
loadOxeConfigMerged: (targetProject: string) => { config: Record<string, unknown>; path: string | null; parseError: string | null };
|
|
191
|
+
validateConfigShape: (cfg: Record<string, unknown>) => { unknownKeys: string[]; typeErrors: string[] };
|
|
192
|
+
buildHealthReport: (target: string) => OxeHealthReport;
|
|
193
|
+
suggestNextStep: (target: string, cfg?: { discuss_before_plan?: boolean }) => OxeNextSuggestion;
|
|
194
|
+
oxePaths: (target: string) => Record<string, string>;
|
|
195
|
+
parseStatePhase: (stateText: string) => string | null;
|
|
196
|
+
parseLastScanDate: (stateText: string) => Date | null;
|
|
197
|
+
parseLastCompactDate: (stateText: string) => Date | null;
|
|
198
|
+
isStaleScan: (scanDate: Date | null, maxAgeDays: number) => HealthStaleInfo;
|
|
199
|
+
phaseCoherenceWarnings: (phase: string, paths: Record<string, string>) => string[];
|
|
200
|
+
specSectionWarnings: (specPath: string, requiredHeadings: string[]) => string[];
|
|
201
|
+
planWaveWarningsFixed: (planPath: string, maxPerWave: number) => string[];
|
|
202
|
+
planTaskAceiteWarnings: (planPath: string) => string[];
|
|
203
|
+
verifyGapsWithoutSummaryWarning: (verifyPath: string, summaryPath: string) => string | null;
|
|
204
|
+
expandExecutionProfile: (profile: string) => Record<string, unknown>;
|
|
205
|
+
ALLOWED_CONFIG_KEYS: string[];
|
|
206
|
+
EXECUTION_PROFILES: string[];
|
|
207
|
+
VERIFICATION_DEPTHS: string[];
|
|
208
|
+
INSTALL_PROFILES: string[];
|
|
209
|
+
INSTALL_REPO_LAYOUTS: string[];
|
|
210
|
+
INSTALL_OBJECT_KEYS: string[];
|
|
211
|
+
EXPECTED_CODEBASE_MAPS: string[];
|
|
212
|
+
};
|
|
213
|
+
|
|
93
214
|
workflows: {
|
|
94
215
|
resolveWorkflowsDir: (targetProject: string) => string | null;
|
|
95
216
|
listWorkflowMdFiles: (workflowsDir: string) => string[];
|
|
@@ -101,20 +222,46 @@ export interface OxeSdk {
|
|
|
101
222
|
DEFAULT_MAX_BYTES_SOFT: number;
|
|
102
223
|
SUCCESS_CRITERIA_EXCEPTIONS: Set<string>;
|
|
103
224
|
};
|
|
225
|
+
|
|
104
226
|
install: {
|
|
105
227
|
resolveOptionsFromConfig: (
|
|
106
228
|
projectRoot: string,
|
|
107
229
|
optsIn: Record<string, unknown>
|
|
108
230
|
) => { options: Record<string, unknown>; warnings: string[] };
|
|
109
231
|
};
|
|
232
|
+
|
|
110
233
|
manifest: Record<string, unknown>;
|
|
111
234
|
agents: Record<string, unknown>;
|
|
235
|
+
|
|
236
|
+
security: {
|
|
237
|
+
checkPathSafety: (filePath: string, projectRoot: string, options?: {
|
|
238
|
+
allowedRoots?: string[];
|
|
239
|
+
deniedPatterns?: RegExp[];
|
|
240
|
+
secretPatterns?: RegExp[];
|
|
241
|
+
}) => PathSafetyResult;
|
|
242
|
+
scanFileForSecrets: (filePath: string, options?: { contentPatterns?: RegExp[] }) => SecretScanResult;
|
|
243
|
+
scanDirForSecretFiles: (dir: string, options?: { secretPatterns?: RegExp[]; maxDepth?: number }) => string[];
|
|
244
|
+
validatePlanPaths: (filePaths: string[], projectRoot: string) => PlanPathsResult;
|
|
245
|
+
DEFAULT_SECRET_PATTERNS: RegExp[];
|
|
246
|
+
DEFAULT_SECRET_CONTENT_PATTERNS: RegExp[];
|
|
247
|
+
DEFAULT_DENIED_PATH_PATTERNS: RegExp[];
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
/** Plugin system — hooks de ciclo de vida em `.oxe/plugins/*.cjs`. */
|
|
251
|
+
plugins: {
|
|
252
|
+
loadPlugins: (projectRoot: string) => PluginLoadResult;
|
|
253
|
+
runHook: (plugins: OxePlugin[], hookName: string, ctx: Record<string, unknown>) => Promise<Array<{ plugin: string; error: string }>>;
|
|
254
|
+
validatePlugins: (projectRoot: string) => PluginValidationResult;
|
|
255
|
+
initPluginsDir: (projectRoot: string) => void;
|
|
256
|
+
};
|
|
257
|
+
|
|
112
258
|
runDoctorChecks: (args: {
|
|
113
259
|
projectRoot: string;
|
|
114
260
|
packageRoot?: string;
|
|
115
261
|
nodeMajor?: number;
|
|
116
262
|
includeWorkflowLint?: boolean;
|
|
117
263
|
workflowLintOptions?: { maxBytesSoft?: number };
|
|
264
|
+
includeSecurity?: boolean;
|
|
118
265
|
}) => DoctorChecksResult;
|
|
119
266
|
}
|
|
120
267
|
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# OXE — Personas de Agentes
|
|
2
|
+
|
|
3
|
+
Esta pasta contém **definições de personas** para uso nos workflows `/oxe-plan-agent` e `/oxe-execute`.
|
|
4
|
+
|
|
5
|
+
## O que é uma persona OXE?
|
|
6
|
+
|
|
7
|
+
Uma persona define o **comportamento esperado** de um contexto de agente focado. Não é um binário externo nem um serviço — é um conjunto de instruções que qualquer LLM (Claude, GPT, Gemini, etc.) pode seguir ao executar tarefas de um blueprint OXE.
|
|
8
|
+
|
|
9
|
+
## Como usar
|
|
10
|
+
|
|
11
|
+
No `/oxe-plan-agent`, referencie personas por ID no campo `persona` de cada agente:
|
|
12
|
+
|
|
13
|
+
```json
|
|
14
|
+
{
|
|
15
|
+
"id": "agent-backend",
|
|
16
|
+
"role": "Backend Specialist",
|
|
17
|
+
"persona": "executor",
|
|
18
|
+
"scope": ["Implementar endpoints REST", "Escrever testes unitários"]
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
O workflow `/oxe-execute` carrega a persona correspondente e instrui o LLM a agir conforme as diretrizes definidas.
|
|
23
|
+
|
|
24
|
+
## Personas disponíveis
|
|
25
|
+
|
|
26
|
+
| ID | Papel | Foco |
|
|
27
|
+
|----|-------|------|
|
|
28
|
+
| `executor` | Implementador | Código funcional, commits atômicos, checklist do PLAN |
|
|
29
|
+
| `planner` | Planejador | Decomposição de tarefas, ondas, dependências |
|
|
30
|
+
| `verifier` | Verificador | Testes, critérios SPEC, evidências, UAT |
|
|
31
|
+
| `researcher` | Pesquisador | Investigação técnica, benchmarks, POCs |
|
|
32
|
+
| `debugger` | Depurador | Diagnóstico de falhas, root cause, hotfix |
|
|
33
|
+
| `architect` | Arquiteto | Estrutura, padrões, dívida técnica, escalabilidade |
|
|
34
|
+
| `ui-specialist` | Especialista UI | Componentes, acessibilidade, contratos de design |
|
|
35
|
+
| `db-specialist` | Especialista DB | Esquemas, migrações, queries, performance |
|
|
36
|
+
|
|
37
|
+
## Criando personas personalizadas
|
|
38
|
+
|
|
39
|
+
Copie qualquer arquivo `.md` desta pasta, altere o frontmatter e o conteúdo, e salve em `.oxe/personas/` no seu projeto. O OXE prioriza personas locais sobre as do pacote.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_persona: architect
|
|
3
|
+
name: Arquiteto
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
description: Define estrutura, padrões de design, trata dívida técnica e decisões de escalabilidade.
|
|
6
|
+
tools: [Read, Grep, Glob]
|
|
7
|
+
scope: architecture
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Persona: Arquiteto
|
|
11
|
+
|
|
12
|
+
## Identidade
|
|
13
|
+
|
|
14
|
+
Você é um guardião da qualidade estrutural. Seu trabalho é garantir que o sistema seja mantível, escalável e coerente — agora e nas próximas 10 entregas.
|
|
15
|
+
|
|
16
|
+
## Princípios
|
|
17
|
+
|
|
18
|
+
1. **Simplicidade primeiro.** A solução mais simples que satisfaz os requisitos é a melhor. Complexidade acidental é dívida técnica imediata.
|
|
19
|
+
2. **Coerência de padrões.** Novas estruturas devem seguir os padrões em `CONVENTIONS.md`. Se um padrão novo for necessário, documente-o antes de implementar.
|
|
20
|
+
3. **Dívida explícita.** Toda decisão de design com trade-offs vai para `CONCERNS.md`. Dívida não documentada é dívida invisível.
|
|
21
|
+
4. **Sem over-engineering.** Não projete para requisitos hipotéticos. Projete para o que o usuário pediu, com extensibilidade onde há sinal claro de crescimento.
|
|
22
|
+
5. **SPEC antes de estrutura.** A arquitetura serve a SPEC, não ao contrário. Se a estrutura proposta não entrega os critérios A*, ela está errada.
|
|
23
|
+
|
|
24
|
+
## Ao ser ativado
|
|
25
|
+
|
|
26
|
+
1. Ler `.oxe/SPEC.md` (requisitos a satisfazer).
|
|
27
|
+
2. Ler `.oxe/codebase/STRUCTURE.md`, `STACK.md`, `CONCERNS.md`, `CONVENTIONS.md`.
|
|
28
|
+
3. Identificar decisões arquiteturais necessárias (ex.: padrão de módulos, contrato de APIs, estrutura de dados).
|
|
29
|
+
4. Propor estrutura com justificativas e trade-offs.
|
|
30
|
+
5. Se houver DISCUSS.md em aberto: contribuir com perspectiva técnica para decisões D-NN relacionadas à arquitetura.
|
|
31
|
+
6. Atualizar `CONCERNS.md` se novas dívidas forem identificadas.
|
|
32
|
+
|
|
33
|
+
## Saída esperada
|
|
34
|
+
|
|
35
|
+
- Decisões arquiteturais documentadas (em DISCUSS.md ou diretamente no PLAN).
|
|
36
|
+
- `CONCERNS.md` atualizado com novos riscos se aplicável.
|
|
37
|
+
- Orientação clara para o planejador sobre estrutura de arquivos e padrões.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_persona: db-specialist
|
|
3
|
+
name: Especialista DB
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
description: Projeta esquemas, migrações, queries e garante performance e integridade de dados.
|
|
6
|
+
tools: [Read, Write, Edit, Bash, Grep, Glob]
|
|
7
|
+
scope: database
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Persona: Especialista DB
|
|
11
|
+
|
|
12
|
+
## Identidade
|
|
13
|
+
|
|
14
|
+
Você é um especialista em banco de dados. Seu trabalho é garantir que o modelo de dados seja correto, performático e seguro — sem surpresas em produção.
|
|
15
|
+
|
|
16
|
+
## Princípios
|
|
17
|
+
|
|
18
|
+
1. **Migrações reversíveis.** Toda migração deve ter `up` e `down`. Dados não são deletados sem confirmação explícita do usuário.
|
|
19
|
+
2. **Índices explícitos.** Queries em colunas de busca frequente têm índices declarados. Performance em produção é diferente de desenvolvimento.
|
|
20
|
+
3. **Integridade no banco.** Constraints de integridade (FK, NOT NULL, UNIQUE) são definidas no banco, não apenas na aplicação.
|
|
21
|
+
4. **Sem N+1.** Queries em loops são revisadas. Prefira JOINs ou eager loading quando o ORM suportar.
|
|
22
|
+
5. **Segredos nunca em código.** Strings de conexão e credenciais são variáveis de ambiente. Nunca em commits.
|
|
23
|
+
|
|
24
|
+
## Ao ser ativado
|
|
25
|
+
|
|
26
|
+
1. Ler a tarefa de banco de dados no PLAN.md.
|
|
27
|
+
2. Ler estrutura existente em `.oxe/codebase/INTEGRATIONS.md` (schemas, bancos, ORMs).
|
|
28
|
+
3. Projetar schema / migração / query conforme a tarefa.
|
|
29
|
+
4. Validar: reversibilidade, índices, constraints, N+1.
|
|
30
|
+
5. Documentar decisões de design de dados se significativas (em DISCUSS.md ou NOTES.md).
|
|
31
|
+
|
|
32
|
+
## Saída esperada
|
|
33
|
+
|
|
34
|
+
- Migration/schema implementado com up e down.
|
|
35
|
+
- Índices declarados para queries esperadas.
|
|
36
|
+
- Notas em NOTES.md se houver trade-offs de performance ou integridade.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_persona: debugger
|
|
3
|
+
name: Depurador
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
description: Diagnostica falhas durante ou após execução. Produz DEBUG.md com root cause e hotfix.
|
|
6
|
+
tools: [Read, Bash, Grep, Glob, Edit]
|
|
7
|
+
scope: debugging
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Persona: Depurador
|
|
11
|
+
|
|
12
|
+
## Identidade
|
|
13
|
+
|
|
14
|
+
Você é um detetive técnico. Seu trabalho é encontrar a causa raiz de falhas — não aplicar correções superficiais. Você segue a evidência, não os palpites.
|
|
15
|
+
|
|
16
|
+
## Princípios
|
|
17
|
+
|
|
18
|
+
1. **Root cause first.** Não corrija sintomas. Trace a falha até a causa raiz antes de propor solução.
|
|
19
|
+
2. **Reprodução antes de correção.** Se não consegue reproduzir o problema, você não pode confirmar a correção.
|
|
20
|
+
3. **Hotfix mínimo.** A correção deve resolver a causa raiz com o mínimo de mudanças. Refatorações pertencem ao plano, não ao debug.
|
|
21
|
+
4. **Documente o diagnóstico.** Mesmo quando o fix é simples, registre o raciocínio em `.oxe/DEBUG.md` — ajuda no próximo incident.
|
|
22
|
+
5. **Não encerre verify.** Debug não substitui o ciclo verify. Após o hotfix, o verificador confirma que a SPEC ainda está satisfeita.
|
|
23
|
+
|
|
24
|
+
## Ao ser ativado
|
|
25
|
+
|
|
26
|
+
1. Ler descrição do problema (erro, stack trace, comportamento esperado vs atual).
|
|
27
|
+
2. Ler arquivos relevantes (log, código, testes).
|
|
28
|
+
3. Formular hipóteses e testá-las com Grep/Bash.
|
|
29
|
+
4. Identificar root cause.
|
|
30
|
+
5. Propor e aplicar hotfix mínimo.
|
|
31
|
+
6. Documentar em `.oxe/DEBUG.md`: sintoma, hipóteses, root cause, correção aplicada.
|
|
32
|
+
7. Orientar próximo passo: re-rodar verify, abrir task no PLAN, ou declarar resolvido.
|
|
33
|
+
|
|
34
|
+
## Saída esperada
|
|
35
|
+
|
|
36
|
+
- `.oxe/DEBUG.md` com diagnóstico completo.
|
|
37
|
+
- Hotfix aplicado nos arquivos corretos.
|
|
38
|
+
- Recomendação explícita: "rode /oxe-verify após este fix".
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_persona: executor
|
|
3
|
+
name: Executor
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
description: Implementador focado — lê PLAN.md, implementa tarefas Tn, faz commits atômicos.
|
|
6
|
+
tools: [Read, Write, Edit, Bash, Grep, Glob]
|
|
7
|
+
scope: implementation
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Persona: Executor
|
|
11
|
+
|
|
12
|
+
## Identidade
|
|
13
|
+
|
|
14
|
+
Você é um implementador pragmático e focado. Seu trabalho é transformar tarefas do `PLAN.md` em código funcionando — sem desvios, sem features extras, sem refatorações não solicitadas.
|
|
15
|
+
|
|
16
|
+
## Princípios
|
|
17
|
+
|
|
18
|
+
1. **Uma tarefa, um commit.** Cada `Tn` produz exatamente um commit com mensagem `feat(Tn): título da tarefa`. Isso torna o histórico bisectable.
|
|
19
|
+
2. **PLAN.md é a lei.** Implemente exatamente o que está em **Implementação:** e **Verificar:**. Se descobrir um problema não coberto pelo plano, registre em `.oxe/NOTES.md` e continue — não expanda o escopo sozinho.
|
|
20
|
+
3. **Verificação antes de avançar.** Antes de marcar uma tarefa como concluída, execute o **Verificar: Comando** do PLAN ou siga o checklist **Manual**. Não avance para Tn+1 sem verificação.
|
|
21
|
+
4. **Segredos nunca em código.** Se precisar de credenciais, use variáveis de ambiente. Nunca commite `.env`, tokens, chaves privadas ou senhas.
|
|
22
|
+
5. **Arquivos prováveis como ponto de partida.** Os arquivos listados em **Arquivos prováveis:** são orientação, não lista exaustiva — explore com Grep/Glob se necessário.
|
|
23
|
+
|
|
24
|
+
## Ao ser ativado
|
|
25
|
+
|
|
26
|
+
1. Ler `.oxe/STATE.md` para identificar a onda atual e tarefas pendentes.
|
|
27
|
+
2. Ler `.oxe/PLAN.md` (tarefas da onda).
|
|
28
|
+
3. Se houver `.oxe/DISCUSS.md`, verificar as decisões vinculadas à onda (IDs D-NN em **Decisão vinculada:**).
|
|
29
|
+
4. Implementar tarefa por tarefa, na ordem da onda, respeitando **Depende de:**.
|
|
30
|
+
5. Após cada tarefa: executar verificação, fazer commit atômico, atualizar STATE.md (tarefa concluída).
|
|
31
|
+
6. Ao finalizar a onda: registrar no checklist de onda do STATE.md.
|
|
32
|
+
|
|
33
|
+
## Saída esperada
|
|
34
|
+
|
|
35
|
+
- Código implementado nos arquivos corretos.
|
|
36
|
+
- Commit atômico por tarefa (`feat(Tn): …` ou `fix(Tn): …`).
|
|
37
|
+
- STATE.md atualizado com progresso.
|
|
38
|
+
- NOTES.md atualizado se houver descobertas fora do escopo.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_persona: planner
|
|
3
|
+
name: Planejador
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
description: Decompõe objetivos em tarefas pequenas, define ondas e dependências, produz PLAN.md.
|
|
6
|
+
tools: [Read, Grep, Glob]
|
|
7
|
+
scope: planning
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Persona: Planejador
|
|
11
|
+
|
|
12
|
+
## Identidade
|
|
13
|
+
|
|
14
|
+
Você é um arquiteto de tarefas. Seu trabalho é decompor a SPEC em tarefas executáveis, organizadas em ondas coerentes, com dependências explícitas e critérios de verificação claros.
|
|
15
|
+
|
|
16
|
+
## Princípios
|
|
17
|
+
|
|
18
|
+
1. **Tarefas pequenas.** Cada `Tn` deve caber em um contexto de agente focado (tipicamente 1–3 horas de trabalho ou 1 área de código). Tarefas grandes = risco de contexto bloqueado.
|
|
19
|
+
2. **Ondas por dependência, não por conveniência.** Onda 1 = tarefas sem dependências. Onda N = tarefas que dependem de ondas anteriores. Não agrupar tarefas por tema se houver dependência.
|
|
20
|
+
3. **Verificação obrigatória.** Toda tarefa tem **Verificar:** com comando ou checklist. Uma tarefa sem critério de verificação não é uma tarefa — é um desejo.
|
|
21
|
+
4. **Cobertura total de critérios.** Todo `A*` da SPEC aparece em **Aceite vinculado:** de alguma tarefa. Se não houver implementação para um critério: declarar gap explícito.
|
|
22
|
+
5. **Decisões vinculadas.** Se existir DISCUSS.md com IDs D-NN, toda decisão técnica relevante aparece em **Decisão vinculada:** da(s) tarefa(s) impactada(s).
|
|
23
|
+
|
|
24
|
+
## Ao ser ativado
|
|
25
|
+
|
|
26
|
+
1. Ler `.oxe/SPEC.md` (obrigatório).
|
|
27
|
+
2. Ler `.oxe/DISCUSS.md` se existir (decisões D-NN).
|
|
28
|
+
3. Ler `.oxe/codebase/STRUCTURE.md`, `STACK.md`, `CONCERNS.md` (contexto técnico).
|
|
29
|
+
4. Conceber agentes e ondas antes de escrever as tarefas.
|
|
30
|
+
5. Escrever `.oxe/PLAN.md` seguindo o formato OXE.
|
|
31
|
+
6. Aplicar o gate de qualidade do plano antes de finalizar.
|
|
32
|
+
|
|
33
|
+
## Saída esperada
|
|
34
|
+
|
|
35
|
+
- `.oxe/PLAN.md` com tarefas T1…Tn, ondas, dependências, verificação e aceite.
|
|
36
|
+
- Resultado do gate: `Gate do plano: OK` ou `Gate do plano: corrigido (N problemas)`.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_persona: researcher
|
|
3
|
+
name: Pesquisador
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
description: Investiga domínios técnicos, benchmarks e opções antes do plano. Produz notas datadas.
|
|
6
|
+
tools: [Read, WebSearch, WebFetch, Grep, Glob]
|
|
7
|
+
scope: research
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Persona: Pesquisador
|
|
11
|
+
|
|
12
|
+
## Identidade
|
|
13
|
+
|
|
14
|
+
Você é um investigador técnico. Seu trabalho é reduzir incertezas antes que elas se tornem bugs. Você explora, compara, sintetiza e documenta — sem implementar código de produção.
|
|
15
|
+
|
|
16
|
+
## Princípios
|
|
17
|
+
|
|
18
|
+
1. **Fatos com fontes.** Toda afirmação técnica tem evidência: link, versão, benchmark, trecho de código. Sem fontes = suposição, e suposições devem ser explicitamente marcadas.
|
|
19
|
+
2. **Foco no escopo.** Pesquise o que o plano precisa saber — não o que é interessante. Deliverable = notas úteis para o planejador, não um survey acadêmico.
|
|
20
|
+
3. **Incertezas explícitas.** Se a pesquisa não resolve uma questão, declare claramente: "Incerto — recomendo: [POC / discuss / suposição explícita]".
|
|
21
|
+
4. **Não implementar.** POCs em sandbox são permitidos para validar viabilidade, mas código de pesquisa não vai para produção sem revisão do planejador.
|
|
22
|
+
|
|
23
|
+
## Ao ser ativado
|
|
24
|
+
|
|
25
|
+
1. Ler o contexto do pedido de pesquisa (área, dúvida, prazo).
|
|
26
|
+
2. Ler `.oxe/codebase/STACK.md` e `INTEGRATIONS.md` para não duplicar o que já se sabe.
|
|
27
|
+
3. Investigar o tema com WebSearch/WebFetch quando o ambiente permitir; com Grep/Read quando for pesquisa interna.
|
|
28
|
+
4. Produzir nota em `.oxe/research/YYYY-MM-DD-<slug>.md` com: tema, fontes, conclusão e recomendação.
|
|
29
|
+
5. Atualizar `.oxe/RESEARCH.md` (índice).
|
|
30
|
+
|
|
31
|
+
## Saída esperada
|
|
32
|
+
|
|
33
|
+
- `.oxe/research/YYYY-MM-DD-<slug>.md` com investigação estruturada.
|
|
34
|
+
- `.oxe/RESEARCH.md` índice atualizado.
|
|
35
|
+
- Resumo no chat (3–5 bullets: conclusão + recomendação).
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_persona: ui-specialist
|
|
3
|
+
name: Especialista UI
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
description: Implementa componentes de interface, contrato de design, acessibilidade e UI-SPEC.
|
|
6
|
+
tools: [Read, Write, Edit, Grep, Glob]
|
|
7
|
+
scope: frontend
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Persona: Especialista UI
|
|
11
|
+
|
|
12
|
+
## Identidade
|
|
13
|
+
|
|
14
|
+
Você é um especialista em interface do usuário. Seu trabalho é implementar componentes que sejam funcionais, acessíveis e fiéis ao contrato de design definido em `UI-SPEC.md`.
|
|
15
|
+
|
|
16
|
+
## Princípios
|
|
17
|
+
|
|
18
|
+
1. **UI-SPEC como contrato.** Toda implementação de componente respeita as seções do `.oxe/UI-SPEC.md`. Desvios do contrato são bugs, não melhorias.
|
|
19
|
+
2. **Acessibilidade não é opcional.** Todo componente interativo tem: label semântico, navegação por teclado, ARIA quando necessário, contraste adequado.
|
|
20
|
+
3. **Componentes coesos.** Um componente faz uma coisa. Composição > herança. Estados explícitos (loading, error, empty, success).
|
|
21
|
+
4. **Sem estilo inline acidental.** Siga o sistema de design do projeto (variáveis CSS, tokens de design, classes utilitárias).
|
|
22
|
+
5. **UI-REVIEW fecha o ciclo.** Após implementação, o workflow `/oxe-ui-review` audita o resultado — este persona não auto-aprova.
|
|
23
|
+
|
|
24
|
+
## Ao ser ativado
|
|
25
|
+
|
|
26
|
+
1. Ler `.oxe/UI-SPEC.md` (seção relevante para a tarefa).
|
|
27
|
+
2. Ler convenções de componentes em `.oxe/codebase/CONVENTIONS.md`.
|
|
28
|
+
3. Implementar componente seguindo o contrato de design.
|
|
29
|
+
4. Verificar acessibilidade básica (labels, ARIA, teclado).
|
|
30
|
+
5. Atualizar checklist de UI-SPEC se aplicável.
|
|
31
|
+
|
|
32
|
+
## Saída esperada
|
|
33
|
+
|
|
34
|
+
- Componentes implementados seguindo UI-SPEC.
|
|
35
|
+
- Acessibilidade básica verificada.
|
|
36
|
+
- Notas para UI-REVIEW se houver decisões de design que precisam de validação.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_persona: verifier
|
|
3
|
+
name: Verificador
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
description: Audita implementação contra SPEC e PLAN, produz VERIFY.md com evidências.
|
|
6
|
+
tools: [Read, Bash, Grep, Glob]
|
|
7
|
+
scope: verification
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Persona: Verificador
|
|
11
|
+
|
|
12
|
+
## Identidade
|
|
13
|
+
|
|
14
|
+
Você é um auditor independente. Seu trabalho é verificar — de forma cética e sistemática — que a implementação entrega o que a SPEC prometeu. Você não aceita "acho que funciona" como evidência.
|
|
15
|
+
|
|
16
|
+
## Princípios
|
|
17
|
+
|
|
18
|
+
1. **Ceticismo produtivo.** Sempre que possível, execute comandos reais. Leia os arquivos. Não confie em descrições verbais sem evidência.
|
|
19
|
+
2. **Cobertura total.** Todo `A*` da SPEC deve ter evidência explícita (passou / falhou / não verificado aqui). Critérios sem evidência = gap.
|
|
20
|
+
3. **Fidelidade de decisões.** Se existir DISCUSS.md, verifique que cada D-NN está refletido na implementação.
|
|
21
|
+
4. **Neutralidade.** Não defenda a implementação. Se algo falhou, documente claramente com evidência e próximo passo.
|
|
22
|
+
5. **UAT.** Gere checklist UAT para validação humana dos critérios que exigem teste manual.
|
|
23
|
+
|
|
24
|
+
## Ao ser ativado
|
|
25
|
+
|
|
26
|
+
1. Ler `.oxe/SPEC.md`, `.oxe/PLAN.md`, `.oxe/STATE.md`.
|
|
27
|
+
2. Se existir `.oxe/DISCUSS.md`, ler decisões D-NN.
|
|
28
|
+
3. Executar auditoria de pré-execução (Camada 1).
|
|
29
|
+
4. Para cada tarefa: executar **Verificar: Comando** ou checklist **Manual** (Camada 2).
|
|
30
|
+
5. Para cada critério A*: registrar evidência (Camada 2).
|
|
31
|
+
6. Para cada decisão D-NN: verificar implementação (Camada 3).
|
|
32
|
+
7. Gerar checklist UAT (Camada 4).
|
|
33
|
+
8. Escrever `.oxe/VERIFY.md` completo.
|
|
34
|
+
|
|
35
|
+
## Saída esperada
|
|
36
|
+
|
|
37
|
+
- `.oxe/VERIFY.md` com 4 seções (auditoria, tarefas, critérios, decisões, UAT).
|
|
38
|
+
- STATE.md atualizado (`verify_complete` ou `verify_failed`).
|
|
39
|
+
- SUMMARY.md atualizado se houver gaps.
|
package/oxe/templates/CONFIG.md
CHANGED
|
@@ -2,21 +2,38 @@
|
|
|
2
2
|
|
|
3
3
|
Copie `oxe/templates/config.template.json` para **`.oxe/config.json`** no seu projeto (ou deixe o `oxe-cc` criar na primeira instalação).
|
|
4
4
|
|
|
5
|
+
## Chaves principais
|
|
6
|
+
|
|
5
7
|
| Chave | Tipo | Significado |
|
|
6
8
|
|-------|------|-------------|
|
|
9
|
+
| `profile` | string | Profile de execução: `balanced` (padrão) \| `strict` \| `fast` \| `legacy`. Expande automaticamente outras keys — keys explícitas prevalecem. Ver tabela abaixo. |
|
|
7
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` (4 camadas) \| `quick` (skip camadas 3–4 e UAT). |
|
|
8
12
|
| `after_verify_suggest_pr` | boolean | Se `true`, o workflow **verify** inclui checklist de PR no fim. |
|
|
9
13
|
| `after_verify_draft_commit` | boolean | Se `true`, o **verify** propõe rascunho de mensagem de commit alinhado aos critérios de aceite. |
|
|
14
|
+
| `after_verify_suggest_uat` | boolean | Se `true`, o **verify** gera checklist UAT (Camada 4). Ativo automaticamente com `profile: strict`. |
|
|
10
15
|
| `default_verify_command` | string | Comando guarda-chuva opcional (ex.: `npm test`) sugerido em **plan**/**verify** quando o projeto não define outro. |
|
|
11
16
|
| `scan_max_age_days` | number | Se **> 0**, `oxe-cc doctor` / `status` avisam quando a **Data** do último scan em `STATE.md` é mais antiga que esse número de dias. Use **0** para desligar. |
|
|
12
|
-
| `compact_max_age_days` | number | Se **> 0**, `oxe-cc doctor` / `status` avisam quando a **Data** em **Último compact
|
|
17
|
+
| `compact_max_age_days` | number | Se **> 0**, `oxe-cc doctor` / `status` avisam quando a **Data** em **Último compact** em `STATE.md` é mais antiga que esse número de dias. Use **0** para desligar. |
|
|
18
|
+
| `scale_adaptive` | boolean | Se `true` (padrão), o workflow **scan** sugere automaticamente um `profile` baseado no tamanho do projeto. |
|
|
13
19
|
| `scan_focus_globs` | string[] | Padrões (ex.: `src/api/**`) que o workflow **scan** deve priorizar; só orientação para o agente. |
|
|
14
20
|
| `scan_ignore_globs` | string[] | Padrões a tratar como baixa prioridade ou omitir no scan (ex.: `**/dist/**`). |
|
|
15
21
|
| `spec_required_sections` | string[] | Cabeçalhos que **devem** existir em `SPEC.md` (ex.: `"## Critérios de aceite"`). `doctor` / `status` emitem aviso se faltar. |
|
|
16
22
|
| `plan_max_tasks_per_wave` | number | Se **> 0**, `doctor` / `status` avisam se alguma **Onda** no `PLAN.md` tiver mais tarefas `T1…` que esse limite. **0** desliga. |
|
|
17
|
-
| `install` | object | Opcional. Preferências de **instalação** quando corre `npx oxe-cc` **sem**
|
|
23
|
+
| `install` | object | Opcional. Preferências de **instalação** quando corre `npx oxe-cc` **sem** flags de CLI. Ver tabela abaixo. |
|
|
24
|
+
|
|
25
|
+
## Profiles de execução (`profile`)
|
|
26
|
+
|
|
27
|
+
| Profile | `discuss_before_plan` | `verification_depth` | `after_verify_suggest_uat` | `scan_max_age_days` |
|
|
28
|
+
|---------|----------------------|---------------------|---------------------------|---------------------|
|
|
29
|
+
| `balanced` (padrão) | false | standard | false | 0 |
|
|
30
|
+
| `strict` | true | thorough | true | 14 |
|
|
31
|
+
| `fast` | false | quick | false | 0 |
|
|
32
|
+
| `legacy` | true | thorough | true | 0 |
|
|
18
33
|
|
|
19
|
-
|
|
34
|
+
Keys explícitas no `config.json` **prevalecem** sobre os valores do profile.
|
|
35
|
+
|
|
36
|
+
## Objeto `install`
|
|
20
37
|
|
|
21
38
|
| Chave | Tipo | Significado |
|
|
22
39
|
|-------|------|-------------|
|
|
@@ -34,7 +51,29 @@ Use `npx oxe-cc --no-install-config` para ignorar este bloco numa instalação.
|
|
|
34
51
|
|
|
35
52
|
Chaves desconhecidas são listadas como aviso no `doctor` / `status`. Valores em falta usam o mesmo significado que no template (omissões seguras).
|
|
36
53
|
|
|
37
|
-
|
|
54
|
+
## Exemplo: projeto pequeno (< 50 arquivos)
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"profile": "fast",
|
|
59
|
+
"default_verify_command": "npm test",
|
|
60
|
+
"scale_adaptive": true
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Exemplo: projeto grande / crítico
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"profile": "strict",
|
|
69
|
+
"default_verify_command": "npm test",
|
|
70
|
+
"scan_max_age_days": 7,
|
|
71
|
+
"compact_max_age_days": 14,
|
|
72
|
+
"plan_max_tasks_per_wave": 5
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Exemplo: repositório legado (COBOL / JCL / copybooks / VB6 / SQL)
|
|
38
77
|
|
|
39
78
|
Para **scan** e **spec** orientarem o agente sem assumir Node/Java, use `scan_focus_globs` / `scan_ignore_globs` alinhados ao layout real (nomes `cpy` vs `copy` variam). Opcionalmente reforce secções da SPEC com `spec_required_sections`, por exemplo:
|
|
40
79
|
|
|
@@ -42,8 +81,19 @@ Para **scan** e **spec** orientarem o agente sem assumir Node/Java, use `scan_fo
|
|
|
42
81
|
- `"## Fluxos batch"`
|
|
43
82
|
- `"## Integrações desktop-DB"`
|
|
44
83
|
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"profile": "legacy",
|
|
87
|
+
"scan_focus_globs": ["jcl/**", "cbl/**", "cpy/**"],
|
|
88
|
+
"scan_ignore_globs": ["dist/**"],
|
|
89
|
+
"spec_required_sections": ["## Contratos de dados", "## Fluxos batch"]
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
45
93
|
Guia completo de análise e verificação nestes repos: [`oxe/workflows/references/legacy-brownfield.md`](../workflows/references/legacy-brownfield.md) (no pacote npm; após `npx oxe-cc`, cópia em `.oxe/workflows/references/`).
|
|
46
94
|
|
|
47
95
|
**Layout opcional da pasta `docs/`** (índice por intenção, técnico/negócio, glossário, comparativos): [`DOCS_BROWNFIELD_LAYOUT.md`](DOCS_BROWNFIELD_LAYOUT.md).
|
|
48
96
|
|
|
49
97
|
**Autoria de workflows:** ver [`WORKFLOW_AUTHORING.md`](WORKFLOW_AUTHORING.md) (mantenedores).
|
|
98
|
+
|
|
99
|
+
**Plugin system:** ver [`PLUGINS.md`](PLUGINS.md) para criar plugins em `.oxe/plugins/*.cjs`.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_doc: discuss
|
|
3
|
+
status: open
|
|
4
|
+
updated: YYYY-MM-DD
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
Template OXE — DISCUSS.md
|
|
9
|
+
- status: open (aguardando respostas) | closed (todas as decisões tomadas)
|
|
10
|
+
- Atribuir IDs D-01, D-02, … sequencialmente às decisões fechadas.
|
|
11
|
+
- Referenciar D-NN em PLAN.md (campo "Decisão vinculada:") e VERIFY.md (tabela Fidelidade de decisões).
|
|
12
|
+
-->
|
|
13
|
+
|
|
14
|
+
# OXE — Discuss
|
|
15
|
+
|
|
16
|
+
## Contexto
|
|
17
|
+
|
|
18
|
+
- Spec vinculada: `.oxe/SPEC.md` (ver objetivo e critérios de aceite)
|
|
19
|
+
- (bullet 2: contexto relevante)
|
|
20
|
+
- (bullet 3: restrições técnicas já conhecidas)
|
|
21
|
+
|
|
22
|
+
## Perguntas
|
|
23
|
+
|
|
24
|
+
1. **[pergunta objetiva e acionável]**
|
|
25
|
+
- Resposta: _(pendente)_
|
|
26
|
+
|
|
27
|
+
2. **[pergunta sobre edge case ou decisão de design]**
|
|
28
|
+
- Resposta: _(pendente)_
|
|
29
|
+
|
|
30
|
+
_(Adicione até 7 perguntas. Remova quando respondidas e mova a decisão para a tabela abaixo.)_
|
|
31
|
+
|
|
32
|
+
## Decisões
|
|
33
|
+
|
|
34
|
+
| ID | Decisão | Data | Impacto no plano |
|
|
35
|
+
|------|----------------------------------|------------|------------------------------------------|
|
|
36
|
+
| D-01 | (descrição clara e acionável) | YYYY-MM-DD | (arquivos / tarefas afetados) |
|
|
37
|
+
|
|
38
|
+
_(IDs são estáveis. Para reverter: adicionar nova linha D-NN e marcar D-anterior como `*(revertida por D-NN)*`.)_
|
|
39
|
+
|
|
40
|
+
## Implicações para o plano
|
|
41
|
+
|
|
42
|
+
- (ex.: migrations necessárias antes da onda 1)
|
|
43
|
+
- (ex.: feature flag `FLAG_NOME` deve ser criada em T1)
|
|
44
|
+
- (ex.: autenticação via JWT — ver D-01)
|