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
@@ -31,7 +31,7 @@ Extract: `goal`, `state`, `current_phase`, `plan.phases`, `errors`, `memory`, `e
31
31
 
32
32
  ### Step 1.5: Load State and Show Resumption Context
33
33
 
34
- Run using the Bash tool with description "Loading colony state...": `bash .aether/aether-utils.sh load-state`
34
+ Run using the Bash tool with description "Loading colony state...": `aether load-state`
35
35
 
36
36
  If successful and goal is not null:
37
37
  1. Extract current_phase from state
@@ -46,7 +46,7 @@ If .aether/HANDOFF.md exists (detected in load-state output):
46
46
  - Read .aether/HANDOFF.md for additional context
47
47
  - Remove .aether/HANDOFF.md after display (cleanup)
48
48
 
49
- Run using the Bash tool with description "Releasing colony lock...": `bash .aether/aether-utils.sh unload-state` to release lock.
49
+ Run using the Bash tool with description "Releasing colony lock...": `aether unload-state` to release lock.
50
50
 
51
51
  **Error handling:**
52
52
  - If E_FILE_NOT_FOUND: "No colony initialized. Run /ant:init first." and stop
@@ -147,7 +147,7 @@ Continue to Phase 5: Secrets Scan.
147
147
  3. **If spawning Probe:**
148
148
 
149
149
  a. Generate Probe name and dispatch:
150
- Run using the Bash tool with description "Generating Probe name...": `probe_name=$(bash .aether/aether-utils.sh generate-ant-name "probe" | jq -r '.result') && bash .aether/aether-utils.sh spawn-log "Queen" "probe" "$probe_name" "Coverage improvement: ${coverage_percent}%" && echo "{\"name\":\"$probe_name\"}"`
150
+ Run using the Bash tool with description "Generating Probe name...": `probe_name=$(aether generate-ant-name "probe" | jq -r '.result') && aether spawn-log "Queen" "probe" "$probe_name" "Coverage improvement: ${coverage_percent}%" && echo "{\"name\":\"$probe_name\"}"`
151
151
 
152
152
 
153
153
  c. Display: `🧪🐜 Probe {probe_name} spawning — Coverage at {coverage_percent}%, generating tests for uncovered paths...`
@@ -208,13 +208,13 @@ Continue to Phase 5: Secrets Scan.
208
208
  f. Parse Probe JSON output and log completion:
209
209
  Extract: `tests_added`, `coverage.lines`, `coverage.branches`, `coverage.functions`, `edge_cases_discovered`, `mutation_score`
210
210
 
211
- Run using the Bash tool with description "Logging Probe completion...": `bash .aether/aether-utils.sh spawn-complete "$probe_name" "completed" "{\"tests_added\":${#tests_added[@]},\"coverage\":{\"lines\":${coverage_lines},\"branches\":${coverage_branches},\"functions\":${coverage_functions}}}"`
211
+ Run using the Bash tool with description "Logging Probe completion...": `aether spawn-complete "$probe_name" "completed" "{\"tests_added\":${#tests_added[@]},\"coverage\":{\"lines\":${coverage_lines},\"branches\":${coverage_branches},\"functions\":${coverage_functions}}}"`
212
212
 
213
213
  g. Log findings to midden:
214
- Run using the Bash tool with description "Logging Probe findings to midden...": `bash .aether/aether-utils.sh midden-write "coverage" "Probe generated tests, coverage: ${coverage_lines}%/${coverage_branches}%/${coverage_functions}%" "probe"`
214
+ Run using the Bash tool with description "Logging Probe findings to midden...": `aether midden-write "coverage" "Probe generated tests, coverage: ${coverage_lines}%/${coverage_branches}%/${coverage_functions}%" "probe"`
215
215
 
216
216
  If edge cases found:
217
- Run using the Bash tool with description "Logging edge cases to midden...": `bash .aether/aether-utils.sh midden-write "edge_cases" "Found ${#edge_cases_discovered[@]} edge cases" "probe"`
217
+ Run using the Bash tool with description "Logging edge cases to midden...": `aether midden-write "edge_cases" "Found ${#edge_cases_discovered[@]} edge cases" "probe"`
218
218
 
219
219
  4. **NON-BLOCKING continuation:**
220
220
  Display Probe findings summary:
@@ -351,8 +351,8 @@ The phase will NOT advance until spawning occurs.
351
351
  **CRITICAL:** Do NOT proceed to Step 1.7. Do NOT advance the phase.
352
352
  Log the violation:
353
353
  ```bash
354
- bash .aether/aether-utils.sh activity-log "BLOCKED" "colony" "Spawn gate failed: {task_count} tasks, 0 spawns"
355
- bash .aether/aether-utils.sh error-flag-pattern "no-spawn-violation" "Prime Worker completed phase without spawning specialists" "critical"
354
+ aether activity-log "BLOCKED" "colony" "Spawn gate failed: {task_count} tasks, 0 spawns"
355
+ aether error-flag-pattern "no-spawn-violation" "Prime Worker completed phase without spawning specialists" "critical"
356
356
  ```
357
357
 
358
358
  **HARD REJECTION - If watcher_count == 0 (no testing separation):**
@@ -392,7 +392,7 @@ Continue to Step 1.7.
392
392
 
393
393
  Scan all modified/created files for known anti-patterns. This catches recurring bugs before they reach production.
394
394
 
395
- For each file, run using the Bash tool with description "Scanning for anti-patterns...": `bash .aether/aether-utils.sh check-antipattern "{file_path}"`
395
+ For each file, run using the Bash tool with description "Scanning for anti-patterns...": `aether check-antipattern "{file_path}"`
396
396
 
397
397
  Run for each file in `files_created` and `files_modified` from Prime Worker output.
398
398
 
@@ -503,7 +503,7 @@ If no CRITICAL issues, continue to Step 1.7.1.
503
503
  Run using the Bash tool with description "Establishing test baseline...": `test_output_before=$(npm test 2>&1 || echo "TEST_FAILED") && tests_passing_before=$(echo "$test_output_before" | grep -oE '[0-9]+ passing' | grep -oE '[0-9]+' || echo "0") && echo "Baseline: $tests_passing_before tests passing"`
504
504
 
505
505
  b. **Generate Weaver name and dispatch:**
506
- Run using the Bash tool with description "Generating Weaver name...": `weaver_name=$(bash .aether/aether-utils.sh generate-ant-name "weaver" | jq -r '.result') && bash .aether/aether-utils.sh spawn-log "Queen" "weaver" "$weaver_name" "Proactive refactoring" && echo "{\"name\":\"$weaver_name\"}"`
506
+ Run using the Bash tool with description "Generating Weaver name...": `weaver_name=$(aether generate-ant-name "weaver" | jq -r '.result') && aether spawn-log "Queen" "weaver" "$weaver_name" "Proactive refactoring" && echo "{\"name\":\"$weaver_name\"}"`
507
507
 
508
508
 
509
509
  d. **Display:** `🔄🐜 Weaver {weaver_name} spawning — Refactoring complex code...`
@@ -585,11 +585,11 @@ If no CRITICAL issues, continue to Step 1.7.1.
585
585
  ```
