maestro-flow 0.5.40 → 0.5.42
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/maestro-analyze/SKILL.md +0 -42
- package/.agents/skills/maestro-blueprint/SKILL.md +0 -22
- package/.agents/skills/maestro-brainstorm/SKILL.md +4 -24
- package/.agents/skills/maestro-execute/SKILL.md +1 -1
- package/.agents/skills/maestro-grill/SKILL.md +0 -16
- package/.agents/skills/maestro-milestone-audit/SKILL.md +0 -15
- package/.agents/skills/maestro-plan/SKILL.md +5 -62
- package/.agents/skills/maestro-roadmap/SKILL.md +0 -8
- package/.agents/skills/odyssey-debug/SKILL.md +109 -143
- package/.agents/skills/odyssey-improve/SKILL.md +127 -141
- package/.agents/skills/odyssey-planex/SKILL.md +140 -231
- package/.agents/skills/odyssey-review-test-fix/SKILL.md +136 -90
- package/.agents/skills/odyssey-ui/SKILL.md +123 -143
- package/.agents/skills/team-adversarial-swarm/workflows/wf-swarm-synthesize.js +248 -248
- package/.agents/skills/team-coordinate/specs/role-spec-template.md +197 -198
- package/.agents/skills/team-roadmap-dev/SKILL.md +164 -164
- package/.agents/skills/team-roadmap-dev/specs/team-config.json +1 -1
- package/.agents/skills/team-swarm/roles/analyst/role.md +172 -176
- package/.agy/skills/maestro-analyze/SKILL.md +0 -42
- package/.agy/skills/maestro-blueprint/SKILL.md +0 -22
- package/.agy/skills/maestro-brainstorm/SKILL.md +4 -24
- package/.agy/skills/maestro-execute/SKILL.md +1 -1
- package/.agy/skills/maestro-grill/SKILL.md +0 -16
- package/.agy/skills/maestro-milestone-audit/SKILL.md +0 -15
- package/.agy/skills/maestro-plan/SKILL.md +5 -62
- package/.agy/skills/maestro-roadmap/SKILL.md +0 -8
- package/.agy/skills/odyssey-debug/SKILL.md +109 -143
- package/.agy/skills/odyssey-improve/SKILL.md +127 -141
- package/.agy/skills/odyssey-planex/SKILL.md +140 -231
- package/.agy/skills/odyssey-review-test-fix/SKILL.md +136 -90
- package/.agy/skills/odyssey-ui/SKILL.md +123 -143
- package/.agy/skills/team-adversarial-swarm/workflows/wf-swarm-synthesize.js +248 -248
- package/.agy/skills/team-coordinate/specs/role-spec-template.md +197 -198
- package/.agy/skills/team-roadmap-dev/SKILL.md +141 -153
- package/.agy/skills/team-roadmap-dev/specs/team-config.json +1 -1
- package/.agy/skills/team-swarm/roles/analyst/role.md +172 -176
- package/.claude/commands/maestro-analyze.md +0 -42
- package/.claude/commands/maestro-blueprint.md +0 -22
- package/.claude/commands/maestro-brainstorm.md +4 -24
- package/.claude/commands/maestro-execute.md +1 -1
- package/.claude/commands/maestro-grill.md +0 -16
- package/.claude/commands/maestro-milestone-audit.md +0 -15
- package/.claude/commands/maestro-plan.md +5 -62
- package/.claude/commands/maestro-roadmap.md +0 -8
- package/.claude/commands/odyssey-debug.md +109 -143
- package/.claude/commands/odyssey-improve.md +127 -141
- package/.claude/commands/odyssey-planex.md +140 -231
- package/.claude/commands/odyssey-review-test-fix.md +136 -90
- package/.claude/commands/odyssey-ui.md +123 -143
- package/.claude/skills/team-adversarial-swarm/workflows/wf-swarm-synthesize.js +248 -248
- package/.claude/skills/team-coordinate/specs/role-spec-template.md +197 -198
- package/.claude/skills/team-roadmap-dev/SKILL.md +169 -169
- package/.claude/skills/team-roadmap-dev/specs/team-config.json +1 -1
- package/.claude/skills/team-swarm/roles/analyst/role.md +181 -185
- package/.codex/skills/odyssey-debug/SKILL.md +114 -169
- package/.codex/skills/odyssey-improve/SKILL.md +144 -188
- package/.codex/skills/odyssey-planex/SKILL.md +162 -242
- package/.codex/skills/odyssey-review-test-fix/SKILL.md +96 -90
- package/.codex/skills/odyssey-ui/SKILL.md +128 -173
- package/dashboard/dist-server/src/commands/install-backend.js +31 -16
- package/dashboard/dist-server/src/commands/install-backend.js.map +1 -1
- package/dashboard/dist-server/src/core/component-defs.js +25 -0
- package/dashboard/dist-server/src/core/component-defs.js.map +1 -1
- package/dashboard/dist-server/src/tools/spec-loader.js +32 -20
- package/dashboard/dist-server/src/tools/spec-loader.js.map +1 -1
- package/dashboard/dist-server/src/tools/spec-seeds.d.ts +8 -0
- package/dashboard/dist-server/src/tools/spec-seeds.js +114 -0
- package/dashboard/dist-server/src/tools/spec-seeds.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +31 -16
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/commands/spec.d.ts.map +1 -1
- package/dist/src/commands/spec.js +13 -3
- package/dist/src/commands/spec.js.map +1 -1
- package/dist/src/core/component-defs.d.ts.map +1 -1
- package/dist/src/core/component-defs.js +25 -0
- package/dist/src/core/component-defs.js.map +1 -1
- package/dist/src/tools/spec-init.d.ts +4 -3
- package/dist/src/tools/spec-init.d.ts.map +1 -1
- package/dist/src/tools/spec-init.js +9 -5
- package/dist/src/tools/spec-init.js.map +1 -1
- package/dist/src/tools/spec-loader.d.ts.map +1 -1
- package/dist/src/tools/spec-loader.js +32 -20
- package/dist/src/tools/spec-loader.js.map +1 -1
- package/dist/src/tools/spec-seeds.d.ts +8 -0
- package/dist/src/tools/spec-seeds.d.ts.map +1 -1
- package/dist/src/tools/spec-seeds.js +114 -0
- package/dist/src/tools/spec-seeds.js.map +1 -1
- package/dist/src/utils/update-notices.js +11 -0
- package/dist/src/utils/update-notices.js.map +1 -1
- package/package.json +1 -1
- package/workflows/agy-instructions.md +147 -161
- package/workflows/claude-instructions.md +100 -48
- package/workflows/codex-instructions.md +147 -161
- package/workflows/execute.md +4 -3
- package/workflows/explore-usage.md +41 -81
- package/workflows/grill.md +11 -0
- package/workflows/milestone-audit.md +8 -0
- package/workflows/odyssey-base-codex.md +305 -0
- package/workflows/odyssey-base.md +89 -91
- package/workflows/plan.md +6 -0
|
@@ -1,185 +1,181 @@
|
|
|
1
|
-
---
|
|
2
|
-
role: analyst
|
|
3
|
-
prefix: ANALYST
|
|
4
|
-
inner_loop: false
|
|
5
|
-
output_tag: "[analyst]"
|
|
6
|
-
message_types:
|
|
7
|
-
success: analysis_ready
|
|
8
|
-
error: error
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Analyst Role — Phase 2-4
|
|
12
|
-
|
|
13
|
-
Tag: `[analyst]` | Prefix: `ANALYST-*`
|
|
14
|
-
Responsibility: After swarm converges, synthesize the best solution + top trails + convergence curve into a human-readable `best-solution.md` report. Provides interpretation, not just data dump.
|
|
15
|
-
|
|
16
|
-
## Boundaries
|
|
17
|
-
|
|
18
|
-
### MUST
|
|
19
|
-
- Read `<session>/best.json`, `<session>/artifacts/swarm-report.json`, all `<session>/trails/*.jsonl`
|
|
20
|
-
- Produce `<session>/artifacts/best-solution.md` as the final deliverable
|
|
21
|
-
- Explain WHY the best path won (which decisions mattered, evidence chain)
|
|
22
|
-
- Compare best vs runner-ups to surface stability vs luck
|
|
23
|
-
- Document convergence story (entropy curve, when stagnation hit)
|
|
24
|
-
|
|
25
|
-
### MUST NOT
|
|
26
|
-
- Re-score solutions (that is scorer's job — analyst takes verified_score as given)
|
|
27
|
-
- Modify best.json, trails, or pheromone state
|
|
28
|
-
- Generate solutions of its own — analyst synthesizes existing ant outputs
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
## Phase 2: Context Loading
|
|
32
|
-
|
|
33
|
-
| Input | Source | Required |
|
|
34
|
-
|-------|--------|----------|
|
|
35
|
-
| Original objective | `<session>/swarm-config.json#ant_prompt.objective` | Yes |
|
|
36
|
-
| Best solution | `<session>/best.json` | Yes |
|
|
37
|
-
| Full swarm report | `<session>/artifacts/swarm-report.json` | Yes |
|
|
38
|
-
| All trails | `<session>/trails/*.jsonl` | Yes |
|
|
39
|
-
| Convergence reason | swarm-report.json or `aco.py converged` output | Yes |
|
|
40
|
-
| Best ant artifact | `<session>/artifacts/ant-<best.iteration>-<best.id>.json` (full evidence) | Yes |
|
|
41
|
-
| Issues log | `<session>/wisdom/issues.md` | Optional |
|
|
42
|
-
|
|
43
|
-
Workflow:
|
|
44
|
-
1. Extract session path from task description
|
|
45
|
-
2. Read swarm-config.json -> capture objective
|
|
46
|
-
3. Read best.json -> identify best ant
|
|
47
|
-
4. Read full swarm-report.json -> get top_k + convergence_curve
|
|
48
|
-
5. Read the best ant's full artifact for evidence chain
|
|
49
|
-
6. Read all trails/*.jsonl into a list (chronological)
|
|
50
|
-
|
|
51
|
-
## Phase 3: Synthesis
|
|
52
|
-
|
|
53
|
-
### 3.1 Structure the report
|
|
54
|
-
|
|
55
|
-
Layout for `best-solution.md`:
|
|
56
|
-
|
|
57
|
-
```markdown
|
|
58
|
-
# Swarm Result — <objective_short_form>
|
|
59
|
-
|
|
60
|
-
## Best Solution
|
|
61
|
-
|
|
62
|
-
**Path**: node_a → node_c → node_f
|
|
63
|
-
**Verified Score**: 0.82
|
|
64
|
-
**Iteration**: 3 of 5
|
|
65
|
-
**Ant**: ANT-3-2
|
|
66
|
-
|
|
67
|
-
### Summary
|
|
68
|
-
<one paragraph — what the best solution proposes and why it answers the objective>
|
|
69
|
-
|
|
70
|
-
### Evidence Chain
|
|
71
|
-
- `src/foo.ts:42` — <how this evidence supports the decision>
|
|
72
|
-
- `tests/foo.spec.ts:18` — <...>
|
|
73
|
-
|
|
74
|
-
### Candidate Artifact
|
|
75
|
-
<extract from best.candidate_solution — quote or summarize, link to file if file_ref>
|
|
76
|
-
|
|
77
|
-
## Why This Path Won
|
|
78
|
-
|
|
79
|
-
| Decision | Pheromone-guided? | Why it mattered |
|
|
80
|
-
|----------|-------------------|-----------------|
|
|
81
|
-
| start = node_a | weighted | <reason> |
|
|
82
|
-
| a → c | yes (0.45 hint) | <reason> |
|
|
83
|
-
| c → f | NO (deviation) | <reason> — this was the key call |
|
|
84
|
-
|
|
85
|
-
## Runner-Up Solutions
|
|
86
|
-
|
|
87
|
-
| Rank | Ant | Path | Score | Diff from best |
|
|
88
|
-
|------|-----|------|-------|----------------|
|
|
89
|
-
| 2 | ANT-2-1 | a → b → e | 0.74 | -0.08; weaker evidence at e |
|
|
90
|
-
| 3 | ANT-4-3 | a → c → g | 0.71 | -0.11; valid but less specific |
|
|
91
|
-
|
|
92
|
-
## Convergence Story
|
|
93
|
-
|
|
94
|
-
Iterations: 4 of 5 max
|
|
95
|
-
Trigger: stagnation (best unchanged for 2 iterations)
|
|
96
|
-
|
|
97
|
-
Entropy curve:
|
|
98
|
-
- iter 1: 3.21 (broad exploration)
|
|
99
|
-
- iter 2: 2.45 (narrowing on node_a region)
|
|
100
|
-
- iter 3: 1.85 (best emerges at ANT-3-2)
|
|
101
|
-
- iter 4: 1.72 (consensus around best, no improvement)
|
|
102
|
-
|
|
103
|
-
Interpretation: <2-3 sentences on whether the swarm converged on a genuine optimum or got stuck>
|
|
104
|
-
|
|
105
|
-
## Caveats
|
|
106
|
-
|
|
107
|
-
- <e.g., 40% of ants in iter 2 flagged as hallucinations>
|
|
108
|
-
- <e.g., evidence for node_f is single-source — recommend manual verification>
|
|
109
|
-
- <e.g., search space had only N nodes — larger space may surface better solutions>
|
|
110
|
-
|
|
111
|
-
## Reproducibility
|
|
112
|
-
|
|
113
|
-
- Config: `swarm-config.json` (pinned)
|
|
114
|
-
- Best path: `best.json`
|
|
115
|
-
- Full trails: `trails/<iter>.jsonl`
|
|
116
|
-
- Random seed: <if used>
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### 3.2 Interpretation rules
|
|
120
|
-
|
|
121
|
-
- **Why-it-won analysis** is the highest-value content. Don't just describe the path — explain which decisions were pivotal.
|
|
122
|
-
- **Pheromone vs deviation**: track which steps followed pheromone hints vs deviated. Deviations that produced higher scores are the most interesting signal.
|
|
123
|
-
- **Runner-up diff**: surface why #2 lost — was it a weaker path or just unlucky evidence?
|
|
124
|
-
- **Caveats are mandatory**: every swarm result has limitations. List them honestly.
|
|
125
|
-
|
|
126
|
-
### 3.3 Constraints
|
|
127
|
-
|
|
128
|
-
-
|
|
129
|
-
-
|
|
130
|
-
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
- Every
|
|
139
|
-
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
|
146
|
-
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
"
|
|
167
|
-
"
|
|
168
|
-
"
|
|
169
|
-
"
|
|
170
|
-
"
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
|
180
|
-
|
|
181
|
-
|
|
|
182
|
-
| Trails empty | Same as above — no exploration data to analyze |
|
|
183
|
-
| Best ant artifact missing | Use only best.json fields; note as caveat |
|
|
184
|
-
| Cross-ref mismatch (score discrepancy) | Trust best.json; note discrepancy in caveats |
|
|
185
|
-
| Line count > 200 after rewrite | Hard-fail report; coordinator decides retry vs accept |
|
|
1
|
+
---
|
|
2
|
+
role: analyst
|
|
3
|
+
prefix: ANALYST
|
|
4
|
+
inner_loop: false
|
|
5
|
+
output_tag: "[analyst]"
|
|
6
|
+
message_types:
|
|
7
|
+
success: analysis_ready
|
|
8
|
+
error: error
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Analyst Role — Phase 2-4
|
|
12
|
+
|
|
13
|
+
Tag: `[analyst]` | Prefix: `ANALYST-*`
|
|
14
|
+
Responsibility: After swarm converges, synthesize the best solution + top trails + convergence curve into a human-readable `best-solution.md` report. Provides interpretation, not just data dump.
|
|
15
|
+
|
|
16
|
+
## Boundaries
|
|
17
|
+
|
|
18
|
+
### MUST
|
|
19
|
+
- Read `<session>/best.json`, `<session>/artifacts/swarm-report.json`, all `<session>/trails/*.jsonl`
|
|
20
|
+
- Produce `<session>/artifacts/best-solution.md` as the final deliverable
|
|
21
|
+
- Explain WHY the best path won (which decisions mattered, evidence chain)
|
|
22
|
+
- Compare best vs runner-ups to surface stability vs luck
|
|
23
|
+
- Document convergence story (entropy curve, when stagnation hit)
|
|
24
|
+
|
|
25
|
+
### MUST NOT
|
|
26
|
+
- Re-score solutions (that is scorer's job — analyst takes verified_score as given)
|
|
27
|
+
- Modify best.json, trails, or pheromone state
|
|
28
|
+
- Generate solutions of its own — analyst synthesizes existing ant outputs
|
|
29
|
+
- Pad best-solution.md with prose — every section must earn its place
|
|
30
|
+
|
|
31
|
+
## Phase 2: Context Loading
|
|
32
|
+
|
|
33
|
+
| Input | Source | Required |
|
|
34
|
+
|-------|--------|----------|
|
|
35
|
+
| Original objective | `<session>/swarm-config.json#ant_prompt.objective` | Yes |
|
|
36
|
+
| Best solution | `<session>/best.json` | Yes |
|
|
37
|
+
| Full swarm report | `<session>/artifacts/swarm-report.json` | Yes |
|
|
38
|
+
| All trails | `<session>/trails/*.jsonl` | Yes |
|
|
39
|
+
| Convergence reason | swarm-report.json or `aco.py converged` output | Yes |
|
|
40
|
+
| Best ant artifact | `<session>/artifacts/ant-<best.iteration>-<best.id>.json` (full evidence) | Yes |
|
|
41
|
+
| Issues log | `<session>/wisdom/issues.md` | Optional |
|
|
42
|
+
|
|
43
|
+
Workflow:
|
|
44
|
+
1. Extract session path from task description
|
|
45
|
+
2. Read swarm-config.json -> capture objective
|
|
46
|
+
3. Read best.json -> identify best ant
|
|
47
|
+
4. Read full swarm-report.json -> get top_k + convergence_curve
|
|
48
|
+
5. Read the best ant's full artifact for evidence chain
|
|
49
|
+
6. Read all trails/*.jsonl into a list (chronological)
|
|
50
|
+
|
|
51
|
+
## Phase 3: Synthesis
|
|
52
|
+
|
|
53
|
+
### 3.1 Structure the report
|
|
54
|
+
|
|
55
|
+
Layout for `best-solution.md`:
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
# Swarm Result — <objective_short_form>
|
|
59
|
+
|
|
60
|
+
## Best Solution
|
|
61
|
+
|
|
62
|
+
**Path**: node_a → node_c → node_f
|
|
63
|
+
**Verified Score**: 0.82
|
|
64
|
+
**Iteration**: 3 of 5
|
|
65
|
+
**Ant**: ANT-3-2
|
|
66
|
+
|
|
67
|
+
### Summary
|
|
68
|
+
<one paragraph — what the best solution proposes and why it answers the objective>
|
|
69
|
+
|
|
70
|
+
### Evidence Chain
|
|
71
|
+
- `src/foo.ts:42` — <how this evidence supports the decision>
|
|
72
|
+
- `tests/foo.spec.ts:18` — <...>
|
|
73
|
+
|
|
74
|
+
### Candidate Artifact
|
|
75
|
+
<extract from best.candidate_solution — quote or summarize, link to file if file_ref>
|
|
76
|
+
|
|
77
|
+
## Why This Path Won
|
|
78
|
+
|
|
79
|
+
| Decision | Pheromone-guided? | Why it mattered |
|
|
80
|
+
|----------|-------------------|-----------------|
|
|
81
|
+
| start = node_a | weighted | <reason> |
|
|
82
|
+
| a → c | yes (0.45 hint) | <reason> |
|
|
83
|
+
| c → f | NO (deviation) | <reason> — this was the key call |
|
|
84
|
+
|
|
85
|
+
## Runner-Up Solutions
|
|
86
|
+
|
|
87
|
+
| Rank | Ant | Path | Score | Diff from best |
|
|
88
|
+
|------|-----|------|-------|----------------|
|
|
89
|
+
| 2 | ANT-2-1 | a → b → e | 0.74 | -0.08; weaker evidence at e |
|
|
90
|
+
| 3 | ANT-4-3 | a → c → g | 0.71 | -0.11; valid but less specific |
|
|
91
|
+
|
|
92
|
+
## Convergence Story
|
|
93
|
+
|
|
94
|
+
Iterations: 4 of 5 max
|
|
95
|
+
Trigger: stagnation (best unchanged for 2 iterations)
|
|
96
|
+
|
|
97
|
+
Entropy curve:
|
|
98
|
+
- iter 1: 3.21 (broad exploration)
|
|
99
|
+
- iter 2: 2.45 (narrowing on node_a region)
|
|
100
|
+
- iter 3: 1.85 (best emerges at ANT-3-2)
|
|
101
|
+
- iter 4: 1.72 (consensus around best, no improvement)
|
|
102
|
+
|
|
103
|
+
Interpretation: <2-3 sentences on whether the swarm converged on a genuine optimum or got stuck>
|
|
104
|
+
|
|
105
|
+
## Caveats
|
|
106
|
+
|
|
107
|
+
- <e.g., 40% of ants in iter 2 flagged as hallucinations>
|
|
108
|
+
- <e.g., evidence for node_f is single-source — recommend manual verification>
|
|
109
|
+
- <e.g., search space had only N nodes — larger space may surface better solutions>
|
|
110
|
+
|
|
111
|
+
## Reproducibility
|
|
112
|
+
|
|
113
|
+
- Config: `swarm-config.json` (pinned)
|
|
114
|
+
- Best path: `best.json`
|
|
115
|
+
- Full trails: `trails/<iter>.jsonl`
|
|
116
|
+
- Random seed: <if used>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### 3.2 Interpretation rules
|
|
120
|
+
|
|
121
|
+
- **Why-it-won analysis** is the highest-value content. Don't just describe the path — explain which decisions were pivotal.
|
|
122
|
+
- **Pheromone vs deviation**: track which steps followed pheromone hints vs deviated. Deviations that produced higher scores are the most interesting signal.
|
|
123
|
+
- **Runner-up diff**: surface why #2 lost — was it a weaker path or just unlucky evidence?
|
|
124
|
+
- **Caveats are mandatory**: every swarm result has limitations. List them honestly.
|
|
125
|
+
|
|
126
|
+
### 3.3 Constraints
|
|
127
|
+
|
|
128
|
+
- No prose padding — every section earns its place
|
|
129
|
+
- Quote evidence verbatim where possible (file:line refs)
|
|
130
|
+
- Don't editorialize beyond what evidence supports
|
|
131
|
+
|
|
132
|
+
## Phase 4: Verify + Publish
|
|
133
|
+
|
|
134
|
+
### Behavioral Traits
|
|
135
|
+
|
|
136
|
+
#### Accuracy
|
|
137
|
+
- Every cited path/score MUST match best.json or trails source
|
|
138
|
+
- Every evidence reference MUST be verifiable (Read to confirm if file_ref)
|
|
139
|
+
- Convergence curve numbers MUST match swarm-report.json#convergence_curve
|
|
140
|
+
|
|
141
|
+
#### Feedback Contract
|
|
142
|
+
| Field | Required | Content |
|
|
143
|
+
|-------|----------|---------|
|
|
144
|
+
| artifacts_written | Always | `<session>/artifacts/best-solution.md` |
|
|
145
|
+
| line_count | Always | int (informational) |
|
|
146
|
+
| verification_method | Always | "cross_ref_with_best.json + evidence_verified" |
|
|
147
|
+
|
|
148
|
+
#### Quality Gate
|
|
149
|
+
- Final report file exists and parses as markdown
|
|
150
|
+
- All sections present (Best Solution / Why Won / Runner-Ups / Convergence / Caveats / Reproducibility)
|
|
151
|
+
|
|
152
|
+
### Verification Steps
|
|
153
|
+
|
|
154
|
+
1. Read written best-solution.md back
|
|
155
|
+
2. Cross-check best.score against best.json
|
|
156
|
+
3. Confirm runner-up scores against trails
|
|
157
|
+
4. If file_ref evidence in best.candidate_solution -> Read to confirm file exists
|
|
158
|
+
|
|
159
|
+
### State Update
|
|
160
|
+
|
|
161
|
+
```json
|
|
162
|
+
{
|
|
163
|
+
"task_id": "ANALYST-1",
|
|
164
|
+
"role": "analyst",
|
|
165
|
+
"status": "completed",
|
|
166
|
+
"artifact_path": "<session>/artifacts/best-solution.md",
|
|
167
|
+
"best_score": <float>,
|
|
168
|
+
"best_ant_id": "<id>",
|
|
169
|
+
"line_count": <int>,
|
|
170
|
+
"verification": "cross_ref_pass + evidence_verified"
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Error Handling
|
|
175
|
+
|
|
176
|
+
| Scenario | Resolution |
|
|
177
|
+
|----------|------------|
|
|
178
|
+
| best.json missing | Pipeline produced no valid ant — write minimal report with `status: no_solution` |
|
|
179
|
+
| Trails empty | Same as above — no exploration data to analyze |
|
|
180
|
+
| Best ant artifact missing | Use only best.json fields; note as caveat |
|
|
181
|
+
| Cross-ref mismatch (score discrepancy) | Trust best.json; note discrepancy in caveats |
|