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
@@ -44,10 +44,10 @@ Oracle peering into the depths...
44
44
 
45
45
  ### Step 0b: Stop Oracle
46
46
 
47
- Create the stop signal file by running using the Bash tool with description "Stopping oracle research...":
47
+ Stop any active Oracle research by running using the Bash tool with description "Stopping oracle research...":
48
48
 
49
49
  ```bash
50
- mkdir -p .aether/oracle && touch .aether/oracle/.stop
50
+ mkdir -p .aether/oracle && touch .aether/oracle/.stop && rm -f .aether/oracle/.loop-active
51
51
  ```
52
52
 
53
53
  Output:
@@ -55,8 +55,11 @@ Output:
55
55
  ```
56
56
  🔮🐜 Oracle Stop Signal Sent
57
57
 
58
- Created .aether/oracle/.stop
59
- The research loop will halt at the end of the current iteration.
58
+ Removed loop state files.
59
+ - .aether/oracle/.stop (signal for legacy tmux loop)
60
+ - .aether/oracle/.loop-active (signal for in-session loop)
61
+
62
+ Any active research will halt at the next iteration boundary.
60
63
 
61
64
  To check final results: /ant:oracle status
62
65
  ```
@@ -278,6 +281,41 @@ Describe the research topic in detail. The more specific, the better the Oracle'
278
281
 
279
282
  (The user will type their topic via the "Other" free-text option.)
280
283
 
284
+ **Question 1.5: Research Brief — Formulate and Approve**
285
+
286
+ Take the user's raw topic (from `$ARGUMENTS` or Question 1) and reformulate it into a structured research brief. The user may have typed casual natural language — your job is to sharpen it into a clear, well-scoped research prompt that will produce better results.
287
+
288
+ Display the brief for approval:
289
+
290
+ ```
291
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
292
+ 🔮 R E S E A R C H B R I E F
293
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
294
+
295
+ **Topic:** {reformulated topic — clear, specific, actionable}
296
+ **Core Question:** {the single most important question this research should answer}
297
+ **Context:** {what we already know from the codebase or user input}
298
+ **Success Criteria:** {what a good answer looks like — what would make this research useful}
299
+ ```
300
+
301
+ Guidelines for formulation:
302
+ - Turn vague topics into specific ones ("auth stuff" → "Authentication architecture: session-based vs token-based for this Node.js API")
303
+ - Add codebase context if relevant (tech stack, existing patterns)
304
+ - Make the core question answerable — not open-ended philosophy
305
+ - Keep success criteria concrete ("A recommendation with trade-offs" not "understand everything")
306
+
307
+ Then ask the user to approve:
308
+
309
+ ```
310
+ Does this capture what you're looking for? (approve / edit)
311
+ ```
312
+
313
+ - If the user approves: use the reformulated topic as the research topic going forward
314
+ - If the user edits: incorporate their changes, display the updated brief, and ask again
315
+ - Max 2 revision rounds (same as init). After 2, ask for final approval or cancel.
316
+
317
+ The approved **Topic** from the brief becomes the topic used in all subsequent steps (state.json, plan.json, research-plan.md).
318
+
281
319
  **Question 2: Research Template**
282
320
 
283
321
  ```
@@ -374,14 +412,14 @@ ORACLE_START=$(date +%s)
374
412
 
375
413
  Check for stale files by running using the Bash tool with description "Checking for stale oracle session...":
376
414
  ```bash
377
- stale_check=$(bash .aether/aether-utils.sh session-verify-fresh --command oracle "" "$ORACLE_START")
415
+ stale_check=$(aether session-verify-fresh --command oracle "" "$ORACLE_START")
378
416
  has_stale=$(echo "$stale_check" | jq -r '.stale | length')
379
417
  has_progress=$(echo "$stale_check" | jq -r '.fresh | length')
380
418
 
381
419
  if [[ "$has_stale" -gt 0 ]] || [[ "$has_progress" -gt 0 ]]; then