586
586
 
587
587
  g. **Log completion:**
588
- Run using the Bash tool with description "Logging Weaver completion...": `bash .aether/aether-utils.sh spawn-complete "$weaver_name" "$weaver_status" "Refactoring $weaver_status"`
588
+ Run using the Bash tool with description "Logging Weaver completion...": `aether spawn-complete "$weaver_name" "$weaver_status" "Refactoring $weaver_status"`
589
589
 
590
590
 
591
591
  i. **Log to midden:**
592
- Run using the Bash tool with description "Logging refactoring activity to midden...": `bash .aether/aether-utils.sh midden-write "refactoring" "Weaver refactored files, complexity before/after: ${complexity_before}/${complexity_after}" "weaver"`
592
+ Run using the Bash tool with description "Logging refactoring activity to midden...": `aether midden-write "refactoring" "Weaver refactored files, complexity before/after: ${complexity_before}/${complexity_after}" "weaver"`
593
593
 
594
594
  5. **Display completion:**
595
595
  ```
@@ -618,7 +618,7 @@ Continue to Step 1.9.
618
618
  **If package.json exists:**
619
619
 
620
620
  1. Generate Gatekeeper name and log spawn:
621
- Run using the Bash tool with description "Generating Gatekeeper name...": `gatekeeper_name=$(bash .aether/aether-utils.sh generate-ant-name "gatekeeper" | jq -r '.result') && bash .aether/aether-utils.sh spawn-log "Queen" "gatekeeper" "$gatekeeper_name" "Supply chain security audit" && echo "{\"name\":\"$gatekeeper_name\"}"`
621
+ Run using the Bash tool with description "Generating Gatekeeper name...": `gatekeeper_name=$(aether generate-ant-name "gatekeeper" | jq -r '.result') && aether spawn-log "Queen" "gatekeeper" "$gatekeeper_name" "Supply chain security audit" && echo "{\"name\":\"$gatekeeper_name\"}"`
622
622
 
623
623
  2. Display: `📦🐜 Gatekeeper {name} spawning — Scanning dependencies for CVEs and license compliance...`
624
624
 
@@ -663,7 +663,7 @@ Provide JSON output matching this schema:
663
663
  5. Parse Gatekeeper JSON output and log completion:
664
664
  Extract: `security.critical`, `security.high`, `status`
665
665
 
666
- Run using the Bash tool with description "Logging Gatekeeper completion...": `bash .aether/aether-utils.sh spawn-complete "$gatekeeper_name" "completed" "{\"security\":{\"critical\":$critical_count,\"high\":$high_count}}"`
666
+ Run using the Bash tool with description "Logging Gatekeeper completion...": `aether spawn-complete "$gatekeeper_name" "completed" "{\"security\":{\"critical\":$critical_count,\"high\":$high_count}}"`
667
667
 
668
668
  **Gate Decision Logic:**
669
669
 
@@ -693,7 +693,7 @@ The phase will NOT advance with critical CVEs.
693
693
  Security warnings logged to midden for later review.
694
694
  Proceeding with caution...
695
695
  ```
696
- Run using the Bash tool with description "Logging high-severity warnings...": `bash .aether/aether-utils.sh midden-write "security" "High CVEs found: $high_count" "gatekeeper"`
696
+ Run using the Bash tool with description "Logging high-severity warnings...": `aether midden-write "security" "High CVEs found: $high_count" "gatekeeper"`
697
697
  Continue to Step 1.9.
698
698
 
699
699
  - **If clean (no critical or high):**
@@ -707,7 +707,7 @@ Continue to Step 1.9.
707
707
  **Code quality audit — runs on every `/ant:continue` for consistent coverage.**
708
708
 
709
709
  1. Generate Auditor name and log spawn:
710
- Run using the Bash tool with description "Generating Auditor name...": `auditor_name=$(bash .aether/aether-utils.sh generate-ant-name "auditor" | jq -r '.result') && bash .aether/aether-utils.sh spawn-log "Queen" "auditor" "$auditor_name" "Code quality audit" && echo "{\"name\":\"$auditor_name\"}"`
710
+ Run using the Bash tool with description "Generating Auditor name...": `auditor_name=$(aether generate-ant-name "auditor" | jq -r '.result') && aether spawn-log "Queen" "auditor" "$auditor_name" "Code quality audit" && echo "{\"name\":\"$auditor_name\"}"`
711
711
 
712
712
  2. Display: `👥🐜 Auditor {name} spawning — Reviewing code with multi-lens analysis...`
713
713
 
@@ -764,7 +764,7 @@ Provide JSON output matching this schema:
764
764
  6. Parse Auditor JSON output and log completion:
765
765
  Extract: `findings.critical`, `findings.high`, `findings.medium`, `findings.low`, `findings.info`, `overall_score`, `dimensions_audited`
766
766
 
