aether-colony 5.3.2 → 5.4.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 (281) hide show
  1. package/.aether/aether-utils.sh +181 -5
  2. package/.aether/commands/archaeology.yaml +3 -3
  3. package/.aether/commands/build.yaml +80 -45
  4. package/.aether/commands/chaos.yaml +7 -7
  5. package/.aether/commands/colonize.yaml +17 -17
  6. package/.aether/commands/continue.yaml +40 -40
  7. package/.aether/commands/council.yaml +6 -6
  8. package/.aether/commands/data-clean.yaml +3 -3
  9. package/.aether/commands/dream.yaml +2 -2
  10. package/.aether/commands/entomb.yaml +12 -12
  11. package/.aether/commands/export-signals.yaml +2 -2
  12. package/.aether/commands/feedback.yaml +6 -6
  13. package/.aether/commands/flag.yaml +2 -2
  14. package/.aether/commands/flags.yaml +4 -4
  15. package/.aether/commands/focus.yaml +6 -6
  16. package/.aether/commands/help.yaml +1 -1
  17. package/.aether/commands/history.yaml +1 -1
  18. package/.aether/commands/import-signals.yaml +2 -2
  19. package/.aether/commands/init.yaml +44 -27
  20. package/.aether/commands/insert-phase.yaml +1 -1
  21. package/.aether/commands/interpret.yaml +2 -2
  22. package/.aether/commands/lay-eggs.yaml +3 -3
  23. package/.aether/commands/maturity.yaml +2 -2
  24. package/.aether/commands/memory-details.yaml +1 -1
  25. package/.aether/commands/migrate-state.yaml +1 -1
  26. package/.aether/commands/oracle.yaml +147 -82
  27. package/.aether/commands/organize.yaml +5 -5
  28. package/.aether/commands/patrol.yaml +8 -8
  29. package/.aether/commands/pause-colony.yaml +7 -7
  30. package/.aether/commands/phase.yaml +1 -1
  31. package/.aether/commands/pheromones.yaml +1 -1
  32. package/.aether/commands/plan.yaml +14 -14
  33. package/.aether/commands/quick.yaml +4 -4
  34. package/.aether/commands/redirect.yaml +6 -6
  35. package/.aether/commands/resume-colony.yaml +9 -9
  36. package/.aether/commands/resume.yaml +5 -38
  37. package/.aether/commands/run.yaml +10 -10
  38. package/.aether/commands/seal.yaml +33 -33
  39. package/.aether/commands/skill-create.yaml +4 -4
  40. package/.aether/commands/status.yaml +14 -14
  41. package/.aether/commands/swarm.yaml +14 -14
  42. package/.aether/commands/tunnels.yaml +7 -7
  43. package/.aether/commands/update.yaml +1 -1
  44. package/.aether/commands/verify-castes.yaml +3 -3
  45. package/.aether/commands/watch.yaml +15 -15
  46. package/.aether/docs/command-playbooks/build-complete.md +48 -15
  47. package/.aether/docs/command-playbooks/build-context.md +11 -11
  48. package/.aether/docs/command-playbooks/build-full.md +76 -76
  49. package/.aether/docs/command-playbooks/build-prep.md +10 -10
  50. package/.aether/docs/command-playbooks/build-verify.md +27 -27
  51. package/.aether/docs/command-playbooks/build-wave.md +38 -38
  52. package/.aether/docs/command-playbooks/continue-advance.md +60 -27
  53. package/.aether/docs/command-playbooks/continue-finalize.md +25 -11
  54. package/.aether/docs/command-playbooks/continue-full.md +60 -46
  55. package/.aether/docs/command-playbooks/continue-gates.md +18 -18
  56. package/.aether/docs/command-playbooks/continue-verify.md +10 -10
  57. package/.aether/docs/source-of-truth-map.md +10 -10
  58. package/.aether/docs/structural-learning-stack.md +283 -0
  59. package/.aether/templates/colony-state-template.json +1 -0
  60. package/.aether/utils/consolidation-seal.sh +196 -0
  61. package/.aether/utils/consolidation.sh +127 -0
  62. package/.aether/utils/curation-ants/archivist.sh +97 -0
  63. package/.aether/utils/curation-ants/critic.sh +214 -0
  64. package/.aether/utils/curation-ants/herald.sh +102 -0
  65. package/.aether/utils/curation-ants/janitor.sh +121 -0
  66. package/.aether/utils/curation-ants/librarian.sh +99 -0
  67. package/.aether/utils/curation-ants/nurse.sh +153 -0
  68. package/.aether/utils/curation-ants/orchestrator.sh +181 -0
  69. package/.aether/utils/curation-ants/scribe.sh +164 -0
  70. package/.aether/utils/curation-ants/sentinel.sh +119 -0
  71. package/.aether/utils/event-bus.sh +301 -0
  72. package/.aether/utils/graph.sh +559 -0
  73. package/.aether/utils/instinct-store.sh +401 -0
  74. package/.aether/utils/learning.sh +79 -7
  75. package/.aether/utils/oracle/oracle-stop-hook.sh +896 -0
  76. package/.aether/utils/session.sh +13 -0
  77. package/.aether/utils/state-api.sh +1 -1
  78. package/.aether/utils/trust-scoring.sh +347 -0
  79. package/.aether/utils/worktree.sh +97 -0
  80. package/.claude/commands/ant/archaeology.md +2 -2
  81. package/.claude/commands/ant/chaos.md +4 -4
  82. package/.claude/commands/ant/colonize.md +9 -9
  83. package/.claude/commands/ant/council.md +6 -6
  84. package/.claude/commands/ant/data-clean.md +3 -3
  85. package/.claude/commands/ant/dream.md +2 -2
  86. package/.claude/commands/ant/entomb.md +9 -9
  87. package/.claude/commands/ant/export-signals.md +2 -2
  88. package/.claude/commands/ant/feedback.md +4 -4
  89. package/.claude/commands/ant/flag.md +2 -2
  90. package/.claude/commands/ant/flags.md +4 -4
  91. package/.claude/commands/ant/focus.md +4 -4
  92. package/.claude/commands/ant/help.md +1 -1
  93. package/.claude/commands/ant/history.md +1 -1
  94. package/.claude/commands/ant/import-signals.md +2 -2
  95. package/.claude/commands/ant/init.md +44 -27
  96. package/.claude/commands/ant/insert-phase.md +1 -1
  97. package/.claude/commands/ant/interpret.md +2 -2
  98. package/.claude/commands/ant/lay-eggs.md +2 -2
  99. package/.claude/commands/ant/maturity.md +2 -2
  100. package/.claude/commands/ant/memory-details.md +1 -1
  101. package/.claude/commands/ant/migrate-state.md +1 -1
  102. package/.claude/commands/ant/oracle.md +78 -42
  103. package/.claude/commands/ant/organize.md +3 -3
  104. package/.claude/commands/ant/patrol.md +8 -8
  105. package/.claude/commands/ant/pause-colony.md +5 -5
  106. package/.claude/commands/ant/phase.md +1 -1
  107. package/.claude/commands/ant/pheromones.md +1 -1
  108. package/.claude/commands/ant/plan.md +8 -8
  109. package/.claude/commands/ant/quick.md +4 -4
  110. package/.claude/commands/ant/redirect.md +4 -4
  111. package/.claude/commands/ant/resume-colony.md +5 -5
  112. package/.claude/commands/ant/resume.md +17 -29
  113. package/.claude/commands/ant/run.md +10 -10
  114. package/.claude/commands/ant/seal.md +25 -25
  115. package/.claude/commands/ant/skill-create.md +2 -2
  116. package/.claude/commands/ant/status.md +14 -14
  117. package/.claude/commands/ant/swarm.md +14 -14
  118. package/.claude/commands/ant/tunnels.md +4 -4
  119. package/.claude/commands/ant/update.md +1 -1
  120. package/.claude/commands/ant/verify-castes.md +2 -2
  121. package/.claude/commands/ant/watch.md +8 -8
  122. package/.opencode/commands/ant/archaeology.md +1 -1
  123. package/.opencode/commands/ant/build.md +80 -45
  124. package/.opencode/commands/ant/chaos.md +3 -3
  125. package/.opencode/commands/ant/colonize.md +8 -8
  126. package/.opencode/commands/ant/continue.md +40 -40
  127. package/.opencode/commands/ant/council.md +5 -5
  128. package/.opencode/commands/ant/data-clean.md +2 -2
  129. package/.opencode/commands/ant/dream.md +1 -1
  130. package/.opencode/commands/ant/entomb.md +3 -3
  131. package/.opencode/commands/ant/export-signals.md +1 -1
  132. package/.opencode/commands/ant/feedback.md +2 -2
  133. package/.opencode/commands/ant/flag.md +1 -1
  134. package/.opencode/commands/ant/flags.md +3 -3
  135. package/.opencode/commands/ant/focus.md +2 -2
  136. package/.opencode/commands/ant/import-signals.md +1 -1
  137. package/.opencode/commands/ant/init.md +44 -27
  138. package/.opencode/commands/ant/insert-phase.md +1 -1
  139. package/.opencode/commands/ant/interpret.md +1 -1
  140. package/.opencode/commands/ant/lay-eggs.md +2 -2
  141. package/.opencode/commands/ant/maturity.md +1 -1
  142. package/.opencode/commands/ant/memory-details.md +1 -1
  143. package/.opencode/commands/ant/oracle.md +69 -40
  144. package/.opencode/commands/ant/organize.md +2 -2
  145. package/.opencode/commands/ant/patrol.md +8 -8
  146. package/.opencode/commands/ant/pause-colony.md +2 -2
  147. package/.opencode/commands/ant/pheromones.md +1 -1
  148. package/.opencode/commands/ant/plan.md +6 -6
  149. package/.opencode/commands/ant/quick.md +4 -4
  150. package/.opencode/commands/ant/redirect.md +2 -2
  151. package/.opencode/commands/ant/resume-colony.md +4 -4
  152. package/.opencode/commands/ant/resume.md +5 -17
  153. package/.opencode/commands/ant/run.md +10 -10
  154. package/.opencode/commands/ant/seal.md +8 -8
  155. package/.opencode/commands/ant/skill-create.md +2 -2
  156. package/.opencode/commands/ant/status.md +10 -10
  157. package/.opencode/commands/ant/tunnels.md +3 -3
  158. package/.opencode/commands/ant/verify-castes.md +1 -1
  159. package/.opencode/commands/ant/watch.md +7 -7
  160. package/CHANGELOG.md +83 -0
  161. package/README.md +22 -9
  162. package/bin/cli.js +118 -3
  163. package/bin/lib/binary-downloader.js +267 -0
  164. package/bin/lib/update-transaction.js +27 -3
  165. package/bin/lib/version-gate.js +179 -0
  166. package/bin/npx-entry.js +0 -0
  167. package/package.json +1 -1
  168. package/.aether/agents/aether-ambassador.md +0 -140
  169. package/.aether/agents/aether-archaeologist.md +0 -108
  170. package/.aether/agents/aether-architect.md +0 -133
  171. package/.aether/agents/aether-auditor.md +0 -144
  172. package/.aether/agents/aether-builder.md +0 -184
  173. package/.aether/agents/aether-chaos.md +0 -115
  174. package/.aether/agents/aether-chronicler.md +0 -122
  175. package/.aether/agents/aether-gatekeeper.md +0 -116
  176. package/.aether/agents/aether-includer.md +0 -117
  177. package/.aether/agents/aether-keeper.md +0 -177
  178. package/.aether/agents/aether-measurer.md +0 -128
  179. package/.aether/agents/aether-oracle.md +0 -137
  180. package/.aether/agents/aether-probe.md +0 -133
  181. package/.aether/agents/aether-queen.md +0 -286
  182. package/.aether/agents/aether-route-setter.md +0 -130
  183. package/.aether/agents/aether-sage.md +0 -106
  184. package/.aether/agents/aether-scout.md +0 -101
  185. package/.aether/agents/aether-surveyor-disciplines.md +0 -391
  186. package/.aether/agents/aether-surveyor-nest.md +0 -329
  187. package/.aether/agents/aether-surveyor-pathogens.md +0 -264
  188. package/.aether/agents/aether-surveyor-provisions.md +0 -334
  189. package/.aether/agents/aether-tracker.md +0 -137
  190. package/.aether/agents/aether-watcher.md +0 -174
  191. package/.aether/agents/aether-weaver.md +0 -130
  192. package/.aether/commands/claude/archaeology.md +0 -334
  193. package/.aether/commands/claude/build.md +0 -65
  194. package/.aether/commands/claude/chaos.md +0 -336
  195. package/.aether/commands/claude/colonize.md +0 -259
  196. package/.aether/commands/claude/continue.md +0 -60
  197. package/.aether/commands/claude/council.md +0 -507
  198. package/.aether/commands/claude/data-clean.md +0 -81
  199. package/.aether/commands/claude/dream.md +0 -268
  200. package/.aether/commands/claude/entomb.md +0 -498
  201. package/.aether/commands/claude/export-signals.md +0 -57
  202. package/.aether/commands/claude/feedback.md +0 -96
  203. package/.aether/commands/claude/flag.md +0 -151
  204. package/.aether/commands/claude/flags.md +0 -169
  205. package/.aether/commands/claude/focus.md +0 -76
  206. package/.aether/commands/claude/help.md +0 -154
  207. package/.aether/commands/claude/history.md +0 -140
  208. package/.aether/commands/claude/import-signals.md +0 -71
  209. package/.aether/commands/claude/init.md +0 -505
  210. package/.aether/commands/claude/insert-phase.md +0 -105
  211. package/.aether/commands/claude/interpret.md +0 -278
  212. package/.aether/commands/claude/lay-eggs.md +0 -210
  213. package/.aether/commands/claude/maturity.md +0 -113
  214. package/.aether/commands/claude/memory-details.md +0 -77
  215. package/.aether/commands/claude/migrate-state.md +0 -171
  216. package/.aether/commands/claude/oracle.md +0 -642
  217. package/.aether/commands/claude/organize.md +0 -232
  218. package/.aether/commands/claude/patrol.md +0 -620
  219. package/.aether/commands/claude/pause-colony.md +0 -233
  220. package/.aether/commands/claude/phase.md +0 -115
  221. package/.aether/commands/claude/pheromones.md +0 -156
  222. package/.aether/commands/claude/plan.md +0 -693
  223. package/.aether/commands/claude/preferences.md +0 -65
  224. package/.aether/commands/claude/quick.md +0 -100
  225. package/.aether/commands/claude/redirect.md +0 -76
  226. package/.aether/commands/claude/resume-colony.md +0 -197
  227. package/.aether/commands/claude/resume.md +0 -388
  228. package/.aether/commands/claude/run.md +0 -231
  229. package/.aether/commands/claude/seal.md +0 -774
  230. package/.aether/commands/claude/skill-create.md +0 -286
  231. package/.aether/commands/claude/status.md +0 -410
  232. package/.aether/commands/claude/swarm.md +0 -349
  233. package/.aether/commands/claude/tunnels.md +0 -426
  234. package/.aether/commands/claude/update.md +0 -132
  235. package/.aether/commands/claude/verify-castes.md +0 -143
  236. package/.aether/commands/claude/watch.md +0 -239
  237. package/.aether/commands/opencode/archaeology.md +0 -331
  238. package/.aether/commands/opencode/build.md +0 -1168
  239. package/.aether/commands/opencode/chaos.md +0 -329
  240. package/.aether/commands/opencode/colonize.md +0 -195
  241. package/.aether/commands/opencode/continue.md +0 -1436
  242. package/.aether/commands/opencode/council.md +0 -437
  243. package/.aether/commands/opencode/data-clean.md +0 -77
  244. package/.aether/commands/opencode/dream.md +0 -260
  245. package/.aether/commands/opencode/entomb.md +0 -377
  246. package/.aether/commands/opencode/export-signals.md +0 -54
  247. package/.aether/commands/opencode/feedback.md +0 -99
  248. package/.aether/commands/opencode/flag.md +0 -149
  249. package/.aether/commands/opencode/flags.md +0 -167
  250. package/.aether/commands/opencode/focus.md +0 -73
  251. package/.aether/commands/opencode/help.md +0 -157
  252. package/.aether/commands/opencode/history.md +0 -136
  253. package/.aether/commands/opencode/import-signals.md +0 -68
  254. package/.aether/commands/opencode/init.md +0 -518
  255. package/.aether/commands/opencode/insert-phase.md +0 -111
  256. package/.aether/commands/opencode/interpret.md +0 -272
  257. package/.aether/commands/opencode/lay-eggs.md +0 -213
  258. package/.aether/commands/opencode/maturity.md +0 -108
  259. package/.aether/commands/opencode/memory-details.md +0 -83
  260. package/.aether/commands/opencode/migrate-state.md +0 -165
  261. package/.aether/commands/opencode/oracle.md +0 -593
  262. package/.aether/commands/opencode/organize.md +0 -226
  263. package/.aether/commands/opencode/patrol.md +0 -626
  264. package/.aether/commands/opencode/pause-colony.md +0 -203
  265. package/.aether/commands/opencode/phase.md +0 -113
  266. package/.aether/commands/opencode/pheromones.md +0 -162
  267. package/.aether/commands/opencode/plan.md +0 -684
  268. package/.aether/commands/opencode/preferences.md +0 -71
  269. package/.aether/commands/opencode/quick.md +0 -91
  270. package/.aether/commands/opencode/redirect.md +0 -84
  271. package/.aether/commands/opencode/resume-colony.md +0 -190
  272. package/.aether/commands/opencode/resume.md +0 -394
  273. package/.aether/commands/opencode/run.md +0 -237
  274. package/.aether/commands/opencode/seal.md +0 -452
  275. package/.aether/commands/opencode/skill-create.md +0 -63
  276. package/.aether/commands/opencode/status.md +0 -307
  277. package/.aether/commands/opencode/swarm.md +0 -15
  278. package/.aether/commands/opencode/tunnels.md +0 -400
  279. package/.aether/commands/opencode/update.md +0 -127
  280. package/.aether/commands/opencode/verify-castes.md +0 -139
  281. package/.aether/commands/opencode/watch.md +0 -227
