aether-colony 5.0.0 โ†’ 5.2.1

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 (317) hide show
  1. package/.aether/aether-utils.sh +3226 -3345
  2. package/.aether/agents-claude/aether-ambassador.md +265 -0
  3. package/.aether/agents-claude/aether-archaeologist.md +327 -0
  4. package/.aether/agents-claude/aether-architect.md +236 -0
  5. package/.aether/agents-claude/aether-auditor.md +271 -0
  6. package/.aether/agents-claude/aether-builder.md +224 -0
  7. package/.aether/agents-claude/aether-chaos.md +269 -0
  8. package/.aether/agents-claude/aether-chronicler.md +305 -0
  9. package/.aether/agents-claude/aether-gatekeeper.md +330 -0
  10. package/.aether/agents-claude/aether-includer.md +374 -0
  11. package/.aether/agents-claude/aether-keeper.md +272 -0
  12. package/.aether/agents-claude/aether-measurer.md +322 -0
  13. package/.aether/agents-claude/aether-oracle.md +237 -0
  14. package/.aether/agents-claude/aether-probe.md +211 -0
  15. package/.aether/agents-claude/aether-queen.md +330 -0
  16. package/.aether/agents-claude/aether-route-setter.md +178 -0
  17. package/.aether/agents-claude/aether-sage.md +418 -0
  18. package/.aether/agents-claude/aether-scout.md +179 -0
  19. package/.aether/agents-claude/aether-surveyor-disciplines.md +417 -0
  20. package/.aether/agents-claude/aether-surveyor-nest.md +355 -0
  21. package/.aether/agents-claude/aether-surveyor-pathogens.md +289 -0
  22. package/.aether/agents-claude/aether-surveyor-provisions.md +360 -0
  23. package/.aether/agents-claude/aether-tracker.md +270 -0
  24. package/.aether/agents-claude/aether-watcher.md +280 -0
  25. package/.aether/agents-claude/aether-weaver.md +248 -0
  26. package/.aether/commands/archaeology.yaml +653 -0
  27. package/.aether/commands/build.yaml +1221 -0
  28. package/.aether/commands/chaos.yaml +653 -0
  29. package/.aether/commands/colonize.yaml +442 -0
  30. package/.aether/commands/continue.yaml +1484 -0
  31. package/.aether/commands/council.yaml +509 -0
  32. package/.aether/commands/data-clean.yaml +80 -0
  33. package/.aether/commands/dream.yaml +275 -0
  34. package/.aether/commands/entomb.yaml +863 -0
  35. package/.aether/commands/export-signals.yaml +64 -0
  36. package/.aether/commands/feedback.yaml +158 -0
  37. package/.aether/commands/flag.yaml +160 -0
  38. package/.aether/commands/flags.yaml +177 -0
  39. package/.aether/commands/focus.yaml +112 -0
  40. package/.aether/commands/help.yaml +167 -0
  41. package/.aether/commands/history.yaml +137 -0
  42. package/.aether/commands/import-signals.yaml +79 -0
  43. package/.aether/commands/init.yaml +502 -0
  44. package/.aether/commands/insert-phase.yaml +102 -0
  45. package/.aether/commands/interpret.yaml +285 -0
  46. package/.aether/commands/lay-eggs.yaml +224 -0
  47. package/.aether/commands/maturity.yaml +122 -0
  48. package/.aether/commands/memory-details.yaml +74 -0
  49. package/.aether/commands/migrate-state.yaml +174 -0
  50. package/.aether/commands/oracle.yaml +1224 -0
  51. package/.aether/commands/organize.yaml +446 -0
  52. package/.aether/commands/patrol.yaml +621 -0
  53. package/.aether/commands/pause-colony.yaml +424 -0
  54. package/.aether/commands/phase.yaml +124 -0
  55. package/.aether/commands/pheromones.yaml +153 -0
  56. package/.aether/commands/plan.yaml +1364 -0
  57. package/.aether/commands/preferences.yaml +63 -0
  58. package/.aether/commands/quick.yaml +104 -0
  59. package/.aether/commands/redirect.yaml +123 -0
  60. package/.aether/commands/resume-colony.yaml +375 -0
  61. package/.aether/commands/resume.yaml +407 -0
  62. package/.aether/commands/run.yaml +229 -0
  63. package/.aether/commands/seal.yaml +1214 -0
  64. package/.aether/commands/skill-create.yaml +337 -0
  65. package/.aether/commands/status.yaml +408 -0
  66. package/.aether/commands/swarm.yaml +352 -0
  67. package/.aether/commands/tunnels.yaml +814 -0
  68. package/.aether/commands/update.yaml +131 -0
  69. package/.aether/commands/verify-castes.yaml +159 -0
  70. package/.aether/commands/watch.yaml +454 -0
  71. package/.aether/docs/INCIDENT_TEMPLATE.md +32 -0
  72. package/.aether/docs/QUEEN-SYSTEM.md +11 -11
  73. package/.aether/docs/README.md +32 -2
  74. package/.aether/docs/command-playbooks/README.md +23 -0
  75. package/.aether/docs/command-playbooks/build-complete.md +349 -0
  76. package/.aether/docs/command-playbooks/build-context.md +282 -0
  77. package/.aether/docs/command-playbooks/build-full.md +1683 -0
  78. package/.aether/docs/command-playbooks/build-prep.md +284 -0
  79. package/.aether/docs/command-playbooks/build-verify.md +405 -0
  80. package/.aether/docs/command-playbooks/build-wave.md +749 -0
  81. package/.aether/docs/command-playbooks/continue-advance.md +524 -0
  82. package/.aether/docs/command-playbooks/continue-finalize.md +447 -0
  83. package/.aether/docs/command-playbooks/continue-full.md +1725 -0
  84. package/.aether/docs/command-playbooks/continue-gates.md +686 -0
  85. package/.aether/docs/command-playbooks/continue-verify.md +407 -0
  86. package/.aether/docs/context-continuity.md +84 -0
  87. package/.aether/docs/disciplines/DISCIPLINES.md +9 -7
  88. package/.aether/docs/error-codes.md +1 -1
  89. package/.aether/docs/known-issues.md +34 -173
  90. package/.aether/docs/pheromones.md +86 -6
  91. package/.aether/docs/plans/pheromone-display-plan.md +257 -0
  92. package/.aether/docs/queen-commands.md +10 -9
  93. package/.aether/docs/source-of-truth-map.md +132 -0
  94. package/.aether/docs/xml-utilities.md +47 -0
  95. package/.aether/rules/aether-colony.md +23 -13
  96. package/.aether/scripts/incident-test-add.sh +47 -0
  97. package/.aether/scripts/weekly-audit.sh +79 -0
  98. package/.aether/skills/.index.json +649 -0
  99. package/.aether/skills/colony/.manifest.json +16 -0
  100. package/.aether/skills/colony/build-discipline/SKILL.md +78 -0
  101. package/.aether/skills/colony/colony-interaction/SKILL.md +56 -0
  102. package/.aether/skills/colony/colony-lifecycle/SKILL.md +77 -0
  103. package/.aether/skills/colony/colony-visuals/SKILL.md +112 -0
  104. package/.aether/skills/colony/context-management/SKILL.md +80 -0
  105. package/.aether/skills/colony/error-presentation/SKILL.md +99 -0
  106. package/.aether/skills/colony/pheromone-protocol/SKILL.md +79 -0
  107. package/.aether/skills/colony/pheromone-visibility/SKILL.md +81 -0
  108. package/.aether/skills/colony/state-safety/SKILL.md +84 -0
  109. package/.aether/skills/colony/worker-priming/SKILL.md +82 -0
  110. package/.aether/skills/domain/.manifest.json +24 -0
  111. package/.aether/skills/domain/README.md +33 -0
  112. package/.aether/skills/domain/django/SKILL.md +49 -0
  113. package/.aether/skills/domain/docker/SKILL.md +52 -0
  114. package/.aether/skills/domain/golang/SKILL.md +52 -0
  115. package/.aether/skills/domain/graphql/SKILL.md +51 -0
  116. package/.aether/skills/domain/html-css/SKILL.md +48 -0
  117. package/.aether/skills/domain/nextjs/SKILL.md +45 -0
  118. package/.aether/skills/domain/nodejs/SKILL.md +53 -0
  119. package/.aether/skills/domain/postgresql/SKILL.md +53 -0
  120. package/.aether/skills/domain/prisma/SKILL.md +59 -0
  121. package/.aether/skills/domain/python/SKILL.md +50 -0
  122. package/.aether/skills/domain/rails/SKILL.md +52 -0
  123. package/.aether/skills/domain/react/SKILL.md +45 -0
  124. package/.aether/skills/domain/rest-api/SKILL.md +58 -0
  125. package/.aether/skills/domain/svelte/SKILL.md +47 -0
  126. package/.aether/skills/domain/tailwind/SKILL.md +45 -0
  127. package/.aether/skills/domain/testing/SKILL.md +53 -0
  128. package/.aether/skills/domain/typescript/SKILL.md +58 -0
  129. package/.aether/skills/domain/vue/SKILL.md +49 -0
  130. package/.aether/templates/QUEEN.md.template +23 -41
  131. package/.aether/templates/colony-state-reset.jq.template +1 -0
  132. package/.aether/templates/colony-state.template.json +4 -0
  133. package/.aether/templates/learning-observations.template.json +6 -0
  134. package/.aether/templates/midden.template.json +13 -0
  135. package/.aether/templates/pheromones.template.json +6 -0
  136. package/.aether/templates/session.template.json +9 -0
  137. package/.aether/utils/atomic-write.sh +63 -17
  138. package/.aether/utils/chamber-utils.sh +145 -2
  139. package/.aether/utils/council.sh +425 -0
  140. package/.aether/utils/emoji-audit.sh +166 -0
  141. package/.aether/utils/error-handler.sh +21 -7
  142. package/.aether/utils/file-lock.sh +182 -27
  143. package/.aether/utils/flag.sh +278 -0
  144. package/.aether/utils/hive.sh +572 -0
  145. package/.aether/utils/immune.sh +508 -0
  146. package/.aether/utils/learning.sh +1928 -0
  147. package/.aether/utils/midden.sh +520 -0
  148. package/.aether/utils/oracle/oracle.md +168 -0
  149. package/.aether/utils/oracle/oracle.sh +1023 -0
  150. package/.aether/utils/pheromone.sh +2029 -0
  151. package/.aether/utils/queen.sh +1710 -0
  152. package/.aether/utils/scan.sh +860 -0
  153. package/.aether/utils/semantic-cli.sh +10 -8
  154. package/.aether/utils/session.sh +816 -0
  155. package/.aether/utils/skills.sh +509 -0
  156. package/.aether/utils/spawn-tree.sh +103 -271
  157. package/.aether/utils/spawn.sh +260 -0
  158. package/.aether/utils/state-api.sh +389 -0
  159. package/.aether/utils/state-loader.sh +8 -6
  160. package/.aether/utils/suggest.sh +611 -0
  161. package/.aether/utils/swarm-display.sh +10 -1
  162. package/.aether/utils/swarm.sh +1004 -0
  163. package/.aether/utils/watch-spawn-tree.sh +11 -2
  164. package/.aether/utils/xml-compose.sh +2 -2
  165. package/.aether/utils/xml-convert.sh +9 -5
  166. package/.aether/utils/xml-core.sh +5 -9
  167. package/.aether/utils/xml-query.sh +4 -4
  168. package/.aether/workers.md +86 -67
  169. package/.claude/agents/ant/aether-ambassador.md +2 -1
  170. package/.claude/agents/ant/aether-archaeologist.md +6 -1
  171. package/.claude/agents/ant/aether-architect.md +236 -0
  172. package/.claude/agents/ant/aether-auditor.md +6 -1
  173. package/.claude/agents/ant/aether-builder.md +38 -1
  174. package/.claude/agents/ant/aether-chaos.md +2 -1
  175. package/.claude/agents/ant/aether-chronicler.md +1 -0
  176. package/.claude/agents/ant/aether-gatekeeper.md +6 -1
  177. package/.claude/agents/ant/aether-includer.md +1 -0
  178. package/.claude/agents/ant/aether-keeper.md +1 -0
  179. package/.claude/agents/ant/aether-measurer.md +6 -1
  180. package/.claude/agents/ant/aether-oracle.md +237 -0
  181. package/.claude/agents/ant/aether-probe.md +2 -1
  182. package/.claude/agents/ant/aether-queen.md +6 -1
  183. package/.claude/agents/ant/aether-route-setter.md +6 -1
  184. package/.claude/agents/ant/aether-sage.md +68 -3
  185. package/.claude/agents/ant/aether-scout.md +38 -1
  186. package/.claude/agents/ant/aether-surveyor-disciplines.md +2 -1
  187. package/.claude/agents/ant/aether-surveyor-nest.md +2 -1
  188. package/.claude/agents/ant/aether-surveyor-pathogens.md +2 -1
  189. package/.claude/agents/ant/aether-surveyor-provisions.md +2 -1
  190. package/.claude/agents/ant/aether-tracker.md +6 -1
  191. package/.claude/agents/ant/aether-watcher.md +37 -1
  192. package/.claude/agents/ant/aether-weaver.md +2 -1
  193. package/.claude/commands/ant/archaeology.md +1 -8
  194. package/.claude/commands/ant/build.md +43 -1159
  195. package/.claude/commands/ant/chaos.md +1 -14
  196. package/.claude/commands/ant/colonize.md +3 -14
  197. package/.claude/commands/ant/continue.md +40 -1026
  198. package/.claude/commands/ant/council.md +213 -15
  199. package/.claude/commands/ant/data-clean.md +81 -0
  200. package/.claude/commands/ant/dream.md +12 -9
  201. package/.claude/commands/ant/entomb.md +62 -87
  202. package/.claude/commands/ant/export-signals.md +57 -0
  203. package/.claude/commands/ant/feedback.md +18 -0
  204. package/.claude/commands/ant/flag.md +12 -0
  205. package/.claude/commands/ant/flags.md +22 -8
  206. package/.claude/commands/ant/focus.md +18 -0
  207. package/.claude/commands/ant/help.md +40 -8
  208. package/.claude/commands/ant/history.md +3 -0
  209. package/.claude/commands/ant/import-signals.md +71 -0
  210. package/.claude/commands/ant/init.md +349 -191
  211. package/.claude/commands/ant/insert-phase.md +105 -0
  212. package/.claude/commands/ant/interpret.md +11 -0
  213. package/.claude/commands/ant/lay-eggs.md +167 -158
  214. package/.claude/commands/ant/maturity.md +22 -11
  215. package/.claude/commands/ant/memory-details.md +77 -0
  216. package/.claude/commands/ant/migrate-state.md +6 -0
  217. package/.claude/commands/ant/oracle.md +317 -62
  218. package/.claude/commands/ant/organize.md +10 -5
  219. package/.claude/commands/ant/patrol.md +620 -0
  220. package/.claude/commands/ant/pause-colony.md +8 -22
  221. package/.claude/commands/ant/phase.md +26 -37
  222. package/.claude/commands/ant/pheromones.md +156 -0
  223. package/.claude/commands/ant/plan.md +199 -50
  224. package/.claude/commands/ant/preferences.md +65 -0
  225. package/.claude/commands/ant/quick.md +100 -0
  226. package/.claude/commands/ant/redirect.md +18 -0
  227. package/.claude/commands/ant/resume-colony.md +37 -22
  228. package/.claude/commands/ant/resume.md +60 -7
  229. package/.claude/commands/ant/run.md +231 -0
  230. package/.claude/commands/ant/seal.md +506 -78
  231. package/.claude/commands/ant/skill-create.md +286 -0
  232. package/.claude/commands/ant/status.md +171 -1
  233. package/.claude/commands/ant/swarm.md +11 -23
  234. package/.claude/commands/ant/tunnels.md +1 -0
  235. package/.claude/commands/ant/update.md +58 -135
  236. package/.claude/commands/ant/verify-castes.md +90 -42
  237. package/.claude/commands/ant/watch.md +1 -0
  238. package/.opencode/agents/aether-ambassador.md +1 -1
  239. package/.opencode/agents/aether-architect.md +133 -0
  240. package/.opencode/agents/aether-builder.md +3 -3
  241. package/.opencode/agents/aether-oracle.md +137 -0
  242. package/.opencode/agents/aether-queen.md +1 -1
  243. package/.opencode/agents/aether-route-setter.md +1 -1
  244. package/.opencode/agents/aether-scout.md +1 -1
  245. package/.opencode/agents/aether-surveyor-disciplines.md +6 -1
  246. package/.opencode/agents/aether-surveyor-nest.md +6 -1
  247. package/.opencode/agents/aether-surveyor-pathogens.md +6 -1
  248. package/.opencode/agents/aether-surveyor-provisions.md +6 -1
  249. package/.opencode/agents/aether-tracker.md +1 -1
  250. package/.opencode/agents/aether-watcher.md +1 -1
  251. package/.opencode/agents/aether-weaver.md +1 -1
  252. package/.opencode/commands/ant/archaeology.md +7 -14
  253. package/.opencode/commands/ant/build.md +54 -88
  254. package/.opencode/commands/ant/chaos.md +7 -24
  255. package/.opencode/commands/ant/colonize.md +10 -17
  256. package/.opencode/commands/ant/continue.md +595 -66
  257. package/.opencode/commands/ant/council.md +150 -18
  258. package/.opencode/commands/ant/data-clean.md +77 -0
  259. package/.opencode/commands/ant/dream.md +15 -17
  260. package/.opencode/commands/ant/entomb.md +28 -18
  261. package/.opencode/commands/ant/export-signals.md +54 -0
  262. package/.opencode/commands/ant/feedback.md +24 -5
  263. package/.opencode/commands/ant/flag.md +16 -4
  264. package/.opencode/commands/ant/flags.md +24 -10
  265. package/.opencode/commands/ant/focus.md +22 -5
  266. package/.opencode/commands/ant/help.md +41 -8
  267. package/.opencode/commands/ant/history.md +9 -0
  268. package/.opencode/commands/ant/import-signals.md +68 -0
  269. package/.opencode/commands/ant/init.md +396 -154
  270. package/.opencode/commands/ant/insert-phase.md +111 -0
  271. package/.opencode/commands/ant/interpret.md +16 -0
  272. package/.opencode/commands/ant/lay-eggs.md +184 -112
  273. package/.opencode/commands/ant/maturity.md +18 -2
  274. package/.opencode/commands/ant/memory-details.md +83 -0
  275. package/.opencode/commands/ant/migrate-state.md +12 -0
  276. package/.opencode/commands/ant/oracle.md +322 -67
  277. package/.opencode/commands/ant/organize.md +14 -12
  278. package/.opencode/commands/ant/patrol.md +626 -0
  279. package/.opencode/commands/ant/pause-colony.md +12 -29
  280. package/.opencode/commands/ant/phase.md +30 -40
  281. package/.opencode/commands/ant/pheromones.md +162 -0
  282. package/.opencode/commands/ant/plan.md +210 -57
  283. package/.opencode/commands/ant/preferences.md +71 -0
  284. package/.opencode/commands/ant/quick.md +91 -0
  285. package/.opencode/commands/ant/redirect.md +22 -5
  286. package/.opencode/commands/ant/resume-colony.md +41 -29
  287. package/.opencode/commands/ant/resume.md +80 -20
  288. package/.opencode/commands/ant/run.md +237 -0
  289. package/.opencode/commands/ant/seal.md +230 -25
  290. package/.opencode/commands/ant/skill-create.md +63 -0
  291. package/.opencode/commands/ant/status.md +125 -30
  292. package/.opencode/commands/ant/swarm.md +3 -345
  293. package/.opencode/commands/ant/tunnels.md +3 -9
  294. package/.opencode/commands/ant/update.md +63 -127
  295. package/.opencode/commands/ant/verify-castes.md +96 -42
  296. package/.opencode/commands/ant/watch.md +7 -0
  297. package/CHANGELOG.md +368 -1
  298. package/README.md +195 -324
  299. package/bin/cli.js +236 -429
  300. package/bin/generate-commands.js +186 -0
  301. package/bin/generate-commands.sh +128 -89
  302. package/bin/lib/spawn-logger.js +0 -15
  303. package/bin/lib/update-transaction.js +285 -35
  304. package/bin/npx-install.js +178 -0
  305. package/bin/validate-package.sh +85 -3
  306. package/package.json +16 -4
  307. package/.aether/CONTEXT.md +0 -160
  308. package/.aether/docs/QUEEN.md +0 -84
  309. package/.aether/exchange/colony-registry.xml +0 -11
  310. package/.aether/exchange/pheromones.xml +0 -87
  311. package/.aether/exchange/queen-wisdom.xml +0 -14
  312. package/.aether/model-profiles.yaml +0 -100
  313. package/.aether/utils/spawn-with-model.sh +0 -56
  314. package/bin/lib/model-profiles.js +0 -445
  315. package/bin/lib/model-verify.js +0 -288
  316. package/bin/lib/proxy-health.js +0 -253
  317. package/bin/lib/telemetry.js +0 -441