767
- Run using the Bash tool with description "Logging Auditor completion...": `bash .aether/aether-utils.sh spawn-complete "$auditor_name" "completed" "{\"findings\":{\"critical\":$critical_count,\"high\":$high_count,\"medium\":$medium_count,\"low\":$low_count,\"info\":$info_count},\"score\":$overall_score}"`
767
+ Run using the Bash tool with description "Logging Auditor completion...": `aether spawn-complete "$auditor_name" "completed" "{\"findings\":{\"critical\":$critical_count,\"high\":$high_count,\"medium\":$medium_count,\"low\":$low_count,\"info\":$info_count},\"score\":$overall_score}"`
768
768
 
769
769
  **Gate Decision Logic:**
770
770
 
@@ -788,7 +788,7 @@ Critical Findings:
788
788
 
789
789
  The phase will NOT advance with critical quality issues.
790
790
  ```
791
- Run using the Bash tool with description "Logging critical quality block...": `bash .aether/aether-utils.sh error-flag-pattern "auditor-critical-findings" "$critical_count critical quality issues found" "critical"`
791
+ Run using the Bash tool with description "Logging critical quality block...": `aether error-flag-pattern "auditor-critical-findings" "$critical_count critical quality issues found" "critical"`
792
792
  **CRITICAL:** Do NOT proceed to Step 1.10. Stop here.
793
793
 
794
794
  - **Else if `overall_score < 60`:**
@@ -809,7 +809,7 @@ Code quality score below threshold: {overall_score}/100 (threshold: 60)
809
809
 
810
810
  The phase will NOT advance with quality score below 60.
811
811
  ```
812
- Run using the Bash tool with description "Logging quality score block...": `bash .aether/aether-utils.sh error-flag-pattern "auditor-quality-score" "Score $overall_score below threshold 60" "critical"`
812
+ Run using the Bash tool with description "Logging quality score block...": `aether error-flag-pattern "auditor-quality-score" "Score $overall_score below threshold 60" "critical"`
813
813
  **CRITICAL:** Do NOT proceed to Step 1.10. Stop here.
814
814
 
815
815
  - **Else if `findings.high > 0`:**
@@ -822,7 +822,7 @@ Run using the Bash tool with description "Logging quality score block...": `bash
822
822
  Quality warnings logged to midden for later review.
823
823
  Proceeding with caution...
824
824
  ```
825
- Run using the Bash tool with description "Logging high-quality warnings...": `bash .aether/aether-utils.sh midden-write "quality" "High severity issues: $high_count (score: $overall_score)" "auditor"`
825
+ Run using the Bash tool with description "Logging high-quality warnings...": `aether midden-write "quality" "High severity issues: $high_count (score: $overall_score)" "auditor"`
826
826
  Continue to Step 1.10.
827
827
 
828
828
  - **If clean (score >= 60, no critical):**
@@ -865,7 +865,7 @@ The phase will NOT advance with fabricated metrics.
865
865
 
866
866
  **CRITICAL:** Do NOT proceed. Log the violation:
867
867
  ```bash
868
- bash .aether/aether-utils.sh error-flag-pattern "fabricated-tdd" "Prime Worker reported TDD metrics without creating test files" "critical"
868
+ aether error-flag-pattern "fabricated-tdd" "Prime Worker reported TDD metrics without creating test files" "critical"
869
869
  ```
870
870
 
871
871
  **If tests_added == 0 or test files exist matching claims:**
@@ -911,7 +911,7 @@ Please describe the issues so they can be addressed:
911
911
 
912
912
  Use AskUserQuestion to get issue details. Log to errors.records:
913
913
  ```bash
914
- bash .aether/aether-utils.sh error-add "runtime" "critical" "{user_description}" {phase}
914
+ aether error-add "runtime" "critical" "{user_description}" {phase}
915
915
  ```
916
916
 
917
917
  Do NOT proceed to Step 2.
@@ -946,10 +946,10 @@ Continue to Step 1.12.
946
946
  **The Iron Law:** No phase advancement with unresolved blockers.
947
947
 
948
948
  First, auto-resolve any flags eligible for resolution now that verification has passed:
949
- Run using the Bash tool with description "Auto-resolving flags...": `bash .aether/aether-utils.sh flag-auto-resolve "build_pass"`
949
+ Run using the Bash tool with description "Auto-resolving flags...": `aether flag-auto-resolve "build_pass"`
950
950
 
951
951
  Then check for remaining blocking flags:
952
- Run using the Bash tool with description "Checking for blockers...": `bash .aether/aether-utils.sh flag-check-blockers {current_phase}`
952
+ Run using the Bash tool with description "Checking for blockers...": `aether flag-check-blockers {current_phase}`
953
953
 
954
954
  Parse result for `blockers`, `issues`, and `notes` counts.
955
955
 
@@ -1056,7 +1056,7 @@ Update COLONY_STATE.json:
1056
1056
  if [[ -n "$current_phase_learnings" ]]; then
1057
1057
  echo "$current_phase_learnings" | jq -r '.learnings[]?.claim // empty' 2>/dev/null | while read -r claim; do
1058
1058
  if [[ -n "$claim" ]]; then
1059
- bash .aether/aether-utils.sh memory-capture "learning" "$claim" "pattern" "worker:continue"
1059
+ aether memory-capture "learning" "$claim" "pattern" "worker:continue"
1060
1060
  fi
1061
1061
  done
1062
1062
  echo "Recorded observations for threshold tracking"
@@ -1140,7 +1140,7 @@ Update COLONY_STATE.json:
1140
1140
  Write COLONY_STATE.json.
1141
1141
 
1142
1142
  Validate the state file:
1143
- Run using the Bash tool with description "Validating colony state...": `bash .aether/aether-utils.sh validate-state colony`
1143
+ Run using the Bash tool with description "Validating colony state...": `aether validate-state colony`
1144
1144
 
1145
1145
  ### Step 2.1: Auto-Emit Phase Pheromones (SILENT)
1146
1146
 
@@ -1160,7 +1160,7 @@ After learning extraction completes in Step 2, auto-emit a FEEDBACK signal summa
1160
1160
  phase_feedback="Phase $phase_id ($phase_name) completed. Key patterns: {brief summary of 1-3 learnings from Step 2}"
1161
1161
  # Fallback if no learnings: "Phase $phase_id ($phase_name) completed without notable patterns."
1162
1162
 