@@ -25,14 +25,14 @@ REVIEW_CONTEXT=$(bash "$AETHER_UTILS" pr-context --compact 2>/dev/null) || true
25
25
 
26
26
  Spawn the Watcher using Task tool with `subagent_type="aether-watcher"`, include `description: "👁️ Watcher {Watcher-Name}: Independent verification"` (DO NOT use run_in_background - task blocks until complete):
27
27
 
28
- Run using the Bash tool with description "Dispatching watcher...": `bash .aether/aether-utils.sh spawn-log "Queen" "watcher" "{watcher_name}" "Independent verification"`
28
+ Run using the Bash tool with description "Dispatching watcher...": `aether spawn-log "Queen" "watcher" "{watcher_name}" "Independent verification"`
29
29
 
30
30
  **Load skills for the Watcher role (NON-BLOCKING):**
31
31
 
32
32
  ```bash
33
- skill_match_result=$(bash .aether/aether-utils.sh skill-match "watcher" "{verification_context}" 2>/dev/null)
34
- skill_inject_result=$(bash .aether/aether-utils.sh skill-inject "$(echo $skill_match_result | jq -r '.result')" 2>/dev/null)
35
- skill_section=$(echo "$skill_inject_result" | jq -r '.result.skill_section // ""')
33
+ skill_match_result=$(aether skill-match "watcher" "{verification_context}" 2>/dev/null)
34
+ skill_inject_result=$(aether skill-inject "$(printf '%s\n' "$skill_match_result" | jq -r '.result')" 2>/dev/null)
35
+ skill_section=$(printf '%s\n' "$skill_inject_result" | jq -r '.result.skill_section // ""')
36
36
  ```