@@ -1,8 +1,15 @@
1
+ <!-- Generated from .aether/commands/oracle.yaml - DO NOT EDIT DIRECTLY -->
1
2
  ---
2
3
  name: ant:oracle
3
4
  description: "๐Ÿ”ฎ๐Ÿœ๐Ÿง ๐Ÿœ๐Ÿ”ฎ Oracle Ant - deep research agent using RALF iterative loop pattern"
4
5
  ---
5
6
 
7
+ ### Step -1: Normalize Arguments
8
+
9
+ Run: `normalized_args=$(bash .aether/aether-utils.sh normalize-args "$@")`
10
+
11
+ This ensures arguments work correctly in both Claude Code and OpenCode. Use `$normalized_args` throughout this command.
12
+
6
13
  You are the **Oracle Ant** command handler. You configure and launch a deep research loop that runs autonomously in a separate process.
7
14
 
8
15
  The user's input is: `$normalized_args`
@@ -13,12 +20,6 @@ Oracle NEVER touches COLONY_STATE.json, constraints.json, activity.log, or any c
13
20
 
14
21
  ## Instructions
15
22
 
16
- ### Step -1: Normalize Arguments
17
-
18
- Run: `normalized_args=$(bash .aether/aether-utils.sh normalize-args "$@")`
19
-
20
- This ensures arguments work correctly in both Claude Code and OpenCode. Use `$normalized_args` throughout this command.
21
-
22
23
  ### Step 0: Parse Arguments and Route
