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
@@ -18,7 +18,7 @@ The phase to build is: `$normalized_args`
18
18
 
19
19
  ### Step 0.5: Load Colony State
20
20
 
21
- Run using Bash tool: `bash .aether/aether-utils.sh load-state`
21
+ Run using Bash tool: `aether load-state`
22
22
 
23
23
  If the command fails (non-zero exit or JSON has ok: false):
24
24
  1. Parse error JSON
@@ -36,7 +36,7 @@ If successful:
36
36
  ```
37
37
  (If HANDOFF.md exists, this provides orientation before the build proceeds)
38
38
 
39
- After displaying context, run: `bash .aether/aether-utils.sh unload-state` to release the lock.
39
+ After displaying context, run: `aether unload-state` to release the lock.
40
40
 
41
41
  ### Step 1: Validate + Read State
42
42
 
@@ -69,7 +69,7 @@ Stop here.
69
69
 
70
70
  **Set colony depth (if --depth flag provided):**
71
71
  If `cli_depth_override` is set:
72
- 1. Run using Bash tool: `bash .aether/aether-utils.sh colony-depth set "$cli_depth_override"`
72
+ 1. Run using Bash tool: `aether colony-depth set "$cli_depth_override"`
73
73
  2. Parse JSON result - if `.ok` is false:
74
74
  - Display: `Error: Invalid depth "$cli_depth_override". Use: light, standard, deep, full`
75
75
  - Stop here
@@ -98,7 +98,7 @@ Extract:
98
98
  Check for unresolved blocker flags on the requested phase:
99
99
 
100
100
  ```bash
101
- bash .aether/aether-utils.sh flag-check-blockers {phase_number}
101
+ aether flag-check-blockers {phase_number}
102
102
  ```
103
103
 
104
104
  Parse the JSON result (`.result.blockers`):
@@ -106,7 +106,7 @@ Parse the JSON result (`.result.blockers`):
106
106
  - **If blockers == 0:** Display nothing (or optionally a brief `No active blockers for Phase {id}.` line). Proceed to Step 2.
107
107
  - **If blockers > 0:** Retrieve blocker details:
108
108
  ```bash
109
- bash .aether/aether-utils.sh flag-list --type blocker --phase {phase_number}
109
+ aether flag-list --type blocker --json --phase {phase_number}
110
110
  ```
111
111
  Parse `.result.flags` and display an advisory warning:
112
112
  ```
@@ -167,7 +167,7 @@ Output header:
167
167
 
168
168
  Run using the Bash tool with description "Showing phase progress...":
169
169
  ```bash
170
- progress_bar=$(bash .aether/aether-utils.sh generate-progress-bar "$current_phase" "$total_phases" 20 2>/dev/null || echo "")
170
+ progress_bar=$(aether generate-progress-bar "$current_phase" "$total_phases" 20 2>/dev/null || echo "")
171
171
  if [[ -n "$progress_bar" ]]; then
172
172
  echo "[Phase ${current_phase}/${total_phases}] ${progress_bar}"
173
173
  fi
@@ -194,7 +194,7 @@ CONSTRAINTS: (none)
194
194
  Check if territory survey exists and load relevant documents:
195
195
 
196
196
  ```bash
197
- bash .aether/aether-utils.sh survey-load "{phase_name}" 2>/dev/null
197
+ aether survey-load "{phase_name}" 2>/dev/null
198
198
  ```
199
199
 
200
200
  **Parse the JSON response:**
@@ -240,7 +240,7 @@ bash .aether/aether-utils.sh survey-load "{phase_name}" 2>/dev/null
240
240
  Call `queen-read` to extract eternal wisdom for worker priming:
241
241
 
242
242
  ```bash
243
- bash .aether/aether-utils.sh queen-read 2>/dev/null
243
+ aether queen-read 2>/dev/null
244
244
  ```
245
245
 
246
246
  **Parse the JSON response:**
@@ -275,7 +275,7 @@ queen_decrees = .result.wisdom.decrees (if .result.priming.has_decrees)
275
275
  Call `pheromone-read` to extract active colony signals for worker priming:
276
276
 
277
277
  ```bash