37
37
 
38
38
  Display: `🧠 Skills loaded for watcher verification`
@@ -85,7 +85,7 @@ Return ONLY this JSON:
85
85
  **Task call returns results directly (no TaskOutput needed).**
86
86
 
87
87
  Validate watcher payload first:
88
- Run using the Bash tool with description "Validating watcher response...": `bash .aether/aether-utils.sh validate-worker-response watcher '{watcher_json}'`
88
+ Run using the Bash tool with description "Validating watcher response...": `aether validate-worker-response watcher '{watcher_json}'`
89
89
 
90
90
  **Parse the Watcher's validated JSON response:** verification_passed, issues_found, quality_score, recommendation
91
91
 
@@ -138,8 +138,8 @@ For failed verification:
138
138
 
139
139
  3. **Generate Measurer name and dispatch:**
140
140
 
141
- Run using the Bash tool with description "Naming measurer...": `bash .aether/aether-utils.sh generate-ant-name "measurer"` (store as `{measurer_name}`)
142
- Run using the Bash tool with description "Dispatching measurer...": `bash .aether/aether-utils.sh spawn-log "Queen" "measurer" "{measurer_name}" "Performance baseline measurement"`
141
+ Run using the Bash tool with description "Naming measurer...": `aether generate-ant-name "measurer"` (store as `{measurer_name}`)
142
+ Run using the Bash tool with description "Dispatching measurer...": `aether spawn-log "Queen" "measurer" "{measurer_name}" "Performance baseline measurement"`
143
143
 