1163
- bash .aether/aether-utils.sh pheromone-write FEEDBACK "$phase_feedback" \
1163
+ aether pheromone-write FEEDBACK "$phase_feedback" \
1164
1164
  --strength 0.6 \
1165
1165
  --source "worker:continue" \
1166
1166
  --reason "Auto-emitted on phase advance: captures what worked and what was learned" \
@@ -1196,7 +1196,7 @@ if [[ -n "$decisions" ]]; then
1196
1196
  [.signals[] | select(.active == true and (.source == "auto:decision" or .source == "system:decision") and (.content.text | contains($text)))] | length
1197
1197
  ' .aether/data/pheromones.json 2>/dev/null || echo "0")
1198
1198
  if [[ "$existing" == "0" ]]; then
1199
- bash .aether/aether-utils.sh pheromone-write FEEDBACK \
1199
+ aether pheromone-write FEEDBACK \
1200
1200
  "[decision] $dec" \
1201
1201
  --strength 0.6 \
1202
1202
  --source "auto:decision" \
@@ -1215,7 +1215,7 @@ Strength is 0.6 (auto-emitted = lower than user-emitted). Source is `"auto:decis
1215
1215
  Query the actual failure store (`midden.json`) for recurring error categories. Categories with 3+ occurrences indicate persistent issues that should steer workers away from known failure modes.
1216
1216
 
1217
1217
  ```bash
1218
- midden_result=$(bash .aether/aether-utils.sh midden-recent-failures 50 2>/dev/null || echo '{"count":0,"failures":[]}')
1218
+ midden_result=$(aether midden-recent-failures 50 2>/dev/null || echo '{"count":0,"failures":[]}')
1219
1219
  midden_count=$(echo "$midden_result" | jq '.count // 0')
1220
1220
 
1221
1221
  if [[ "$midden_count" -gt 0 ]]; then
@@ -1242,7 +1242,7 @@ if [[ "$midden_count" -gt 0 ]]; then
1242
1242
  ' .aether/data/pheromones.json 2>/dev/null || echo "0")
1243
1243
 
1244
1244
  if [[ "$existing" == "0" ]]; then
1245
- bash .aether/aether-utils.sh pheromone-write REDIRECT \
1245
+ aether pheromone-write REDIRECT \
1246
1246
  "[error-pattern] Category \"$category\" recurring ($count occurrences)" \
1247
1247
  --strength 0.7 \
1248
1248
  --source "auto:error" \
@@ -1251,7 +1251,7 @@ if [[ "$midden_count" -gt 0 ]]; then
1251
1251
  emit_count=$((emit_count + 1))
1252
1252
 
1253
1253
  # Capture as resolution candidate for promotion tracking
1254
- bash .aether/aether-utils.sh memory-capture \
1254
+ aether memory-capture \
1255
1255
  "resolution" \
1256
1256
  "Recurring error pattern: $category ($count occurrences)" \
1257
1257
  "pattern" \
@@ -1298,7 +1298,7 @@ for encoded in $recurring_criteria; do
1298
1298
  ' .aether/data/pheromones.json 2>/dev/null || echo "0")
1299
1299
 
1300
1300
  if [[ "$existing" == "0" ]]; then
1301
- bash .aether/aether-utils.sh pheromone-write FEEDBACK \
1301
+ aether pheromone-write FEEDBACK \
1302
1302
  "[success-pattern] \"$text\" recurs across phases $phases" \
1303
1303
  --strength 0.6 \
1304
1304
  --source "auto:success" \
@@ -1314,7 +1314,7 @@ Strength is 0.6 (auto-emitted). Source is `"auto:success"`. Cap: max 2 success c
1314
1314
 
1315
1315
  After auto-emission, expire all signals with `expires_at == "phase_end"`. The FEEDBACK from 2.1a uses a 30d TTL and is not affected by this step.
1316
1316
 
1317
- Run using the Bash tool with description "Maintaining pheromone memory...": `bash .aether/aether-utils.sh pheromone-expire --phase-end-only 2>/dev/null && bash .aether/aether-utils.sh eternal-init 2>/dev/null`
1317
+ Run using the Bash tool with description "Maintaining pheromone memory...": `aether pheromone-expire --phase-end-only 2>/dev/null && aether eternal-init 2>/dev/null`
1318
1318
 
1319
1319
  This is idempotent — runs every time continue fires but only creates the directory/file once.
1320
1320
 
@@ -1328,7 +1328,7 @@ If `$ARGUMENTS` contains `--deferred`:
1328
1328
  ```bash
1329
1329
  if [[ "$ARGUMENTS" == *"--deferred"* ]] && [[ -f .aether/data/learning-deferred.json ]]; then
1330
1330
  echo "📦 Reviewing deferred proposals..."
1331
- bash .aether/aether-utils.sh learning-approve-proposals --deferred ${verbose:+--verbose}
1331
+ aether learning-approve-proposals --deferred ${verbose:+--verbose}
1332
1332
  fi
1333
1333
  ```
1334
1334
 
@@ -1336,7 +1336,7 @@ fi
1336
1336
 
1337
1337
  1. **Check for proposals:**
1338
1338
  ```bash
1339
- proposals=$(bash .aether/aether-utils.sh learning-check-promotion 2>/dev/null || echo '{"proposals":[]}')
1339
+ proposals=$(aether learning-check-promotion 2>/dev/null || echo '{"proposals":[]}')
1340
1340
  proposal_count=$(echo "$proposals" | jq '.proposals | length')
1341
1341
  ```
1342
1342
 
@@ -1348,7 +1348,7 @@ fi
1348
1348
  if [[ "$proposal_count" -gt 0 ]]; then
1349
1349
  verbose_flag=""
1350
1350
  [[ "$ARGUMENTS" == *"--verbose"* ]] && verbose_flag="--verbose"
1351
- bash .aether/aether-utils.sh learning-approve-proposals $verbose_flag
1351
+ aether learning-approve-proposals $verbose_flag
1352
1352
  fi
1353
1353
  # If no proposals, silently skip without notice (per user decision)