278
- bash .aether/aether-utils.sh pheromone-read 2>/dev/null
278
+ aether pheromone-read 2>/dev/null
279
279
  ```
280
280
 
281
281
  **Parse the JSON response:**
@@ -329,8 +329,8 @@ bash .aether/aether-utils.sh pheromone-read 2>/dev/null
329
329
 
330
330
  Generate archaeologist name and log:
331
331
  ```bash
332
- bash .aether/aether-utils.sh generate-ant-name "archaeologist"
333
- bash .aether/aether-utils.sh spawn-log "Queen" "scout" "{archaeologist_name}" "Pre-build archaeology scan"
332
+ aether generate-ant-name --caste "archaeologist"
333
+ aether spawn-log --name "Queen" --caste "scout" --id "{archaeologist_name}" --description "Pre-build archaeology scan"
334
334
  ```
335
335
 
336
336
  Display:
@@ -355,7 +355,7 @@ bash .aether/aether-utils.sh pheromone-read 2>/dev/null
355
355
  4. Run: git blame "{file_path}" | head -40 for authorship
356
356
  5. Note TODO/FIXME/HACK markers
357
357
 
358
- Log activity: bash .aether/aether-utils.sh activity-log "READ" "{Ant-Name}" "description"
358
+ Log activity: aether activity-log "READ" "{Ant-Name}" "description"
359
359
 
360
360
  Report (plain text):
361
361
  - WHY key code sections exist (from commits)
@@ -369,7 +369,7 @@ bash .aether/aether-utils.sh pheromone-read 2>/dev/null
369
369
 
370
370
  Log completion:
371
371
  ```bash
372
- bash .aether/aether-utils.sh spawn-complete "{archaeologist_name}" "completed" "Pre-build archaeology scan"
372
+ aether spawn-complete --id "{archaeologist_name}" --status "completed" --summary "Pre-build archaeology scan"
373
373
  ```
374
374
 
375
375
  3. **Store and display findings:**
@@ -420,9 +420,9 @@ Analyze the phase tasks:
420
420
 
421
421
  3. **Generate ant names for each worker:**
422
422
  ```bash
423
- bash .aether/aether-utils.sh generate-ant-name "builder"
424
- bash .aether/aether-utils.sh generate-ant-name "watcher"
425
- bash .aether/aether-utils.sh generate-ant-name "chaos"
423
+ aether generate-ant-name --caste "builder"
424
+ aether generate-ant-name --caste "watcher"
425
+ aether generate-ant-name --caste "chaos"
426
426
  ```
427
427
 
428
428
  Display spawn plan with caste emojis:
@@ -501,12 +501,12 @@ For a single worker:
501
501
 
502
502
  **First, mark build start in context:**
503
503
  ```bash
504
- bash .aether/aether-utils.sh context-update build-start {phase_id} {wave_1_worker_count} {wave_1_task_count}
504
+ aether context-update build-start {phase_id} {wave_1_worker_count} {wave_1_task_count}
505
505
  ```
506
506
 
507
507
  Before dispatching each worker, refresh colony context so new pheromones/memory are visible:
508
508
  ```bash
509
- prime_result=$(bash .aether/aether-utils.sh colony-prime --compact 2>/dev/null)
509
+ prime_result=$(aether colony-prime --compact 2>/dev/null)
510
510
  ```
511
511
  Update `prompt_section` from `prime_result.result.prompt_section`.
512
512
 
@@ -514,8 +514,8 @@ For each Wave 1 task, use Task tool with `subagent_type="aether-builder"`, inclu
514
514
 
515
515
  Log each spawn and update swarm display:
516
516
  ```bash