144
144
  Display:
145
145
  ```
@@ -184,7 +184,7 @@ For failed verification:
184
184
 
185
185
  **IMPORTANT:** You are strictly read-only. Do not modify any files.
186
186
 
187
- Log activity: bash .aether/aether-utils.sh activity-log "BENCHMARKING" "{Measurer-Name}" "description"
187
+ Log activity: aether activity-log "BENCHMARKING" "{Measurer-Name}" "description"
188
188
 
189
189
  Return ONLY this JSON (no other text):
190
190
  {
@@ -216,7 +216,7 @@ For failed verification:
216
216
  Extract from response: `baselines_established`, `bottlenecks_identified`, `recommendations`, `tool_count`
217
217
 
218
218
  Log completion:
219
- Run using the Bash tool with description "Recording measurer completion...": `bash .aether/aether-utils.sh spawn-complete "{measurer_name}" "completed" "Baselines established, bottlenecks identified"`
219
+ Run using the Bash tool with description "Recording measurer completion...": `aether spawn-complete "{measurer_name}" "completed" "Baselines established, bottlenecks identified"`
220
220
 
221
221
  **Display Measurer completion line:**
222
222
  ```
@@ -227,17 +227,17 @@ For failed verification:
227
227
 
228
228
  For each baseline established, run using the Bash tool with description "Logging baseline...":
229
229
  ```bash
230
- bash .aether/aether-utils.sh midden-write "performance" "Baseline: {baseline.operation} ({baseline.complexity}) at {baseline.file}:{baseline.line}" "measurer"
230
+ aether midden-write "performance" "Baseline: {baseline.operation} ({baseline.complexity}) at {baseline.file}:{baseline.line}" "measurer"
231
231
  ```
232
232
 
233
233
  For each bottleneck identified, run using the Bash tool with description "Logging bottleneck...":
234
234
  ```bash
235
- bash .aether/aether-utils.sh midden-write "performance" "Bottleneck: {bottleneck.description} ({bottleneck.severity}) at {bottleneck.location}" "measurer"
235
+ aether midden-write "performance" "Bottleneck: {bottleneck.description} ({bottleneck.severity}) at {bottleneck.location}" "measurer"
236
236
  ```
237
237
 
238
238
  For each recommendation, run using the Bash tool with description "Logging recommendation...":
239
239
  ```bash
240
- bash .aether/aether-utils.sh midden-write "performance" "Recommendation (P{rec.priority}): {rec.change} - {rec.estimated_improvement}" "measurer"
240
+ aether midden-write "performance" "Recommendation (P{rec.priority}): {rec.change} - {rec.estimated_improvement}" "measurer"
241
241
  ```
242
242
 
243
243
  8. **Display summary and store for synthesis:**
@@ -265,10 +265,10 @@ For failed verification:
265
265
  **After the Watcher completes, spawn a Chaos Ant to probe the phase work for edge cases and boundary conditions.**
266
266
 
267
267
  Generate a chaos ant name and dispatch:
268
- Run using the Bash tool with description "Naming chaos ant...": `bash .aether/aether-utils.sh generate-ant-name "chaos"` (store as `{chaos_name}`)
269
- Run using the Bash tool with description "Loading existing flags...": `bash .aether/aether-utils.sh flag-list --phase {phase_number}`
268
+ Run using the Bash tool with description "Naming chaos ant...": `aether generate-ant-name "chaos"` (store as `{chaos_name}`)
269
+ Run using the Bash tool with description "Loading existing flags...": `aether flag-list --phase {phase_number}`
270
270
  Parse the result and extract unresolved flag titles into a list: `{existing_flag_titles}` (comma-separated titles from `.result.flags[].title`). If no flags exist, set `{existing_flag_titles}` to "None".
271
- Run using the Bash tool with description "Dispatching chaos ant...": `bash .aether/aether-utils.sh spawn-log "Queen" "chaos" "{chaos_name}" "Resilience testing of Phase {id} work"`
271
+ Run using the Bash tool with description "Dispatching chaos ant...": `aether spawn-log "Queen" "chaos" "{chaos_name}" "Resilience testing of Phase {id} work"`
272
272
 
273
273
  **Announce the resilience testing wave:**
