maestro-flow 0.3.37 → 0.3.38

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.
@@ -210,14 +210,14 @@ Create both directories.
210
210
 
211
211
  3. **Quick mode routing**: If QUICK_MODE, generate only wave 3 (synthesis/decide) task in CSV. Skip exploration and scoring.
212
212
 
213
- 3b. **Gaps mode routing** (if GAPS_MODE):
213
+ 3b. **Gaps mode routing** (if GAPS_MODE) — follow `~/.maestro/workflows/issue-gaps-analyze.codex.md` for full CSV wave pipeline:
214
214
  - Load issues from `.workflow/issues/issues.jsonl`
215
215
  - If `gapsIssueId`: load single issue, validate existence
216
216
  - If no ISS-ID: filter `status == "open" || status == "registered"`
217
- - For each issue, generate an exploration task (wave 1) focused on issue context
218
- - Generate a synthesis task (wave 2) that writes analysis records back to issues.jsonl
219
- - Skip standard dimension scoring (wave 2 in normal mode)
220
- - Pipeline: Load Issues → CLI Exploration per issueRoot Cause Synthesis → Write issue.analysis → Output context.md
217
+ - Classify & group issues by location/component overlap
218
+ - Generate tasks.csv: wave 1 = one exploration row per issue, wave 2 = one synthesis row per group
219
+ - Execute via spawn_agents_on_csv (wave 1 parallel per issue, wave 2 parallel per group)
220
+ - Pipeline: Load Issues → Classify & Group CSV Generation Wave 1: ExploreWave 2: Synthesize → Write issue.analysis → Output context.md
221
221
  - On completion: append history entry `{ action: "analyzed", at: <ISO>, by: "maestro-analyze --gaps" }` per issue
222
222
 
223
223
  4. **Dimension and perspective selection** (full mode):
package/README.md CHANGED
@@ -209,6 +209,12 @@ Join the WeChat group for discussion and feedback:
209
209
 
210
210
  <img src="assets/wechat-group-qr.png" width="200" alt="WeChat Group: Claude Code Workflow交流群 2" />
211
211
 
212
+ ## Buy Me a Coffee
213
+
214
+ If this project helps you, consider buying me a coffee:
215
+
216
+ <img src="assets/wechat-reward-qr.png" width="200" alt="WeChat Reward QR" />
217
+
212
218
  ## Links
213
219
 
