aether-colony 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/.aether/CONTEXT.md +160 -0
  2. package/.aether/QUEEN.md +84 -0
  3. package/.aether/aether-utils.sh +7749 -0
  4. package/.aether/docs/QUEEN-SYSTEM.md +211 -0
  5. package/.aether/docs/README.md +68 -0
  6. package/.aether/docs/caste-system.md +48 -0
  7. package/.aether/docs/disciplines/DISCIPLINES.md +93 -0
  8. package/.aether/docs/disciplines/coding-standards.md +197 -0
  9. package/.aether/docs/disciplines/debugging.md +207 -0
  10. package/.aether/docs/disciplines/learning.md +254 -0
  11. package/.aether/docs/disciplines/tdd.md +257 -0
  12. package/.aether/docs/disciplines/verification-loop.md +167 -0
  13. package/.aether/docs/disciplines/verification.md +116 -0
  14. package/.aether/docs/error-codes.md +268 -0
  15. package/.aether/docs/known-issues.md +233 -0
  16. package/.aether/docs/pheromones.md +205 -0
  17. package/.aether/docs/queen-commands.md +97 -0
  18. package/.aether/exchange/colony-registry.xml +11 -0
  19. package/.aether/exchange/pheromone-xml.sh +575 -0
  20. package/.aether/exchange/pheromones.xml +87 -0
  21. package/.aether/exchange/queen-wisdom.xml +14 -0
  22. package/.aether/exchange/registry-xml.sh +273 -0
  23. package/.aether/exchange/wisdom-xml.sh +319 -0
  24. package/.aether/midden/approach-changes.md +5 -0
  25. package/.aether/midden/build-failures.md +5 -0
  26. package/.aether/midden/test-failures.md +5 -0
  27. package/.aether/model-profiles.yaml +100 -0
  28. package/.aether/rules/aether-colony.md +134 -0
  29. package/.aether/schemas/aether-types.xsd +255 -0
  30. package/.aether/schemas/colony-registry.xsd +309 -0
  31. package/.aether/schemas/example-prompt-builder.xml +234 -0
  32. package/.aether/schemas/pheromone.xsd +163 -0
  33. package/.aether/schemas/prompt.xsd +416 -0
  34. package/.aether/schemas/queen-wisdom.xsd +325 -0
  35. package/.aether/schemas/worker-priming.xsd +276 -0
  36. package/.aether/templates/QUEEN.md.template +79 -0
  37. package/.aether/templates/colony-state-reset.jq.template +22 -0
  38. package/.aether/templates/colony-state.template.json +35 -0
  39. package/.aether/templates/constraints.template.json +9 -0
  40. package/.aether/templates/crowned-anthill.template.md +36 -0
  41. package/.aether/templates/handoff-build-error.template.md +30 -0
  42. package/.aether/templates/handoff-build-success.template.md +39 -0
  43. package/.aether/templates/handoff.template.md +40 -0
  44. package/.aether/templates/learning-observations.template.json +6 -0
  45. package/.aether/templates/midden.template.json +7 -0
  46. package/.aether/templates/pheromones.template.json +6 -0
  47. package/.aether/templates/session.template.json +9 -0
  48. package/.aether/utils/atomic-write.sh +219 -0
  49. package/.aether/utils/chamber-compare.sh +193 -0
  50. package/.aether/utils/chamber-utils.sh +297 -0
  51. package/.aether/utils/colorize-log.sh +132 -0
  52. package/.aether/utils/error-handler.sh +212 -0
  53. package/.aether/utils/file-lock.sh +158 -0
  54. package/.aether/utils/queen-to-md.xsl +395 -0
  55. package/.aether/utils/semantic-cli.sh +413 -0
  56. package/.aether/utils/spawn-tree.sh +428 -0
  57. package/.aether/utils/spawn-with-model.sh +56 -0
  58. package/.aether/utils/state-loader.sh +215 -0
  59. package/.aether/utils/swarm-display.sh +268 -0
  60. package/.aether/utils/watch-spawn-tree.sh +253 -0
  61. package/.aether/utils/xml-compose.sh +253 -0
  62. package/.aether/utils/xml-convert.sh +273 -0
  63. package/.aether/utils/xml-core.sh +186 -0
  64. package/.aether/utils/xml-query.sh +201 -0
  65. package/.aether/utils/xml-utils.sh +110 -0
  66. package/.aether/workers.md +765 -0
  67. package/.claude/agents/ant/aether-ambassador.md +264 -0
  68. package/.claude/agents/ant/aether-archaeologist.md +322 -0
  69. package/.claude/agents/ant/aether-auditor.md +266 -0
  70. package/.claude/agents/ant/aether-builder.md +187 -0
  71. package/.claude/agents/ant/aether-chaos.md +268 -0
  72. package/.claude/agents/ant/aether-chronicler.md +304 -0
  73. package/.claude/agents/ant/aether-gatekeeper.md +325 -0
  74. package/.claude/agents/ant/aether-includer.md +373 -0
  75. package/.claude/agents/ant/aether-keeper.md +271 -0
  76. package/.claude/agents/ant/aether-measurer.md +317 -0
  77. package/.claude/agents/ant/aether-probe.md +210 -0
  78. package/.claude/agents/ant/aether-queen.md +325 -0
  79. package/.claude/agents/ant/aether-route-setter.md +173 -0
  80. package/.claude/agents/ant/aether-sage.md +353 -0
  81. package/.claude/agents/ant/aether-scout.md +142 -0
  82. package/.claude/agents/ant/aether-surveyor-disciplines.md +416 -0
  83. package/.claude/agents/ant/aether-surveyor-nest.md +354 -0
  84. package/.claude/agents/ant/aether-surveyor-pathogens.md +288 -0
  85. package/.claude/agents/ant/aether-surveyor-provisions.md +359 -0
  86. package/.claude/agents/ant/aether-tracker.md +265 -0
  87. package/.claude/agents/ant/aether-watcher.md +244 -0
  88. package/.claude/agents/ant/aether-weaver.md +247 -0
  89. package/.claude/commands/ant/archaeology.md +341 -0
  90. package/.claude/commands/ant/build.md +1160 -0
  91. package/.claude/commands/ant/chaos.md +349 -0
  92. package/.claude/commands/ant/colonize.md +270 -0
  93. package/.claude/commands/ant/continue.md +1070 -0
  94. package/.claude/commands/ant/council.md +309 -0
  95. package/.claude/commands/ant/dream.md +265 -0
  96. package/.claude/commands/ant/entomb.md +487 -0
  97. package/.claude/commands/ant/feedback.md +78 -0
  98. package/.claude/commands/ant/flag.md +139 -0
  99. package/.claude/commands/ant/flags.md +155 -0
  100. package/.claude/commands/ant/focus.md +58 -0
  101. package/.claude/commands/ant/help.md +122 -0
  102. package/.claude/commands/ant/history.md +137 -0
  103. package/.claude/commands/ant/init.md +409 -0
  104. package/.claude/commands/ant/interpret.md +267 -0
  105. package/.claude/commands/ant/lay-eggs.md +201 -0
  106. package/.claude/commands/ant/maturity.md +102 -0
  107. package/.claude/commands/ant/memory-details.md +77 -0
  108. package/.claude/commands/ant/migrate-state.md +165 -0
  109. package/.claude/commands/ant/oracle.md +387 -0
  110. package/.claude/commands/ant/organize.md +227 -0
  111. package/.claude/commands/ant/pause-colony.md +247 -0
  112. package/.claude/commands/ant/phase.md +126 -0
  113. package/.claude/commands/ant/plan.md +544 -0
  114. package/.claude/commands/ant/redirect.md +58 -0
  115. package/.claude/commands/ant/resume-colony.md +182 -0
  116. package/.claude/commands/ant/resume.md +363 -0
  117. package/.claude/commands/ant/seal.md +306 -0
  118. package/.claude/commands/ant/status.md +272 -0
  119. package/.claude/commands/ant/swarm.md +361 -0
  120. package/.claude/commands/ant/tunnels.md +425 -0
  121. package/.claude/commands/ant/update.md +209 -0
  122. package/.claude/commands/ant/verify-castes.md +95 -0
  123. package/.claude/commands/ant/watch.md +238 -0
  124. package/.opencode/agents/aether-ambassador.md +140 -0
  125. package/.opencode/agents/aether-archaeologist.md +108 -0
  126. package/.opencode/agents/aether-auditor.md +144 -0
  127. package/.opencode/agents/aether-builder.md +184 -0
  128. package/.opencode/agents/aether-chaos.md +115 -0
  129. package/.opencode/agents/aether-chronicler.md +122 -0
  130. package/.opencode/agents/aether-gatekeeper.md +116 -0
  131. package/.opencode/agents/aether-includer.md +117 -0
  132. package/.opencode/agents/aether-keeper.md +177 -0
  133. package/.opencode/agents/aether-measurer.md +128 -0
  134. package/.opencode/agents/aether-probe.md +133 -0
  135. package/.opencode/agents/aether-queen.md +286 -0
  136. package/.opencode/agents/aether-route-setter.md +130 -0
  137. package/.opencode/agents/aether-sage.md +106 -0
  138. package/.opencode/agents/aether-scout.md +101 -0
  139. package/.opencode/agents/aether-surveyor-disciplines.md +386 -0
  140. package/.opencode/agents/aether-surveyor-nest.md +324 -0
  141. package/.opencode/agents/aether-surveyor-pathogens.md +259 -0
  142. package/.opencode/agents/aether-surveyor-provisions.md +329 -0
  143. package/.opencode/agents/aether-tracker.md +137 -0
  144. package/.opencode/agents/aether-watcher.md +174 -0
  145. package/.opencode/agents/aether-weaver.md +130 -0
  146. package/.opencode/commands/ant/archaeology.md +338 -0
  147. package/.opencode/commands/ant/build.md +1200 -0
  148. package/.opencode/commands/ant/chaos.md +346 -0
  149. package/.opencode/commands/ant/colonize.md +202 -0
  150. package/.opencode/commands/ant/continue.md +938 -0
  151. package/.opencode/commands/ant/council.md +305 -0
  152. package/.opencode/commands/ant/dream.md +262 -0
  153. package/.opencode/commands/ant/entomb.md +367 -0
  154. package/.opencode/commands/ant/feedback.md +80 -0
  155. package/.opencode/commands/ant/flag.md +137 -0
  156. package/.opencode/commands/ant/flags.md +153 -0
  157. package/.opencode/commands/ant/focus.md +56 -0
  158. package/.opencode/commands/ant/help.md +124 -0
  159. package/.opencode/commands/ant/history.md +127 -0
  160. package/.opencode/commands/ant/init.md +337 -0
  161. package/.opencode/commands/ant/interpret.md +256 -0
  162. package/.opencode/commands/ant/lay-eggs.md +141 -0
  163. package/.opencode/commands/ant/maturity.md +92 -0
  164. package/.opencode/commands/ant/memory-details.md +77 -0
  165. package/.opencode/commands/ant/migrate-state.md +153 -0
  166. package/.opencode/commands/ant/oracle.md +338 -0
  167. package/.opencode/commands/ant/organize.md +224 -0
  168. package/.opencode/commands/ant/pause-colony.md +220 -0
  169. package/.opencode/commands/ant/phase.md +123 -0
  170. package/.opencode/commands/ant/plan.md +531 -0
  171. package/.opencode/commands/ant/redirect.md +67 -0
  172. package/.opencode/commands/ant/resume-colony.md +178 -0
  173. package/.opencode/commands/ant/resume.md +363 -0
  174. package/.opencode/commands/ant/seal.md +247 -0
  175. package/.opencode/commands/ant/status.md +272 -0
  176. package/.opencode/commands/ant/swarm.md +357 -0
  177. package/.opencode/commands/ant/tunnels.md +406 -0
  178. package/.opencode/commands/ant/update.md +191 -0
  179. package/.opencode/commands/ant/verify-castes.md +85 -0
  180. package/.opencode/commands/ant/watch.md +220 -0
  181. package/.opencode/opencode.json +3 -0
  182. package/CHANGELOG.md +325 -0
  183. package/DISCLAIMER.md +74 -0
  184. package/LICENSE +21 -0
  185. package/README.md +258 -0
  186. package/bin/cli.js +2436 -0
  187. package/bin/generate-commands.sh +291 -0
  188. package/bin/lib/caste-colors.js +57 -0
  189. package/bin/lib/colors.js +76 -0
  190. package/bin/lib/errors.js +255 -0
  191. package/bin/lib/event-types.js +190 -0
  192. package/bin/lib/file-lock.js +695 -0
  193. package/bin/lib/init.js +454 -0
  194. package/bin/lib/logger.js +242 -0
  195. package/bin/lib/model-profiles.js +445 -0
  196. package/bin/lib/model-verify.js +288 -0
  197. package/bin/lib/nestmate-loader.js +130 -0
  198. package/bin/lib/proxy-health.js +253 -0
  199. package/bin/lib/spawn-logger.js +266 -0
  200. package/bin/lib/state-guard.js +602 -0
  201. package/bin/lib/state-sync.js +516 -0
  202. package/bin/lib/telemetry.js +441 -0
  203. package/bin/lib/update-transaction.js +1454 -0
  204. package/bin/npx-install.js +178 -0
  205. package/bin/sync-to-runtime.sh +6 -0
  206. package/bin/validate-package.sh +88 -0
  207. package/package.json +70 -0
