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
@@ -87,7 +87,7 @@ If proxy is not healthy, log a warning but continue (workers will fall back to d
87
87
 
88
88
  ### Step 0.5: Load Colony State
89
89
 
90
- Run using the Bash tool with description "Loading colony state...": `bash .aether/aether-utils.sh load-state`
90
+ Run using the Bash tool with description "Loading colony state...": `aether load-state`
91
91
 
92
92
  If the command fails (non-zero exit or JSON has ok: false):
93
93
  1. Parse error JSON
@@ -106,7 +106,7 @@ If successful:
106
106
  ```
107
107
  (If HANDOFF.md exists, this provides orientation before the build proceeds)
108
108
 
109
- After displaying context, run using the Bash tool with description "Releasing colony lock...": `bash .aether/aether-utils.sh unload-state` to release the lock.
109
+ After displaying context, run using the Bash tool with description "Releasing colony lock...": `aether unload-state` to release the lock.
110
110
 
111
111
  ### Step 1: Validate + Read State
112
112
 
@@ -142,7 +142,7 @@ Stop here.
142
142
 
143
143
  **Set colony depth (if --depth flag provided):**
144
144
  If `cli_depth_override` is set:
145
- 1. Run using the Bash tool with description "Setting colony depth...": `bash .aether/aether-utils.sh colony-depth set "$cli_depth_override"`
145
+ 1. Run using the Bash tool with description "Setting colony depth...": `aether colony-depth set "$cli_depth_override"`
146
146
  2. Parse JSON result - if `.ok` is false:
147
147
  - Display: `Error: Invalid depth "$cli_depth_override". Use: light, standard, deep, full`
148
148
  - Stop here
@@ -152,7 +152,7 @@ If `cli_depth_override` is set:
152
152
 
153
153
  Run using the Bash tool with description "Reading colony depth...":
154
154
  ```bash
155
- depth_result=$(bash .aether/aether-utils.sh colony-depth get 2>/dev/null || echo '{"ok":true,"result":{"depth":"standard","source":"default"}}')
155
+ depth_result=$(aether colony-depth get 2>/dev/null || echo '{"ok":true,"result":{"depth":"standard","source":"default"}}')
156
156
  colony_depth=$(echo "$depth_result" | jq -r '.result.depth // "standard"')
157
157
  depth_source=$(echo "$depth_result" | jq -r '.result.source // "default"')
158
158
  echo "colony_depth=$colony_depth"
@@ -201,7 +201,7 @@ Check for unresolved blocker flags on the requested phase:
201
201
 
202
202
  Run using the Bash tool with description "Checking for blockers...":
203
203
  ```bash
204
- bash .aether/aether-utils.sh flag-check-blockers {phase_number}
204
+ aether flag-check-blockers {phase_number}
205
205
  ```
206
206
 
207
207
  Parse the JSON result (`.result.blockers`):
@@ -210,7 +210,7 @@ Parse the JSON result (`.result.blockers`):
210
210
  - **If blockers > 0:** Retrieve blocker details:
211
211
  Run using the Bash tool with description "Loading blocker details...":
212
212
  ```bash
213
- bash .aether/aether-utils.sh flag-list --type blocker --phase {phase_number}
213
+ aether flag-list --type blocker --phase {phase_number}
214
214
  ```
215
215
  Parse `.result.flags` and display an advisory warning:
216
216
  ```
@@ -240,7 +240,7 @@ Write COLONY_STATE.json.
240
240
  Validate the state file:
241
241
  Run using the Bash tool with description "Validating colony state...":
242
242
  ```bash
243
- bash .aether/aether-utils.sh validate-state colony
243
+ aether validate-state colony
244
244
  ```
245
245
 
246
246
  ### Step 3: Git Checkpoint
@@ -268,7 +268,7 @@ Output header:
268
268
 
269
269
  ```
270
270
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
271
- B U I L D I N G P H A S E {id}
271
+ 🔨 B U I L D I N G P H A S E {id}
272
272
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
273
273
 
274
274
  📍 Phase {id}: {name}
@@ -281,7 +281,7 @@ Call `colony-prime --compact` to get unified worker context (wisdom + context ca
281
281
 
282
282
  Run using the Bash tool with description "Loading colony context...":
283
283
  ```bash
284
- prime_result=$(bash .aether/aether-utils.sh colony-prime --compact 2>/dev/null)
284
+ prime_result=$(aether colony-prime --compact 2>/dev/null)
285
285
  ```
286
286
 
287
287
  **Parse the JSON response:**
@@ -299,7 +299,7 @@ Display after constraints:
299
299
 
300
300
  Then display the active pheromones table by running:
301
301
  ```bash
302
- bash .aether/aether-utils.sh pheromone-display
302
+ aether pheromone-display
303
303
  ```
304
304
 
305
305
  This shows the user exactly what signals are guiding the colony:
@@ -315,7 +315,7 @@ Check if territory survey exists and load relevant documents:
315
315
 
316
316
  Run using the Bash tool with description "Loading territory survey...":
317
317
  ```bash
318
- bash .aether/aether-utils.sh survey-load "{phase_name}" 2>/dev/null
318
+ aether survey-load "{phase_name}" 2>/dev/null
319
319
  ```
320
320
 
321
321
  **Parse the JSON response:**
@@ -378,14 +378,14 @@ Analyze codebase and suggest pheromone signals based on detected patterns.
378
378
 
379
379
  Run using the Bash tool with description "Analyzing codebase for suggestions...":
380
380
  ```bash
381
- bash .aether/aether-utils.sh suggest-approve --dry-run 2>/dev/null
381
+ aether suggest-approve --dry-run 2>/dev/null
382
382
  ```
383
383
 
384
384
  Parse the JSON result to get `suggestion_count`.
385
385
 
386
386
  If `suggestion_count` > 0:
387
387
  - Display: "💡 {count} pheromone suggestion(s) detected from code analysis"
388
- - Run: `bash .aether/aether-utils.sh suggest-approve`
388
+ - Run: `aether suggest-approve`
389
389
  - Parse result for approved/rejected/skipped counts
390
390
  - If approved > 0: Display "✓ {approved} FOCUS signal(s) added"
391
391
 
@@ -403,8 +403,8 @@ log a warning and continue to Step 5.
403
403
  2. **If existing code modification detected — spawn Archaeologist Scout:**
404
404
 
405
405
  Generate archaeologist name and dispatch:
406
- Run using the Bash tool with description "Naming archaeologist...": `bash .aether/aether-utils.sh generate-ant-name "archaeologist"` (store as `{archaeologist_name}`)
407
- Run using the Bash tool with description "Dispatching archaeologist...": `bash .aether/aether-utils.sh spawn-log "Queen" "scout" "{archaeologist_name}" "Pre-build archaeology scan"`
406
+ Run using the Bash tool with description "Naming archaeologist...": `aether generate-ant-name "archaeologist"` (store as `{archaeologist_name}`)
407
+ Run using the Bash tool with description "Dispatching archaeologist...": `aether spawn-log "Queen" "scout" "{archaeologist_name}" "Pre-build archaeology scan"`
408
408
 
409
409
  Display:
410
410
  ```
@@ -429,7 +429,7 @@ log a warning and continue to Step 5.
429
429
  4. Run: git blame "{file_path}" | head -40 for authorship
430
430
  5. Note TODO/FIXME/HACK markers
431
431
 
432
- Log activity: bash .aether/aether-utils.sh activity-log "READ" "{Ant-Name}" "description"
432
+ Log activity: aether activity-log "READ" "{Ant-Name}" "description"
433
433
 
434
434
  Report (plain text):
435
435
  - WHY key code sections exist (from commits)
@@ -442,7 +442,7 @@ log a warning and continue to Step 5.
442
442
  **Wait for results** (blocking — use TaskOutput with `block: true`).
443
443
 
444
444
  Log completion and update swarm display:
445
- Run using the Bash tool with description "Recording archaeologist findings...": `bash .aether/aether-utils.sh spawn-complete "{archaeologist_name}" "completed" "Pre-build archaeology scan"`
445
+ Run using the Bash tool with description "Recording archaeologist findings...": `aether spawn-complete "{archaeologist_name}" "completed" "Pre-build archaeology scan"`
446
446
 
447
447
  3. **Store and display findings:**
448
448
 
@@ -467,7 +467,7 @@ log a warning and continue to Step 5.
467
467
  **Log phase start:**
468
468
  Run using the Bash tool with description "Logging phase start...":
469
469
  ```bash
470
- bash .aether/aether-utils.sh activity-log "EXECUTING" "Queen" "Phase {id}: {name} - Queen dispatching workers"
470
+ aether activity-log "EXECUTING" "Queen" "Phase {id}: {name} - Queen dispatching workers"
471
471
  ```
472
472
 
473
473
  **Show real-time display header:**
@@ -498,9 +498,9 @@ Analyze the phase tasks:
498
498
 
499
499
  3. **Generate ant names for each worker:**
500
500
 
501
- Run using the Bash tool with description "Naming builder ant...": `bash .aether/aether-utils.sh generate-ant-name "builder"`
502
- Run using the Bash tool with description "Naming watcher ant...": `bash .aether/aether-utils.sh generate-ant-name "watcher"`
503
- Run using the Bash tool with description "Naming chaos ant...": `bash .aether/aether-utils.sh generate-ant-name "chaos"`
501
+ Run using the Bash tool with description "Naming builder ant...": `aether generate-ant-name "builder"`
502
+ Run using the Bash tool with description "Naming watcher ant...": `aether generate-ant-name "watcher"`
503
+ Run using the Bash tool with description "Naming chaos ant...": `aether generate-ant-name "chaos"`
504
504
 
505
505
  Display spawn plan with caste emojis:
506
506
  ```
@@ -610,8 +610,8 @@ Parse the JSON result. If `is_integration_phase` is `"false"`:
610
610
  If `is_integration_phase` is `"true"`:
611
611
 
612
612
  1. **Generate Ambassador name and dispatch:**
613
- Run using the Bash tool with description "Naming ambassador...": `bash .aether/aether-utils.sh generate-ant-name "ambassador"` (store as `{ambassador_name}`)
614
- Run using the Bash tool with description "Dispatching ambassador...": `bash .aether/aether-utils.sh spawn-log "Queen" "ambassador" "{ambassador_name}" "External integration design"`
613
+ Run using the Bash tool with description "Naming ambassador...": `aether generate-ant-name "ambassador"` (store as `{ambassador_name}`)
614
+ Run using the Bash tool with description "Dispatching ambassador...": `aether spawn-log "Queen" "ambassador" "{ambassador_name}" "External integration design"`
615
615
 
616
616
  Display:
617
617
  ```
@@ -660,7 +660,7 @@ If `is_integration_phase` is `"true"`:
660
660
  - HTTPS only
661
661
  - Validate SSL certificates
662
662
 
663
- Log activity: bash .aether/aether-utils.sh activity-log "RESEARCH" "{Ambassador-Name}" "description"
663
+ Log activity: aether activity-log "RESEARCH" "{Ambassador-Name}" "description"
664
664
 
665
665
  Return ONLY this JSON (no other text):
666
666
  {
@@ -689,7 +689,7 @@ If `is_integration_phase` is `"true"`:
689
689
  Extract from response: `integration_plan`, `env_vars_required`, `error_scenarios_covered`, `blockers`
690
690
 
691
691
  Log completion and update swarm display:
692
- Run using the Bash tool with description "Recording ambassador completion...": `bash .aether/aether-utils.sh spawn-complete "{ambassador_name}" "completed" "Integration design complete"`
692
+ Run using the Bash tool with description "Recording ambassador completion...": `aether spawn-complete "{ambassador_name}" "completed" "Integration design complete"`
693
693
 
694
694
  **Display Ambassador completion line:**
695
695
  ```
@@ -699,12 +699,12 @@ If `is_integration_phase` is `"true"`:
699
699
  4. **Log integration plan to midden:**
700
700
  Run using the Bash tool with description "Logging integration plan...":
701
701
  ```bash
702
- 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"
702
+ aether midden-write "integration" "Plan for {integration_plan.service_name}: {integration_plan.integration_pattern} pattern, auth via {integration_plan.authentication_method}" "ambassador"
703
703
  ```
704
704
 
705
705
  For each env var required:
706
706
  ```bash
707
- bash .aether/aether-utils.sh midden-write "integration" "Required env var: {env_var}" "ambassador"
707
+ aether midden-write "integration" "Required env var: {env_var}" "ambassador"
708
708
  ```
709
709
 
710
710
  5. **Display integration summary:**
@@ -722,24 +722,24 @@ If `is_integration_phase` is `"true"`:
722
722
  Store the `integration_plan` object to be injected into Builder prompts in the standard Wave 1 spawn.
723
723
 
724
724
  **First, mark build start in context:**
725
- 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}`
725
+ 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}`
726
726
 
727
727
  Before dispatching each worker, refresh colony context so new pheromones/memory are visible:
728
- 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`.
728
+ 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`.
729
729
 
730
730
  For each Wave 1 task, use Task tool with `subagent_type="aether-builder"`, include `description: "🔨 Builder {Ant-Name}: {task_description}"` (DO NOT use run_in_background - multiple Task calls in a single message run in parallel and block until complete):
731
731
 
732
732
  **PER WORKER:** Build graveyard caution context automatically:
733
733
  - Identify explicit repo file paths from the task metadata (`files`, `hints`, `constraints`, and description when a concrete path is present).
734
734
  - For each identified file path, run using the Bash tool with description "Checking graveyard cautions for {file}...":
735
- `bash .aether/aether-utils.sh grave-check "{file}"`
735
+ `aether grave-check "{file}"`
736
736
  - Parse each JSON result and keep only entries where `caution_level` is `high` or `low`.
737
737
  - Merge these into a single `grave_context` block for that worker.
738
738
  - If no file paths are identified, or all checks return `none`, set `grave_context` to empty.
739
739
  - If `grave_context` is non-empty, display a visible line before spawning that worker:
740
740
  `⚰️ Graveyard caution for {ant_name}: {file_1} ({level_1}), {file_2} ({level_2})`
741
741
 
742
- **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}"`
742
+ **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}"`
743
743
 