214
220
  - [Linux DO:学AI,上L站!](https://linux.do/)
package/README.zh-CN.md CHANGED
@@ -199,6 +199,12 @@ maestro/
199
199
 
200
200
  <img src="assets/wechat-group-qr.png" width="200" alt="微信群: Claude Code Workflow交流群 2" />
201
201
 
202
+ ## 打赏
203
+
204
+ 如果这个项目对你有帮助,欢迎请作者喝杯咖啡:
205
+
206
+ <img src="assets/wechat-reward-qr.png" width="200" alt="微信赞赏码" />
207
+
202
208
  ## 友情链接
203
209
 
204
210
  - [Linux DO:学AI,上L站!](https://linux.do/)
@@ -3,6 +3,9 @@
3
3
  // ---------------------------------------------------------------------------
4
4
  import { spawn } from 'node:child_process';
5
5
  import { createInterface } from 'node:readline';
6
+ import { existsSync } from 'node:fs';
7
+ import { join, dirname } from 'node:path';
8
+ import { createRequire } from 'node:module';
6
9
  import { BaseAgentAdapter } from './base-adapter.js';
7
10
  import { EntryNormalizer } from './entry-normalizer.js';
8
11
  import { loadEnvFile } from './env-file-loader.js';
@@ -13,6 +16,87 @@ import { cleanSpawnEnv } from './env-cleanup.js';
13
16
  // ---------------------------------------------------------------------------
14
17
  const STDERR_ERROR_RE = /\b(error|fatal)\b/i;
15
18
  // ---------------------------------------------------------------------------
19
+ // Native binary resolution — bypass shell/shim layers on Windows
20
+ // ---------------------------------------------------------------------------
21
+ /**
22
+ * Resolve the native codex binary path by replicating the logic from
23
+ * `@openai/codex/bin/codex.js`. On Windows, `shell: true` creates a
24
+ * fragile process chain (cmd.exe → codex.cmd → node codex.js → codex.exe)
25
+ * where intermediate processes can exit before the native binary finishes,
26
+ * breaking the stdout pipe. Resolving the native binary directly and spawning
27
+ * without `shell: true` eliminates this race condition.
28
+ *
29
+ * Returns the absolute path to the native binary, or null if not found
30
+ * (in which case the adapter falls back to shell-based spawn).
31
+ */
32
+ function resolveCodexNativeBinary() {
33
+ const isWin = process.platform === 'win32';
34
+ const binaryName = isWin ? 'codex.exe' : 'codex';
35
+ const targetTriples = {
36
+ win32: { x64: 'x86_64-pc-windows-msvc', arm64: 'aarch64-pc-windows-msvc' },
37
+ linux: { x64: 'x86_64-unknown-linux-musl', arm64: 'aarch64-unknown-linux-musl' },
38
+ darwin: { x64: 'x86_64-apple-darwin', arm64: 'aarch64-apple-darwin' },
39
+ };
40
+ const triple = targetTriples[process.platform]?.[process.arch];
41
+ if (!triple)
42
+ return null;
43
+ const platformPackages = {
44
+ 'x86_64-pc-windows-msvc': '@openai/codex-win32-x64',
45
+ 'aarch64-pc-windows-msvc': '@openai/codex-win32-arm64',
46
+ 'x86_64-unknown-linux-musl': '@openai/codex-linux-x64',
47
+ 'aarch64-unknown-linux-musl': '@openai/codex-linux-arm64',
48
+ 'x86_64-apple-darwin': '@openai/codex-darwin-x64',
49
+ 'aarch64-apple-darwin': '@openai/codex-darwin-arm64',
50
+ };
51
+ const platformPkg = platformPackages[triple];
52
+ if (!platformPkg)
53
+ return null;
54
+ // Strategy 1: resolve via npm global install (most common)
55
+ try {
56
+ const npmGlobal = isWin
57
+ ? join(process.env.APPDATA ?? '', 'npm', 'node_modules', '@openai', 'codex')
58
+ : '';
59
+ // Use createRequire from the codex package location
60
+ const codexPkgPaths = [
61
+ npmGlobal ? join(npmGlobal, 'package.json') : '',
62
+ // Also try resolving from cwd
63
+ ].filter(Boolean);
64
+ for (const basePath of codexPkgPaths) {
65
+ try {
66
+ const req = createRequire(basePath);
67
+ const pkgJsonPath = req.resolve(`${platformPkg}/package.json`);
68
+ const vendorRoot = join(dirname(pkgJsonPath), 'vendor');
69
+ const candidate = join(vendorRoot, triple, 'codex', binaryName);
70
+ if (existsSync(candidate))
71
+ return candidate;
72
+ }
73
+ catch { /* continue */ }
74
+ }
75
+ }
76
+ catch { /* continue */ }
77
+ // Strategy 2: look for local vendor directory relative to codex shim
78
+ try {
79
+ const shimPath = isWin
80
+ ? join(process.env.APPDATA ?? '', 'npm', 'node_modules', '@openai', 'codex', 'vendor')
81
+ : '';
82
+ if (shimPath) {
83
+ const candidate = join(shimPath, triple, 'codex', binaryName);
84
+ if (existsSync(candidate))
85
+ return candidate;
86
+ }
87
+ }
88
+ catch { /* continue */ }
89
+ return null;
90
+ }
91
+ // Cache the resolved binary path (or null) to avoid repeated filesystem lookups
92
+ let _cachedCodexBinary;
93
+ function getCodexBinary() {
94
+ if (_cachedCodexBinary === undefined) {
95
+ _cachedCodexBinary = resolveCodexNativeBinary();
96
+ }
97
+ return _cachedCodexBinary;
98
+ }
99
+ // ---------------------------------------------------------------------------
16
100
  // Adapter implementation
17
101
  // ---------------------------------------------------------------------------
18
102
  export class CodexCliAdapter extends BaseAgentAdapter {
@@ -39,13 +123,24 @@ export class CodexCliAdapter extends BaseAgentAdapter {
39
123
  if (config.apiKey)
40
124
  envOverrides.OPENAI_API_KEY = config.apiKey;
41
125
  const childEnv = cleanSpawnEnv(envOverrides);
42
- const child = spawn('codex', args, {
43
- cwd: config.workDir,
44
- env: childEnv,
45
- stdio: ['pipe', 'pipe', 'pipe'],
46
- shell: true,
47
- windowsHide: true,
48
- });
126
+ // Prefer the resolved native binary to avoid the fragile shell process
127
+ // chain on Windows (cmd.exe → codex.cmd → node codex.js → codex.exe).
128
+ // When the native binary is found, spawn directly without shell: true.
129
+ const nativeBinary = getCodexBinary();
130
+ const child = nativeBinary
131
+ ? spawn(nativeBinary, args, {
132
+ cwd: config.workDir,
133
+ env: childEnv,
134
+ stdio: ['pipe', 'pipe', 'pipe'],
135
+ windowsHide: true,
136
+ })
137
+ : spawn('codex', args, {
138
+ cwd: config.workDir,
139
+ env: childEnv,
140
+ stdio: ['pipe', 'pipe', 'pipe'],
141
+ shell: true,
142
+ windowsHide: true,
143
+ });
49
144
  if (!child.stdout || !child.stdin || !child.stderr) {
50
145
  throw new Error('Failed to spawn Codex CLI: stdio streams not available');
51
146
  }
@@ -181,6 +276,16 @@ export class CodexCliAdapter extends BaseAgentAdapter {
181
276
  }
182
277
  break;
183
278
  }
279
+ case 'error': {
280
+ const errorMsg = msg.message ?? 'Unknown codex error';
281
+ this.emitEntry(processId, EntryNormalizer.error(processId, errorMsg, 'codex_error'));
282
+ break;
283
+ }
284
+ case 'turn.failed': {
285
+ const failedMsg = msg.error?.message ?? 'Turn failed';
286
+ this.emitEntry(processId, EntryNormalizer.error(processId, failedMsg, 'turn_failed'));
287
+ break;
288
+ }
184
289
  // turn.started and unknown types are silently skipped
185
290
  default:
186
291
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"codex-cli-adapter.js","sourceRoot":"","sources":["../../../../../src/server/agents/codex-cli-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-cli-adapter.js","sourceRoot":"","sources":["../../../../../src/server/agents/codex-cli-adapter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "maestro-flow",
3
- "version": "0.3.37",
3
+ "version": "0.3.38",
4
4
  "description": "Workflow orchestration CLI with MCP endpoint support and extensible architecture",
5
5
  "type": "module",
6
6
  "imports": {
@@ -1,8 +1,7 @@
1
1
  # Workflow: Issue Analysis
2
2
 
3
- > **DEPRECATED**: This workflow was used by the deleted `manage-issue-analyze` command.
4
- > Use `maestro-analyze --gaps [ISS-ID]` instead, which integrates issue root cause analysis
5
- > into the unified analyze pipeline. See `~/.maestro/workflows/issue-gaps-analyze.md`.
3
+ > **DEPRECATED**: Superseded by `issue-gaps-analyze.md` which adds batch support and context.md output.
4
+ > Use `maestro-analyze --gaps [ISS-ID]` instead.
6
5
 
7
6
  Root cause analysis for a specific issue using CLI exploration and codebase context gathering.
8
7
 
@@ -0,0 +1,260 @@
1
+ # Workflow: Issue Gaps Analysis (Codex — CSV Wave)
2
+
3
+ Root cause analysis for issues via `spawn_agents_on_csv` wave execution.
4
+ Supports single issue (ISS-ID) or batch with classification and parallel analysis.
5
+ Produces analysis records in issues.jsonl and context.md for downstream `plan --gaps`.
6
+
7
+ **Invoked by**: `maestro-analyze --gaps [ISS-ID]` (codex SKILL.md)
8
+
9
+ ## Pipeline
10
+
11
+ ```
12
+ Load Issues → Classify & Group → Generate tasks.csv → Wave 1: Explore (parallel per issue) → Wave 2: Synthesize (per group) → Write issue.analysis → Output context.md
13
+ ```
14
+
15
+ ---
16
+
17
+ ### Step 1: Load Issues
18
+
19
+ ```
20
+ If ISS-ID provided:
21
+ Load single issue from .workflow/issues/issues.jsonl
22
+ → fatal if file missing or ID not found (E_ISSUE_NOT_FOUND)
23
+ → skip Step 2 (single issue = single group)
24
+
25
+ If no ISS-ID:
26
+ Load all issues where status == "open" || status == "registered"
27
+ → fatal if none found (E_NO_ISSUES)
28
+ ```
29
+
30
+ ---
31
+
32
+ ### Step 2: Classify & Group (batch mode only)
33
+
34
+ ```
35
+ Group loaded issues by affected area overlap:
36
+
37
+ Classification dimensions:
38
+ - location: file path prefix (first 2 segments, e.g. src/auth/)
39
+ - component: affected_components field overlap
40
+ - category: issue.category or severity
41
+
42
+ Grouping rules:
43
+ 1. Same location prefix → same group
44
+ 2. Shared affected_components → same group
45
+ 3. Remaining ungrouped → individual groups (1 issue each)
46
+
47
+ Output: GROUPS[] = { group_id, label, issues[], shared_keywords[] }
48
+
49
+ Display group breakdown (skip if AUTO_YES).
50
+ ```
51
+
52
+ ---
53
+
54
+ ### Step 3: Generate tasks.csv
55
+
56
+ Generate CSV with two waves:
57
+ - **Wave 1**: One exploration row per issue (parallel within wave)
58
+ - **Wave 2**: One synthesis row per group (parallel across groups, depends on its issues in wave 1)
59
+
60
+ ```csv
61
+ id,title,description,iss_id,group_id,group_label,deps,context_from,wave,status,findings,analysis_json,error
62
+ ```
63
+
64
+ **Wave 1 rows** — one per issue:
65
+
66
+ ```csv
67
+ "1","Explore: ISS-xxx {title}","Root cause exploration for ISS-xxx: {description}. Location: {location}. Severity: {severity}. Fix hint: {fix_direction}. Search keywords: {keywords from title+description+components}. TASK: grep keywords → read top matches → trace call chain → identify root cause (file:line) → assess impact → list related files → rate confidence → suggest fix. EXPECTED: JSON { root_cause, impact, related_files[], confidence, suggested_approach }. CONSTRAINTS: Evidence-only, use file reads to verify.","ISS-xxx","G1","src/auth","","","1","","","",""
68
+ ```
69
+
70
+ **Wave 2 rows** — one per group:
71
+
72
+ ```csv
73
+ "N","Synthesize: {group_label}","Compile exploration findings for group [{group_label}]. For each issue: validate root cause evidence, identify cross-issue relationships, build analysis record. Output: JSON array [{ iss_id, root_cause, affected_files, impact_scope, fix_direction, confidence, cross_refs }]. Note shared root causes and dependency chains across issues in this group.","","G1","src/auth","1;2;3","1;2;3","2","","","",""
74
+ ```
75
+
76
+ **Column definitions**:
77
+
78
+ | Column | Phase | Description |
79
+ |--------|-------|-------------|
80
+ | `id` | Input | Unique task identifier |
81
+ | `title` | Input | Short task title |
82
+ | `description` | Input | Full exploration/synthesis instructions |
83
+ | `iss_id` | Input | Issue ID (wave 1 only, empty for wave 2) |
84
+ | `group_id` | Input | Group identifier |
85
+ | `group_label` | Input | Group label for display |
86
+ | `deps` | Input | Semicolon-separated dependency task IDs |
87
+ | `context_from` | Input | Task IDs whose findings this task needs |
88
+ | `wave` | Input | 1 = explore, 2 = synthesize |
89
+ | `status` | Output | `pending` → `completed` / `failed` |
90
+ | `findings` | Output | Key findings summary (max 500 chars) |
91
+ | `analysis_json` | Output | Structured analysis JSON (wave 2 only) |
92
+ | `error` | Output | Error message if failed |
93
+
94
+ Write `tasks.csv` to session folder.
95
+
96
+ ---
97
+
98
+ ### Step 4: Wave 1 — Explore (parallel per issue)
99
+
100
+ Filter `wave == 1 && status == pending`. Write `wave-1.csv`.
101
+
102
+ ```javascript
103
+ spawn_agents_on_csv({
104
+ csv_path: `${sessionFolder}/wave-1.csv`,
105
+ id_column: "id",
106
+ instruction: `You are analyzing a specific issue for root cause. Read the 'description' column for full instructions. Use file reads and grep to gather evidence. Write findings as a concise summary with file:line references. Write analysis_json as a JSON object: { root_cause, impact, related_files[], confidence, suggested_approach }.`,
107
+ max_concurrency: maxConcurrency,
108
+ max_runtime_seconds: 3600,
109
+ output_csv_path: `${sessionFolder}/wave-1-results.csv`,
110
+ output_schema: { id, status: ["completed"|"failed"], findings, analysis_json, error }
111
+ })
112
+ ```
113
+
114
+ Merge results into master `tasks.csv`, delete `wave-1.csv`.
115
+
116
+ **Per-issue agent responsibilities**:
117
+ 1. **Keyword Search** — grep issue keywords in source, find top 20 relevant paths
118
+ 2. **Context Read** — read top 5 matches with 10 lines surrounding context
119
+ 3. **Call Chain Trace** — trace 2-3 levels from issue location
120
+ 4. **Root Cause Identification** — pinpoint file:line with evidence
121
+ 5. **Impact Assessment** — scope of affected functionality
122
+
123
+ ---
124
+
125
+ ### Step 5: Wave 2 — Synthesize (parallel per group)
126
+
127
+ Filter `wave == 2 && status == pending`. Build `prev_context` from wave 1 findings of issues in same group. Write `wave-2.csv` with `prev_context` column.
128
+
129
+ ```javascript
130
+ spawn_agents_on_csv({
131
+ csv_path: `${sessionFolder}/wave-2.csv`,
132
+ id_column: "id",
133
+ instruction: `You are synthesizing root cause analysis for a group of related issues. Read prev_context for per-issue exploration findings. Validate evidence, identify cross-issue relationships and shared root causes. Output analysis_json as a JSON array: [{ iss_id, root_cause, affected_files, impact_scope, fix_direction, confidence, cross_refs }].`,
134
+ max_concurrency: maxConcurrency,
135
+ max_runtime_seconds: 3600,
136
+ output_csv_path: `${sessionFolder}/wave-2-results.csv`,
137
+ output_schema: { id, status: ["completed"|"failed"], findings, analysis_json, error }
138
+ })
139
+ ```
140
+
141
+ Merge results into master `tasks.csv`, delete `wave-2.csv`.
142
+
143
+ **Synthesis agent responsibilities**:
144
+ 1. Parse per-issue findings from prev_context
145
+ 2. Validate root cause evidence (file:line exists, logic holds)
146
+ 3. Identify cross-issue relationships within group
147
+ 4. Build consolidated analysis array with cross_refs
148
+ 5. Flag shared root causes that affect multiple issues
149
+
150
+ ---
151
+
152
+ ### Step 6: Write Analysis to issues.jsonl
153
+
154
+ ```
155
+ Parse analysis_json from wave 2 results.
156
+
157
+ For each issue in the analysis array:
158
+ Build IssueAnalysis record:
159
+ {
160
+ root_cause,
161
+ affected_files,
162
+ impact_scope,
163
+ fix_direction,
164
+ confidence,
165
+ cross_refs,
166
+ analyzed_at: NOW_ISO,
167
+ tool: "spawn_agents_on_csv",
168
+ depth: DEPTH
169
+ }
170
+
171
+ Read-modify-write issues.jsonl (single pass):
172
+ Set issue.analysis = ANALYSIS, updated_at = NOW_ISO
173
+ Append issue.history: { action: "analyzed", at: NOW_ISO, by: "maestro-analyze --gaps" }
174
+ Status unchanged (non-destructive enrichment).
175
+
176
+ Verify: re-read, confirm analysis field present for all updated issues.
177
+ ```
178
+
179
+ ---
180
+
181
+ ### Step 7: Output context.md
182
+
183
+ ```
184
+ Aggregate results organized by group:
185
+
186
+ # Context: Issue Gaps Analysis
187
+
188
+ **Date**: {date}
189
+ **Issues analyzed**: {count}
190
+ **Groups**: {group_count}
191
+ **Session**: {sessionFolder}
192
+
193
+ ## Group: {group.label}
194
+
195
+ ### ISS-{id}: {title}
196
+ - **Root cause**: {root_cause}
197
+ - **Affected files**: {affected_files}
198
+ - **Impact scope**: {impact_scope}
199
+ - **Fix direction**: {fix_direction}
200
+ - **Confidence**: {confidence}
201
+ - **Cross-refs**: {related ISS-IDs}
202
+
203
+ (repeat per issue, per group)
204
+
205
+ ## Cross-Group Dependencies
206
+ {issues sharing root causes across groups}
207
+
208
+ ## Constraints
209
+
210
+ ### Locked
211
+ {constraints from root cause evidence}
212
+
213
+ ### Free
214
+ {implementation choices left to planner}
215
+
216
+ Write context.md to session folder + copy to scratchDir.
217
+ Register artifact in state.json.
218
+ ```
219
+
220
+ ---
221
+
222
+ ### Step 8: Display Summary and Next Steps
223
+
224
+ ```
225
+ Display: group breakdown, per-issue root cause, confidence, cross-refs.
226
+
227
+ Next steps:
228
+ - maestro-plan --gaps (plan fix tasks linked to analyzed issues)
229
+ - maestro-analyze --gaps {ISS-ID} (re-analyze specific issue)
230
+ - manage-issue list (review all issues)
231
+ ```
232
+
233
+ ---
234
+
235
+ ## Session Structure
236
+
237
+ ```
238
+ .workflow/.csv-wave/{YYYYMMDD}-analyze-{slug}/
239
+ ├── tasks.csv # master state
240
+ ├── results.csv # final export
241
+ ├── wave-1.csv # temporary (deleted after merge)
242
+ ├── wave-2.csv # temporary (deleted after merge)
243
+ ├── discoveries.ndjson # shared board (append-only)
244
+ ├── context.md # decisions for plan --gaps
245
+ ```
246
+
247
+ ## Output
248
+
249
+ - **Updated**: `.workflow/issues/issues.jsonl` — enriched with `analysis` field per issue
250
+ - **Created**: `context.md` — grouped root causes for downstream `plan --gaps`
251
+ - **Created**: `results.csv` — full task execution results
252
+
253
+ ## Quality Criteria
254
+
255
+ - Issues classified into groups before CSV generation
256
+ - Wave 1 agents run parallel (one per issue, bounded by maxConcurrency)
257
+ - Wave 2 agents run parallel (one per group, after wave 1 deps met)
258
+ - Cross-issue relationships captured via cross_refs
259
+ - Single-pass JSONL update preserves integrity
260
+ - context.md organized by group with cross-group section
@@ -0,0 +1,214 @@
1
+ # Workflow: Issue Gaps Analysis
2
+
3
+ Root cause analysis for issues using CLI exploration and codebase context gathering.
4
+ Supports single issue (ISS-ID) or batch (all open/registered) with classification and parallel analysis.
5
+ Produces analysis records in issues.jsonl and context.md for downstream `plan --gaps`.
6
+
7
+ **Invoked by**: `maestro-analyze --gaps [ISS-ID]`
8
+
9
+ ## Input
10
+
11
+ - `ISS-ID` (optional): Specific issue to analyze. If omitted, analyze all open/registered issues.
12
+ - `TOOL`: CLI tool for exploration (default: gemini)
13
+ - `DEPTH`: `standard` or `deep` (default: standard)
14
+
15
+ ## Pipeline
16
+
17
+ ```
18
+ Load Issues → Classify & Group → Parallel Analysis (per group) → Write issue.analysis → Output context.md
19
+ ```
20
+
21
+ ---
22
+
23
+ ### Step 1: Load Issues
24
+
25
+ ```
26
+ If ISS-ID provided:
27
+ Load single issue from .workflow/issues/issues.jsonl
28
+ → fatal if file missing or ID not found (E_ISSUE_NOT_FOUND)
29
+ → skip Step 2 (classification), go directly to Step 3
30
+
31
+ If no ISS-ID:
32
+ Load all issues where status == "open" || status == "registered"
33
+ → fatal if none found (E_NO_ISSUES)
34
+
35
+ Validate: at least 1 issue loaded.
36
+ ```
37
+
38
+ ---
39
+
40
+ ### Step 2: Classify & Group (batch mode only)
41
+
42
+ ```
43
+ Group loaded issues by overlap in affected area:
44
+
45
+ Classification dimensions:
46
+ - location: file path prefix (e.g. src/auth/, src/api/)
47
+ - component: affected_components field overlap
48
+ - category: issue.category or severity level
49
+
50
+ Grouping rules:
51
+ 1. Same location prefix (first 2 path segments) → same group
52
+ 2. Shared affected_components → same group
53
+ 3. Remaining ungrouped → individual groups (1 issue each)
54
+
55
+ Output: GROUPS[] where each group = { group_id, label, issues[], shared_context_keywords[] }
56
+
57
+ Display group breakdown to user (skip if AUTO_YES).
58
+ ```
59
+
60
+ ---
61
+
62
+ ### Step 3: Gather Codebase Context (per group)
63
+
64
+ ```
65
+ For each group:
66
+ Merge keywords from all issues in group: title, description, location, affected_components.
67
+ Deduplicate keywords.
68
+
69
+ Standard depth: grep keywords in source files → top 20 paths, read 10 lines around
70
+ top 5 matches.
71
+ Deep depth: standard grep + semantic Agent search (error handling, data flow, deps),
72
+ merge results.
73
+
74
+ Build GROUP_CONTEXT: related files, key snippets (max 50 lines), dependency chain.
75
+ Shared context benefits co-located issues — avoids redundant exploration.
76
+ ```
77
+
78
+ ---
79
+
80
+ ### Step 4: Run Analysis (per group, parallel across groups)
81
+
82
+ ```
83
+ Launch analysis for each group in parallel using Agent tool:
84
+
85
+ Agent({
86
+ subagent_type: "general-purpose",
87
+ prompt: "Root cause analysis for issues in group [{group.label}]:
88
+ {for each issue in group}
89
+ ISS-{id}: {title} — {description}, severity: {severity}, location: {location}
90
+ {end}
91
+ CODEBASE CONTEXT: {GROUP_CONTEXT}
92
+ TASK: For EACH issue — identify root cause (file:line) → assess impact → list related files → rate confidence → suggest fix direction. Note cross-issue relationships within this group.
93
+ EXPECTED: JSON array [{ iss_id, root_cause, impact, related_files[], confidence, suggested_approach, cross_refs[] }]
94
+ CONSTRAINTS: Evidence-only, no speculation. Use Read/Grep to verify before concluding."
95
+ })
96
+
97
+ Alternatively, attempt CLI delegate first per group:
98
+
99
+ maestro delegate "<same prompt>" --role analyze --mode analysis
100
+
101
+ If delegate fails (timeout, unavailable, parse error):
102
+ Fall back to Agent tool with same prompt.
103
+ Record fallback in analysis metadata: { tool: "agent-fallback", reason: "<error>" }
104
+
105
+ Validate response per issue: all required fields present.
106
+ Parse failure → save raw output to issue feedback for review.
107
+ ```
108
+
109
+ ---
110
+
111
+ ### Step 5: Build Analysis Record (per issue)
112
+
113
+ ```
114
+ For each issue from Step 4 results:
115
+
116
+ Construct IssueAnalysis:
117
+ {
118
+ root_cause,
119
+ affected_files: related_files,
120
+ impact_scope: impact,
121
+ fix_direction: suggested_approach,
122
+ confidence,
123
+ cross_refs: [ISS-IDs of related issues in same group],
124
+ analyzed_at: NOW_ISO,
125
+ tool: TOOL or "agent-fallback",
126
+ depth: DEPTH
127
+ }
128
+ ```
129
+
130
+ ---
131
+
132
+ ### Step 6: Update Issues in JSONL
133
+
134
+ ```
135
+ Read-modify-write issues.jsonl (single pass for all analyzed issues):
136
+ For each issue:
137
+ Set issue.analysis = ANALYSIS, updated_at = NOW_ISO
138
+ Append issue.history: { action: "analyzed", at: NOW_ISO, by: "maestro-analyze --gaps" }
139
+ Status unchanged (analysis is metadata enrichment).
140
+ Verify: re-read file, confirm analysis field present for all updated issues.
141
+ ```
142
+
143
+ ---
144
+
145
+ ### Step 7: Output context.md
146
+
147
+ ```
148
+ Aggregate all analyzed issues into context.md, organized by group:
149
+
150
+ # Context: Issue Gaps Analysis
151
+
152
+ **Date**: {date}
153
+ **Issues analyzed**: {count}
154
+ **Groups**: {group_count}
155
+
156
+ ## Group: {group.label}
157
+
158
+ ### ISS-{id}: {title}
159
+ - **Root cause**: {root_cause}
160
+ - **Affected files**: {affected_files}
161
+ - **Impact scope**: {impact_scope}
162
+ - **Fix direction**: {fix_direction}
163
+ - **Confidence**: {confidence}
164
+ - **Cross-refs**: {related ISS-IDs}
165
+
166
+ (repeat per issue, per group)
167
+
168
+ ## Cross-Group Dependencies
169
+ {issues that span multiple groups or share root causes}
170
+
171
+ ## Constraints
172
+
173
+ ### Locked
174
+ {constraints derived from root cause evidence}
175
+
176
+ ### Free
177
+ {implementation choices left to planner}
178
+
179
+ Write context.md to session output directory.
180
+ ```
181
+
182
+ ---
183
+
184
+ ### Step 8: Display Summary and Next Steps
185
+
186
+ ```
187
+ Display: group breakdown, per-issue root cause, confidence, cross-refs.
188
+
189
+ Next steps:
190
+ - maestro-plan --gaps (plan fix tasks linked to analyzed issues)
191
+ - maestro-analyze --gaps {ISS-ID} (re-analyze specific issue with deeper context)
192
+ - manage-issue list (review all issues)
193
+ ```
194
+
195
+ ---
196
+
197
+ ## Output
198
+
199
+ - **Updated**: `.workflow/issues/issues.jsonl` -- issue records enriched with `analysis` field
200
+ - **Created**: `context.md` -- aggregated root causes grouped for downstream `plan --gaps`
201
+ - **Analysis fields**: root_cause, affected_files, impact_scope, fix_direction, confidence, cross_refs, analyzed_at, tool, depth
202
+
203
+ ## Quality Criteria
204
+
205
+ - Issues classified by location/component overlap before analysis
206
+ - Groups analyzed in parallel (Agent or delegate per group)
207
+ - CLI delegate attempted first; Agent fallback on failure
208
+ - Analysis grounded in actual codebase evidence (file:line references)
209
+ - Cross-issue relationships captured within groups (cross_refs)
210
+ - JSON result validated before writing to JSONL
211
+ - Issue status unchanged (analysis is non-destructive enrichment)
212
+ - Single-pass read-modify-write preserves JSONL integrity
213
+ - context.md organized by group with cross-group dependencies
214
+ - Next-step routing guides to plan --gaps