23
24
 
24
25
  Parse `$normalized_args` to determine the action:
@@ -30,19 +31,10 @@ Parse `$normalized_args` to determine the action:
30
31
 
31
32
  2. **If remaining arguments is exactly `stop`** โ€” go to **Step 0b: Stop Oracle**
32
33
  3. **If remaining arguments is exactly `status`** โ€” go to **Step 0c: Show Status**
33
- 4. **Otherwise** โ€” go to **Step 0.5: Initialize Visual Mode** then **Step 1: Research Wizard**
34
+ 4. **If remaining arguments is exactly `promote`** โ€” go to **Step 0d: Promote Findings**
35
+ 5. **Otherwise** โ€” go to **Step 0.5: Initialize Visual Mode** then **Step 1: Research Wizard**
34
36
 
35
- ### Step 0.5: Initialize Visual Mode (if enabled)
36
-
37
- If `visual_mode` is true:
38
- ```bash
39
- # Generate session ID
40
- oracle_id="oracle-$(date +%s)"
41
-
42
- # Initialize swarm display
43
- bash .aether/aether-utils.sh swarm-display-init "$oracle_id"
44
- bash .aether/aether-utils.sh swarm-display-update "Oracle" "oracle" "researching" "Deep research in progress" "Colony" '{"read":0,"grep":0,"edit":0,"bash":0}' 0 "fungus_garden" 0
45
- ```
37
+ ### Step 0.5: Display Header
46
38
 