744
744
  **Builder Worker Prompt (CLEAN OUTPUT):**
745
745
  ```
@@ -789,7 +789,7 @@ Work:
789
789
  **Approach Change Logging:**
790
790
  If you try an approach that doesn't work and switch to a different approach, log it:
791
791
  ```bash
792
- colony_name=$(bash .aether/aether-utils.sh colony-name 2>/dev/null | jq -r '.result.name // ""')
792
+ colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
793
793
  [[ -z "$colony_name" ]] && colony_name="unknown"
794
794
  phase_num=$(jq -r '.phase.number // "unknown"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "unknown")
795
795
 
@@ -805,10 +805,10 @@ cat >> .aether/midden/approach-changes.md << EOF
805
805
  EOF
806
806
 
807
807
  # Write to structured midden for threshold detection (MID-02)
808
- 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
808
+ 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
809
809
 
810
810
  # Enter memory pipeline for learning observation tracking (MID-02)
811
- bash .aether/aether-utils.sh memory-capture \
811
+ aether memory-capture \
812
812
  "failure" \
813
813
  "Approach abandoned: initial approach that failed -> new approach (reason it didn't work)" \
814
814
  "failure" \
@@ -816,7 +816,7 @@ bash .aether/aether-utils.sh memory-capture \
816
816
  ```
817
817
 
818
818
  Spawn sub-workers ONLY if 3x complexity:
819
- - Check spawn budget using Bash tool with description: `bash .aether/aether-utils.sh spawn-can-spawn {depth} --enforce`
819
+ - Check spawn budget using Bash tool with description: `aether spawn-can-spawn {depth} --enforce`
820
820
  - Generate name using Bash tool with description
821
821
  - Announce: "🐜 Spawning {child_name} for {reason}"
822
822
  - Log spawn using Bash tool with description
@@ -832,7 +832,7 @@ Return ONLY this JSON (no other text):
832
832
  **Task calls return results directly (no TaskOutput needed).**
833
833
 
834
834
  Before using any worker payload, validate schema:
835
- Run using the Bash tool with description "Validating worker response...": `bash .aether/aether-utils.sh validate-worker-response builder '{worker_json}'`
835
+ Run using the Bash tool with description "Validating worker response...": `aether validate-worker-response builder '{worker_json}'`
836
836
  If validation fails, treat the worker as failed with blocker `invalid_worker_response`.
837
837
 
838
838
  **As each worker result arrives, IMMEDIATELY display a single completion line — do not wait for other workers:**
@@ -853,7 +853,7 @@ Where `tool_count` comes from the worker's returned JSON `tool_count` field, and
853
853
 
854
854
  After displaying a failed worker, run using the Bash tool with description "Logging failure to midden...":
855
855
  ```bash
856
- colony_name=$(bash .aether/aether-utils.sh colony-name 2>/dev/null | jq -r '.result.name // ""')
856
+ colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
857
857
  [[ -z "$colony_name" ]] && colony_name="unknown"
858
858
  phase_num=$(jq -r '.phase.number // "unknown"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "unknown")
859
859
 
@@ -871,17 +871,17 @@ cat >> .aether/midden/build-failures.md << EOF
871
871
  EOF
872
872
 
873
873
  # Write to structured midden for threshold detection (MID-01)
874
- 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
874
+ aether midden-write "worker_failure" "Builder ${ant_name} failed on task ${task_id}: ${blockers[0]:-$failure_reason}" "builder" 2>/dev/null || true
875
875
 
876
876
  # Capture failure in memory pipeline (observe + pheromone + auto-promotion)
877
- bash .aether/aether-utils.sh memory-capture \
877
+ aether memory-capture \
878
878
  "failure" \
879
879
  "Builder ${ant_name} failed on task ${task_id}: ${blockers[0]:-$failure_reason}" \
880
880
  "failure" \
881
881
  "worker:builder" 2>/dev/null || true
882
882
  ```
883
883
 
884
- **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"`
884
+ **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"`
885
885
 
886
886
  **Check for total wave failure:**
887
887
 
@@ -936,7 +936,7 @@ Awaiting your choice.
936
936
  ```
937
937
 
938
938
  Log escalation as flag:
939
- Run using the Bash tool with description "Logging escalation...": `bash .aether/aether-utils.sh flag-add "blocker" "{task title}" "{failure summary}" "escalation" {phase_number}`
939
+ Run using the Bash tool with description "Logging escalation...": `aether flag-add "blocker" "{task title}" "{failure summary}" "escalation" {phase_number}`
940
940
 
941
941
  If at least one worker succeeded, continue normally to the next wave.
942
942
 
@@ -948,7 +948,7 @@ After processing all wave results, check if any midden error category has reache
948
948
 
949
949
  Run using the Bash tool with description "Checking midden thresholds...":
950
950
  ```bash
951
- midden_result=$(bash .aether/aether-utils.sh midden-recent-failures 50 2>/dev/null || echo '{"count":0,"failures":[]}')
951
+ midden_result=$(aether midden-recent-failures 50 2>/dev/null || echo '{"count":0,"failures":[]}')
952
952
  midden_count=$(echo "$midden_result" | jq '.count // 0')
953
953
 
954
954
  if [[ "$midden_count" -gt 0 ]]; then
@@ -973,7 +973,7 @@ if [[ "$midden_count" -gt 0 ]]; then
973
973
  ' .aether/data/pheromones.json 2>/dev/null || echo "0")
974
974
 
975
975
  if [[ "$existing" == "0" ]]; then
976
- bash .aether/aether-utils.sh pheromone-write REDIRECT \
976
+ aether pheromone-write REDIRECT \
977
977
  "[error-pattern] Category \"$category\" recurring ($count occurrences)" \
978
978
  --strength 0.7 \
979
979
  --source "auto:error" \
@@ -1018,7 +1018,7 @@ Repeat Step 5.1-5.2 for each subsequent wave, waiting for previous wave to compl
1018
1018
 
1019
1019
  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):
1020
1020
 
1021
- Run using the Bash tool with description "Dispatching watcher...": `bash .aether/aether-utils.sh spawn-log "Queen" "watcher" "{watcher_name}" "Independent verification"`
1021
+ Run using the Bash tool with description "Dispatching watcher...": `aether spawn-log "Queen" "watcher" "{watcher_name}" "Independent verification"`
1022
1022
 
1023
1023
  **Watcher Worker Prompt (CLEAN OUTPUT):**
1024
1024
  ```
@@ -1060,7 +1060,7 @@ Return ONLY this JSON:
1060
1060
  **Task call returns results directly (no TaskOutput needed).**
1061
1061
 
1062
1062
  Validate watcher payload first:
1063
- Run using the Bash tool with description "Validating watcher response...": `bash .aether/aether-utils.sh validate-worker-response watcher '{watcher_json}'`
1063
+ Run using the Bash tool with description "Validating watcher response...": `aether validate-worker-response watcher '{watcher_json}'`
1064
1064
 
1065
1065
  **Parse the Watcher's validated JSON response:** verification_passed, issues_found, quality_score, recommendation
1066
1066
 
@@ -1113,8 +1113,8 @@ For failed verification:
1113
1113
 
1114
1114
  3. **Generate Measurer name and dispatch:**
1115
1115
 
1116
- Run using the Bash tool with description "Naming measurer...": `bash .aether/aether-utils.sh generate-ant-name "measurer"` (store as `{measurer_name}`)
1117
- Run using the Bash tool with description "Dispatching measurer...": `bash .aether/aether-utils.sh spawn-log "Queen" "measurer" "{measurer_name}" "Performance baseline measurement"`
1116
+ Run using the Bash tool with description "Naming measurer...": `aether generate-ant-name "measurer"` (store as `{measurer_name}`)
1117
+ Run using the Bash tool with description "Dispatching measurer...": `aether spawn-log "Queen" "measurer" "{measurer_name}" "Performance baseline measurement"`
1118
1118
 
1119
1119
  Display:
1120
1120
  ```
@@ -1158,7 +1158,7 @@ For failed verification:
1158
1158
 
1159
1159
  **IMPORTANT:** You are strictly read-only. Do not modify any files.
1160
1160
 
1161
- Log activity: bash .aether/aether-utils.sh activity-log "BENCHMARKING" "{Measurer-Name}" "description"
1161
+ Log activity: aether activity-log "BENCHMARKING" "{Measurer-Name}" "description"
1162
1162
 
1163
1163
  Return ONLY this JSON (no other text):
1164
1164
  {
@@ -1190,7 +1190,7 @@ For failed verification:
1190
1190
  Extract from response: `baselines_established`, `bottlenecks_identified`, `recommendations`, `tool_count`
1191
1191
 
1192
1192
  Log completion and update swarm display:
1193
- Run using the Bash tool with description "Recording measurer completion...": `bash .aether/aether-utils.sh spawn-complete "{measurer_name}" "completed" "Baselines established, bottlenecks identified"`
1193
+ Run using the Bash tool with description "Recording measurer completion...": `aether spawn-complete "{measurer_name}" "completed" "Baselines established, bottlenecks identified"`
1194
1194
 
1195
1195
  **Display Measurer completion line:**
1196
1196
  ```
@@ -1201,17 +1201,17 @@ For failed verification:
1201
1201
 
1202
1202
  For each baseline established, run using the Bash tool with description "Logging baseline...":
1203
1203
  ```bash
1204
- bash .aether/aether-utils.sh midden-write "performance" "Baseline: {baseline.operation} ({baseline.complexity}) at {baseline.file}:{baseline.line}" "measurer"
1204
+ aether midden-write "performance" "Baseline: {baseline.operation} ({baseline.complexity}) at {baseline.file}:{baseline.line}" "measurer"
1205
1205
  ```
1206
1206
 
1207
1207
  For each bottleneck identified, run using the Bash tool with description "Logging bottleneck...":
1208
1208
  ```bash
1209
- bash .aether/aether-utils.sh midden-write "performance" "Bottleneck: {bottleneck.description} ({bottleneck.severity}) at {bottleneck.location}" "measurer"
1209
+ aether midden-write "performance" "Bottleneck: {bottleneck.description} ({bottleneck.severity}) at {bottleneck.location}" "measurer"
1210
1210
  ```
1211
1211
 
1212
1212
  For each recommendation, run using the Bash tool with description "Logging recommendation...":
1213
1213
  ```bash
1214
- bash .aether/aether-utils.sh midden-write "performance" "Recommendation (P{rec.priority}): {rec.change} - {rec.estimated_improvement}" "measurer"
1214
+ aether midden-write "performance" "Recommendation (P{rec.priority}): {rec.change} - {rec.estimated_improvement}" "measurer"
1215
1215
  ```
1216
1216
 
1217
1217
  8. **Display summary and store for synthesis:**
@@ -1234,10 +1234,10 @@ For failed verification:
1234
1234
  **After the Watcher completes, spawn a Chaos Ant to probe the phase work for edge cases and boundary conditions.**
1235
1235
 
1236
1236
  Generate a chaos ant name and dispatch:
1237
- Run using the Bash tool with description "Naming chaos ant...": `bash .aether/aether-utils.sh generate-ant-name "chaos"` (store as `{chaos_name}`)
1238
- Run using the Bash tool with description "Loading existing flags...": `bash .aether/aether-utils.sh flag-list --phase {phase_number}`
1237
+ Run using the Bash tool with description "Naming chaos ant...": `aether generate-ant-name "chaos"` (store as `{chaos_name}`)
1238
+ Run using the Bash tool with description "Loading existing flags...": `aether flag-list --phase {phase_number}`
1239
1239
  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".
1240
- 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"`
1240
+ Run using the Bash tool with description "Dispatching chaos ant...": `aether spawn-log "Queen" "chaos" "{chaos_name}" "Resilience testing of Phase {id} work"`
1241
1241
 
1242
1242
  **Announce the resilience testing wave:**
1243
1243
  ```
@@ -1291,13 +1291,13 @@ Return ONLY this JSON:
1291
1291
  **Flag critical/high findings:**
1292
1292
 
1293
1293
  If any findings have severity `"critical"` or `"high"`:
1294
- 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}"`
1294
+ 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}"`
1295
1295
 
1296
1296
  **Log resilience finding to midden (MEM-02):**
1297
1297
 
1298
1298
  For each critical/high finding, run using the Bash tool with description "Logging resilience finding...":
1299
1299
  ```bash
1300
- colony_name=$(bash .aether/aether-utils.sh colony-name 2>/dev/null | jq -r '.result.name // ""')
1300
+ colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
1301
1301
  [[ -z "$colony_name" ]] && colony_name="unknown"
1302
1302
  phase_num=$(jq -r '.phase.number // "unknown"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "unknown")
1303
1303
 
@@ -1315,10 +1315,10 @@ cat >> .aether/midden/build-failures.md << EOF
1315
1315
  EOF
1316
1316
 
1317
1317
  # Write to structured midden for threshold detection (MID-01)
1318
- bash .aether/aether-utils.sh midden-write "resilience" "Chaos finding: ${finding.title} (${finding.severity})" "chaos" 2>/dev/null || true
1318
+ aether midden-write "resilience" "Chaos finding: ${finding.title} (${finding.severity})" "chaos" 2>/dev/null || true
1319
1319
 
1320
1320
  # Capture resilience failure in memory pipeline (observe + pheromone + auto-promotion)
1321
- bash .aether/aether-utils.sh memory-capture \
1321
+ aether memory-capture \
1322
1322
  "failure" \
1323
1323
  "Resilience issue found: ${finding.title} (${finding.severity})" \
1324
1324
  "failure" \
@@ -1326,20 +1326,20 @@ bash .aether/aether-utils.sh memory-capture \
1326
1326
  ```
1327
1327
 
1328
1328
  Log chaos ant completion and update swarm display:
1329
- Run using the Bash tool with description "Recording chaos completion...": `bash .aether/aether-utils.sh spawn-complete "{chaos_name}" "completed" "{summary}"`
1329
+ Run using the Bash tool with description "Recording chaos completion...": `aether spawn-complete "{chaos_name}" "completed" "{summary}"`
1330
1330
 
1331
1331
  ### Step 5.8: Create Flags for Verification Failures
1332
1332
 
1333
1333
  If the Watcher reported `verification_passed: false` or `recommendation: "fix_required"`:
1334
1334
 
1335
1335
  For each issue in `issues_found`:
1336
- 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}"`
1336
+ 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}"`
1337
1337
 