1354
1354
  ```
@@ -1388,7 +1388,7 @@ if [[ -f "$obs_file" ]]; then
1388
1388
  colony=$(echo "$encoded" | base64 -d | jq -r '.colonies[0] // "unknown"')
1389
1389
  [[ -z "$content" ]] && continue
1390
1390
 
1391
- result=$(bash .aether/aether-utils.sh learning-promote-auto "$wisdom_type" "$content" "$colony" "learning" 2>/dev/null || echo '{}')
1391
+ result=$(aether learning-promote-auto "$wisdom_type" "$content" "$colony" "learning" 2>/dev/null || echo '{}')
1392
1392
  was_promoted=$(echo "$result" | jq -r '.result.promoted // false' 2>/dev/null || echo "false")
1393
1393
  if [[ "$was_promoted" == "true" ]]; then
1394
1394
  promoted_count=$((promoted_count + 1))
@@ -1452,7 +1452,7 @@ If no `CHANGELOG.md` exists, `changelog-append` creates one automatically.
1452
1452
  **Step 2.3.1: Collect plan data**
1453
1453
 
1454
1454
  ```bash
1455
- bash .aether/aether-utils.sh changelog-collect-plan-data "{phase_identifier}" "{plan_number}"
1455
+ aether changelog-collect-plan-data "{phase_identifier}" "{plan_number}"
1456
1456
  ```
1457
1457
 
1458
1458
  Parse the returned JSON to extract `files`, `decisions`, `worked`, and `requirements` arrays.
@@ -1468,7 +1468,7 @@ If the command fails (e.g., no plan file found), fall back to collecting data ma
1468
1468
  **Step 2.3.2: Append changelog entry**
1469
1469
 
1470
1470
  ```bash
1471
- bash .aether/aether-utils.sh changelog-append \
1471
+ aether changelog-append \
1472
1472
  "$(date +%Y-%m-%d)" \
1473
1473
  "{phase_identifier}" \
1474
1474
  "{plan_number}" \
@@ -1509,7 +1509,7 @@ Store this as `ai_description` for the commit message.
1509
1509
  #### Step 2.4.2: Generate Enhanced Commit Message
1510
1510
 
1511
1511
  ```bash
1512
- bash .aether/aether-utils.sh generate-commit-message "contextual" {phase_id} "{phase_name}" "{ai_description}" {plan_number}
1512
+ aether generate-commit-message "contextual" {phase_id} "{phase_name}" "{ai_description}" {plan_number}
1513
1513
  ```
1514
1514
 
1515
1515
  Parse the returned JSON to extract:
@@ -1624,18 +1624,18 @@ After phase advancement is complete, update `.aether/CONTEXT.md`:
1624
1624
 
1625
1625
  **Log the activity:**
1626
1626
  ```bash
1627
- bash .aether/aether-utils.sh context-update activity "continue" "Phase {prev_id} completed, advanced to {next_id}" "—"
1627
+ aether context-update activity "continue" "Phase {prev_id} completed, advanced to {next_id}" "—"
1628
1628
  ```
1629
1629
 
1630
1630
  **Update the phase:**
1631
1631
  ```bash
1632
- bash .aether/aether-utils.sh context-update update-phase {next_id} "{next_phase_name}" "YES" "Phase advanced, ready to build"
1632
+ aether context-update update-phase {next_id} "{next_phase_name}" "YES" "Phase advanced, ready to build"
1633
1633
  ```
1634
1634
 
1635
1635
  **Log any decisions from this session:**
1636
1636
  If any architectural decisions were made during verification, also run:
1637
1637
  ```bash
1638
- bash .aether/aether-utils.sh context-update decision "{decision_description}" "{rationale}" "Queen"
1638
+ aether context-update decision "{decision_description}" "{rationale}" "Queen"
1639
1639
  ```
1640
1640
 
1641
1641
  ### Step 2.7: Project Completion
@@ -1676,7 +1676,7 @@ Output:
1676
1676
 
1677
1677
  ```
1678
1678
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1679
- P H A S E A D V A N C E M E N T
1679
+ ➡️ P H A S E A D V A N C E M E N T
1680
1680
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1681
1681
 
1682
1682
  ✅ Phase {prev_id}: {prev_name} -- COMPLETED
@@ -1719,7 +1719,21 @@ Output:
1719
1719
  Update the session tracking file to enable `/ant:resume` after context clear:
1720
1720
 
1721
1721
  ```bash
1722
- bash .aether/aether-utils.sh session-update "/ant:continue" "/ant:build {next_id}" "Phase {prev_id} completed, advanced to Phase {next_id}"
1722
+ aether session-update "/ant:continue" "/ant:build {next_id}" "Phase {prev_id} completed, advanced to Phase {next_id}"
1723
1723
  ```
1724
1724
 
1725
- Run using the Bash tool with description "Saving session state...": `bash .aether/aether-utils.sh session-update "/ant:continue" "/ant:build {next_id}" "Phase {prev_id} completed, advanced to Phase {next_id}"`
1725
+ Run using the Bash tool with description "Saving session state...": `aether session-update "/ant:continue" "/ant:build {next_id}" "Phase {prev_id} completed, advanced to Phase {next_id}"`
1726
+
1727
+ ### Step 4.5: Housekeeping (Non-Blocking)
1728
+
1729
+ Prune stale backups and temp files. This runs automatically — failures never affect phase advancement.
1730
+
1731
+ Run using the Bash tool with description "Pruning stale backups...":
1732
+ ```bash
1733
+ aether backup-prune-global 2>/dev/null || true
1734
+ ```
1735
+
1736
+ Run using the Bash tool with description "Cleaning temp files...":
1737
+ ```bash
1738
+ aether temp-clean 2>/dev/null || true
1739
+ ```
@@ -32,8 +32,8 @@ The phase will NOT advance until spawning occurs.
32
32
  **CRITICAL:** Do NOT proceed to Step 1.7. Do NOT advance the phase.
33
33
  Log the violation:
34
34
  ```bash