47
39
  Display visual header:
48
40
  ```
@@ -80,35 +72,31 @@ Stop here. Do not proceed.
80
72
 
81
73
  ### Step 0c: Show Status
82
74
 
83
- Check if `.aether/oracle/progress.md` exists using the Read tool.
75
+ Check if `.aether/oracle/research-plan.md` exists using the Read tool.
84
76
 
85
77
  **If it does NOT exist**, output:
86
78
 
87
79
  ```
88
80
  ๐Ÿ”ฎ Oracle Status: No Research In Progress
89
81
 
90
- No progress.md found. Start a research session:
82
+ No active research session. Start one:
91
83
  /ant:oracle
92
84
  ```
93
85
 
94
86
  Stop here.
95
87
 
96
- **If it exists**, read `.aether/oracle/progress.md` and `.aether/oracle/research.json` (if present).
97
-
98
- Count the number of `## Iteration` headings in progress.md to determine iterations completed.
88
+ **If it exists**, read `.aether/oracle/research-plan.md` and `.aether/oracle/state.json` (if present).
99
89
 
100
90
  Output:
101
91
 
102
92
  ```
103
93
  ๐Ÿ”ฎ Oracle Status
104
94
  โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
105
- Topic: {topic from research.json, or "unknown"}
106
- Confidence: {target_confidence}%
107
- Iterations: {completed} / {max_iterations}
108
- Started: {started_at}
95
+ Topic: {topic from state.json, or "unknown"}
96
+ Iteration: {iteration} of {max_iterations}
97
+ Status: {status}
109
98
 
110
- Progress:
111
- {last 50 lines of progress.md}
99
+ {contents of research-plan.md}
112
100
  โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
113
101
 
114
102
  /ant:oracle stop Halt the loop
@@ -119,6 +107,143 @@ Stop here.
119
107
 
120
108
  ---
121
109
 
110
+ ### Step 0d: Promote Findings to Colony
111
+
112
+ Check if `.aether/oracle/state.json` exists. If it does NOT exist, or if the status is "active", output:
113
+
114
+ ```
115
+ ๐Ÿ”ฎ Oracle Promote: No Completed Research
116
+
117
+ No completed research to promote. Run /ant:oracle first, then wait for completion.
118
+ ```
119
+
120
+ Stop here.
121
+
122
+ **If state.json exists and status is "complete" or "stopped":**
123
+
124
+ Read `.aether/oracle/plan.json` and extract high-confidence findings:
125
+
126
+ ```bash
127
+ ORACLE_DIR=".aether/oracle"
128
+ topic=$(jq -r '.topic // "unknown"' "$ORACLE_DIR/state.json")
129
+ status=$(jq -r '.status // "active"' "$ORACLE_DIR/state.json")
130
+ count=$(jq '[.questions[] | select(.status == "answered" and .confidence >= 80)] | length' "$ORACLE_DIR/plan.json" 2>/dev/null || echo "0")
131
+ total=$(jq '[.questions[]] | length' "$ORACLE_DIR/plan.json" 2>/dev/null || echo "0")
132
+ echo "TOPIC=$topic"
133
+ echo "STATUS=$status"
134
+ echo "QUALIFYING=$count"
135
+ echo "TOTAL=$total"
136
+ ```
137
+
138
+ If qualifying count is 0, output:
139
+
140
+ ```
141
+ ๐Ÿ”ฎ Oracle Promote: No Qualifying Findings
142
+
143
+ Topic: {topic}
144
+ Status: {status}
145
+ Findings: 0 of {total} questions meet the threshold (answered + 80%+ confidence)
146
+
147
+ Lower-confidence findings remain in .aether/oracle/synthesis.md for reference.
148
+ ```
149
+
150
+ Stop here.
151
+
152
+ **If qualifying count > 0**, display the summary and ask for confirmation:
153
+
154
+ ```
155
+ ๐Ÿ”ฎ Oracle Promote: Colony Knowledge Integration
156
+ โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
157
+
158
+ Oracle Research: {topic}
159
+ Status: {status}
160
+ High-confidence findings: {count} (answering {count} of {total} questions)
161
+
162
+ These findings will be promoted to:
163
+ - Colony instincts (COLONY_STATE.json)
164
+ - Colony learnings (learnings.json)
165
+ - Observation pipeline (for queen-promote)
166
+
167
+ โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
168
+ ```
169
+
170
+ Use AskUserQuestion to ask:
171
+
172
+ ```
173
+ Promote these findings to colony knowledge?
174
+ ```
175
+
176
+ Options:
177
+ 1. **Yes, promote all high-confidence findings** -- Push qualifying findings to colony instincts, learnings, and observations
178
+ 2. **No, skip promotion** -- Findings remain in .aether/oracle/ for reference only
179
+
180
+ **If user selects Yes:**
181
+
182
+ Run promotion. For each qualifying question, call the colony APIs directly:
183
+
184
+ ```bash
185
+ ORACLE_DIR=".aether/oracle"
186
+ UTILS=".aether/aether-utils.sh"
187
+ topic=$(jq -r '.topic // "unknown"' "$ORACLE_DIR/state.json")
188
+ promoted=0
189
+
190
+ while IFS= read -r question; do
191
+ q_text=$(echo "$question" | jq -r '.text')
192
+ q_confidence=$(echo "$question" | jq -r '.confidence')
193
+ findings_text=$(echo "$question" | jq -r '[.key_findings[].text // .key_findings[]] | join("; ")' 2>/dev/null | head -c 200)
194
+ first_finding=$(echo "$question" | jq -r '[.key_findings[].text // .key_findings[]] | first // "No findings"' 2>/dev/null)
195
+
196
+ bash "$UTILS" instinct-create \
197
+ --trigger "researching: $q_text" \
198
+ --action "Oracle found (${q_confidence}% confidence): $findings_text" \
199
+ --confidence "$(echo "scale=2; $q_confidence / 100" | bc)" \
200
+ --domain "research" \
201
+ --source "oracle:$topic" \
202
+ --evidence "Oracle research: $q_text" 2>/dev/null || true
203
+
204
+ bash "$UTILS" learning-promote \
205
+ "Oracle: $q_text -- $first_finding" \
206
+ "oracle" \
207
+ "oracle-research" \
208
+ "oracle,research" 2>/dev/null || true
209
+
210
+ bash "$UTILS" memory-capture learning \
211
+ "Oracle research finding: $q_text (${q_confidence}%)" \
212
+ "pattern" \
213
+ "oracle:promote" 2>/dev/null || true
214
+
215
+ promoted=$((promoted + 1))
216
+ done < <(jq -c '[.questions[] | select(.status == "answered" and .confidence >= 80)] | .[]' "$ORACLE_DIR/plan.json")
217
+
218
+ echo "Promoted $promoted findings"
219
+ ```
220
+
221
+ Output:
222
+
223
+ ```
224
+ ๐Ÿ”ฎ Oracle Promote: Complete
225
+ โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
226
+
227
+ Promoted {count} findings to colony knowledge:
228
+ - Instincts created in COLONY_STATE.json
229
+ - Learnings stored in learnings.json
230
+ - Observations tracked for wisdom promotion
231
+
232
+ Run /ant:status to see colony knowledge updates.
233
+
234
+ โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
235
+ ```
236
+
237
+ **If user selects No:**
238
+
239
+ ```
240
+ ๐Ÿ”ฎ Promotion skipped. Findings remain in .aether/oracle/synthesis.md.
241
+ ```
242
+
243
+ Stop here.
244
+
245
+ ---
246
+
122
247
  ### Step 1: Research Wizard
123
248
 
124
249
  This is the setup phase. The Oracle asks questions to configure the research before launching.
@@ -158,7 +283,22 @@ Describe the research topic in detail. The more specific, the better the Oracle'
158
283
 
159
284
  (The user will type their topic via the "Other" free-text option.)
160
285
 
161
- **Question 2: Research Depth**
286
+ **Question 2: Research Template**
287
+
288
+ ```
289
+ What type of research is this?
290
+ ```
291
+
292
+ Options:
293
+ 1. **Technology evaluation** -- Compare and evaluate a technology, library, or tool
294
+ 2. **Architecture review** -- Analyze system design, components, and dependencies
295
+ 3. **Bug investigation** -- Track down and understand a specific bug or issue
296
+ 4. **Best practices** -- Research recommended approaches for a domain or technique
297
+ 5. **Custom research** -- Free-form research (Oracle decomposes the topic as it sees fit)
298
+
299
+ Map selection to template value: 1->tech-eval, 2->architecture-review, 3->bug-investigation, 4->best-practices, 5->custom
300
+
301
+ **Question 3: Research Depth**
162
302
 
163
303
  ```