382
420
  # Found existing oracle session
383
421
  if [[ "$force_research" == "true" ]]; then
384
- bash .aether/aether-utils.sh session-clear --command oracle
422
+ aether session-clear --command oracle
385
423
  echo "Cleared stale oracle session for fresh research"
386
424
  else
387
425
  # Existing session found - prompt user
@@ -447,7 +485,7 @@ Use the Write tool to create `.aether/oracle/state.json`:
447
485
  For each focus area string from Question 7, run using the Bash tool with description "Emitting focus area pheromones...":
448
486
 
449
487
  ```bash
450
- bash .aether/aether-utils.sh pheromone-write FOCUS "$focus_area" \
488
+ aether pheromone-write --type FOCUS --content "$focus_area" \
451
489
  --strength 0.8 --source "oracle:wizard" \
452
490
  --reason "Focus area set in oracle wizard" --ttl "24h" 2>/dev/null || true
453
491
  ```
@@ -546,7 +584,7 @@ Next investigation: <text of q1, the first question>
546
584
 
547
585
  Verify that state.json, plan.json, gaps.md, synthesis.md, and research-plan.md were created successfully by running using the Bash tool with description "Verifying oracle files...":
548
586
  ```bash
549
- verify_result=$(bash .aether/aether-utils.sh session-verify-fresh --command oracle "" "$ORACLE_START")
587
+ verify_result=$(aether session-verify-fresh --command oracle "" "$ORACLE_START")
550
588
  fresh_count=$(echo "$verify_result" | jq -r '.fresh | length')
551
589
 
552
590
  if [[ "$fresh_count" -lt 5 ]]; then
@@ -558,7 +596,7 @@ Proceed to Step 3.
558
596
 
559
597
  ---
560
598
 
561
- ### Step 3: Launch
599
+ ### Step 3: Launch (In-Session Loop)
562
600
 
563
601
  Output the research configuration summary, showing the sub-questions from plan.json:
564
602
 
@@ -582,61 +620,59 @@ Output the research configuration summary, showing the sub-questions from plan.j
582
620
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
583
621
  ```
584
622
 
585
- Now launch the loop. Try tmux first, fall back to manual.
586
-
587
- **Try tmux** by running using the Bash tool with description "Launching oracle in tmux...":
623
+ **Create the loop marker file** by running using the Bash tool with description "Creating oracle loop marker...":
588
624
 
589
625
  ```bash
590
- tmux new-session -d -s oracle "cd $(pwd) && bash .aether/utils/oracle/oracle.sh; echo ''; echo '🔮🐜 Oracle loop finished. Press any key to close.'; read -n1" 2>/dev/null && echo "TMUX_OK" || echo "TMUX_FAIL"
626
+ SESSION_ID="${CLAUDE_SESSION_ID:-$(uuidgen 2>/dev/null || date +%s)}"
627
+ MAX_IT=<max_iterations from wizard>
628
+ TARGET_CONF=<target_confidence from wizard>
629
+ cat > .aether/oracle/.loop-active <<MARKER
630
+ ---
631
+ iteration: 0
632
+ max_iterations: $MAX_IT
633
+ session_id: $SESSION_ID
634
+ phase: survey
635
+ target_confidence: $TARGET_CONF
636
+ synthesis_done: false
637
+ oracle_md_path: .aether/utils/oracle/oracle.md
638
+ ---
639
+ Oracle research loop active
640
+ MARKER
641
+ echo "LOOP_MARKER_CREATED"
591
642
  ```
592
643
 
593
- **If TMUX_OK:**
644
+ Output:
594
645
 