1338
1338
  **Log verification failure to midden (MEM-02):**
1339
1339
 
1340
1340
  After flagging each issue, run using the Bash tool with description "Logging verification failure...":
1341
1341
  ```bash
1342
- colony_name=$(bash .aether/aether-utils.sh colony-name 2>/dev/null | jq -r '.result.name // ""')
1342
+ colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
1343
1343
  [[ -z "$colony_name" ]] && colony_name="unknown"
1344
1344
  phase_num=$(jq -r '.phase.number // "unknown"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "unknown")
1345
1345
 
@@ -1357,10 +1357,10 @@ cat >> .aether/midden/test-failures.md << EOF
1357
1357
  EOF
1358
1358
 
1359
1359
  # Write to structured midden for threshold detection (MID-01)
1360
- bash .aether/aether-utils.sh midden-write "verification" "Watcher verification failed: ${issue_title}" "watcher" 2>/dev/null || true
1360
+ aether midden-write "verification" "Watcher verification failed: ${issue_title}" "watcher" 2>/dev/null || true
1361
1361
 
1362
1362
  # Capture verification failure in memory pipeline (observe + pheromone + auto-promotion)
1363
- bash .aether/aether-utils.sh memory-capture \
1363
+ aether memory-capture \
1364
1364
  "failure" \
1365
1365
  "Verification failed: ${issue_title} - ${issue_description}" \
1366
1366
  "failure" \
@@ -1412,7 +1412,7 @@ Collect all worker outputs and create phase summary:
1412
1412
  **Graveyard Recording:**
1413
1413
  For each worker that returned `status: "failed"`:
1414
1414
  For each file in that worker's `files_modified` or `files_created`:
1415
- Run using the Bash tool with description "Recording failure grave...": `bash .aether/aether-utils.sh grave-add "{file}" "{ant_name}" "{task_id}" {phase} "{first blocker or summary}" && bash .aether/aether-utils.sh activity-log "GRAVE" "Queen" "Grave marker placed at {file} — {ant_name} failed: {summary}"`
1415
+ Run using the Bash tool with description "Recording failure grave...": `aether grave-add "{file}" "{ant_name}" "{task_id}" {phase} "{first blocker or summary}" && aether activity-log "GRAVE" "Queen" "Grave marker placed at {file} — {ant_name} failed: {summary}"`
1416
1416
  Then display a user-visible confirmation line:
1417
1417
  `⚰️ Grave recorded: {file} — {ant_name} failed ({summary})`
1418
1418
 
@@ -1591,7 +1591,7 @@ This ensures the handoff always reflects the latest build state, even if the ses
1591
1591
 
1592
1592
  Log this build activity to `.aether/CONTEXT.md`:
1593
1593
 
1594
- Run using the Bash tool with description "Updating build context...": `bash .aether/aether-utils.sh context-update activity "build {phase_id}" "{synthesis.status}" "{files_created_count + files_modified_count}" && bash .aether/aether-utils.sh context-update build-complete "{synthesis.status}" "{synthesis.status == 'completed' ? 'success' : 'failed'}"`
1594
+ Run using the Bash tool with description "Updating build context...": `aether context-update activity "build {phase_id}" "{synthesis.status}" "{files_created_count + files_modified_count}" && aether context-update build-complete "{synthesis.status}" "{synthesis.status == 'completed' ? 'success' : 'failed'}"`
1595
1595
 
1596
1596
  Also update safe-to-clear status:
1597
1597
  - If build completed successfully: `context-update safe-to-clear "YES" "Build complete, ready to continue"`
@@ -1603,14 +1603,14 @@ After build completion (success or failure), check if any observations have met
1603
1603
 
1604
1604
  Run using the Bash tool with description "Checking for wisdom promotions...":
1605
1605
  ```bash