274
274
  ```
@@ -324,13 +324,13 @@ Return ONLY this JSON:
324
324
  **Flag critical/high findings:**
325
325
 
326
326
  If any findings have severity `"critical"` or `"high"`:
327
- Run using the Bash tool with description "Flagging {finding.title}...": `bash .aether/aether-utils.sh flag-add "blocker" "{finding.title}" "{finding.description}" "chaos-testing" {phase_number} && bash .aether/aether-utils.sh activity-log "FLAG" "Chaos" "Created blocker: {finding.title}"`
327
+ Run using the Bash tool with description "Flagging {finding.title}...": `aether flag-add "blocker" "{finding.title}" "{finding.description}" "chaos-testing" {phase_number} && aether activity-log "FLAG" "Chaos" "Created blocker: {finding.title}"`
328
328
 
329
329
  **Log resilience finding to midden (MEM-02):**
330
330
 
331
331
  For each critical/high finding, run using the Bash tool with description "Logging resilience finding...":
332
332
  ```bash
333
- colony_name=$(bash .aether/aether-utils.sh colony-name 2>/dev/null | jq -r '.result.name // ""')
333
+ colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
334
334
  [[ -z "$colony_name" ]] && colony_name="unknown"
335
335
  phase_num=$(jq -r '.phase.number // "unknown"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "unknown")
336
336
 
@@ -348,10 +348,10 @@ cat >> .aether/midden/build-failures.md << EOF
348
348
  EOF
349
349
 
350
350
  # Write to structured midden for threshold detection (MID-01)
351
- bash .aether/aether-utils.sh midden-write "resilience" "Chaos finding: ${finding.title} (${finding.severity})" "chaos" 2>/dev/null || true
351
+ aether midden-write "resilience" "Chaos finding: ${finding.title} (${finding.severity})" "chaos" 2>/dev/null || true
352
352
 
353
353
  # Capture resilience failure in memory pipeline (observe + pheromone + auto-promotion)
354
- bash .aether/aether-utils.sh memory-capture \
354
+ aether memory-capture \
355
355
  "failure" \
356
356
  "Resilience issue found: ${finding.title} (${finding.severity})" \
357
357
  "failure" \
@@ -359,7 +359,7 @@ bash .aether/aether-utils.sh memory-capture \
359
359
  ```
360
360
 
361
361
  Log chaos ant completion:
362
- Run using the Bash tool with description "Recording chaos completion...": `bash .aether/aether-utils.sh spawn-complete "{chaos_name}" "completed" "{summary}"`
362
+ Run using the Bash tool with description "Recording chaos completion...": `aether spawn-complete "{chaos_name}" "completed" "{summary}"`
363
363
 
364
364
  **Success capture: chaos resilience (MEM-01):**
365
365
 
@@ -367,7 +367,7 @@ If `overall_resilience` is `"strong"`:
367
367
 
368
368
  Run using the Bash tool with description "Capturing chaos resilience success...":
369
369
  ```bash
370
- bash .aether/aether-utils.sh memory-capture \
370
+ aether memory-capture \
371
371
  "success" \
372
372
  "Chaos resilience strong: ${summary}" \
373
373
  "pattern" \
@@ -381,13 +381,13 @@ This records the resilience success in learning-observations.json via the existi
381
381
  If the Watcher reported `verification_passed: false` or `recommendation: "fix_required"`:
382
382
 
383
383
  For each issue in `issues_found`:
384
- Run using the Bash tool with description "Flagging {issue_title}...": `bash .aether/aether-utils.sh flag-add "blocker" "{issue_title}" "{issue_description}" "verification" {phase_number} && bash .aether/aether-utils.sh activity-log "FLAG" "Watcher" "Created blocker: {issue_title}"`
384
+ Run using the Bash tool with description "Flagging {issue_title}...": `aether flag-add "blocker" "{issue_title}" "{issue_description}" "verification" {phase_number} && aether activity-log "FLAG" "Watcher" "Created blocker: {issue_title}"`
385
385
 
386
386
  **Log verification failure to midden (MEM-02):**
387
387
 
388
388
  After flagging each issue, run using the Bash tool with description "Logging verification failure...":
389
389
  ```bash
390
- colony_name=$(bash .aether/aether-utils.sh colony-name 2>/dev/null | jq -r '.result.name // ""')
390
+ colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
391
391
  [[ -z "$colony_name" ]] && colony_name="unknown"
392
392
  phase_num=$(jq -r '.phase.number // "unknown"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "unknown")
393
393
 
@@ -405,10 +405,10 @@ cat >> .aether/midden/test-failures.md << EOF
405
405
  EOF
406
406
 
407
407
  # Write to structured midden for threshold detection (MID-01)
408
- bash .aether/aether-utils.sh midden-write "verification" "Watcher verification failed: ${issue_title}" "watcher" 2>/dev/null || true
408
+ aether midden-write "verification" "Watcher verification failed: ${issue_title}" "watcher" 2>/dev/null || true
409
409
 
410
410
  # Capture verification failure in memory pipeline (observe + pheromone + auto-promotion)
411
- bash .aether/aether-utils.sh memory-capture \
411
+ aether memory-capture \
412
412
  "failure" \
413
413
  "Verification failed: ${issue_title} - ${issue_description}" \
414
414
  "failure" \
@@ -427,7 +427,7 @@ Run using the Bash tool with description "Collecting midden from merged branch..
427
427
  ```bash
428
428
  # Only runs if merge context is available
429
429
  if [[ -n "${last_merged_branch:-}" && -n "${last_merge_sha:-}" ]]; then
430
- collect_result=$(bash .aether/aether-utils.sh midden-collect \
430
+ collect_result=$(aether midden-collect \
431
431
  --branch "$last_merged_branch" --merge-sha "$last_merge_sha" \
432
432
  2>/dev/null || echo '{"ok":false}')
433
433
  collect_ok=$(echo "$collect_result" | jq -r '.ok // false' 2>/dev/null)
@@ -440,7 +440,7 @@ if [[ -n "${last_merged_branch:-}" && -n "${last_merge_sha:-}" ]]; then
440
440
  fi
441
441
 
442
442
  # Run cross-PR analysis after collection (per D-05)
443
- analysis_result=$(bash .aether/aether-utils.sh midden-cross-pr-analysis --window 14 \
443
+ analysis_result=$(aether midden-cross-pr-analysis --window 14 \
444
444
  2>/dev/null || echo '{"ok":false}')
445
445
  analysis_ok=$(echo "$analysis_result" | jq -r '.ok // false' 2>/dev/null)
446
446
  if [[ "$analysis_ok" == "true" ]]; then
@@ -4,7 +4,7 @@ Before modifying colony state during the build, create a rolling backup:
4
4
 
5
5
  Run using the Bash tool with description "Checkpointing colony state...":
6
6
  ```bash
7
- bash .aether/aether-utils.sh state-checkpoint "pre-build-wave" 2>/dev/null || echo "Warning: State checkpoint failed -- continuing without backup" >&2
7
+ aether state-checkpoint "pre-build-wave" 2>/dev/null || echo "Warning: State checkpoint failed -- continuing without backup" >&2
8
8
  ```
9
9
 
10
10
  This creates a timestamped backup of COLONY_STATE.json in `.aether/data/backups/` with at most 3 retained.
@@ -39,9 +39,9 @@ Analyze the phase tasks:
39
39
 
40
40
  3. **Generate ant names for each worker:**
41
41
 
42
- Run using the Bash tool with description "Naming builder ant...": `bash .aether/aether-utils.sh generate-ant-name "builder"`
43
- Run using the Bash tool with description "Naming watcher ant...": `bash .aether/aether-utils.sh generate-ant-name "watcher"`
44
- Run using the Bash tool with description "Naming chaos ant...": `bash .aether/aether-utils.sh generate-ant-name "chaos"`
42
+ Run using the Bash tool with description "Naming builder ant...": `aether generate-ant-name "builder"`
43
+ Run using the Bash tool with description "Naming watcher ant...": `aether generate-ant-name "watcher"`
44
+ Run using the Bash tool with description "Naming chaos ant...": `aether generate-ant-name "chaos"`
45
45
 
46
46
  Display spawn plan with caste emojis:
47
47
  ```
@@ -87,10 +87,10 @@ The `colony_depth` value is available from build-prep.md cross-stage state.
87
87
  **Oracle runs BEFORE worker waves. Failure is non-blocking -- the build continues with a warning.**
88
88
 
89
89
  1. **Generate Oracle name:**
90
- Run using the Bash tool with description "Naming oracle ant...": `bash .aether/aether-utils.sh generate-ant-name "oracle"` (store as `{oracle_name}`)
90
+ Run using the Bash tool with description "Naming oracle ant...": `aether generate-ant-name "oracle"` (store as `{oracle_name}`)
91
91
 
92
92
  2. **Log spawn:**
93
- Run using the Bash tool with description "Dispatching oracle...": `bash .aether/aether-utils.sh spawn-log "Queen" "oracle" "{oracle_name}" "Phase {phase_id} research"`
93
+ Run using the Bash tool with description "Dispatching oracle...": `aether spawn-log "Queen" "oracle" "{oracle_name}" "Phase {phase_id} research"`
94
94
 
95
95
  3. **Display announcement:**
96
96
  ```
@@ -148,7 +148,7 @@ The `colony_depth` value is available from build-prep.md cross-stage state.
148
148
  ```
149
149
 
150
150
  6. **Log completion:**
151
- Run using the Bash tool with description "Recording oracle completion...": `bash .aether/aether-utils.sh spawn-complete "{oracle_name}" "{status}" "{summary}"`
151
+ Run using the Bash tool with description "Recording oracle completion...": `aether spawn-complete "{oracle_name}" "{status}" "{summary}"`
152
152
 
153
153
  ### Step 5.0.2: Architect Design Step (Non-Blocking)
154
154
 
@@ -161,10 +161,10 @@ Architect depends on Oracle findings. If Oracle was skipped, Architect must also
161
161
  **Architect runs AFTER Oracle, BEFORE worker waves. Failure is non-blocking -- the build continues with a warning.**
162
162
 
163
163
  1. **Generate Architect name:**
164
- Run using the Bash tool with description "Naming architect ant...": `bash .aether/aether-utils.sh generate-ant-name "architect"` (store as `{architect_name}`)
164
+ Run using the Bash tool with description "Naming architect ant...": `aether generate-ant-name "architect"` (store as `{architect_name}`)
165
165
 
166
166
  2. **Log spawn:**
167
- Run using the Bash tool with description "Dispatching architect...": `bash .aether/aether-utils.sh spawn-log "Queen" "architect" "{architect_name}" "Phase {phase_id} design"`
167
+ Run using the Bash tool with description "Dispatching architect...": `aether spawn-log "Queen" "architect" "{architect_name}" "Phase {phase_id} design"`
168
168
 
169
169
  3. **Display announcement:**
170
170
  ```
@@ -223,7 +223,7 @@ Architect depends on Oracle findings. If Oracle was skipped, Architect must also
223
223
  ```
224
224
 
225
225
  6. **Log completion:**
226
- Run using the Bash tool with description "Recording architect completion...": `bash .aether/aether-utils.sh spawn-complete "{architect_name}" "{status}" "{summary}"`
226
+ Run using the Bash tool with description "Recording architect completion...": `aether spawn-complete "{architect_name}" "{status}" "{summary}"`
227
227
 
228
228
  ### Step 5.0.5: Select and Announce Workflow Pattern
229
229
 
@@ -302,8 +302,8 @@ Parse the JSON result. If `is_integration_phase` is `"false"`:
302
302
  If `is_integration_phase` is `"true"`:
303
303
 
304
304
  1. **Generate Ambassador name and dispatch:**
305
- Run using the Bash tool with description "Naming ambassador...": `bash .aether/aether-utils.sh generate-ant-name "ambassador"` (store as `{ambassador_name}`)
306
- Run using the Bash tool with description "Dispatching ambassador...": `bash .aether/aether-utils.sh spawn-log "Queen" "ambassador" "{ambassador_name}" "External integration design"`
305
+ Run using the Bash tool with description "Naming ambassador...": `aether generate-ant-name "ambassador"` (store as `{ambassador_name}`)
306
+ Run using the Bash tool with description "Dispatching ambassador...": `aether spawn-log "Queen" "ambassador" "{ambassador_name}" "External integration design"`
307
307
 
308
308
  Display:
309
309
  ```
@@ -353,7 +353,7 @@ If `is_integration_phase` is `"true"`:
353
353
  - HTTPS only
354
354
  - Validate SSL certificates
355
355
 
356
- Log activity: bash .aether/aether-utils.sh activity-log "RESEARCH" "{Ambassador-Name}" "description"
356
+ Log activity: aether activity-log "RESEARCH" "{Ambassador-Name}" "description"
357
357
 
358
358
  Return ONLY this JSON (no other text):
359
359
  {
@@ -382,7 +382,7 @@ If `is_integration_phase` is `"true"`:
382
382
  Extract from response: `integration_plan`, `env_vars_required`, `error_scenarios_covered`, `blockers`
383
383
 
384
384
  Log completion:
385
- Run using the Bash tool with description "Recording ambassador completion...": `bash .aether/aether-utils.sh spawn-complete "{ambassador_name}" "completed" "Integration design complete"`
385
+ Run using the Bash tool with description "Recording ambassador completion...": `aether spawn-complete "{ambassador_name}" "completed" "Integration design complete"`
386
386
 
387
387
  **Display Ambassador completion line:**
388
388
  ```
@@ -392,12 +392,12 @@ If `is_integration_phase` is `"true"`:
392
392
  4. **Log integration plan to midden:**
393
393
  Run using the Bash tool with description "Logging integration plan...":
394
394
  ```bash
395
- bash .aether/aether-utils.sh midden-write "integration" "Plan for {integration_plan.service_name}: {integration_plan.integration_pattern} pattern, auth via {integration_plan.authentication_method}" "ambassador"
395
+ aether midden-write "integration" "Plan for {integration_plan.service_name}: {integration_plan.integration_pattern} pattern, auth via {integration_plan.authentication_method}" "ambassador"
396
396
  ```
397
397
 
398
398
  For each env var required:
399
399
  ```bash
400
- bash .aether/aether-utils.sh midden-write "integration" "Required env var: {env_var}" "ambassador"
400
+ aether midden-write "integration" "Required env var: {env_var}" "ambassador"
401
401
  ```
402
402
 
403
403
  5. **Display integration summary:**
@@ -415,14 +415,14 @@ If `is_integration_phase` is `"true"`:
415
415
  Store the `integration_plan` object to be injected into Builder prompts in the standard Wave 1 spawn.
416
416
 
417
417
  **First, mark build start in context:**
418
- Run using the Bash tool with description "Marking build start...": `bash .aether/aether-utils.sh context-update build-start {phase_id} {wave_1_worker_count} {wave_1_task_count}`
418
+ Run using the Bash tool with description "Marking build start...": `aether context-update build-start {phase_id} {wave_1_worker_count} {wave_1_task_count}`
419
419
 
420
420
  Before dispatching each worker, refresh colony context so new pheromones/memory are visible:
421
- Run using the Bash tool with description "Refreshing colony context...": `prime_result=$(bash .aether/aether-utils.sh colony-prime --compact 2>/dev/null)` and update `prompt_section` from `prime_result.result.prompt_section`.
421
+ Run using the Bash tool with description "Refreshing colony context...": `prime_result=$(aether colony-prime --compact 2>/dev/null)` and update `prompt_section` from `prime_result.result.prompt_section`.
422
422
 
423
423
  **PER WAVE:** Query midden for recent failures to inject into builder context:
424
424
  Run using the Bash tool with description "Checking midden for recent failures...":
425
- `midden_result=$(bash .aether/aether-utils.sh midden-recent-failures 3 2>/dev/null || echo '{"count":0,"failures":[]}')`
425
+ `midden_result=$(aether midden-recent-failures 3 2>/dev/null || echo '{"count":0,"failures":[]}')`
426
426
 
427
427
  Parse `midden_result`. If `count > 0`, format as `midden_context`:
428
428
  ```
@@ -442,7 +442,7 @@ For each Wave 1 task, use Task tool with `subagent_type="aether-builder"`, inclu
442
442
  **PER WORKER:** Build graveyard caution context automatically:
443
443
  - Identify explicit repo file paths from the task metadata (`files`, `hints`, `constraints`, and description when a concrete path is present).
444
444
  - For each identified file path, run using the Bash tool with description "Checking graveyard cautions for {file}...":
445
- `bash .aether/aether-utils.sh grave-check "{file}"`
445
+ `aether grave-check "{file}"`
446
446
  - Parse each JSON result and keep only entries where `caution_level` is `high` or `low`.
447
447
  - Merge these into a single `grave_context` block for that worker.
448
448
  - **Budget cap:** `grave_context` must not exceed 2000 characters per worker. If it exceeds the cap, truncate and append `[graveyard truncated]`.
@@ -453,11 +453,11 @@ For each Wave 1 task, use Task tool with `subagent_type="aether-builder"`, inclu
453
453
  **PER WORKER:** Match and inject skills for the worker's role and task:
454
454
  Run using the Bash tool with description "Matching skills for {ant_name}...":
455
455
  ```bash
456
- skill_match_result=$(bash .aether/aether-utils.sh skill-match "builder" "{task_description}" 2>/dev/null) || skill_match_result='{"result":{"colony_skills":[],"domain_skills":[]}}'
457
- skill_inject_result=$(bash .aether/aether-utils.sh skill-inject "$(echo "$skill_match_result" | jq -r '.result')" 2>/dev/null) || skill_inject_result='{"result":{"skill_section":"","colony_count":0,"domain_count":0}}'
458
- skill_section=$(echo "$skill_inject_result" | jq -r '.result.skill_section // ""')
459
- skill_colony_count=$(echo "$skill_inject_result" | jq -r '.result.colony_count // 0')
460
- skill_domain_count=$(echo "$skill_inject_result" | jq -r '.result.domain_count // 0')
456
+ skill_match_result=$(aether skill-match "builder" "{task_description}" 2>/dev/null) || skill_match_result='{"result":{"colony_skills":[],"domain_skills":[]}}'
457
+ skill_inject_result=$(aether skill-inject "$(printf '%s\n' "$skill_match_result" | jq -r '.result')" 2>/dev/null) || skill_inject_result='{"result":{"skill_section":"","colony_count":0,"domain_count":0}}'
458
+ skill_section=$(printf '%s\n' "$skill_inject_result" | jq -r '.result.skill_section // ""')
459
+ skill_colony_count=$(printf '%s\n' "$skill_inject_result" | jq -r '.result.colony_count // 0')
460
+ skill_domain_count=$(printf '%s\n' "$skill_inject_result" | jq -r '.result.domain_count // 0')
461
461
  ```
462
462
 
463
463
  Display per worker:
@@ -465,7 +465,7 @@ Display per worker:
465
465
  🧠 Skills: {colony_count} colony + {domain_count} domain loaded for builder
466
466
  ```
467
467
 
468
- **PER WORKER:** Run using the Bash tool with description "Preparing worker {name}...": `bash .aether/aether-utils.sh spawn-log "Queen" "builder" "{ant_name}" "{task_description}" && bash .aether/aether-utils.sh context-update worker-spawn "{ant_name}" "builder" "{task_description}"`
468
+ **PER WORKER:** Run using the Bash tool with description "Preparing worker {name}...": `aether spawn-log "Queen" "builder" "{ant_name}" "{task_description}" && aether context-update worker-spawn "{ant_name}" "builder" "{task_description}"`
469
469
 
470
470
  **Context layer budget caps (enforce before injecting into prompt):**
471
471
  - `archaeology_context`: cap at 4000 characters. If it exceeds the cap, truncate and append `[archaeology truncated]`.
@@ -533,7 +533,7 @@ Work:
533
533
  **Approach Change Logging:**
534
534
  If you try an approach that doesn't work and switch to a different approach, log it:
535
535
  ```bash
536
- colony_name=$(bash .aether/aether-utils.sh colony-name 2>/dev/null | jq -r '.result.name // ""')
536
+ colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
537
537
  [[ -z "$colony_name" ]] && colony_name="unknown"
538
538
  phase_num=$(jq -r '.phase.number // "unknown"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "unknown")
539
539
 
@@ -549,10 +549,10 @@ cat >> .aether/midden/approach-changes.md << EOF
549
549
  EOF
550
550
 
551
551
  # Write to structured midden for threshold detection (MID-02)
552
- bash .aether/aether-utils.sh midden-write "abandoned-approach" "Tried: initial approach that failed. Switched to: new approach. Reason: reason it didn't work" "builder" 2>/dev/null || true
552
+ aether midden-write "abandoned-approach" "Tried: initial approach that failed. Switched to: new approach. Reason: reason it didn't work" "builder" 2>/dev/null || true
553
553
 
554
554
  # Enter memory pipeline for learning observation tracking (MID-02)
555
- bash .aether/aether-utils.sh memory-capture \
555
+ aether memory-capture \
556
556
  "failure" \
557
557
  "Approach abandoned: initial approach that failed -> new approach (reason it didn't work)" \
558
558
  "failure" \
@@ -560,7 +560,7 @@ bash .aether/aether-utils.sh memory-capture \
560
560
  ```
561
561
 
562
562
  Spawn sub-workers ONLY if 3x complexity:
563
- - Check spawn budget using Bash tool with description: `bash .aether/aether-utils.sh spawn-can-spawn {depth} --enforce`
563
+ - Check spawn budget using Bash tool with description: `aether spawn-can-spawn {depth} --enforce`
564
564
  - Generate name using Bash tool with description
565
565
  - Announce: "🐜 Spawning {child_name} for {reason}"
566
566
  - Log spawn using Bash tool with description
@@ -576,7 +576,7 @@ Return ONLY this JSON (no other text):
576
576
  **Task calls return results directly (no TaskOutput needed).**
577
577
 
578
578
  Before using any worker payload, validate schema:
579
- Run using the Bash tool with description "Validating worker response...": `bash .aether/aether-utils.sh validate-worker-response builder '{worker_json}'`
579
+ Run using the Bash tool with description "Validating worker response...": `aether validate-worker-response builder '{worker_json}'`
580
580
  If validation fails, treat the worker as failed with blocker `invalid_worker_response`.
581
581
 
582
582
  **As each worker result arrives, IMMEDIATELY display a single completion line — do not wait for other workers:**
@@ -597,7 +597,7 @@ Where `tool_count` comes from the worker's returned JSON `tool_count` field, and
597
597
 
598
598
  After displaying a failed worker, run using the Bash tool with description "Logging failure to midden...":
599
599
  ```bash
600
- colony_name=$(bash .aether/aether-utils.sh colony-name 2>/dev/null | jq -r '.result.name // ""')
600
+ colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
601
601
  [[ -z "$colony_name" ]] && colony_name="unknown"
602
602
  phase_num=$(jq -r '.phase.number // "unknown"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "unknown")
603
603
 
@@ -615,17 +615,17 @@ cat >> .aether/midden/build-failures.md << EOF
615
615
  EOF
616
616
 
617
617
  # Write to structured midden for threshold detection (MID-01)
618
- bash .aether/aether-utils.sh midden-write "worker_failure" "Builder ${ant_name} failed on task ${task_id}: ${blockers[0]:-$failure_reason}" "builder" 2>/dev/null || true
618
+ aether midden-write "worker_failure" "Builder ${ant_name} failed on task ${task_id}: ${blockers[0]:-$failure_reason}" "builder" 2>/dev/null || true
619
619
 
620
620
  # Capture failure in memory pipeline (observe + pheromone + auto-promotion)
621
- bash .aether/aether-utils.sh memory-capture \
621
+ aether memory-capture \
622
622
  "failure" \
623
623
  "Builder ${ant_name} failed on task ${task_id}: ${blockers[0]:-$failure_reason}" \
624
624
  "failure" \
625
625
  "worker:builder" 2>/dev/null || true
626
626
  ```
627
627
 
628
- **PER WORKER:** Run using the Bash tool with description "Recording {name} completion...": `bash .aether/aether-utils.sh spawn-complete "{ant_name}" "completed" "{summary}" && bash .aether/aether-utils.sh context-update worker-complete "{ant_name}" "completed"`
628
+ **PER WORKER:** Run using the Bash tool with description "Recording {name} completion...": `aether spawn-complete "{ant_name}" "completed" "{summary}" && aether context-update worker-complete "{ant_name}" "completed"`
629
629
 
630
630
  **Check for total wave failure:**
631
631
 
@@ -680,7 +680,7 @@ Awaiting your choice.
680
680
  ```
681
681
 
682
682
  Log escalation as flag:
683
- Run using the Bash tool with description "Logging escalation...": `bash .aether/aether-utils.sh flag-add "blocker" "{task title}" "{failure summary}" "escalation" {phase_number}`
683
+ Run using the Bash tool with description "Logging escalation...": `aether flag-add "blocker" "{task title}" "{failure summary}" "escalation" {phase_number}`
684
684
 
685
685
  If at least one worker succeeded, continue normally to the next wave.
686
686
 
@@ -692,7 +692,7 @@ After processing all wave results, check if any midden error category has reache
692
692
 
693
693
  Run using the Bash tool with description "Checking midden thresholds...":
694
694
  ```bash
695
- midden_result=$(bash .aether/aether-utils.sh midden-recent-failures 50 2>/dev/null || echo '{"count":0,"failures":[]}')
695
+ midden_result=$(aether midden-recent-failures 50 2>/dev/null || echo '{"count":0,"failures":[]}')
696
696
  midden_count=$(echo "$midden_result" | jq '.count // 0')
697
697
 
698
698
  if [[ "$midden_count" -gt 0 ]]; then
@@ -717,7 +717,7 @@ if [[ "$midden_count" -gt 0 ]]; then
717
717
  ' .aether/data/pheromones.json 2>/dev/null || echo "0")
718
718
 
719
719
  if [[ "$existing" == "0" ]]; then
720
- bash .aether/aether-utils.sh pheromone-write REDIRECT \
720
+ aether pheromone-write REDIRECT \
721
721
  "[error-pattern] Category \"$category\" recurring ($count occurrences)" \
722
722
  --strength 0.7 \
723
723
  --source "auto:error" \