595
646
  ```
596
- 🔮🐜 Oracle Launched
647
+ 🔮🐜 Oracle Research Started (In-Session Loop)
597
648
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
598
649
 
599
- The Oracle is researching in a background tmux session.
650
+ The Oracle is researching IN THIS SESSION.
651
+
652
+ The Stop hook will keep the loop running automatically:
653
+ - Each iteration researches one question
654
+ - Phases advance: survey -> investigate -> synthesize -> verify
655
+ - Loop ends when confidence reaches {target_confidence}% or max iterations hit
656
+ - A final synthesis pass produces the research report
600
657
 
601
- 👁️ Watch live: tmux attach -t oracle
602
658
  📊 Check status: /ant:oracle status
603
659
  🛑 Stop early: /ant:oracle stop
604
660
 
605
661
  Research progress visible at .aether/oracle/research-plan.md
606
- The Oracle will stop when it reaches {target_confidence}% confidence
607
- or completes {max_iterations} iterations.
608
662
 
609
663
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
610
664
 
611
- You can keep working. The Oracle runs independently.
665
+ You can continue chatting. The Oracle loop runs between your messages.
612
666
  ```
613
667
 
614
- Stop here.
615
-
616
- **If TMUX_FAIL** (tmux not installed or error):
617
-
618
- ```
619
- 🔮 Ready to Launch
620
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
621
-
622
- tmux not available. Run this in a separate terminal:
623
-
624
- cd {current_working_directory}
625
- bash .aether/utils/oracle/oracle.sh
626
-
627
- Then come back here:
628
- 📊 Check status: /ant:oracle status
629
- 🛑 Stop early: /ant:oracle stop
630
-
631
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
632
- ```
668
+ **Now begin the first iteration.** Read `.aether/utils/oracle/oracle.md` and start the survey phase research immediately.
669
+ Target the first untouched question from plan.json. Update state files as you go.
670
+ When you try to stop, the Stop hook will check progress and continue the loop if needed.
633
671
 
634
672
  Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
635
673
  ```bash
636
674
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
637
675
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
638
676
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
639
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
677
+ aether print-next-up
640
678
  ```
641
-
642
- Stop here.
@@ -33,7 +33,7 @@ From COLONY_STATE.json, extract:
33
33
 
34
34
  Run using the Bash tool with description "Loading active pheromones...":
35
35
  ```bash
36
- bash .aether/aether-utils.sh pheromone-read
36
+ aether pheromone-read
37
37
  ```
38
38
 
39
39
  Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
@@ -209,7 +209,7 @@ Next:
209
209
 
210
210
  Use the Bash tool with description "Logging hygiene activity..." to run:
211
211
  ```
212
- bash .aether/aether-utils.sh activity-log "COMPLETE" "queen" "Hygiene report generated"
212
+ aether activity-log "COMPLETE" "queen" "Hygiene report generated"
213
213
  ```
214
214
 
215
215
  Display persistence confirmation:
@@ -228,5 +228,5 @@ Generate the state-based Next Up block by running using the Bash tool with descr
228
228
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
229
229
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
230
230
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
231
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
231
+ aether print-next-up
232
232
  ```
@@ -79,7 +79,7 @@ Extract from COLONY_STATE.json:
79
79
  Display audit header:
80
80
  ```
81
81
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
82
- C O L O N Y A U D I T
82
+ 🔍 C O L O N Y A U D I T
83
83
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
84
84
 
85
85
  Goal: {goal}
@@ -249,12 +249,12 @@ Run these commands in parallel using the Bash tool:
249
249
 
250
250
  **Flags check:**
251
251
  ```bash
252
- bash .aether/aether-utils.sh flag-list 2>/dev/null || echo '{"result":{"flags":[]}}'
252
+ aether flag-list --json 2>/dev/null || echo '{"result":{"flags":[]}}'
253
253
  ```
254
254
 
255
255
  **Midden check:**
256
256
  ```bash
257
- bash .aether/aether-utils.sh midden-recent-failures 2>/dev/null || echo '{"result":{"failures":[]}}'
257
+ aether midden-recent-failures 2>/dev/null || echo '{"result":{"failures":[]}}'
258
258
  ```