164
304
  How deep should the Oracle go?
@@ -170,7 +310,7 @@ Options:
170
310
  3. **Deep dive (30 iterations)** โ€” Exhaustive research, leaves no stone unturned
171
311
  4. **Marathon (50 iterations)** โ€” Maximum depth, may take hours
172
312
 
173
- **Question 3: Confidence Target**
313
+ **Question 4: Confidence Target**
174
314
 
175
315
  ```
176
316
  When should the Oracle consider the research complete?
@@ -182,7 +322,7 @@ Options:
182
322
  3. **95% confidence (recommended)** โ€” Thorough, few gaps remaining
183
323
  4. **99% confidence** โ€” Near-exhaustive, won't stop until almost everything is known
184
324
 
185
- **Question 4: Research Scope** (only if topic involves codebase)
325
+ **Question 5: Research Scope** (only if topic involves codebase)
186
326
 
187
327
  ```
188
328
  Should the Oracle also search the web, or stay within the codebase?
@@ -193,6 +333,37 @@ Options:
193
333
  2. **Codebase + web** โ€” Also use WebSearch and WebFetch for docs, best practices, prior art
194
334
  3. **Web only** โ€” Focus on external research (libraries, concepts, techniques)
195
335
 
336
+ **Question 6: Search Strategy**
337
+
338
+ (Ask this question for all research types.)
339
+
340
+ ```
341
+ How should the Oracle approach the research?
342
+ ```
343
+
344
+ Options:
345
+ 1. **Adaptive (recommended)** -- Oracle decides when to go broad vs deep based on research progress
346
+ 2. **Breadth-first** -- Cover all questions with initial findings before going deep on any single one
347
+ 3. **Depth-first** -- Pick the most important question and investigate it exhaustively before moving on
348
+
349
+ **Question 7: Focus Areas** (optional)
350
+
351
+ ```
352
+ Are there specific aspects you want the Oracle to prioritize?
353
+ ```
354
+
355
+ Options:
356
+ 1. **No specific focus** -- Let the Oracle decide what to investigate first
357
+ 2. **Yes, I have focus areas** -- I want to steer the research toward specific aspects
358
+
359
+ If the user selects option 2, ask a follow-up AskUserQuestion with free-text:
360
+
361
+ ```
362
+ List your focus areas (comma-separated). Example: "security implications, performance under load, migration path"
363
+ ```
364
+
365
+ Parse the comma-separated response into individual focus area strings.
366
+
196
367
  After collecting all answers, proceed to Step 2.