35
- bash .aether/aether-utils.sh activity-log "BLOCKED" "colony" "Spawn gate failed: {task_count} tasks, 0 spawns"
36
- bash .aether/aether-utils.sh error-flag-pattern "no-spawn-violation" "Prime Worker completed phase without spawning specialists" "critical"
35
+ aether activity-log "BLOCKED" "colony" "Spawn gate failed: {task_count} tasks, 0 spawns"
36
+ aether error-flag-pattern "no-spawn-violation" "Prime Worker completed phase without spawning specialists" "critical"
37
37
  ```
38
38
 
39
39
  **HARD REJECTION - If watcher_count == 0 (no testing separation):**
@@ -73,7 +73,7 @@ Continue to Step 1.7.
73
73
 
74
74
  Scan all modified/created files for known anti-patterns. This catches recurring bugs before they reach production.
75
75
 
76
- For each file, run using the Bash tool with description "Scanning for anti-patterns...": `bash .aether/aether-utils.sh check-antipattern "{file_path}"`
76
+ For each file, run using the Bash tool with description "Scanning for anti-patterns...": `aether check-antipattern "{file_path}"`
77
77
 
78
78
  Run for each file in `files_created` and `files_modified` from Prime Worker output.
79
79
 
@@ -184,7 +184,7 @@ If no CRITICAL issues, continue to Step 1.7.1.
184
184
  Run using the Bash tool with description "Establishing test baseline...": `test_output_before=$(npm test 2>&1 || echo "TEST_FAILED") && tests_passing_before=$(echo "$test_output_before" | grep -oE '[0-9]+ passing' | grep -oE '[0-9]+' || echo "0") && echo "Baseline: $tests_passing_before tests passing"`
185
185
 
186
186
  b. **Generate Weaver name and dispatch:**
187
- Run using the Bash tool with description "Generating Weaver name...": `weaver_name=$(bash .aether/aether-utils.sh generate-ant-name "weaver" | jq -r '.result') && bash .aether/aether-utils.sh spawn-log "Queen" "weaver" "$weaver_name" "Proactive refactoring" && echo "{\"name\":\"$weaver_name\"}"`
187
+ Run using the Bash tool with description "Generating Weaver name...": `weaver_name=$(aether generate-ant-name "weaver" | jq -r '.result') && aether spawn-log "Queen" "weaver" "$weaver_name" "Proactive refactoring" && echo "{\"name\":\"$weaver_name\"}"`
188
188
 
189
189
  c. **Display:**
190
190
  ```
@@ -269,10 +269,10 @@ If no CRITICAL issues, continue to Step 1.7.1.
269
269
  ```
270
270
 
271
271
  g. **Log completion:**
272
- Run using the Bash tool with description "Logging Weaver completion...": `bash .aether/aether-utils.sh spawn-complete "$weaver_name" "$weaver_status" "Refactoring $weaver_status"`
272
+ Run using the Bash tool with description "Logging Weaver completion...": `aether spawn-complete "$weaver_name" "$weaver_status" "Refactoring $weaver_status"`
273
273
 
274
274
  h. **Log to midden:**
275
- Run using the Bash tool with description "Logging refactoring activity to midden...": `bash .aether/aether-utils.sh midden-write "refactoring" "Weaver refactored files, complexity before/after: ${complexity_before}/${complexity_after}" "weaver"`
275
+ Run using the Bash tool with description "Logging refactoring activity to midden...": `aether midden-write "refactoring" "Weaver refactored files, complexity before/after: ${complexity_before}/${complexity_after}" "weaver"`
276
276
 
277
277
  5. **Display completion:**
278
278
  ```
@@ -301,7 +301,7 @@ Continue to Step 1.9.
301
301
  **If package.json exists:**
302
302
 
303
303
  1. Generate Gatekeeper name and log spawn:
304
- Run using the Bash tool with description "Generating Gatekeeper name...": `gatekeeper_name=$(bash .aether/aether-utils.sh generate-ant-name "gatekeeper" | jq -r '.result') && bash .aether/aether-utils.sh spawn-log "Queen" "gatekeeper" "$gatekeeper_name" "Supply chain security audit" && echo "{\"name\":\"$gatekeeper_name\"}"`
304
+ Run using the Bash tool with description "Generating Gatekeeper name...": `gatekeeper_name=$(aether generate-ant-name "gatekeeper" | jq -r '.result') && aether spawn-log "Queen" "gatekeeper" "$gatekeeper_name" "Supply chain security audit" && echo "{\"name\":\"$gatekeeper_name\"}"`
305
305
 
306
306
  2. Display:
307
307
  ```
@@ -350,7 +350,7 @@ Provide JSON output matching this schema:
350
350
  5. Parse Gatekeeper JSON output and log completion:
351
351
  Extract: `security.critical`, `security.high`, `status`
352
352
 
353
- Run using the Bash tool with description "Logging Gatekeeper completion...": `bash .aether/aether-utils.sh spawn-complete "$gatekeeper_name" "completed" "{\"security\":{\"critical\":$critical_count,\"high\":$high_count}}"`
353
+ Run using the Bash tool with description "Logging Gatekeeper completion...": `aether spawn-complete "$gatekeeper_name" "completed" "{\"security\":{\"critical\":$critical_count,\"high\":$high_count}}"`
354
354
 
355
355
  **Gate Decision Logic:**
356
356
 
@@ -380,7 +380,7 @@ The phase will NOT advance with critical CVEs.
380
380
  Security warnings logged to midden for later review.
381
381
  Proceeding with caution...
382
382
  ```
383
- Run using the Bash tool with description "Logging high-severity warnings...": `bash .aether/aether-utils.sh midden-write "security" "High CVEs found: $high_count" "gatekeeper"`
383
+ Run using the Bash tool with description "Logging high-severity warnings...": `aether midden-write "security" "High CVEs found: $high_count" "gatekeeper"`
384
384
  Continue to Step 1.9.
385
385
 
386
386
  - **If clean (no critical or high):**
@@ -394,7 +394,7 @@ Continue to Step 1.9.
394
394
  **Code quality audit — runs on every `/ant:continue` for consistent coverage.**
395
395
 
396
396
  1. Generate Auditor name and log spawn:
397
- Run using the Bash tool with description "Generating Auditor name...": `auditor_name=$(bash .aether/aether-utils.sh generate-ant-name "auditor" | jq -r '.result') && bash .aether/aether-utils.sh spawn-log "Queen" "auditor" "$auditor_name" "Code quality audit" && echo "{\"name\":\"$auditor_name\"}"`
397
+ Run using the Bash tool with description "Generating Auditor name...": `auditor_name=$(aether generate-ant-name "auditor" | jq -r '.result') && aether spawn-log "Queen" "auditor" "$auditor_name" "Code quality audit" && echo "{\"name\":\"$auditor_name\"}"`
398
398
 
399
399
  2. Display:
400
400
  ```
@@ -455,7 +455,7 @@ Provide JSON output matching this schema:
455
455
  6. Parse Auditor JSON output and log completion:
456
456
  Extract: `findings.critical`, `findings.high`, `findings.medium`, `findings.low`, `findings.info`, `overall_score`, `dimensions_audited`
457
457
 
458
- Run using the Bash tool with description "Logging Auditor completion...": `bash .aether/aether-utils.sh spawn-complete "$auditor_name" "completed" "{\"findings\":{\"critical\":$critical_count,\"high\":$high_count,\"medium\":$medium_count,\"low\":$low_count,\"info\":$info_count},\"score\":$overall_score}"`
458
+ Run using the Bash tool with description "Logging Auditor completion...": `aether spawn-complete "$auditor_name" "completed" "{\"findings\":{\"critical\":$critical_count,\"high\":$high_count,\"medium\":$medium_count,\"low\":$low_count,\"info\":$info_count},\"score\":$overall_score}"`
459
459
 
460
460
  **Gate Decision Logic:**
461
461
 
@@ -479,7 +479,7 @@ Critical Findings:
479
479
 
480
480
  The phase will NOT advance with critical quality issues.
481
481
  ```
482
- Run using the Bash tool with description "Logging critical quality block...": `bash .aether/aether-utils.sh error-flag-pattern "auditor-critical-findings" "$critical_count critical quality issues found" "critical"`
482
+ Run using the Bash tool with description "Logging critical quality block...": `aether error-flag-pattern "auditor-critical-findings" "$critical_count critical quality issues found" "critical"`
483
483
  **CRITICAL:** Do NOT proceed to Step 1.10. Stop here.
484
484
 
485
485
  - **Else if `overall_score < 60`:**
@@ -500,7 +500,7 @@ Code quality score below threshold: {overall_score}/100 (threshold: 60)
500
500
 
501
501
  The phase will NOT advance with quality score below 60.
502
502
  ```
503
- Run using the Bash tool with description "Logging quality score block...": `bash .aether/aether-utils.sh error-flag-pattern "auditor-quality-score" "Score $overall_score below threshold 60" "critical"`
503
+ Run using the Bash tool with description "Logging quality score block...": `aether error-flag-pattern "auditor-quality-score" "Score $overall_score below threshold 60" "critical"`
504
504
  **CRITICAL:** Do NOT proceed to Step 1.10. Stop here.
505
505
 
506
506
  - **Else if `findings.high > 0`:**
@@ -513,7 +513,7 @@ Run using the Bash tool with description "Logging quality score block...": `bash
513
513
  Quality warnings logged to midden for later review.
514
514
  Proceeding with caution...
515
515
  ```
516
- Run using the Bash tool with description "Logging high-quality warnings...": `bash .aether/aether-utils.sh midden-write "quality" "High severity issues: $high_count (score: $overall_score)" "auditor"`
516
+ Run using the Bash tool with description "Logging high-quality warnings...": `aether midden-write "quality" "High severity issues: $high_count (score: $overall_score)" "auditor"`
517
517
  Continue to Step 1.10.
518
518
 
519
519
  - **If clean (score >= 60, no critical):**
@@ -556,7 +556,7 @@ The phase will NOT advance with fabricated metrics.
556
556
 
557
557
  **CRITICAL:** Do NOT proceed. Log the violation:
558
558
  ```bash
559
- bash .aether/aether-utils.sh error-flag-pattern "fabricated-tdd" "Prime Worker reported TDD metrics without creating test files" "critical"
559
+ aether error-flag-pattern "fabricated-tdd" "Prime Worker reported TDD metrics without creating test files" "critical"
560
560
  ```
561
561
 
562
562
  **If tests_added == 0 or test files exist matching claims:**
@@ -602,7 +602,7 @@ Please describe the issues so they can be addressed:
602
602
 
603
603
  Use AskUserQuestion to get issue details. Log to errors.records:
604
604
  ```bash
605
- bash .aether/aether-utils.sh error-add "runtime" "critical" "{user_description}" {phase}
605
+ aether error-add "runtime" "critical" "{user_description}" {phase}
606
606
  ```
607
607
 
608
608
  Do NOT proceed to Step 2.
@@ -637,10 +637,10 @@ Continue to Step 1.12.
637
637
  **The Iron Law:** No phase advancement with unresolved blockers.
638
638
 
639
639
  First, auto-resolve any flags eligible for resolution now that verification has passed:
640
- Run using the Bash tool with description "Auto-resolving flags...": `bash .aether/aether-utils.sh flag-auto-resolve "build_pass"`
640
+ Run using the Bash tool with description "Auto-resolving flags...": `aether flag-auto-resolve "build_pass"`
641
641
 
642
642
  Then check for remaining blocking flags:
643
- Run using the Bash tool with description "Checking for blockers...": `bash .aether/aether-utils.sh flag-check-blockers {current_phase}`
643
+ Run using the Bash tool with description "Checking for blockers...": `aether flag-check-blockers {current_phase}`
644
644
 
645
645
  Parse result for `blockers`, `issues`, and `notes` counts.
646
646
 
@@ -31,7 +31,7 @@ Extract: `goal`, `state`, `current_phase`, `plan.phases`, `errors`, `memory`, `e
31
31
 
32
32
  ### Step 1.5: Load State and Show Resumption Context
33
33
 
34
- Run using the Bash tool with description "Loading colony state...": `bash .aether/aether-utils.sh load-state`
34
+ Run using the Bash tool with description "Loading colony state...": `aether load-state`
35
35
 
36
36
  If successful and goal is not null:
37
37
  1. Extract current_phase from state
@@ -46,7 +46,7 @@ If .aether/HANDOFF.md exists (detected in load-state output):
46
46
  - Read .aether/HANDOFF.md for additional context