259
259
 
260
260
  **Parse flag results:**
@@ -332,12 +332,12 @@ Display: `Checking colony health...`
332
332
 
333
333
  **Expire stale pheromones:**
334
334
  ```bash
335
- bash .aether/aether-utils.sh pheromone-expire 2>/dev/null || true
335
+ aether pheromone-expire 2>/dev/null || true
336
336
  ```
337
337
 
338
338
  **Load memory metrics:**
339
339
  ```bash
340
- bash .aether/aether-utils.sh memory-metrics 2>/dev/null || echo '{}'
340
+ aether memory-metrics 2>/dev/null || echo '{}'
341
341
  ```
342
342
 
343
343
  **Load instincts:**
@@ -357,7 +357,7 @@ From COLONY_STATE.json `events`:
357
357
 
358
358
  **Count pheromone signals:**
359
359
  ```bash
360
- bash .aether/aether-utils.sh pheromone-count 2>/dev/null || echo '{"result":{"count":0}}'
360
+ aether pheromone-count 2>/dev/null || echo '{"result":{"count":0}}'
361
361
  ```
362
362
 
363
363
  Display:
@@ -501,7 +501,7 @@ Display the formatted audit summary:
501
501
 
502
502
  ```
503
503
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
504
- A U D I T R E S U L T S
504
+ 📋 A U D I T R E S U L T S
505
505
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
506
506
 
507
507
  Goal: {goal}
@@ -586,7 +586,7 @@ Next:
586
586
 
587
587
  Run using the Bash tool:
588
588
  ```bash
589
- bash .aether/aether-utils.sh activity-log "COMPLETE" "queen" "Colony audit completed - {recommendation}"
589
+ aether activity-log "COMPLETE" "queen" "Colony audit completed - {recommendation}"
590
590
  ```
591
591
 
592
592
  Display persistence confirmation:
@@ -25,7 +25,7 @@ If `goal` is null, output `No colony initialized. Nothing to pause.` and stop.
25
25
 
26
26
  Run using the Bash tool with description "Loading active pheromones...":
27
27
  ```bash
28
- bash .aether/aether-utils.sh pheromone-read
28
+ aether pheromone-read
29
29
  ```
30
30
 
31
31
  Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
@@ -117,7 +117,7 @@ Store this as `ai_description`. If no clear description emerges, leave empty (wi
117
117
 
118
118
  **4. Generate Enhanced Commit Message:**
119
119
  ```bash
120
- bash .aether/aether-utils.sh generate-commit-message "contextual" {current_phase} "{phase_name}" "{ai_description}" {plan_number}
120
+ aether generate-commit-message --type "contextual" --phase {current_phase} --subject "{phase_name}" "{ai_description}" {plan_number}
121
121
  ```
122
122
 
123
123
  Parse the returned JSON to extract `message`, `body`, `files_changed`, `subsystem`, and `scope`.
@@ -173,12 +173,12 @@ Continue to Step 5.
173
173
  Log this pause activity to `.aether/CONTEXT.md` by running using the Bash tool with description "Updating context document...":
174
174
 
175
175
  ```bash
176
- bash .aether/aether-utils.sh context-update activity "pause-colony" "Colony paused — handoff created" "—"
176
+ aether context-update activity "pause-colony" "Colony paused — handoff created" "—"
177
177
  ```
178
178
 
179
179
  Update safe-to-clear status by running using the Bash tool with description "Marking safe to clear...":
180
180
  ```bash
181
- bash .aether/aether-utils.sh context-update safe-to-clear "YES" "Colony paused — safe to /clear, run /ant:resume-colony to continue"
181
+ aether context-update safe-to-clear "YES" "Colony paused — safe to /clear, run /ant:resume-colony to continue"
182
182
  ```
183
183
 
184
184
  ### Step 5: Display Confirmation
@@ -229,5 +229,5 @@ Generate the state-based Next Up block by running using the Bash tool with descr
229
229
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
230
230
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
231
231
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
232
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
232
+ aether print-next-up
233
233
  ```