197
368
 
198
369
  ---
@@ -209,56 +380,137 @@ Generate an ISO-8601 UTC timestamp.
209
380
 
210
381
  **Archive previous research if it exists:**
211
382
 
212
- Check if `.aether/oracle/progress.md` exists. If it does:
383
+ Check if `.aether/oracle/state.json` exists. If it does:
213
384
 
214
385
  ```bash
215
- DATE=$(date +%Y-%m-%d)
216
- TIMESTAMP=$(date +%H%M%S)
217
- mkdir -p .aether/oracle/archive
218
- cp .aether/oracle/progress.md ".aether/oracle/archive/${DATE}-${TIMESTAMP}-progress.md" 2>/dev/null || true
219
- cp .aether/oracle/research.json ".aether/oracle/archive/${DATE}-${TIMESTAMP}-research.json" 2>/dev/null || true
386
+ ARCHIVE_TS=$(date +%Y-%m-%d-%H%M%S)
387
+ mkdir -p .aether/oracle/archive/$ARCHIVE_TS
388
+ for f in state.json plan.json gaps.md synthesis.md research-plan.md; do
389
+ [ -f ".aether/oracle/$f" ] && cp ".aether/oracle/$f" ".aether/oracle/archive/$ARCHIVE_TS/"
390
+ done
220
391
  ```