1606
- proposals=$(bash .aether/aether-utils.sh learning-check-promotion 2>/dev/null || echo '{"proposals":[]}')
1606
+ proposals=$(aether learning-check-promotion 2>/dev/null || echo '{"proposals":[]}')
1607
1607
  proposal_count=$(echo "$proposals" | jq '.proposals | length')
1608
1608
  echo "{\"proposal_count\": $proposal_count}"
1609
1609
  ```
1610
1610
 
1611
1611
  Parse the result. If proposal_count > 0:
1612
1612
  - Display: "📚 $proposal_count wisdom proposal(s) ready for review"
1613
- - Run: `bash .aether/aether-utils.sh learning-approve-proposals`
1613
+ - Run: `aether learning-approve-proposals`
1614
1614
  - This presents the one-at-a-time UI for user review
1615
1615
 
1616
1616
  If proposal_count == 0:
@@ -1629,14 +1629,14 @@ Calculate `elapsed` using `build_started_at_epoch` (epoch integer captured at St
1629
1629
 
1630
1630
  ```
1631
1631
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1632
- B U I L D S U M M A R Y
1632
+ 🔨 B U I L D S U M M A R Y
1633
1633
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1634
- Phase {id}: {name}
1635
- Pattern: {selected_pattern}
1634
+ 📍 Phase {id}: {name}
1635
+ 🎲 Pattern: {selected_pattern}
1636
1636
 