@@ -75,7 +75,7 @@ After displaying phase details, generate the state-based Next Up block by runnin
75
75
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
76
76
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
77
77
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
78
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
78
+ aether print-next-up
79
79
  ```
80
80
 
81
81
 
@@ -112,7 +112,7 @@ Stop here.
112
112
 
113
113
  Run using the Bash tool with description "Displaying pheromones...":
114
114
  ```bash
115
- bash .aether/aether-utils.sh pheromone-display "{subcommand or 'all'}"
115
+ aether pheromone-display "{subcommand or 'all'}"
116
116
  ```
117
117
 
118
118
  The output will be the formatted pheromone table.
@@ -39,7 +39,7 @@ Stop here.
39
39
 
40
40
  ### Step 1.5: Load State and Show Resumption Context
41
41
 
42
- Run using Bash tool: `bash .aether/aether-utils.sh load-state`
42
+ Run using Bash tool: `aether load-state`
43
43
 
44
44
  If successful and goal is not null:
45
45
  1. Extract current_phase from state
@@ -54,7 +54,7 @@ If .aether/HANDOFF.md exists (detected in load-state output):
54
54
  - Read .aether/HANDOFF.md for additional context
55
55
  - Remove .aether/HANDOFF.md after display (cleanup)
56
56
 
57
- Run: `bash .aether/aether-utils.sh unload-state` to release lock.
57
+ Run: `aether unload-state` to release lock.
58
58
 
59
59
  **Error handling:**
60
60
  - If E_FILE_NOT_FOUND: "No colony initialized. Run /ant:init first." and stop
@@ -90,7 +90,7 @@ Select planning depth (prompt user if not explicitly provided):
90
90
 
91
91
  Run using the Bash tool with description "Loading compact planning context...":
92
92
  ```bash
93
- bash .aether/aether-utils.sh context-capsule --compact --json 2>/dev/null
93
+ aether context-capsule --compact --json 2>/dev/null
94
94
  ```
95
95
 
96
96
  If JSON is valid and `.ok == true`, extract `.result.prompt_section` into `context_capsule_prompt`.
@@ -172,7 +172,7 @@ Investigate domain knowledge for each phase before the planning loop begins. Thi
172
172
  **1. Retrieve hive wisdom for research priming:**
173
173
 
174
174
  ```bash
175
- hive_context=$(bash .aether/aether-utils.sh hive-read --limit 5 --format text 2>/dev/null)
175
+ hive_context=$(aether hive-read --limit 5 --format text 2>/dev/null)
176
176
  ```
177
177
 
178
178
  Parse the JSON result to extract `.result.text` as `hive_text`. If command fails or returns empty, set `hive_text = ""`.
@@ -574,7 +574,7 @@ if [[ "$verify_phases" -lt 1 || "$verify_timestamp" == "null" || "$verify_state"
574
574
  echo "ERROR: Plan write verification failed (phases=$verify_phases, generated_at=$verify_timestamp, state=$verify_state)"
575
575
  echo "Attempting retry write..."
576
576
  # Retry: re-read, update, write via state API
577
- bash .aether/aether-utils.sh state-write "$(jq --argjson phases "$(echo '$PLAN_JSON' | jq '.plan.phases')" --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" '.plan.phases = $phases | .plan.generated_at = $ts | .state = "READY"' .aether/data/COLONY_STATE.json)"
577
+ aether state-write "$(jq --argjson phases "$(echo '$PLAN_JSON' | jq '.plan.phases')" --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" '.plan.phases = $phases | .plan.generated_at = $ts | .state = "READY"' .aether/data/COLONY_STATE.json)"
578
578
  verify_phases=$(jq '.plan.phases | length' .aether/data/COLONY_STATE.json)
579
579
  if [[ "$verify_phases" -lt 1 ]]; then
580
580
  echo "FATAL: Retry write also failed. Plan was not persisted."
@@ -585,7 +585,7 @@ fi
585
585
  echo "Plan verified: $verify_phases phases, generated_at=$verify_timestamp, state=$verify_state"
586
586
  ```