221
392
 
222
- **Write research.json:**
393
+ **Write state.json** (replaces research.json):
223
394
 
224
- Use the Write tool to write `.aether/oracle/research.json`:
395
+ Use the Write tool to create `.aether/oracle/state.json`:
225
396
 
226
397
  ```json
227
398
  {
399
+ "version": "1.1",
228
400
  "topic": "<the research topic>",
229
401
  "scope": "<codebase|web|both>",
230
- "questions": [
231
- "<break the topic into 3-5 specific research questions>"
232
- ],
402
+ "template": "<template from Question 2: tech-eval|architecture-review|bug-investigation|best-practices|custom>",
403
+ "phase": "survey",
404
+ "iteration": 0,
233
405
  "max_iterations": <number from depth choice>,
234
406
  "target_confidence": <number from confidence choice>,
235
- "started_at": "<ISO-8601 UTC timestamp>"
407
+ "overall_confidence": 0,
408
+ "started_at": "<ISO-8601 UTC timestamp>",
409
+ "last_updated": "<ISO-8601 UTC timestamp>",
410
+ "status": "active",
411
+ "strategy": "<strategy from Question 6: adaptive|breadth-first|depth-first>",
412
+ "focus_areas": [<array of focus area strings from Question 7, or empty array if no focus>]
236
413
  }
237
414
  ```
238
415
 
239
- The `questions` array is important โ€” break the user's topic into 3-5 concrete, specific questions that the Oracle should answer. These guide each iteration.
416
+ **Emit focus area pheromones** (if any focus areas were set):
240
417
 
241
- **Write progress.md:**
418
+ For each focus area string from Question 7:
242
419
 
243
- Use the Write tool to write `.aether/oracle/progress.md`:
420
+ ```bash
421
+ bash .aether/aether-utils.sh pheromone-write FOCUS "$focus_area" \
422
+ --strength 0.8 --source "oracle:wizard" \
423
+ --reason "Focus area set in oracle wizard" --ttl "24h" 2>/dev/null || true
424
+ ```
425
+
426
+ **Write plan.json:**
427
+
428
+ **If template is NOT `custom`**, pre-populate plan.json with the template's default questions. **If template IS `custom`**, break the topic into 3-8 sub-questions (adapt to topic complexity -- broader topics get more questions, focused topics fewer).
429
+
430
+ Template default questions:
431
+
432
+ - **tech-eval**: q1 "What problem does this technology solve and what are its core capabilities?", q2 "How does it compare to alternative solutions?", q3 "What are its known limitations and tradeoffs?", q4 "What is the adoption and community status?", q5 "What is the migration or integration path?"
433
+ - **architecture-review**: q1 "What are the main components and their responsibilities?", q2 "What are the dependency relationships between components?", q3 "Where are the risk areas (coupling, complexity, single points of failure)?", q4 "How does it handle scale and growth?", q5 "What would an expert change about this architecture?"
434
+ - **bug-investigation**: q1 "What is the exact failure behavior?", q2 "What are the reproduction conditions?", q3 "What is the root cause?", q4 "What are possible fixes and their tradeoffs?", q5 "Are there related issues or regression risks?"
435
+ - **best-practices**: q1 "What is current industry best practice for this domain?", q2 "How does our implementation compare to best practice?", q3 "What gaps exist between our approach and best practice?", q4 "What is the recommended improvement path?"
436
+
437
+ Use the Write tool to create `.aether/oracle/plan.json`:
438
+
439
+ ```json
440
+ {
441
+ "version": "1.1",
442
+ "sources": {},
443
+ "questions": [
444
+ {
445
+ "id": "q1",
446
+ "text": "<question text from template or AI-decomposed>",
447
+ "status": "open",
448
+ "confidence": 0,
449
+ "key_findings": [],
450
+ "iterations_touched": []
451
+ }
452
+ ],
453
+ "created_at": "<ISO-8601 UTC timestamp>",
454
+ "last_updated": "<ISO-8601 UTC timestamp>"
455
+ }
456
+ ```
457
+
458
+ **Write gaps.md** (initial empty structure):
459
+
460
+ Use the Write tool to create `.aether/oracle/gaps.md`:
244
461
 
245
462
  ```markdown
246
- # Oracle Research Progress
463
+ # Knowledge Gaps
247
464
 
248
- **Topic:** <the research topic>
249
- **Started:** <ISO-8601 UTC timestamp>
250
- **Target Confidence:** <N>%
251
- **Max Iterations:** <N>
252
- **Scope:** <codebase|web|both>
465
+ ## Open Questions
466
+ (No research conducted yet)
253
467
 
254
- ## Research Questions
255
- 1. <question 1>
256
- 2. <question 2>
257
- 3. <question 3>
258
- ...
468
+ ## Contradictions
469
+ (None identified)
259
470
 
260
- ---
471
+ ## Last Updated
472
+ Iteration 0 -- <ISO-8601 UTC timestamp>
473
+ ```
474
+
475
+ **Write synthesis.md** (initial empty structure):
476
+
477
+ Use the Write tool to create `.aether/oracle/synthesis.md`:
478
+
479
+ ```markdown
480
+ # Research Synthesis
481
+
482
+ ## Topic
483
+ <the research topic>
484
+
485
+ ## Findings by Question
486
+ (No findings yet -- research has not started)
487
+
488
+ ## Last Updated
489
+ Iteration 0 -- <ISO-8601 UTC timestamp>
490
+ ```
261
491
 