47
47
  - Remove .aether/HANDOFF.md after display (cleanup)
48
48
 
49
- Run using the Bash tool with description "Releasing colony lock...": `bash .aether/aether-utils.sh unload-state` to release lock.
49
+ Run using the Bash tool with description "Releasing colony lock...": `aether unload-state` to release lock.
50
50
 
51
51
  **Error handling:**
52
52
  - If E_FILE_NOT_FOUND: "No colony initialized. Run /ant:init first." and stop
@@ -72,7 +72,7 @@ If `state != "EXECUTING"`:
72
72
 
73
73
  Run using the Bash tool with description "Checking survey context...":
74
74
  ```bash
75
- survey_check=$(bash .aether/aether-utils.sh survey-verify 2>/dev/null || true)
75
+ survey_check=$(aether survey-verify 2>/dev/null || true)
76
76
  survey_docs=$(ls -1 .aether/data/survey/*.md 2>/dev/null | wc -l | tr -d ' ')
77
77
  survey_latest=$(ls -t .aether/data/survey/*.md 2>/dev/null | head -1)
78
78
  if [[ -n "$survey_latest" ]]; then
@@ -176,7 +176,7 @@ Continue to Phase 5: Secrets Scan.
176
176
  3. **If spawning Probe:**
177
177
 
178
178
  a. Generate Probe name and dispatch:
179
- Run using the Bash tool with description "Generating Probe name...": `probe_name=$(bash .aether/aether-utils.sh generate-ant-name "probe" | jq -r '.result') && bash .aether/aether-utils.sh spawn-log "Queen" "probe" "$probe_name" "Coverage improvement: ${coverage_percent}%" && echo "{\"name\":\"$probe_name\"}"`
179
+ Run using the Bash tool with description "Generating Probe name...": `probe_name=$(aether generate-ant-name "probe" | jq -r '.result') && aether spawn-log "Queen" "probe" "$probe_name" "Coverage improvement: ${coverage_percent}%" && echo "{\"name\":\"$probe_name\"}"`
180
180
 
181
181
  b. Display:
182
182
  ```
@@ -240,13 +240,13 @@ Continue to Phase 5: Secrets Scan.
240
240
  f. Parse Probe JSON output and log completion:
241
241
  Extract: `tests_added`, `coverage.lines`, `coverage.branches`, `coverage.functions`, `edge_cases_discovered`, `mutation_score`
242
242
 
243
- Run using the Bash tool with description "Logging Probe completion...": `bash .aether/aether-utils.sh spawn-complete "$probe_name" "completed" "{\"tests_added\":${#tests_added[@]},\"coverage\":{\"lines\":${coverage_lines},\"branches\":${coverage_branches},\"functions\":${coverage_functions}}}"`
243
+ Run using the Bash tool with description "Logging Probe completion...": `aether spawn-complete "$probe_name" "completed" "{\"tests_added\":${#tests_added[@]},\"coverage\":{\"lines\":${coverage_lines},\"branches\":${coverage_branches},\"functions\":${coverage_functions}}}"`
244
244
 
245
245
  g. Log findings to midden:
246
- Run using the Bash tool with description "Logging Probe findings to midden...": `bash .aether/aether-utils.sh midden-write "coverage" "Probe generated tests, coverage: ${coverage_lines}%/${coverage_branches}%/${coverage_functions}%" "probe"`
246
+ Run using the Bash tool with description "Logging Probe findings to midden...": `aether midden-write "coverage" "Probe generated tests, coverage: ${coverage_lines}%/${coverage_branches}%/${coverage_functions}%" "probe"`
247
247
 
248
248
  If edge cases found:
249
- Run using the Bash tool with description "Logging edge cases to midden...": `bash .aether/aether-utils.sh midden-write "edge_cases" "Found ${#edge_cases_discovered[@]} edge cases" "probe"`
249
+ Run using the Bash tool with description "Logging edge cases to midden...": `aether midden-write "edge_cases" "Found ${#edge_cases_discovered[@]} edge cases" "probe"`
250
250
 
251
251
  4. **NON-BLOCKING continuation:**
252
252
  Display Probe findings summary:
@@ -363,7 +363,7 @@ Cross-reference worker claims against reality. This step catches fabricated succ
363
363
  3. Run verification:
364
364
  Run using the Bash tool with description "Verifying worker claims...":
365
365
  ```bash
366
- bash .aether/aether-utils.sh verify-claims ".aether/data/last-build-claims.json" "<watcher_json_or_path>" "<test_exit_code>"
366
+ aether verify-claims ".aether/data/last-build-claims.json" "<watcher_json_or_path>" "<test_exit_code>"
367
367
  ```
368
368
 
369
369
  For the watcher JSON: use the Watcher output from the most recent build (if available in COLONY_STATE.json events or build synthesis). If no Watcher output is available, pass `'{"verification_passed":true}'` as default (conservative -- only test exit code mismatch can trigger).
@@ -386,7 +386,7 @@ Cross-reference worker claims against reality. This step catches fabricated succ
386
386
  Log a flag for each mismatch:
387
387
  Run using the Bash tool with description "Flagging verification mismatch...":
388
388
  ```bash
389
- bash .aether/aether-utils.sh flag-create "Verification mismatch: <summary>" --type blocker
389
+ aether flag-create "Verification mismatch: <summary>" --type blocker
390
390
  ```
391
391
 
392
392
  **Auto-retry once** (locked decision):
@@ -422,7 +422,7 @@ last_merge_branch="${last_merged_branch:-}"
422
422
  last_merge_sha="${last_merge_sha:-}"
423
423
 
424
424
  if [[ -n "$last_merge_branch" && -n "$last_merge_sha" ]]; then
425
- collect_result=$(bash .aether/aether-utils.sh midden-collect \
425
+ collect_result=$(aether midden-collect \
426
426
  --branch "$last_merge_branch" --merge-sha "$last_merge_sha" \
427
427
  2>/dev/null || echo '{"ok":false}')
428
428
  collect_ok=$(echo "$collect_result" | jq -r '.ok // false' 2>/dev/null)