587
587
 
588
- Log: `bash .aether/aether-utils.sh activity-log "PLAN_COMPLETE" "queen" "Plan finalized with {confidence}% confidence"`
588
+ Log: `aether activity-log "PLAN_COMPLETE" "queen" "Plan finalized with {confidence}% confidence"`
589
589
 
590
590
  Update watch-status.txt:
591
591
  ```
@@ -604,7 +604,7 @@ Ready to build.
604
604
  Update the session tracking file to enable `/ant:resume` after context clear:
605
605
 
606
606
  ```bash
607
- bash .aether/aether-utils.sh session-update "/ant:plan" "/ant:build 1" "Plan generated with {confidence}% confidence, {N} phases"
607
+ aether session-update --command "/ant:plan" --worker "/ant:build 1" --summary "Plan generated with {confidence}% confidence, {N} phases"
608
608
  ```
609
609
 
610
610
  ### Step 7: Display Plan
@@ -653,7 +653,7 @@ After displaying the plan, generate the state-based Next Up block:
653
653
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
654
654
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
655
655
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
656
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
656
+ aether print-next-up
657
657
  ```
658
658
 
659
659
  ---
@@ -33,7 +33,7 @@ Stop here.
33
33
 
34
34
  Run using the Bash tool with description "Naming scout...":
35
35
  ```bash
36
- bash .aether/aether-utils.sh generate-ant-name "scout"
36
+ aether generate-ant-name --caste "scout"
37
37
  ```
38
38
 
39
39
  Capture the output as `scout_name`.
@@ -48,7 +48,7 @@ Spawning {scout_name} — {query truncated to 50 chars}
48
48
 
49
49
  Run using the Bash tool with description "Dispatching scout...":
50
50
  ```bash
51
- bash .aether/aether-utils.sh spawn-log "Queen" "scout" "{scout_name}" "Quick query: {query}"
51
+ aether spawn-log --name "Queen" --caste "scout" --id "{scout_name}" --description "Quick query: {query}"
52
52
  ```
53
53
 
54
54
 
@@ -82,14 +82,14 @@ Display the Scout's answer directly to the user.
82
82
 
83
83
  Run using the Bash tool with description "Recording scout completion...":
84
84
  ```bash
85
- bash .aether/aether-utils.sh spawn-complete "{scout_name}" "completed" "Quick query answered"
85
+ aether spawn-complete --id "{scout_name}" --status "completed" --summary "Quick query answered"
86
86
  ```
87
87
 
88
88
  ### Step 5: Update Session (lightweight)
89
89
 
90
90
  Run using the Bash tool with description "Updating session...":
91
91
  ```bash
92
- bash .aether/aether-utils.sh session-update "/ant:quick" "" "Quick query: {query truncated to 60 chars}" 2>/dev/null || true
92
+ aether session-update --command "/ant:quick" --worker "" --summary "Quick query: {query truncated to 60 chars}" 2>/dev/null || true
93
93
  ```
94
94
 
95
95
  **NOTE:** This command does NOT:
@@ -32,7 +32,7 @@ If `goal: null` -> "No colony initialized.", stop.
32
32
 
33
33
  Run using the Bash tool with description "Setting colony redirect...":
34
34
  ```bash
35
- bash .aether/aether-utils.sh pheromone-write REDIRECT "<content>" --strength 0.9 --reason "User warned colony away from pattern" --ttl <ttl>
35
+ aether pheromone-write --type REDIRECT --content "<content>" --strength 0.9 --reason "User warned colony away from pattern" --ttl <ttl>
36
36
  ```
37
37
 
38
38
  Parse the returned JSON for the signal ID.