517
- bash .aether/aether-utils.sh spawn-log "Queen" "builder" "{ant_name}" "{task_description}"
518
- bash .aether/aether-utils.sh context-update worker-spawn "{ant_name}" "builder" "{task_description}"
517
+ aether spawn-log --name "Queen" --caste "builder" --id "{ant_name}" --description "{task_description}"
518
+ aether context-update worker-spawn "{ant_name}" "builder" "{task_description}"
519
519
  ```
520
520
 
521
521
  **Builder Worker Prompt (CLEAN OUTPUT):**
@@ -535,13 +535,13 @@ Goal: "{colony_goal}"
535
535
  Work:
536
536
  1. Read .aether/workers.md for Builder discipline
537
537
  2. Implement task, write tests
538
- 3. Log activity: bash .aether/aether-utils.sh activity-log "ACTION" "{Ant-Name}" "description"
538
+ 3. Log activity: aether activity-log "ACTION" "{Ant-Name}" "description"
539
539
 
540
540
  Spawn sub-workers ONLY if 3x complexity:
541
- - Check: bash .aether/aether-utils.sh spawn-can-spawn {depth} --enforce
542
- - Generate name: bash .aether/aether-utils.sh generate-ant-name "builder"
541
+ - Check: aether spawn-can-spawn {depth} --enforce
542
+ - Generate name: aether generate-ant-name --caste "builder"
543
543
  - Announce: "🐜 Spawning {child_name} for {reason}"
544
- - Log: bash .aether/aether-utils.sh spawn-log "{Ant-Name}" "builder" "{child_name}" "{task}"
544
+ - Log: aether spawn-log --name "{Ant-Name}" --caste "builder" --id "{child_name}" --description "{task}"
545
545
 
546
546
  Count your total tool calls (Read + Grep + Edit + Bash + Write) and report as tool_count.
547
547
 
@@ -624,7 +624,7 @@ Return ONLY this JSON (no other text):
624
624
 
625
625
  Before using any worker payload, validate schema:
626
626
  ```bash
627
- bash .aether/aether-utils.sh validate-worker-response builder '{worker_json}'
627
+ aether validate-worker-response builder '{worker_json}'
628
628
  ```
629
629
  If validation fails, treat the worker as failed with blocker `invalid_worker_response`.
630
630
 
@@ -644,8 +644,8 @@ Where `tool_count` comes from the worker's returned JSON `tool_count` field, and
644
644
 
645
645
  Log and update swarm display:
646
646
  ```bash
647
- bash .aether/aether-utils.sh spawn-complete "{ant_name}" "completed" "{summary}"
648
- bash .aether/aether-utils.sh context-update worker-complete "{ant_name}" "completed"
647
+ aether spawn-complete --id "{ant_name}" --status "completed" --summary "{summary}"
648
+ aether context-update worker-complete "{ant_name}" "completed"
649
649
  ```
650
650
 
651
651
  **Check for total wave failure:**
@@ -702,7 +702,7 @@ Awaiting your choice.
702
702
 
703
703
  Log escalation as flag:
704
704
  ```bash
705
- bash .aether/aether-utils.sh flag-add "blocker" "{task title}" "{failure summary}" "escalation" {phase_number}
705
+ aether flag-add --severity "blocker" --title "{task title}" --description "{failure summary}" --source "escalation" --phase {phase_number}
706
706
  ```
707
707
 
708
708
  If at least one worker succeeded, continue normally to the next wave.
@@ -732,7 +732,7 @@ Repeat Step 5.1-5.2 for each subsequent wave, waiting for previous wave to compl
732
732
  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):
733
733
 
734
734
  ```bash
735
- bash .aether/aether-utils.sh spawn-log "Queen" "watcher" "{watcher_name}" "Independent verification"
735
+ aether spawn-log --name "Queen" --caste "watcher" --id "{watcher_name}" --description "Independent verification"
736
736
  ```
737
737
 
738
738
  **Watcher Worker Prompt (CLEAN OUTPUT):**
@@ -752,7 +752,7 @@ Verification:
752
752
  4. Check success criteria: {list}
753
753
 
754
754
  Spawn sub-workers if needed:
755
- - Log: bash .aether/aether-utils.sh spawn-log "{Watcher-Name}" "watcher" "{child}" "{task}"
755
+ - Log: aether spawn-log --name "{Watcher-Name}" --caste "watcher" --id "{child}" --description "{task}"
756
756
  - Announce: "🐜 Spawning {child} to investigate {issue}"
757
757
 
758
758
  Count your total tool calls (Read + Grep + Edit + Bash + Write) and report as tool_count.
@@ -767,7 +767,7 @@ Return ONLY this JSON:
767
767
 
768
768
  Validate watcher payload first:
769
769
  ```bash
