maestro-flow 0.5.3 → 0.5.31
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/.agents/skills/learn-follow/SKILL.md +114 -114
- package/.agents/skills/learn-investigate/SKILL.md +138 -139
- package/.agents/skills/learn-second-opinion/SKILL.md +105 -109
- package/.agents/skills/maestro/SKILL.md +2 -10
- package/.agents/skills/maestro-amend/SKILL.md +152 -152
- package/.agents/skills/maestro-analyze/SKILL.md +201 -252
- package/.agents/skills/maestro-blueprint/SKILL.md +175 -190
- package/.agents/skills/maestro-brainstorm/SKILL.md +196 -200
- package/.agents/skills/maestro-collab/SKILL.md +159 -159
- package/.agents/skills/maestro-companion/SKILL.md +517 -517
- package/.agents/skills/maestro-composer/SKILL.md +173 -164
- package/.agents/skills/maestro-execute/SKILL.md +169 -170
- package/.agents/skills/maestro-fork/SKILL.md +97 -96
- package/.agents/skills/maestro-grill/SKILL.md +161 -162
- package/.agents/skills/maestro-guard/SKILL.md +93 -92
- package/.agents/skills/maestro-impeccable/SKILL.md +296 -253
- package/.agents/skills/maestro-init/SKILL.md +117 -118
- package/.agents/skills/maestro-merge/SKILL.md +73 -66
- package/.agents/skills/maestro-milestone-audit/SKILL.md +4 -10
- package/.agents/skills/maestro-milestone-complete/SKILL.md +6 -7
- package/.agents/skills/maestro-milestone-release/SKILL.md +122 -131
- package/.agents/skills/maestro-next/SKILL.md +241 -245
- package/.agents/skills/maestro-overlay/SKILL.md +176 -166
- package/.agents/skills/maestro-plan/SKILL.md +211 -197
- package/.agents/skills/maestro-player/SKILL.md +167 -167
- package/.agents/skills/maestro-quick/SKILL.md +69 -63
- package/.agents/skills/maestro-ralph/SKILL.md +2 -36
- package/.agents/skills/maestro-ralph-beta/SKILL.md +861 -872
- package/.agents/skills/maestro-ralph-execute/SKILL.md +234 -234
- package/.agents/skills/maestro-roadmap/SKILL.md +159 -172
- package/.agents/skills/maestro-swarm-workflow/SKILL.md +229 -250
- package/.agents/skills/maestro-tools-execute/SKILL.md +108 -103
- package/.agents/skills/maestro-tools-register/SKILL.md +148 -143
- package/.agents/skills/maestro-ui-codify/SKILL.md +103 -86
- package/.agents/skills/maestro-universal-workflow/SKILL.md +534 -547
- package/.agents/skills/maestro-update/SKILL.md +109 -106
- package/.agents/skills/manage-codebase-rebuild/SKILL.md +73 -71
- package/.agents/skills/manage-harvest/SKILL.md +83 -81
- package/.agents/skills/manage-issue/SKILL.md +59 -60
- package/.agents/skills/manage-issue-discover/SKILL.md +70 -68
- package/.agents/skills/manage-kg-extractors/SKILL.md +130 -0
- package/.agents/skills/manage-knowhow/SKILL.md +70 -66
- package/.agents/skills/manage-knowhow-capture/SKILL.md +79 -69
- package/.agents/skills/manage-knowledge-audit/SKILL.md +91 -74
- package/.agents/skills/manage-status/SKILL.md +52 -42
- package/.agents/skills/manage-wiki/SKILL.md +69 -58
- package/.agents/skills/odyssey-debug/SKILL.md +445 -459
- package/.agents/skills/odyssey-improve/SKILL.md +477 -491
- package/.agents/skills/odyssey-planex/SKILL.md +576 -587
- package/.agents/skills/odyssey-review-test-fix/SKILL.md +400 -413
- package/.agents/skills/odyssey-ui/SKILL.md +431 -448
- package/.agents/skills/quality-auto-test/SKILL.md +140 -123
- package/.agents/skills/quality-debug/SKILL.md +145 -106
- package/.agents/skills/quality-refactor/SKILL.md +91 -53
- package/.agents/skills/quality-retrospective/SKILL.md +109 -63
- package/.agents/skills/quality-review/SKILL.md +141 -114
- package/.agents/skills/quality-sync/SKILL.md +74 -38
- package/.agents/skills/quality-test/SKILL.md +133 -103
- package/.agents/skills/security-audit/SKILL.md +217 -166
- package/.agents/skills/spec-add/SKILL.md +66 -59
- package/.agents/skills/spec-load/SKILL.md +68 -68
- package/.agents/skills/spec-remove/SKILL.md +42 -42
- package/.agents/skills/spec-setup/SKILL.md +38 -41
- package/.agy/skills/learn-follow/SKILL.md +114 -114
- package/.agy/skills/learn-investigate/SKILL.md +138 -139
- package/.agy/skills/learn-second-opinion/SKILL.md +105 -109
- package/.agy/skills/maestro/SKILL.md +2 -10
- package/.agy/skills/maestro-amend/SKILL.md +152 -152
- package/.agy/skills/maestro-analyze/SKILL.md +201 -252
- package/.agy/skills/maestro-blueprint/SKILL.md +175 -190
- package/.agy/skills/maestro-brainstorm/SKILL.md +196 -200
- package/.agy/skills/maestro-collab/SKILL.md +159 -159
- package/.agy/skills/maestro-companion/SKILL.md +517 -517
- package/.agy/skills/maestro-composer/SKILL.md +173 -164
- package/.agy/skills/maestro-execute/SKILL.md +169 -170
- package/.agy/skills/maestro-fork/SKILL.md +97 -96
- package/.agy/skills/maestro-grill/SKILL.md +161 -162
- package/.agy/skills/maestro-guard/SKILL.md +93 -92
- package/.agy/skills/maestro-impeccable/SKILL.md +296 -253
- package/.agy/skills/maestro-init/SKILL.md +117 -118
- package/.agy/skills/maestro-merge/SKILL.md +73 -66
- package/.agy/skills/maestro-milestone-audit/SKILL.md +4 -10
- package/.agy/skills/maestro-milestone-complete/SKILL.md +6 -7
- package/.agy/skills/maestro-milestone-release/SKILL.md +122 -131
- package/.agy/skills/maestro-next/SKILL.md +241 -245
- package/.agy/skills/maestro-overlay/SKILL.md +176 -166
- package/.agy/skills/maestro-plan/SKILL.md +211 -197
- package/.agy/skills/maestro-player/SKILL.md +167 -167
- package/.agy/skills/maestro-quick/SKILL.md +69 -63
- package/.agy/skills/maestro-ralph/SKILL.md +2 -36
- package/.agy/skills/maestro-ralph-beta/SKILL.md +861 -872
- package/.agy/skills/maestro-ralph-execute/SKILL.md +234 -234
- package/.agy/skills/maestro-roadmap/SKILL.md +159 -172
- package/.agy/skills/maestro-swarm-workflow/SKILL.md +229 -250
- package/.agy/skills/maestro-tools-execute/SKILL.md +108 -103
- package/.agy/skills/maestro-tools-register/SKILL.md +148 -143
- package/.agy/skills/maestro-ui-codify/SKILL.md +103 -86
- package/.agy/skills/maestro-universal-workflow/SKILL.md +534 -547
- package/.agy/skills/maestro-update/SKILL.md +109 -106
- package/.agy/skills/manage-codebase-rebuild/SKILL.md +73 -71
- package/.agy/skills/manage-harvest/SKILL.md +83 -81
- package/.agy/skills/manage-issue/SKILL.md +59 -60
- package/.agy/skills/manage-issue-discover/SKILL.md +70 -68
- package/.agy/skills/manage-kg-extractors/SKILL.md +130 -0
- package/.agy/skills/manage-knowhow/SKILL.md +70 -66
- package/.agy/skills/manage-knowhow-capture/SKILL.md +79 -69
- package/.agy/skills/manage-knowledge-audit/SKILL.md +91 -74
- package/.agy/skills/manage-status/SKILL.md +52 -42
- package/.agy/skills/manage-wiki/SKILL.md +69 -58
- package/.agy/skills/odyssey-debug/SKILL.md +445 -459
- package/.agy/skills/odyssey-improve/SKILL.md +477 -491
- package/.agy/skills/odyssey-planex/SKILL.md +576 -587
- package/.agy/skills/odyssey-review-test-fix/SKILL.md +400 -413
- package/.agy/skills/odyssey-ui/SKILL.md +431 -448
- package/.agy/skills/quality-auto-test/SKILL.md +140 -123
- package/.agy/skills/quality-debug/SKILL.md +145 -106
- package/.agy/skills/quality-refactor/SKILL.md +91 -53
- package/.agy/skills/quality-retrospective/SKILL.md +109 -63
- package/.agy/skills/quality-review/SKILL.md +141 -114
- package/.agy/skills/quality-sync/SKILL.md +74 -38
- package/.agy/skills/quality-test/SKILL.md +133 -103
- package/.agy/skills/security-audit/SKILL.md +217 -166
- package/.agy/skills/spec-add/SKILL.md +66 -59
- package/.agy/skills/spec-load/SKILL.md +68 -68
- package/.agy/skills/spec-remove/SKILL.md +42 -42
- package/.agy/skills/spec-setup/SKILL.md +38 -41
- package/.claude/commands/learn-follow.md +127 -127
- package/.claude/commands/learn-investigate.md +151 -152
- package/.claude/commands/learn-second-opinion.md +118 -122
- package/.claude/commands/maestro-amend.md +164 -164
- package/.claude/commands/maestro-analyze.md +215 -266
- package/.claude/commands/maestro-blueprint.md +189 -204
- package/.claude/commands/maestro-brainstorm.md +209 -213
- package/.claude/commands/maestro-collab.md +172 -172
- package/.claude/commands/maestro-companion.md +531 -531
- package/.claude/commands/maestro-composer.md +188 -179
- package/.claude/commands/maestro-execute.md +183 -184
- package/.claude/commands/maestro-fork.md +111 -110
- package/.claude/commands/maestro-grill.md +175 -176
- package/.claude/commands/maestro-guard.md +103 -102
- package/.claude/commands/maestro-impeccable.md +311 -268
- package/.claude/commands/maestro-init.md +130 -131
- package/.claude/commands/maestro-merge.md +87 -80
- package/.claude/commands/maestro-milestone-audit.md +4 -10
- package/.claude/commands/maestro-milestone-complete.md +6 -7
- package/.claude/commands/maestro-milestone-release.md +136 -145
- package/.claude/commands/maestro-next.md +253 -257
- package/.claude/commands/maestro-overlay.md +188 -178
- package/.claude/commands/maestro-plan.md +225 -211
- package/.claude/commands/maestro-player.md +182 -182
- package/.claude/commands/maestro-quick.md +83 -77
- package/.claude/commands/maestro-ralph-beta.md +875 -886
- package/.claude/commands/maestro-ralph-execute.md +247 -247
- package/.claude/commands/maestro-ralph.md +2 -36
- package/.claude/commands/maestro-roadmap.md +173 -186
- package/.claude/commands/maestro-swarm-workflow.md +243 -264
- package/.claude/commands/maestro-tools-execute.md +122 -117
- package/.claude/commands/maestro-tools-register.md +162 -157
- package/.claude/commands/maestro-ui-codify.md +117 -100
- package/.claude/commands/maestro-universal-workflow.md +548 -561
- package/.claude/commands/maestro-update.md +122 -119
- package/.claude/commands/maestro.md +2 -10
- package/.claude/commands/manage-codebase-rebuild.md +87 -85
- package/.claude/commands/manage-harvest.md +97 -95
- package/.claude/commands/manage-issue-discover.md +83 -81
- package/.claude/commands/manage-issue.md +72 -73
- package/.claude/commands/manage-kg-extractors.md +128 -0
- package/.claude/commands/manage-knowhow-capture.md +92 -82
- package/.claude/commands/manage-knowhow.md +83 -79
- package/.claude/commands/manage-knowledge-audit.md +105 -88
- package/.claude/commands/manage-status.md +62 -52
- package/.claude/commands/manage-wiki.md +82 -71
- package/.claude/commands/odyssey-debug.md +459 -473
- package/.claude/commands/odyssey-improve.md +491 -505
- package/.claude/commands/odyssey-planex.md +590 -601
- package/.claude/commands/odyssey-review-test-fix.md +414 -427
- package/.claude/commands/odyssey-ui.md +445 -462
- package/.claude/commands/quality-auto-test.md +153 -136
- package/.claude/commands/quality-debug.md +159 -120
- package/.claude/commands/quality-refactor.md +105 -67
- package/.claude/commands/quality-retrospective.md +123 -77
- package/.claude/commands/quality-review.md +155 -128
- package/.claude/commands/quality-sync.md +88 -52
- package/.claude/commands/quality-test.md +147 -117
- package/.claude/commands/security-audit.md +230 -179
- package/.claude/commands/spec-add.md +77 -70
- package/.claude/commands/spec-load.md +78 -78
- package/.claude/commands/spec-remove.md +55 -55
- package/.claude/commands/spec-setup.md +49 -52
- package/dist/src/cli.js +1 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/kg.d.ts.map +1 -1
- package/dist/src/commands/kg.js +11 -5
- package/dist/src/commands/kg.js.map +1 -1
- package/dist/src/graph/kg/extraction/code/code-extractor.d.ts +2 -0
- package/dist/src/graph/kg/extraction/code/code-extractor.d.ts.map +1 -1
- package/dist/src/graph/kg/extraction/code/code-extractor.js +32 -3
- package/dist/src/graph/kg/extraction/code/code-extractor.js.map +1 -1
- package/dist/src/graph/kg/extraction/code/plugin-engine.d.ts +35 -0
- package/dist/src/graph/kg/extraction/code/plugin-engine.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/code/plugin-engine.js +573 -0
- package/dist/src/graph/kg/extraction/code/plugin-engine.js.map +1 -0
- package/dist/src/graph/kg/extraction/code/plugin-types.d.ts +95 -0
- package/dist/src/graph/kg/extraction/code/plugin-types.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/code/plugin-types.js +5 -0
- package/dist/src/graph/kg/extraction/code/plugin-types.js.map +1 -0
- package/dist/src/graph/kg/extraction/orchestrator.d.ts.map +1 -1
- package/dist/src/graph/kg/extraction/orchestrator.js +17 -5
- package/dist/src/graph/kg/extraction/orchestrator.js.map +1 -1
- package/dist/src/graph/kg/schema.sql +16 -11
- package/dist/src/graph/kg/surface/cli.d.ts.map +1 -1
- package/dist/src/graph/kg/surface/cli.js +153 -56
- package/dist/src/graph/kg/surface/cli.js.map +1 -1
- package/dist/src/hooks/workspace.d.ts +4 -2
- package/dist/src/hooks/workspace.d.ts.map +1 -1
- package/dist/src/hooks/workspace.js +6 -2
- package/dist/src/hooks/workspace.js.map +1 -1
- package/package.json +91 -91
- package/workflows/analyze.md +25 -49
- package/workflows/auto-test.md +699 -699
- package/workflows/blueprint.md +403 -431
- package/workflows/brainstorm.md +54 -195
- package/workflows/business-test.md +570 -570
- package/workflows/claude-instructions.md +23 -51
- package/workflows/codex-instructions.md +27 -77
- package/workflows/coding-philosophy.md +69 -69
- package/workflows/command-authoring.md +823 -823
- package/workflows/debug.md +43 -98
- package/workflows/delegate-usage.md +39 -241
- package/workflows/execute.md +4 -53
- package/workflows/grill.md +12 -56
- package/workflows/harvest.md +22 -68
- package/workflows/init.md +148 -148
- package/workflows/instruction-authoring-guide.md +97 -0
- package/workflows/issue-execute.md +110 -110
- package/workflows/issue-gaps-analyze.codex.md +260 -260
- package/workflows/issue-gaps-analyze.md +216 -216
- package/workflows/issue-plan.md +110 -110
- package/workflows/issue.md +338 -346
- package/workflows/knowhow.md +0 -32
- package/workflows/learn.md +277 -277
- package/workflows/maestro-chain-execute.md +20 -20
- package/workflows/refactor.md +22 -44
- package/workflows/retrospective.md +16 -65
- package/workflows/review.md +446 -486
- package/workflows/roadmap.md +35 -132
- package/workflows/skill-authoring.md +265 -265
- package/workflows/spec-generate.md +470 -470
- package/workflows/specs-remove.md +104 -104
- package/workflows/sync.md +11 -41
- package/workflows/test-gen.md +226 -226
- package/workflows/test.md +385 -475
- package/workflows/ui-design.md +391 -391
- package/workflows/ui-style.md +199 -199
- package/workflows/wiki-connect.md +151 -151
- package/workflows/wiki-digest.md +178 -178
- package/workflows/wiki-manage.md +109 -109
- package/workflows/cli-tools-usage.md +0 -252
- package/workflows/delegate-protocol.codex.md +0 -65
|
@@ -1,260 +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
|
|
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
|