@@ -41,14 +41,14 @@ Parse the returned JSON for the signal ID.
41
41
 
42
42
  Run using the Bash tool with description "Updating context document...":
43
43
  ```bash
44
- bash .aether/aether-utils.sh context-update constraint redirect "<content>" "user" 2>/dev/null || true
44
+ aether context-update --section constraint --key redirect --content "<content>" "user" 2>/dev/null || true
45
45
  ```
46
46
 
47
47
  ### Step 3: Get Active Counts
48
48
 
49
49
  Run using the Bash tool with description "Counting active signals...":
50
50
  ```bash
51
- bash .aether/aether-utils.sh pheromone-count
51
+ aether pheromone-count
52
52
  ```
53
53
 
54
54
  ### Step 4: Confirm
@@ -71,6 +71,6 @@ Generate the state-based Next Up block by running using the Bash tool with descr
71
71
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
72
72
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
73
73
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
74
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
74
+ aether print-next-up
75
75
  ```
76
76
 
@@ -17,13 +17,13 @@ Parse `$ARGUMENTS`:
17
17
  If `visual_mode` is true, run using the Bash tool with description "Initializing resume display...":
18
18
  ### Step 0.5: Version Check (Non-blocking)
19
19
 
20
- Run using the Bash tool with description "Checking colony version...": `bash .aether/aether-utils.sh version-check-cached 2>/dev/null || true`
20
+ Run using the Bash tool with description "Checking colony version...": `aether version-check-cached 2>/dev/null || true`
21
21
 
22
22
  If the command succeeds and the JSON result contains a non-empty string, display it as a one-line notice. Proceed regardless of outcome.
23
23
 
24
24
  ### Step 1: Load State and Validate
25
25
 
26
- Run using the Bash tool with description "Restoring colony session...": `bash .aether/aether-utils.sh load-state`
26
+ Run using the Bash tool with description "Restoring colony session...": `aether load-state`
27
27
 
28
28
  If successful:
29
29
  1. Parse state from result
@@ -38,7 +38,7 @@ Keep state loaded (don't unload yet) - we'll need it for the full display.
38
38
 
39
39
  Run using the Bash tool with description "Loading active pheromones...":
40
40
  ```bash
41
- bash .aether/aether-utils.sh pheromone-read
41
+ aether pheromone-read
42
42
  ```
43
43
 
44
44
  Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
@@ -130,7 +130,7 @@ Use Write tool to update COLONY_STATE.json:
130
130
 
131
131
  Use Bash tool with description "Cleaning up handoff file..." to remove HANDOFF.md: `rm -f .aether/HANDOFF.md`
132
132
 
133
- Run using the Bash tool with description "Releasing colony lock...": `bash .aether/aether-utils.sh unload-state` to release lock.
133
+ Run using the Bash tool with description "Releasing colony lock...": `aether unload-state` to release lock.
134
134
 
135
135
  ### Step 7: Next Up
136
136
 
@@ -139,7 +139,7 @@ Generate the state-based Next Up block by running using the Bash tool with descr
139
139
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
140
140
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
141
141
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
142
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
142
+ aether print-next-up
143
143
  ```
144
144
 
145
145
  ---
@@ -26,7 +26,7 @@ Execute the following steps in order when the user runs `/ant:resume`.
26
26
 
27
27
  Run using the Bash tool with description "Restoring colony session..."::
28
28
  ```bash
29
- bash .aether/aether-utils.sh session-read
29
+ aether session-read
30
30
  ```
31
31
 
32
32
  Parse the JSON result.
@@ -96,18 +96,18 @@ Do NOT proceed with stale or fabricated data.
96
96
 
97
97
  ### Step 3: Read Pheromone Signals
98
98
 
99
+ Run using the Bash tool with description "Loading active pheromone signals..."::
100
+ ```bash
101
+ aether pheromone-read all
102
+ ```
99
103
 