@@ -0,0 +1,361 @@
1
+ ---
2
+ name: ant:swarm
3
+ description: "🔥🐜🗡️🐜🔥 Real-time colony swarm display + stubborn bug destroyer"
4
+ ---
5
+
6
+ You are the **Queen Ant Colony**. Deploy the swarm to destroy a stubborn bug or view real-time colony activity.
7
+
8
+ ## Instructions
9
+
10
+ ### Quick View Mode (No Arguments)
11
+
12
+ If `$ARGUMENTS` is empty or equals "--watch":
13
+
14
+ Run the real-time swarm display:
15
+ ```bash
16
+ bash .aether/utils/swarm-display.sh
17
+ ```
18
+
19
+ This shows:
20
+ - Active ants with caste colors and emojis (🔨🐜 Builder in blue, etc.)
21
+ - Tool usage stats per ant (📖5 🔍3 ✏️2 ⚡1)
22
+ - Trophallaxis metrics (🍯 token consumption)
23
+ - Timing information (elapsed time per ant)
24
+ - Chamber activity map (which nest zones have active ants)
25
+ - Animated status phrases ("excavating...", "foraging...")
26
+
27
+ Display updates automatically as ants start/complete work.
28
+ Press Ctrl+C to exit.
29
+
30
+ ### Bug Destruction Mode (With Arguments)
31
+
32
+ The problem to investigate is: `$ARGUMENTS`
33
+
34
+ #### Step 1: Validate Input
35
+
36
+ If `$ARGUMENTS` is empty:
37
+ ```
38
+ 🔥🐜🗡️🐜🔥 SWARM
39
+
40
+ Deploy parallel scouts to investigate and fix stubborn bugs.
41
+
42
+ Usage: /ant:swarm "<describe the problem>"
43
+
44
+ Examples:
45
+ /ant:swarm "Tests keep failing in auth module"
46
+ /ant:swarm "TypeError: Cannot read property 'id' of undefined"
47
+ /ant:swarm "API returns 500 but I can't find the cause"
48
+
49
+ This is the nuclear option - use when repeated fix attempts fail.
50
+ ```
51
+ Stop here.
52
+
53
+ #### Step 2: Read State & Initialize
54
+
55
+ Read `.aether/data/COLONY_STATE.json`.
56
+ If `goal` is null → "No colony initialized. Run /ant:init first.", stop.
57
+
58
+ Generate swarm ID: `swarm-<unix_timestamp>`
59
+
60
+ Initialize swarm findings:
61
+ ```bash
62
+ bash .aether/aether-utils.sh swarm-findings-init "<swarm_id>"
63
+ ```
64
+
65
+ Initialize swarm display for real-time tracking:
66
+ ```bash
67
+ bash .aether/aether-utils.sh swarm-display-init "<swarm_id>"
68
+ ```
69
+
70
+ #### Step 2.5: Check for Stale Swarm Session
71
+
72
+ Capture session start time:
73
+ ```bash
74
+ SWARM_START=$(date +%s)
75
+ ```
76
+
77
+ Check for stale swarm files:
78
+ ```bash
79
+ stale_check=$(bash .aether/aether-utils.sh session-verify-fresh --command swarm "" "$SWARM_START")
80
+ has_stale=$(echo "$stale_check" | jq -r '.stale | length')
81
+
82
+ if [[ "$has_stale" -gt 0 ]]; then
83
+ # Auto-clear stale swarm findings (safe - findings are temporary)
84
+ bash .aether/aether-utils.sh session-clear --command swarm
85
+ echo "Cleared stale swarm findings for fresh investigation"
86
+ fi
87
+ ```
88
+
89
+ After initializing findings, verify swarm files are fresh:
90
+ ```bash
91
+ verify_result=$(bash .aether/aether-utils.sh session-verify-fresh --command swarm "" "$SWARM_START")
92
+ if [[ $(echo "$verify_result" | jq -r '.missing | length') -gt 0 ]]; then
93
+ echo "Warning: Swarm files not properly initialized"
94
+ fi
95
+ ```
96
+
97
+ Display header:
98
+ ```
99
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
100
+ 🔥🐜🗡️🐜🔥 S W A R M D E P L O Y E D
101
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
102
+
103
+ 🎯 Target: "{problem description}"
104
+ 📍 Swarm ID: {swarm_id}
105
+
106
+ ⚡ Deploying 4 parallel scouts...
107
+ ```
108
+
109
+ #### Step 3: Create Git Checkpoint
110
+
111
+ Before any investigation that might lead to fixes, run using the Bash tool:
112
+ ```bash
113
+ bash .aether/aether-utils.sh autofix-checkpoint "pre-swarm-$SWARM_ID"
114
+ ```
115
+
116
+ Store the result for potential rollback:
117
+ - `checkpoint_type` = result.type ("stash", "commit", or "none")
118
+ - `checkpoint_ref` = result.ref
119
+
120
+ ```
121
+ 💾 Checkpoint: {checkpoint_type} → {checkpoint_ref}
122
+ ```
123
+
124
+ #### Step 4: Read Context
125
+
126
+ Read existing blockers for context:
127
+ ```bash
128
+ bash .aether/aether-utils.sh flag-list --type blocker
129
+ ```
130
+
131
+ Read recent activity:
132
+ ```bash
133
+ tail -50 .aether/data/activity.log 2>/dev/null || echo "(no activity log)"
134
+ ```
135
+
136
+ Scan recent git commits for context:
137
+ ```bash
138
+ git log --oneline -20 2>/dev/null || echo "(no git history)"
139
+ ```
140
+
141
+ #### Step 5: Deploy 4 Parallel Scouts
142
+
143
+ Use the **Task** tool to spawn 4 scouts **in a single message** (parallel execution):
144
+
145
+ Log each scout to swarm display before spawning (consolidated):
146
+ ```bash
147
+ bash .aether/aether-utils.sh swarm-display-update "{swarm_id}-Archaeologist" "scout" "excavating" "Git history investigation" "Queen" '{"read":0,"grep":0,"edit":0,"bash":3}' 0 && bash .aether/aether-utils.sh swarm-display-update "{swarm_id}-PatternHunter" "scout" "excavating" "Pattern search for similar code" "Queen" '{"read":5,"grep":10,"edit":0,"bash":0}' 0 && bash .aether/aether-utils.sh swarm-display-update "{swarm_id}-ErrorAnalyst" "scout" "excavating" "Error chain analysis" "Queen" '{"read":3,"grep":5,"edit":0,"bash":2}' 0 && bash .aether/aether-utils.sh swarm-display-update "{swarm_id}-WebResearcher" "scout" "excavating" "External source research" "Queen" '{"read":0,"grep":0,"edit":0,"bash":0}' 0
148
+ ```
149
+
150
+ **Scout 1: 🏛️ Git Archaeologist** (use Task tool with `subagent_type="aether-archaeologist"`)
151
+ # FALLBACK: If "Agent type not found", use general-purpose and inject role: "You are an Archaeologist Ant - git historian that excavates why code exists."
152
+ ```
153
+ You are {swarm_id}-Archaeologist, a 🏛️🐜 Archaeologist Ant.
154
+
155
+ Investigate git history for: {problem description}
156
+
157
+ Steps:
158
+ 1. Run `git log --oneline -30`
159
+ 2. Run `git log -p --since="1 week ago" -- {relevant files}`
160
+ 3. Run `git blame {suspected file}` if mentioned
161
+ 4. Find commits that introduced the bug
162
+
163
+ Return ONLY this JSON:
164
+ {"scout": "git-archaeologist", "confidence": 0.0-1.0, "finding": {"likely_cause": "...", "relevant_commits": [], "when_it_broke": "...", "evidence": []}, "suggested_fix": "..."}
165
+ ```
166
+
167
+ **Scout 2: 🔍 Pattern Hunter** (use Task tool with `subagent_type="aether-scout"`)
168
+ ```
169
+ You are {swarm_id}-PatternHunter, a 🔍🐜 Scout Ant.
170
+
171
+ Find working patterns for: {problem description}
172
+
173
+ Steps:
174
+ 1. Grep/glob for related working code
175
+ 2. Find how other parts handle this
176
+ 3. Look for test files showing correct usage
177
+ 4. Identify applicable patterns
178
+
179
+ Return ONLY this JSON:
180
+ {"scout": "pattern-hunter", "confidence": 0.0-1.0, "finding": {"working_examples": [], "applicable_patterns": [], "differences": "..."}, "suggested_fix": "..."}
181
+ ```
182
+
183
+ **Scout 3: 💥 Error Analyst** (use Task tool with `subagent_type="aether-tracker"`)
184
+ ```
185
+ You are {swarm_id}-ErrorAnalyst, a 🔍🐜 Tracker Ant.
186
+
187
+ Analyze error: {problem description}
188
+
189
+ Steps:
190
+ 1. Trace through stack trace frames
191
+ 2. Identify actual failing line vs surface error
192
+ 3. Check for null refs, async issues, type mismatches
193
+ 4. Look for error handling masking the issue
194
+
195
+ Return ONLY this JSON:
196
+ {"scout": "error-analyst", "confidence": 0.0-1.0, "finding": {"root_cause": "...", "error_chain": [], "masked_by": "...", "category": "null-ref|async|type|logic|config|dependency"}, "suggested_fix": "..."}
197
+ ```
198
+
199
+ **Scout 4: 🌐 Web Researcher** (use Task tool with `subagent_type="aether-scout"`)
200
+ ```
201
+ You are {swarm_id}-WebResearcher, a 🔍🐜 Scout Ant.
202
+
203
+ Research external solutions for: {problem description}
204
+
205
+ Steps:
206
+ 1. Search for exact error message
207
+ 2. Find library/framework docs
208
+ 3. Check GitHub issues
209
+ 4. Find Stack Overflow answers
210
+
211
+ Return ONLY this JSON:
212
+ {"scout": "web-researcher", "confidence": 0.0-1.0, "finding": {"known_issue": true/false, "documentation_link": "...", "similar_issues": [], "community_solutions": []}, "suggested_fix": "..."}
213
+ ```
214
+
215
+ Wait for all 4 scouts to complete.
216
+
217
+ #### Step 6: Collect and Cross-Compare Findings
218
+
219
+ As each scout returns, add their findings and update display (consolidated):
220
+ ```bash
221
+ bash .aether/aether-utils.sh swarm-findings-add "{swarm_id}" "{scout_type}" "{confidence}" '{finding_json}' && bash .aether/aether-utils.sh swarm-display-update "{swarm_id}-Archaeologist" "scout" "completed" "Git history investigation" "Queen" '{"read":3,"grep":0,"edit":0,"bash":5}' 150
222
+ ```
223
+
224
+ Display each scout's report as they complete:
225
+ ```
226
+ 🏛️ Archaeologist [{confidence}]
227
+ {summary of finding}
228
+
229
+ 🔍 PatternHunter [{confidence}]
230
+ {summary of finding}
231
+
232
+ 💥 ErrorAnalyst [{confidence}]
233
+ {summary of finding}
234
+
235
+ 🌐 WebResearcher [{confidence}]
236
+ {summary of finding}
237
+ ```
238
+
239
+ Display colony activity summary:
240
+ ```bash
241
+ bash .aether/aether-utils.sh swarm-display-text "$SWARM_ID"
242
+ ```
243
+
244
+ #### Step 7: Synthesize Solution
245
+
246
+ Cross-compare all findings:
247
+ 1. Identify where scouts agree (high confidence)
248
+ 2. Note where scouts disagree (investigate further)
249
+ 3. Weight by confidence scores
250
+ 4. Prefer findings with concrete evidence
251
+
252
+ Rank fix options:
253
+ ```
254
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
255
+ S O L U T I O N R A N K I N G
256
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
257
+
258
+ #1 [0.85 confidence] {best solution}
259
+ Evidence: {supporting scouts}
260
+
261
+ #2 [0.72 confidence] {alternative}
262
+ Evidence: {supporting scouts}
263
+
264
+ #3 [0.45 confidence] {fallback}
265
+ Evidence: {limited support}
266
+ ```
267
+
268
+ #### Step 8: Apply Best Fix
269
+
270
+ Select the highest-confidence solution and apply it:
271
+
272
+ **Command Resolution:** Before running verification, resolve `{build_command}` and `{test_command}` using this priority chain (stop at first match per command):
273
+ 1. **CLAUDE.md** — Check project CLAUDE.md (in your system context) for explicit build/test commands
274
+ 2. **CODEBASE.md** — Read `.aether/data/codebase.md` `## Commands` section
275
+ 3. **Fallback** — Use project manifest heuristics (e.g., `npm run build`/`npm test` for package.json)
276
+
277
+ ```
278
+ 🔧 Applying Fix #1...
279
+ ```
280
+
281
+ Make the actual code changes using Edit/Write tools.
282
+
283
+ After applying:
284
+ ```bash
285
+ # Run verification
286
+ {build_command} 2>&1 | tail -30
287
+ {test_command} 2>&1 | tail -50
288
+ ```
289
+
290
+ #### Step 9: Verify and Report
291
+
292
+ **If verification passes:**
293
+ ```
294
+ ✅ FIX VERIFIED
295
+
296
+ Build: PASS
297
+ Tests: PASS
298
+
299
+ 🔥🐜🗡️🐜🔥 Swarm successful!
300
+
301
+ The fix will be confirmed when you run:
302
+ /ant:continue
303
+ ```
304
+
305
+ Inject learnings:
306
+ - Add FOCUS for the pattern that worked (to constraints.json)
307
+ - Add REDIRECT for the anti-pattern that caused the bug (to constraints.json)
308
+
309
+ Set solution in swarm findings and log success (consolidated):
310
+ ```bash
311
+ bash .aether/aether-utils.sh swarm-solution-set "{swarm_id}" '{solution_json}' && bash .aether/aether-utils.sh activity-log "SWARM_SUCCESS" "Queen" "Swarm {swarm_id} fixed: {brief description}"
312
+ ```
313
+
314
+ **If verification fails:**
315
+ ```
316
+ ❌ FIX VERIFICATION FAILED
317
+
318
+ Build: {status}
319
+ Tests: {status}
320
+
321
+ Attempting rollback...
322
+ ```
323
+
324
+ Rollback and log failure (consolidated):
325
+ ```bash
326
+ bash .aether/aether-utils.sh autofix-rollback "{checkpoint_type}" "{checkpoint_ref}" ; bash .aether/aether-utils.sh activity-log "SWARM_FAILED" "Queen" "Swarm {swarm_id} fix failed verification"
327
+ ```
328
+
329
+ Track attempt count. If this is the 3rd failure on the same issue:
330
+ ```
331
+ ⚠️ ARCHITECTURAL CONCERN
332
+
333
+ This problem has resisted 3 swarm attempts.
334
+
335
+ This suggests:
336
+ - Root cause may be architectural, not implementational
337
+ - Pattern may be fundamentally unsound
338
+ - Different approach needed
339
+
340
+ Recommended:
341
+ - Review the codebase architecture
342
+ - Consider refactoring vs. patching
343
+ - Create a new phase for structural fix
344
+
345
+ Swarm will not attempt further fixes on this issue.
346
+ ```
347
+
348
+ #### Step 10: Cleanup
349
+
350
+ Clear swarm display and archive findings (consolidated):
351
+ ```bash
352
+ bash .aether/aether-utils.sh swarm-display-init "complete-{swarm_id}" && bash .aether/aether-utils.sh swarm-cleanup "{swarm_id}" --archive
353
+ ```
354
+
355
+ Generate the state-based Next Up block:
356
+ ```bash
357
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
358
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
359
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
360
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
361
+ ```