1637
- Workers: {pass_count} passed {fail_count} failed ({total} total)
1638
- Tools: {total_tools} calls across all workers
1639
- Duration: {elapsed}
1637
+ 🐜 Workers: {pass_count} passed {fail_count} failed ({total} total)
1638
+ 🛠️ Tools: {total_tools} calls across all workers
1639
+ ⏱️ Duration: {elapsed}
1640
1640
 
1641
1641
  {if measurer_ran:}
1642
1642
  📊 Measurer: {baseline_count} baselines established, {bottleneck_count} bottlenecks identified
@@ -1666,7 +1666,7 @@ After displaying the BUILD SUMMARY (and optional verbose details), call the Next
1666
1666
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "IDLE")
1667
1667
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json 2>/dev/null || echo "0")
1668
1668
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json 2>/dev/null || echo "0")
1669
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
1669
+ aether print-next-up "$state" "$current_phase" "$total_phases"
1670
1670
  ```
1671
1671
 
1672
1672
  **Routing Note:** The state-based Next Up block above routes based on colony state. If verification failed or blockers exist, review `/ant:flags` before continuing.
@@ -1680,4 +1680,4 @@ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_pha
1680
1680
 
1681
1681
  Update the session tracking file to enable `/ant:resume` after context clear:
1682
1682
 
1683
- Run using the Bash tool with description "Saving build session...": `bash .aether/aether-utils.sh session-update "/ant:build {phase_id}" "/ant:continue" "Phase {phase_id} build completed: {synthesis.status}"`
1683
+ Run using the Bash tool with description "Saving build session...": `aether session-update "/ant:build {phase_id}" "/ant:continue" "Phase {phase_id} build completed: {synthesis.status}"`
@@ -87,7 +87,7 @@ If proxy is not healthy, log a warning but continue (workers will fall back to d
87
87
 
88
88
  ### Step 0.5: Load Colony State
89
89
 
90
- Run using the Bash tool with description "Loading colony state...": `bash .aether/aether-utils.sh load-state`
90
+ Run using the Bash tool with description "Loading colony state...": `aether load-state`
91
91
 
92
92
  If the command fails (non-zero exit or JSON has ok: false):
93
93
  1. Parse error JSON
@@ -106,7 +106,7 @@ If successful:
106
106
  ```