100
- Use the Read tool to read `.aether/data/constraints.json`.
101
-
102
- Extract the following top-level keys:
103
- - `focus` array — active focus signals (if key missing, treat as empty array)
104
- - `constraints` array — active redirect/constraint signals (if key missing, treat as empty array)
105
-
106
- If the file is missing: skip silently (no pheromones active).
107
-
108
- Pheromones persist until explicitly cleared — no decay.
104
+ Parse the JSON result. Extract `.result.signals` array.
109
105
 
106
+ - If `ok` is `true` and `.result.signals` is non-empty: store signals for dashboard rendering in Step 8
107
+ - If `ok` is `true` and `.result.signals` is empty: no active pheromones (skip in dashboard)
108
+ - If the command fails or returns an error: skip silently (no pheromones active)
110
109
 
110
+ Note: pheromone-read applies decay calculation automatically. The `effective_strength` field reflects current signal strength after time-based decay. Signals below 0.1 effective strength are already filtered out.
111
111
 
112
112
  ---
113
113
 
@@ -290,15 +290,9 @@ Recent Decisions:
290
290
 
291
291
  {if signals array from Step 3 is not empty:}
292
292
  Active Signals:
293
-
294
- {for each focus signal:}
295
- FOCUS: {focus text}
293
+ {for each signal in signals:}
294
+ {signal.type}: "{signal.content}" [{signal.effective_strength * 100 | floor}%]
296
295
  {end}
297
- {for each constraint signal:}
298
- REDIRECT: {constraint text}
299
- {end}
300
-
301
-
302
296
  {end}
303
297
  ```
304
298
 
@@ -308,7 +302,7 @@ Active Signals:
308
302
 
309
303
  Run using the Bash tool with description "Loading memory health..."::
310
304
  ```bash
311
- bash .aether/aether-utils.sh resume-dashboard
305
+ aether resume-dashboard
312
306
  ```
313
307
 
314
308
  Extract memory_health from the JSON result:
@@ -340,7 +334,7 @@ Session: {session_id}
340
334
 
341
335
  Run using the Bash tool with description "Marking session as resumed..."::
342
336
  ```bash
343
- bash .aether/aether-utils.sh session-mark-resumed
337
+ aether session-mark-resumed
344
338
  ```
345
339
 
346
340
  ### Step 10: Next Up
@@ -350,7 +344,7 @@ Generate the state-based Next Up block by Run using the Bash tool with descripti
350
344
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
351
345
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
352
346
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
353
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
347
+ aether print-next-up
354
348
  ```
355
349
 
356
350
  ---
@@ -361,10 +355,7 @@ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_pha
361
355
  |-----------|----------|
362
356
  | session.json missing (exists=false) | "No previous session found" — offer /ant:init and /ant:status |
363
357
  | COLONY_STATE.json missing or corrupted | Pause, ask user: start fresh or recover |
364
-
365
- | constraints.json missing | Skip silently (no pheromones) |
366
-
367
-
358
+ | pheromone-read fails | Skip silently (no pheromones) |
368
359
  | CONTEXT.md missing | Fall back to COLONY_STATE.json narrative |
369
360
  | No plan phases, no generated_at | BLOCK — redirect to /ant:plan |
370
361
  | Plan attempted but no phases | BLOCK — redirect to /ant:plan |
@@ -376,10 +367,7 @@ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_pha
376
367
 
377
368
  ## Key Constraints
378
369
 
379
-
380
- - Use Read tool for COLONY_STATE.json and constraints.json (not bash cat/jq).
381
-
382
-
370
+ - Use Read tool for COLONY_STATE.json (not bash cat/jq). Use Bash tool for pheromone-read (applies decay calculation).
383
371
  - Use Bash tool only for aether-utils.sh commands and git commands
384
372
  - Handle ALL missing/corrupted file cases gracefully
385
373
  - Time-agnostic: restore identically regardless of how long ago the session was