770
- bash .aether/aether-utils.sh validate-worker-response watcher '{watcher_json}'
770
+ aether validate-worker-response watcher '{watcher_json}'
771
771
  ```
772
772
 
773
773
  **Parse the Watcher's validated JSON response:** verification_passed, issues_found, quality_score, recommendation
@@ -792,13 +792,13 @@ For failed verification:
792
792
 
793
793
  Generate a chaos ant name and log the spawn:
794
794
  ```bash
795
- bash .aether/aether-utils.sh generate-ant-name "chaos"
796
- bash .aether/aether-utils.sh spawn-log "Queen" "chaos" "{chaos_name}" "Resilience testing of Phase {id} work"
795
+ aether generate-ant-name --caste "chaos"
796
+ aether spawn-log --name "Queen" --caste "chaos" --id "{chaos_name}" --description "Resilience testing of Phase {id} work"
797
797
  ```
798
798
 
799
799
  **Retrieve existing flags for this phase** (to avoid duplicate findings):
800
800
  ```bash
801
- bash .aether/aether-utils.sh flag-list --phase {phase_number}
801
+ aether flag-list --phase {phase_number}
802
802
  ```
803
803
  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".
804
804
 
@@ -849,17 +849,17 @@ Return ONLY this JSON:
849
849
  If any findings have severity `"critical"` or `"high"`:
850
850
  ```bash
851
851
  # Create a blocker flag for each critical/high chaos finding
852
- bash .aether/aether-utils.sh flag-add "blocker" "{finding.title}" "{finding.description}" "chaos-testing" {phase_number}
852
+ aether flag-add --severity "blocker" --title "{finding.title}" --description "{finding.description}" --source "chaos-testing" --phase {phase_number}
853
853
  ```
854
854
 
855
855
  Log the flag:
856
856
  ```bash
857
- bash .aether/aether-utils.sh activity-log "FLAG" "Chaos" "Created blocker: {finding.title}"
857
+ aether activity-log "FLAG" "Chaos" "Created blocker: {finding.title}"
858
858
  ```
859
859
 
860
860
  Log chaos ant completion and update swarm display:
861
861
  ```bash
862
- bash .aether/aether-utils.sh spawn-complete "{chaos_name}" "completed" "{summary}"
862
+ aether spawn-complete --id "{chaos_name}" --status "completed" --summary "{summary}"
863
863
  ```
864
864
 
865
865
  ### Step 5.8: Create Flags for Verification Failures
@@ -869,16 +869,51 @@ If the Watcher reported `verification_passed: false` or `recommendation: "fix_re
869
869
  For each issue in `issues_found`:
870
870
  ```bash
871
871
  # Create a blocker flag for each verification failure
872
- bash .aether/aether-utils.sh flag-add "blocker" "{issue_title}" "{issue_description}" "verification" {phase_number}
872
+ aether flag-add --severity "blocker" --title "{issue_title}" --description "{issue_description}" --source "verification" --phase {phase_number}
873
873
  ```
874
874
 
875
875
  Log the flag creation:
876
876
  ```bash
877
- bash .aether/aether-utils.sh activity-log "FLAG" "Watcher" "Created blocker: {issue_title}"
877
+ aether activity-log "FLAG" "Watcher" "Created blocker: {issue_title}"
878
878
  ```
879
879
 
880
880
  This ensures verification failures are persisted as blockers that survive context resets. Chaos Ant findings are flagged in Step 5.7.
881
881
 