107
107
  (If HANDOFF.md exists, this provides orientation before the build proceeds)
108
108
 
109
- After displaying context, run using the Bash tool with description "Releasing colony lock...": `bash .aether/aether-utils.sh unload-state` to release the lock.
109
+ After displaying context, run using the Bash tool with description "Releasing colony lock...": `aether unload-state` to release the lock.
110
110
 
111
111
  ### Step 1: Validate + Read State
112
112
 
@@ -142,7 +142,7 @@ Stop here.
142
142
 
143
143
  **Set colony depth (if --depth flag provided):**
144
144
  If `cli_depth_override` is set:
145
- 1. Run using the Bash tool with description "Setting colony depth...": `bash .aether/aether-utils.sh colony-depth set "$cli_depth_override"`
145
+ 1. Run using the Bash tool with description "Setting colony depth...": `aether colony-depth set "$cli_depth_override"`
146
146
  2. Parse JSON result - if `.ok` is false:
147
147
  - Display: `Error: Invalid depth "$cli_depth_override". Use: light, standard, deep, full`
148
148
  - Stop here
@@ -152,7 +152,7 @@ If `cli_depth_override` is set:
152
152
 
153
153
  Run using the Bash tool with description "Reading colony depth...":
154
154
  ```bash
155
- depth_result=$(bash .aether/aether-utils.sh colony-depth get 2>/dev/null || echo '{"ok":true,"result":{"depth":"standard","source":"default"}}')
155
+ depth_result=$(aether colony-depth get 2>/dev/null || echo '{"ok":true,"result":{"depth":"standard","source":"default"}}')
156
156
  colony_depth=$(echo "$depth_result" | jq -r '.result.depth // "standard"')
157
157
  depth_source=$(echo "$depth_result" | jq -r '.result.source // "default"')
158
158
  echo "colony_depth=$colony_depth"
@@ -201,7 +201,7 @@ Check for unresolved blocker flags on the requested phase:
201
201
 
202
202
  Run using the Bash tool with description "Checking for blockers...":
203
203
  ```bash