492
+ **Generate research-plan.md:**
493
+
494
+ After writing plan.json, generate research-plan.md as the executive summary. Use the Write tool to create `.aether/oracle/research-plan.md`:
495
+
496
+ ```markdown
497
+ # Research Plan
498
+
499
+ **Topic:** <topic>
500
+ **Status:** active | **Iteration:** 0 of <max>
501
+ **Overall Confidence:** 0%
502
+
503
+ ## Questions
504
+ | # | Question | Status | Confidence |
505
+ |---|----------|--------|------------|
506
+ | q1 | <question text> | open | 0% |
507
+ | q2 | ... | open | 0% |
508
+
509
+ ## Next Steps
510
+ Next investigation: <text of q1, the first question>
511
+
512
+ ---
513
+ *Generated from plan.json -- do not edit directly*
262
514
  ```
263
515
 
264
516
  Proceed to Step 3.
@@ -267,21 +519,24 @@ Proceed to Step 3.
267
519
 
268
520
  ### Step 3: Launch
269
521
 
270
- Output the research configuration summary:
522
+ Output the research configuration summary, showing the sub-questions from plan.json:
271
523
 
272
524
  ```
273
525
  ๐Ÿ”ฎ Research Configured
274
526
  โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
275
527
 
276
528
  ๐Ÿ“ Topic: <topic>
529
+ ๐Ÿ“ Template: <template type, e.g. "tech-eval" or "custom">
277
530
  ๐Ÿ”„ Iterations: <max_iterations>
278
531
  ๐ŸŽฏ Confidence: <target_confidence>%
279
532
  ๐Ÿ” Scope: <scope>
533
+ ๐Ÿ“ Strategy: <strategy>
534
+ ๐ŸŽฏ Focus: <focus areas comma-separated, or "None">
280
535
 
281
- ๐Ÿ“‹ Research Questions:
282
- 1. <question>
283
- 2. <question>
284
- 3. <question>
536
+ ๐Ÿ“‹ Sub-Questions:
537
+ q1. <question text from plan.json>
538
+ q2. <question text from plan.json>
539
+ q3. <question text from plan.json>
285
540
 
286
541
  โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
287
542
  ```
@@ -291,7 +546,7 @@ Now launch the loop. Try tmux first, fall back to manual.
291
546
  **Try tmux:**
292
547
 
293
548
  ```bash
294
- tmux new-session -d -s oracle "cd $(pwd) && bash .aether/oracle/oracle.sh; echo ''; echo '๐Ÿ”ฎ Oracle loop finished. Press any key to close.'; read -n1" 2>/dev/null && echo "TMUX_OK" || echo "TMUX_FAIL"
549
+ 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"
295
550
  ```
296
551
 
297
552
  **If TMUX_OK:**
@@ -306,7 +561,7 @@ tmux new-session -d -s oracle "cd $(pwd) && bash .aether/oracle/oracle.sh; echo
306
561
  ๐Ÿ“Š Check status: /ant:oracle status
307
562
  ๐Ÿ›‘ Stop early: /ant:oracle stop
308
563
 
309
- Results will accumulate in .aether/oracle/progress.md
564
+ Research progress visible at .aether/oracle/research-plan.md
310
565
  The Oracle will stop when it reaches {target_confidence}% confidence
311
566
  or completes {max_iterations} iterations.
312
567
 
@@ -326,7 +581,7 @@ Stop here.
326
581
  tmux not available. Run this in a separate terminal:
327
582
 
328
583
  cd {current_working_directory}
329
- bash .aether/oracle/oracle.sh
584
+ bash .aether/utils/oracle/oracle.sh
330
585
 
331
586
  Then come back here:
332
587
  ๐Ÿ“Š Check status: /ant:oracle status
@@ -1,20 +1,21 @@
1
+ <!-- Generated from .aether/commands/organize.yaml - DO NOT EDIT DIRECTLY -->
1
2
  ---
2
3
  name: ant:organize
3
4
  description: "๐Ÿงน๐Ÿœ๐Ÿ›๏ธ๐Ÿœ๐Ÿงน Run codebase hygiene report - archivist ant scans for stale files, dead code, orphaned configs (report-only)"
4
5
  ---
5
6
 
6
- You are the **Queen Ant Colony**. Spawn an archivist to analyze codebase hygiene.
7
-
8
- > **Note:** `$normalized_args` is unused. Future extensions could accept a path scope argument.
9
-
10
- ## Instructions
11
-
12
7
  ### Step -1: Normalize Arguments
13
8
 
14
9
  Run: `normalized_args=$(bash .aether/aether-utils.sh normalize-args "$@")`
15
10
 
16
11
  This ensures arguments work correctly in both Claude Code and OpenCode. Use `$normalized_args` throughout this command.
17
12
 
13
+ You are the **Queen Ant Colony**. Spawn an archivist to analyze codebase hygiene.
14
+
15
+ > **Note:** `$normalized_args` is unused. Future extensions could accept a path scope argument.
16
+
17
+ ## Instructions
18
+
18
19
  ### Step 1: Read State
19
20
 
20
21
  Use the Read tool to read these files (in parallel):
@@ -33,11 +34,12 @@ From COLONY_STATE.json, extract:
33
34
 
34
35
  ### Step 2: Compute Active Pheromones
35
36
 
36
- Read active signals from COLONY_STATE.json `signals` array (already loaded in Step 1).
37
+ Run using the Bash tool:
38
+ ```bash
39
+ bash .aether/aether-utils.sh pheromone-read
40
+ ```
37
41
 
38
- Filter signals where:
39
- - `expires_at` is null (permanent signals like INIT), OR
40
- - `expires_at` > current timestamp (not expired)
42
+ Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
41
43
 
42
44
  Format as the standard ACTIVE PHEROMONES block:
43
45
  ```
@@ -54,8 +56,8 @@ If no active signals after filtering:
54
56
 
55
57
  Read `.aether/workers.md` and extract the `## Keeper` section.
56
58
 
57
- Spawn via **Task tool** with `subagent_type="general-purpose"`:
58
- # NOTE: Claude Code uses aether-keeper; OpenCode uses general-purpose with role injection
59
+ Spawn via **Task tool** with `subagent_type="aether-keeper"`:
60
+ # NOTE: Claude Code uses aether-keeper; OpenCode now uses same specialist agent
59
61
 
60
62
  ```
61
63
  --- WORKER SPEC ---