882
+ ### Stage Audit Gate (Pre-Synthesis Check)
883
+
884
+ **This gate runs before Step 5.9. All build stages must have completed before synthesizing results.**
885
+
886
+ Verify that each of the following stages has a recorded completion status:
887
+
888
+ | Stage | Steps | Required |
889
+ |-------|-------|----------|
890
+ | Builder waves | Steps 5.1–5.3 | At least 1 worker completed (status "completed") |
891
+ | Watcher | Steps 5.4–5.5 | Watcher returned a result (any status) |
892
+ | Chaos | Steps 5.6–5.7 | Chaos ant returned a result (any status) |
893
+
894
+ Check by reviewing the in-memory worker results accumulated during Steps 5.1–5.7:
895
+ - `builder_results` — results from all builder wave tasks
896
+ - `watcher_result` — result from Step 5.5
897
+ - `chaos_result` — result from Step 5.7
898
+
899
+ **If any stage result is absent (stage did not run or returned no result):**
900
+ - HALT — do not proceed to Step 5.9
901
+ - Display:
902
+ ```
903
+ Stage Audit FAILED — cannot synthesize results.
904
+
905
+ Missing or incomplete stages:
906
+ {list each missing stage: "Builders — no results recorded" / "Watcher — did not complete" / "Chaos — did not complete"}
907
+
908
+ Recovery options:
909
+ 1. Re-run /ant:build to restart this phase
910
+ 2. Run /ant:flags to review blockers
911
+ 3. Run /ant:swarm to auto-repair failed tasks
912
+ ```
913
+ - Return `{"status": "failed", "summary": "Stage audit failed — stages did not complete"}` and stop.
914
+
915
+ **If all stages have results (even if some workers failed):** proceed to Step 5.9.
916
+
882
917
  ### Step 5.9: Synthesize Results
883
918
 
884
919
  **This step runs after all worker tasks have completed (Builders, Watcher, Chaos).**
@@ -918,11 +953,11 @@ Collect all worker outputs and create phase summary:
918
953
  For each worker that returned `status: "failed"`:
919
954
  For each file in that worker's `files_modified` or `files_created`:
920
955
  ```bash
921
- bash .aether/aether-utils.sh grave-add "{file}" "{ant_name}" "{task_id}" {phase} "{first blocker or summary}"
956
+ aether grave-add "{file}" "{ant_name}" "{task_id}" {phase} "{first blocker or summary}"
922
957
  ```
923
958
  Log the grave marker:
924
959
  ```bash
925
- bash .aether/aether-utils.sh activity-log "GRAVE" "Queen" "Grave marker placed at {file} — {ant_name} failed: {summary}"
960
+ aether activity-log "GRAVE" "Queen" "Grave marker placed at {file} — {ant_name} failed: {summary}"
926
961
  ```
927
962
 
928
963
  **Error Handoff Update:**
@@ -1097,12 +1132,12 @@ This ensures the handoff always reflects the latest build state, even if the ses
1097
1132
  Log this build activity to `.aether/CONTEXT.md`:
1098
1133
 
1099
1134
  ```bash
1100
- bash .aether/aether-utils.sh context-update activity "build {phase_id}" "{synthesis.status}" "{files_created_count + files_modified_count}"
1135
+ aether context-update activity "build {phase_id}" "{synthesis.status}" "{files_created_count + files_modified_count}"
1101
1136
  ```
1102
1137
 
1103
1138
  Mark build as complete in context:
1104
1139
  ```bash
1105
- bash .aether/aether-utils.sh context-update build-complete "{synthesis.status}" "{synthesis.status == 'completed' ? 'success' : 'failed'}"
1140
+ aether context-update build-complete "{synthesis.status}" "{synthesis.status == 'completed' ? 'success' : 'failed'}"
1106
1141
  ```
1107
1142
 
1108
1143
  Also update safe-to-clear status:
@@ -1149,7 +1184,7 @@ After displaying the BUILD SUMMARY (and optional verbose details), display Next
1149
1184
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "IDLE")
1150
1185
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json 2>/dev/null || echo "0")
1151
1186
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json 2>/dev/null || echo "0")
1152
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
1187
+ aether print-next-up
1153
1188
  ```
1154
1189
 
1155
1190
  **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.
@@ -1164,5 +1199,5 @@ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_pha
1164
1199
  Update the session tracking file to enable `/ant:resume` after context clear:
1165
1200
 
1166
1201
  ```bash