204
- bash .aether/aether-utils.sh flag-check-blockers {phase_number}
204
+ aether flag-check-blockers {phase_number}
205
205
  ```
206
206
 
207
207
  Parse the JSON result (`.result.blockers`):
@@ -210,7 +210,7 @@ Parse the JSON result (`.result.blockers`):
210
210
  - **If blockers > 0:** Retrieve blocker details:
211
211
  Run using the Bash tool with description "Loading blocker details...":
212
212
  ```bash
213
- bash .aether/aether-utils.sh flag-list --type blocker --phase {phase_number}
213
+ aether flag-list --type blocker --phase {phase_number}
214
214
  ```
215
215
  Parse `.result.flags` and display an advisory warning:
216
216
  ```
@@ -237,7 +237,7 @@ If `events` exceeds 100 entries, keep only the last 100.
237
237
 
238
238
  Run using the Bash tool with description "Updating colony state for build...":
239
239
  ```bash
240
- bash .aether/aether-utils.sh state-mutate \
240
+ aether state-mutate \
241
241
  --argjson phase "$PHASE_NUMBER" \
242
242
  --arg phase_name "$PHASE_NAME" \
243
243
  --arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
@@ -247,7 +247,7 @@ bash .aether/aether-utils.sh state-mutate \
247
247
  Validate the state file:
248
248
  Run using the Bash tool with description "Validating colony state...":
249
249
  ```bash
250
- bash .aether/aether-utils.sh validate-state colony
250
+ aether validate-state colony
251
251
  ```
252
252
 
253
253
  ### Step 3: Git Checkpoint
@@ -275,7 +275,7 @@ Output header:
275
275
 
276
276
  ```
277
277
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
278
- B U I L D I N G P H A S E {id}
278
+ 🔨 B U I L D I N G P H A S E {id}
279
279
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
280
280
 
281
281
  📍 Phase {id}: {name}
@@ -284,7 +284,7 @@ Output header:
284
284
 
285
285
  Run using the Bash tool with description "Showing phase progress...":
286
286
  ```bash
287
- progress_bar=$(bash .aether/aether-utils.sh generate-progress-bar "$current_phase" "$total_phases" 20 2>/dev/null || echo "")
287
+ progress_bar=$(aether generate-progress-bar "$current_phase" "$total_phases" 20 2>/dev/null || echo "")
288
288
  if [[ -n "$progress_bar" ]]; then
289
289
  echo "[Phase ${current_phase}/${total_phases}] ${progress_bar}"
290
290
  fi