1167
- bash .aether/aether-utils.sh session-update "/ant:build {phase_id}" "/ant:continue" "Phase {phase_id} build completed: {synthesis.status}"
1202
+ aether session-update --command "/ant:build {phase_id}" --worker "/ant:continue" --summary "Phase {phase_id} build completed: {synthesis.status}"
1168
1203
  ```
@@ -297,12 +297,12 @@ After outputting the JSON report, iterate through the chaos report scenarios. Fo
297
297
 
298
298
  ```bash
299
299
  # For each scenario where status == "finding" AND severity is "CRITICAL" or "HIGH":
300
- bash .aether/aether-utils.sh flag-add "blocker" "{scenario.title}" "{scenario.description}" "chaos-standalone" {current_phase_number}
300
+ aether flag-add --severity "blocker" --title "{scenario.title}" --description "{scenario.description}" --source "chaos-standalone" --phase {current_phase_number}
301
301
  ```
302
302
 
303
303
  Log each flag creation:
304
304
  ```bash
305
- bash .aether/aether-utils.sh activity-log "FLAG" "Chaos Ant" "Created blocker: {scenario.title}"
305
+ aether activity-log "FLAG" "Chaos Ant" "Created blocker: {scenario.title}"
306
306
  ```
307
307
 
308
308
  The `{current_phase_number}` comes from the colony state loaded in Step 1 (`.aether/data/COLONY_STATE.json` field `current_phase`).
@@ -312,7 +312,7 @@ The `{current_phase_number}` comes from the colony state loaded in Step 1 (`.aet
312
312
  ### Step 7: Log Activity
313
313
 
314
314
  ```bash
315
- bash .aether/aether-utils.sh activity-log "CHAOS" "Chaos Ant" "Resilience test on {target}: {findings_count} finding(s) ({critical} critical, {high} high, {medium} medium, {low} low), {resilient_count} resilient"
315
+ aether activity-log "CHAOS" "Chaos Ant" "Resilience test on {target}: {findings_count} finding(s) ({critical} critical, {high} high, {medium} medium, {low} low), {resilient_count} resilient"
316
316
  ```
317
317
 
318
318
  ## Investigation Guidelines
@@ -77,18 +77,18 @@ mkdir -p .aether/data/survey
77
77
 
78
78
  Generate unique names for the 4 Surveyor Ants and log their dispatch:
79
79
  ```bash
80
- bash .aether/aether-utils.sh generate-ant-name "surveyor"
81
- bash .aether/aether-utils.sh generate-ant-name "surveyor"
82
- bash .aether/aether-utils.sh generate-ant-name "surveyor"
83
- bash .aether/aether-utils.sh generate-ant-name "surveyor"
80
+ aether generate-ant-name --caste "surveyor"
81
+ aether generate-ant-name --caste "surveyor"
82
+ aether generate-ant-name --caste "surveyor"
83
+ aether generate-ant-name --caste "surveyor"
84
84
  ```
85
85
 
86
86
  Log the dispatch:
87
87
  ```bash
88
- bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{provisions_name}" "Mapping provisions and trails"
89
- bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{nest_name}" "Mapping nest structure"
90
- bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{disciplines_name}" "Mapping disciplines and sentinels"
91
- bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{pathogens_name}" "Identifying pathogens"
88
+ aether spawn-log --name "Queen" --caste "surveyor" --id "{provisions_name}" --description "Mapping provisions and trails"
89
+ aether spawn-log --name "Queen" --caste "surveyor" --id "{nest_name}" --description "Mapping nest structure"
90
+ aether spawn-log --name "Queen" --caste "surveyor" --id "{disciplines_name}" --description "Mapping disciplines and sentinels"
91
+ aether spawn-log --name "Queen" --caste "surveyor" --id "{pathogens_name}" --description "Identifying pathogens"
92
92
  ```
93
93
 
94
94
  **Spawn 4 Surveyor Ants in parallel using the Task tool:**