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,41 +1,25 @@
1
+ <!-- Generated from .aether/commands/plan.yaml - DO NOT EDIT DIRECTLY -->
1
2
  ---
2
3
  name: ant:plan
3
4
  description: "📊🐜🗺️🐜📊 Show project plan or generate project-specific phases"
4
5
  ---
5
6
 
6
- You are the **Queen**. Orchestrate research and planning until 80% confidence (maximum 4 iterations).
7
-
8
- ## Instructions
9
-
10
7
  ### Step -1: Normalize Arguments
11
8
 
12
9
  Run: `normalized_args=$(bash .aether/aether-utils.sh normalize-args "$@")`
13
10
 
14
11
  This ensures arguments work correctly in both Claude Code and OpenCode. Use `$normalized_args` throughout this command.
15
12
 
16
- Parse `$normalized_args`:
17
- - If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
18
- - Otherwise: set `visual_mode = true`
19
-
20
- ### Step 0: Initialize Visual Mode (if enabled)
21
13
 
22
- If `visual_mode` is true:
23
- ```bash
24
- # Generate session ID
25
- plan_id="plan-$(date +%s)"
26
-
27
- # Initialize swarm display
28
- bash .aether/aether-utils.sh swarm-display-init "$plan_id"
29
- bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "excavating" "Generating colony plan" "Colony" '{"read":0,"grep":0,"edit":0,"bash":0}' 0 "fungus_garden" 0
30
- ```
14
+ You are the **Queen**. Orchestrate research and planning until the selected confidence target is reached within the selected iteration budget.
31
15
 
32
- ### Step 0.5: Version Check (Non-blocking)
33
-
34
- Run using the Bash tool: `bash .aether/aether-utils.sh version-check 2>/dev/null || true`
16
+ ## Instructions
35
17
 
36
- If the command succeeds and the JSON result contains a non-empty string, display it as a one-line notice. Proceed regardless of outcome.
18
+ Parse `$normalized_args`:
19
+ - If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
20
+ - Otherwise: set `visual_mode = true`
37
21
 
38
- ### Step 1: Read State + Version Check
22
+ ### Step 1: Read State
39
23
 
40
24
  Read `.aether/data/COLONY_STATE.json`.
41
25
 
@@ -46,7 +30,7 @@ If `version` field is missing, "1.0", or "2.0":
46
30
  3. Output: `State auto-upgraded to v3.0`
47
31
  4. Continue with command.
48
32
 
49
- Extract: `goal`, `plan.phases`
33
+ Extract: `goal`, `milestone`, `plan.phases`
50
34
 
51
35
  **Validate:** If `goal: null`:
52
36
  ```
@@ -54,6 +38,12 @@ No colony initialized. Run /ant:init "<goal>" first.
54
38
  ```
55
39
  Stop here.
56
40
 
41
+ If `milestone` == `"Crowned Anthill"`:
42
+ ```
43
+ This colony has been sealed. Start a new colony with /ant:init "new goal".
44
+ ```
45
+ Stop here.
46
+
57
47
  ### Step 1.5: Load State and Show Resumption Context
58
48
 
59
49
  Run using Bash tool: `bash .aether/aether-utils.sh load-state`
@@ -86,6 +76,33 @@ Parse `$normalized_args`:
86
76
  - If contains `--accept`: Set `force_accept = true` (accept current plan regardless of confidence)
87
77
  - Otherwise: `force_accept = false`
88
78
 
79
+ Select planning depth (prompt user if not explicitly provided):
80
+ - Presets:
81
+ - `fast`: `target_confidence = 80`, `max_iterations = 4`
82
+ - `balanced`: `target_confidence = 90`, `max_iterations = 6`
83
+ - `deep`: `target_confidence = 95`, `max_iterations = 8`
84
+ - `exhaustive`: `target_confidence = 99`, `max_iterations = 12`
85
+ - Preset selectors:
86
+ - `--fast`, `--balanced`, `--deep`, `--exhaustive`
87
+ - `--quality fast|balanced|deep|exhaustive`
88
+ - CLI overrides:
89
+ - `--target <70-99>` to set `target_confidence`
90
+ - `--max-iterations <2-12>` to set `max_iterations`
91
+ - If no preset/overrides are provided, ask:
92
+ `Planning depth? 1) Fast 2) Balanced 3) Deep (recommended) 4) Exhaustive`
93
+ - Map user choice to a preset, default to `deep` on unclear input.
94
+ - If overrides are out of range, clamp to valid ranges and continue.
95
+
96
+ ### Step 2.5: Load Compact Context Capsule
97
+
98
+ Run using the Bash tool with description "Loading compact planning context...":
99
+ ```bash
100
+ bash .aether/aether-utils.sh context-capsule --compact --json 2>/dev/null
101
+ ```
102
+
103
+ If JSON is valid and `.ok == true`, extract `.result.prompt_section` into `context_capsule_prompt`.
104
+ If command fails or returns invalid JSON, set `context_capsule_prompt = ""` and continue.
105
+
89
106
  ### Step 3: Initialize Planning State
90
107
 
91
108
  Update watch files for tmux visibility:
@@ -98,7 +115,7 @@ AETHER COLONY :: PLANNING
98
115
  State: PLANNING
99
116
  Phase: 0/0 (generating plan)
100
117
  Confidence: 0%
101
- Iteration: 0/4
118
+ Iteration: 0/{max_iterations}
102
119
 
103
120
  Active Workers:
104
121
  [Research] Starting...
@@ -115,17 +132,12 @@ Progress
115
132
 
116
133
  [ ] 0%
117
134
 
118
- Target: 80% confidence
135
+ Target: {target_confidence}% confidence
119
136
 
120
- Iteration: 0/4
137
+ Iteration: 0/{max_iterations}
121
138
  Gaps: (analyzing...)
122
139
  ```
123
140
 
124
- Log start:
125
- ```bash
126
- bash .aether/aether-utils.sh activity-log "PLAN_START" "queen" "Iterative planning loop initiated for goal"
127
- ```
128
-
129
141
  ### Step 3.5: Load Territory Survey
130
142
 
131
143
  Check if territory survey exists before research:
@@ -160,6 +172,129 @@ ls .aether/data/survey/*.md 2>/dev/null
160
172
 
161
173
  **If no survey:** Continue without survey context (scouts will do fresh exploration)
162
174
 
175
+ ### Step 3.6: Phase Domain Research
176
+
177
+ Investigate domain knowledge for each phase before the planning loop begins. This runs every time `/ant:plan` generates a new plan -- no skip flag.
178
+
179
+ **1. Retrieve hive wisdom for research priming:**
180
+
181
+ ```bash
182
+ hive_context=$(bash .aether/aether-utils.sh hive-read --limit 5 --format text 2>/dev/null)
183
+ ```
184
+
185
+ Parse the JSON result to extract `.result.text` as `hive_text`. If command fails or returns empty, set `hive_text = ""`.
186
+
187
+ **2. Clean any previous research for this phase:**
188
+
189
+ ```bash
190
+ research_dir=".aether/data/phase-research"
191
+ mkdir -p "$research_dir"
192
+ rm -f "$research_dir/phase-{phase_number}-research.md"
193
+ ```
194
+
195
+ Re-running /ant:plan always re-researches from scratch.
196
+
197
+ **3. Spawn Research Scout** via Task tool with `subagent_type="aether-scout"`:
198
+
199
+ FALLBACK: If "Agent type not found", use general-purpose and inject role: "You are a Scout Ant performing Phase Domain Research."
200
+
201
+ ```
202
+ You are a Scout Ant performing Phase Domain Research.
203
+
204
+ --- MISSION ---
205
+ Investigate the domain knowledge needed for Phase {phase_number}: {phase_name}
206
+ Goal: "{goal}"
207
+ Phase description: "{phase_description}"
208
+
209
+ {context_capsule_prompt}
210
+
211
+ --- PRE-EXISTING COLONY WISDOM ---
212
+ {hive_text}
213
+
214
+ --- RESEARCH AREAS ---
215
+ 1. Key patterns in the existing codebase relevant to this phase
216
+ 2. External library/API documentation if the phase involves external tools
217
+ 3. Common gotchas and pitfalls in this domain
218
+ 4. Recommended implementation approach based on findings
219
+
220
+ --- SCOPE CONSTRAINTS ---
221
+ - Maximum 5 key patterns
222
+ - Maximum 3 gotchas
223
+ - Maximum 1 recommended approach paragraph
224
+ - Total output under 3000 words
225
+ - Prioritize actionable guidance over exhaustive documentation
226
+ - Check hive wisdom above first -- do not re-discover known patterns
227
+
228
+ --- TOOLS ---
229
+ Use: Glob, Grep, Read, WebSearch, WebFetch
230
+ Do NOT use: Task, Write, Edit
231
+
232
+ --- OUTPUT FORMAT ---
233
+ Return JSON:
234
+ {
235
+ "hive_wisdom_used": ["list of hive entries that were relevant"],
236
+ "key_patterns": [
237
+ {"pattern": "description", "source": "file path or URL", "relevance": "why it matters for this phase"}
238
+ ],
239
+ "external_context": [
240
+ {"topic": "what", "finding": "description", "source": "URL or doc reference"}
241
+ ],
242
+ "gotchas": [
243
+ {"issue": "what can go wrong", "prevention": "how to avoid it", "source": "evidence"}
244
+ ],
245
+ "recommended_approach": "synthesis paragraph",
246
+ "files_to_study": ["path1", "path2"]
247
+ }
248
+ ```
249
+
250
+ **4. Wait for scout to complete** (blocking -- direct Task return).
251
+
252
+ **5. Parse scout JSON output and write RESEARCH.md to disk.** The Queen (plan.md orchestrator) writes the file -- scout is read-only. Write to: `.aether/data/phase-research/phase-{phase_number}-research.md`
253
+
254
+ RESEARCH.md format (6 fixed sections):
255
+
256
+ ```markdown
257
+ # Phase {N} Research: {Phase Name}
258
+
259
+ **Generated:** {ISO-8601 timestamp}
260
+ **Phase:** {N} - {Phase Name}
261
+ **Research scope:** {brief summary of what was investigated}
262
+
263
+ ## Hive Wisdom (Pre-existing Knowledge)
264
+ {Format hive_wisdom_used entries, or "No relevant hive wisdom found" if empty}
265
+
266
+ ## Key Patterns
267
+ {Format each key_patterns entry as: **{pattern}:** {relevance} (Source: {source})}
268
+
269
+ ## External Context
270
+ {Format each external_context entry as: **{topic}:** {finding} (Source: {source})}
271
+ {If empty: "No external research needed for this phase"}
272
+
273
+ ## Gotchas
274
+ {Format each gotchas entry as: **{issue}:** {prevention} (Source: {source})}
275
+
276
+ ## Recommended Approach
277
+ {recommended_approach text}
278
+
279
+ ## Files to Study
280
+ {Format as bullet list of file paths}
281
+ ```
282
+
283
+ **6. Store research findings** in a variable `research_findings_summary` for injection into the Route-Setter prompt in Step 4. This is a compact summary (not the full RESEARCH.md):
284
+
285
+ ```
286
+ Key Patterns: {bullet list of pattern names}
287
+ Gotchas: {bullet list of gotcha titles}
288
+ Recommended: {recommended_approach, first sentence only}
289
+ Files: {comma-separated file paths}
290
+ ```
291
+
292
+ **7. Display completion:**
293
+
294
+ ```
295
+ Research complete: phase-{phase_number}-research.md ({word_count} words)
296
+ ```
297
+
163
298
  ### Step 4: Research and Planning Loop
164
299
 
165
300
  Initialize tracking:
@@ -170,15 +305,15 @@ Initialize tracking:
170
305
  - `last_confidence = 0`
171
306
  - `stall_count = 0` (consecutive iterations with < 5% improvement)
172
307
 
173
- **Loop (max 4 iterations, 2 agents per iteration: 1 scout + 1 planner):**
308
+ **Loop (max {max_iterations} iterations, 2 agents per iteration: 1 scout + 1 planner):**
174
309
 
175
310
  ```
176
- while iteration < 4 AND confidence < 80:
311
+ while iteration < max_iterations AND confidence < target_confidence:
177
312
  iteration += 1
178
313
 
179
314
  # === AUTO-BREAK CHECKS (no user prompt needed) ===
180
315
  if iteration > 1:
181
- if confidence >= 80:
316
+ if confidence >= target_confidence:
182
317
  Log: "Confidence threshold reached ({confidence}%), finalizing plan"
183
318
  break
184
319
  if stall_count >= 2:
@@ -190,7 +325,7 @@ while iteration < 4 AND confidence < 80:
190
325
  if iteration == 1:
191
326
 
192
327
  # Broad exploration on first pass
193
- Spawn Research Scout via Task tool with subagent_type="general-purpose":
328
+ Spawn Research Scout via Task tool with subagent_type="aether-scout":
194
329
 
195
330
  """
196
331
  You are a Scout Ant in the Aether Colony.
@@ -199,7 +334,9 @@ while iteration < 4 AND confidence < 80:
199
334
  Research the codebase to understand what exists and how it works.
200
335
 
201
336
  Goal: "{goal}"
202
- Iteration: {iteration}/4
337
+ Iteration: {iteration}/{max_iterations}
338
+
339
+ {context_capsule_prompt}
203
340
 
204
341
  --- EXPLORATION AREAS ---
205
342
  Cover ALL of these in a single pass:
@@ -234,7 +371,7 @@ while iteration < 4 AND confidence < 80:
234
371
  else:
235
372
 
236
373
  # Gap-focused research on subsequent passes
237
- Spawn Gap-Focused Scout via Task tool with subagent_type="general-purpose":
374
+ Spawn Gap-Focused Scout via Task tool with subagent_type="aether-scout":
238
375
 
239
376
  """
240
377
  You are a Scout Ant in the Aether Colony (gap-focused research).
@@ -243,7 +380,9 @@ while iteration < 4 AND confidence < 80:
243
380
  Investigate ONLY these specific knowledge gaps. Do not explore broadly.
244
381
 
245
382
  Goal: "{goal}"
246
- Iteration: {iteration}/4
383
+ Iteration: {iteration}/{max_iterations}
384
+
385
+ {context_capsule_prompt}
247
386
 
248
387
  --- GAPS TO INVESTIGATE ---
249
388
  {for each gap in gaps:}
@@ -276,12 +415,10 @@ while iteration < 4 AND confidence < 80:
276
415
  # Wait for scout to complete.
277
416
  # Update gaps list from scout results.
278
417
 
279
- Log: `bash .aether/aether-utils.sh activity-log "RESEARCH" "scout" "Iteration {iteration}: {scout.findings.length} findings, {scout.gaps_remaining.length} gaps"`
280
-
281
418
  # === PLANNING PHASE (always runs — 1 planner per iteration) ===
282
419
 
283
- Spawn Planning Ant (Route-Setter) via Task tool with subagent_type="general-purpose":
284
- # NOTE: Claude Code uses aether-route-setter; OpenCode uses general-purpose with role injection
420
+ Spawn Planning Ant (Route-Setter) via Task tool with subagent_type="aether-route-setter":
421
+ # NOTE: Claude Code uses aether-route-setter; OpenCode now uses same specialist agent
285
422
 
286
423
  """
287
424
  You are a Route-Setter Ant in the Aether Colony.
@@ -290,7 +427,9 @@ while iteration < 4 AND confidence < 80:
290
427
  Create or refine a project plan based on research findings.
291
428
 
292
429
  Goal: "{goal}"
293
- Iteration: {iteration}/4
430
+ Iteration: {iteration}/{max_iterations}
431
+
432
+ {context_capsule_prompt}
294
433
 
295
434
  --- PLANNING DISCIPLINE ---
296
435
  Read .aether/planning.md for full reference.
@@ -329,6 +468,9 @@ while iteration < 4 AND confidence < 80:
329
468
  --- RESEARCH FINDINGS ---
330
469
  {scout.findings formatted — compact, max 5 items}
331
470
 
471
+ --- PHASE DOMAIN RESEARCH (from Step 3.6) ---
472
+ {research_findings_summary if available, otherwise omit this section}
473
+
332
474
  Remaining Gaps:
333
475
  {gaps formatted — compact, max 3 items}
334
476
 
@@ -390,8 +532,6 @@ while iteration < 4 AND confidence < 80:
390
532
 
391
533
  Parse planning results. Update plan_draft and confidence.
392
534
 
393
- Log: `bash .aether/aether-utils.sh activity-log "PLANNING" "route-setter" "Confidence: {confidence}% (+{delta}%)"`
394
-
395
535
  # === UPDATE WATCH FILES ===
396
536
 
397
537
  Update `.aether/data/watch-status.txt` with current state.
@@ -423,7 +563,7 @@ Proceed directly to Step 5. No user confirmation needed — the plan auto-finali
423
563
 
424
564
  ### Step 5: Finalize Plan
425
565
 
426
- Once loop exits (confidence >= 80, max iterations reached, or stall detected):
566
+ Once loop exits (confidence >= {target_confidence}, max iterations reached, or stall detected):
427
567
 
428
568
  Read current COLONY_STATE.json, then update:
429
569
  - Set `plan.phases` to the final phases array
@@ -433,7 +573,26 @@ Read current COLONY_STATE.json, then update:
433
573
 
434
574
  Write COLONY_STATE.json.
435
575
 
436
- Log: `bash .aether/aether-utils.sh activity-log "PLAN_COMPLETE" "queen" "Plan finalized with {confidence}% confidence"`
576
+ **Verify the write** read back and confirm the plan persisted:
577
+ ```bash
578
+ verify_phases=$(jq '.plan.phases | length' .aether/data/COLONY_STATE.json)
579
+ verify_timestamp=$(jq -r '.plan.generated_at' .aether/data/COLONY_STATE.json)
580
+ verify_state=$(jq -r '.state' .aether/data/COLONY_STATE.json)
581
+ if [[ "$verify_phases" -lt 1 || "$verify_timestamp" == "null" || "$verify_state" != "READY" ]]; then
582
+ echo "ERROR: Plan write verification failed (phases=$verify_phases, generated_at=$verify_timestamp, state=$verify_state)"
583
+ echo "Attempting retry write..."
584
+ 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)"
585
+ verify_phases=$(jq '.plan.phases | length' .aether/data/COLONY_STATE.json)
586
+ if [[ "$verify_phases" -lt 1 ]]; then
587
+ echo "FATAL: Retry write also failed. Plan was not persisted."
588
+ echo "Re-run /ant:plan to regenerate."
589
+ stop
590
+ fi
591
+ fi
592
+ echo "Plan verified: $verify_phases phases, generated_at=$verify_timestamp, state=$verify_state"
593
+ ```
594
+
595
+ Log plan completion: `bash .aether/aether-utils.sh activity-log "PLAN_COMPLETE" "queen" "Plan finalized with {confidence}% confidence"`
437
596
 
438
597
  Update watch-status.txt:
439
598
  ```
@@ -449,12 +608,6 @@ Ready to build.
449
608
 
450
609
  ### Step 6: Display Plan
451
610
 
452
- **If visual_mode is true, render final swarm display:**
453
- ```bash
454
- bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "completed" "Plan generated" "Colony" '{"read":8,"grep":4,"edit":2,"bash":1}' 100 "fungus_garden" 100
455
- bash .aether/aether-utils.sh swarm-display-render "$plan_id"
456
- ```
457
-
458
611
  Read `plan.phases` from COLONY_STATE.json and display:
459
612
 
460
613
  ```
@@ -510,7 +663,7 @@ Each dimension rated 0-100%:
510
663
 
511
664
  **Overall** = weighted average (knowledge 25%, requirements 25%, risks 20%, dependencies 15%, effort 15%)
512
665
 
513
- **Target: 80%** - Sufficient confidence for autonomous execution. Higher confidence is achieved during builds as gaps are resolved.
666
+ **Target:** Use the selected planning depth target. Higher targets trade latency for stronger up-front plan quality.
514
667
 
515
668
  ---
516
669
 
@@ -518,9 +671,9 @@ Each dimension rated 0-100%:
518
671
 
519
672
  The planning loop terminates automatically without requiring user input:
520
673
 
521
- 1. **Confidence Threshold**: Loop exits when overall confidence reaches 80%
674
+ 1. **Confidence Threshold**: Loop exits when overall confidence reaches `{target_confidence}%`
522
675
 
523
- 2. **Hard Iteration Cap**: Maximum 4 iterations (8 subagents total: 1 scout + 1 planner per iteration)
676
+ 2. **Hard Iteration Cap**: Maximum `{max_iterations}` iterations (2 subagents per iteration: 1 scout + 1 planner)
524
677
 
525
678
  3. **Stall Detection**: If confidence improves < 5% for 2 consecutive iterations, auto-finalize current plan
526
679
 
@@ -0,0 +1,71 @@
1
+ <!-- Generated from .aether/commands/preferences.yaml - DO NOT EDIT DIRECTLY -->
2
+ ---
3
+ name: ant:preferences
4
+ description: "📝🐜👑🐜📝 Add or list user preferences in hub QUEEN.md"
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
+
13
+ You are the **Queen**. Manage user preferences in the hub `~/.aether/QUEEN.md`.
14
+
15
+ ## Instructions
16
+
17
+ The input is: `$normalized_args`
18
+
19
+ ### Step 1: Validate
20
+
21
+ If `$normalized_args` empty -> show usage: `/ant:preferences "preference text"` or `/ant:preferences --list`, stop.
22
+
23
+ ### Step 2: Route
24
+
25
+ - `$normalized_args` is `--list` -> **List mode**
26
+ - Otherwise -> **Add mode**
27
+
28
+ ### List Mode
29
+
30
+ Read `~/.aether/QUEEN.md`. If missing -> "No hub QUEEN.md found. Run /ant:init to create one.", stop.
31
+
32
+ Find the `## User Preferences` section (with or without emoji). Extract bullet lines (`- ...`) between that heading and the next `---`.
33
+
34
+ If user-added bullets exist, output each. Otherwise:
35
+ ```
36
+ No user preferences set yet.
37
+ Add one with: /ant:preferences "your preference"
38
+ ```
39
+ Stop.
40
+
41
+ ### Add Mode
42
+
43
+ Set `PREF` to `$normalized_args` (strip surrounding quotes).
44
+ If length > 500 chars -> "Preference too long (max 500 chars)", stop.
45
+
46
+ Read `~/.aether/QUEEN.md`. If missing -> "No hub QUEEN.md found. Run /ant:init to create one.", stop.
47
+
48
+ **If `## User Preferences` section exists** (with or without emoji):
49
+ 1. Remove `*No user preferences recorded yet.*` placeholder if present
50
+ 2. Append `- $PREF` at end of section (before next `---`)
51
+
52
+ **If section missing** (migration case):
53
+ 1. Insert before `## Evolution Log` (with or without emoji):
54
+ ```
55
+ ## User Preferences
56
+
57
+ - $PREF
58
+
59
+ ---
60
+
61
+ ```
62
+
63
+ Update METADATA comment: increment `stats.total_user_prefs` by 1.
64
+
65
+ ### Confirm
66
+
67
+ Output (2 lines, no banners):
68
+ ```
69
+ Preference saved to hub QUEEN.md
70
+ "$PREF"
71
+ ```
@@ -0,0 +1,91 @@
1
+ <!-- Generated from .aether/commands/quick.yaml - DO NOT EDIT DIRECTLY -->
2
+ ---
3
+ name: ant:quick
4
+ description: "🔍🐜⚡🐜🔍 Quick scout query — fast answers without build ceremony"
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
+
13
+ You are the **Queen**. Execute `/ant:quick` — a lightweight scout mission.
14
+
15
+ The query is: `$normalized_args`
16
+
17
+ ## Purpose
18
+
19
+ Quick, focused answers to questions about the codebase, patterns, or implementation
20
+ details. No build ceremony, no state changes, no verification waves.
21
+
22
+ ## Instructions
23
+
24
+ ### Step 1: Validate Arguments
25
+
26
+ If `$normalized_args` is empty:
27
+ ```
28
+ Usage: /ant:quick "<question>"
29
+
30
+ Examples:
31
+ /ant:quick "how does the pheromone system work?"
32
+ /ant:quick "find all uses of acquire_lock"
33
+ /ant:quick "what tests cover midden-write?"
34
+ /ant:quick "show me the colony-prime token budget logic"
35
+ ```
36
+ Stop here.
37
+
38
+ ### Step 2: Generate Scout Name
39
+
40
+ Run:
41
+ ```bash
42
+ bash .aether/aether-utils.sh generate-ant-name "scout"
43
+ ```
44
+
45
+ Capture the output as `scout_name`.
46
+
47
+ ### Step 3: Spawn Scout
48
+
49
+ Display:
50
+ ```
51
+ ━━━ Quick Scout ━━━
52
+ Spawning {scout_name} — {query truncated to 50 chars}
53
+ ```
54
+
55
+ Run:
56
+ ```bash
57
+ bash .aether/aether-utils.sh spawn-log "Queen" "scout" "{scout_name}" "Quick query: {query}"
58
+ ```
59
+
60
+
61
+
62
+ Investigate the query directly using available tools (Grep, Glob, Read).
63
+ Search the codebase and provide a clear, focused answer with file paths and line numbers for key findings.
64
+ Keep your answer concise and actionable.
65
+
66
+
67
+ ### Step 4: Display Results
68
+
69
+
70
+
71
+ Display your findings directly to the user.
72
+
73
+
74
+ Run:
75
+ ```bash
76
+ bash .aether/aether-utils.sh spawn-complete "{scout_name}" "completed" "Quick query answered"
77
+ ```
78
+
79
+ ### Step 5: Update Session (lightweight)
80
+
81
+ Run:
82
+ ```bash
83
+ bash .aether/aether-utils.sh session-update "/ant:quick" "" "Quick query: {query truncated to 60 chars}" 2>/dev/null || true
84
+ ```
85
+
86
+ **NOTE:** This command does NOT:
87
+ - Modify COLONY_STATE.json
88
+ - Advance phases
89
+ - Create checkpoints
90
+ - Spawn watchers or chaos ants
91
+ - Run verification
@@ -1,18 +1,22 @@
1
+ <!-- Generated from .aether/commands/redirect.yaml - DO NOT EDIT DIRECTLY -->
1
2
  ---
2
3
  name: ant:redirect
3
4
  description: "⚠️🐜🚧🐜⚠️ Emit REDIRECT signal to warn colony away from patterns"
4
5
  ---
5
6
 
6
- You are the **Queen**. Add an AVOID constraint.
7
-
8
- ## Instructions
9
-
10
7
  ### Step -1: Normalize Arguments
11
8
 
12
9
  Run: `normalized_args=$(bash .aether/aether-utils.sh normalize-args "$@")`
13
10
 
14
11
  This ensures arguments work correctly in both Claude Code and OpenCode. Use `$normalized_args` throughout this command.
15
12
 
13
+
14
+
15
+ You are the **Queen**. Add an AVOID constraint.
16
+
17
+
18
+ ## Instructions
19
+
16
20
  The pattern to avoid is: `$normalized_args`
17
21
 
18
22
  ### Step 1: Validate
@@ -20,11 +24,15 @@ The pattern to avoid is: `$normalized_args`
20
24
  If `$normalized_args` empty -> show usage: `/ant:redirect <pattern to avoid>`, stop.
21
25
  If content > 500 chars -> "Redirect content too long (max 500 chars)", stop.
22
26
 
23
- ### Step 2: Read + Update Constraints
27
+
28
+
29
+ ### Step 2: Write Signal
24
30
 
25
31
  Read `.aether/data/COLONY_STATE.json`.
26
32
  If `goal: null` -> "No colony initialized.", stop.
27
33
 
34
+
35
+
28
36
  Read `.aether/data/constraints.json`. If file doesn't exist, create it with:
29
37
  ```json
30
38
  {"version": "1.0", "focus": [], "constraints": []}
@@ -47,6 +55,12 @@ If `constraints` array exceeds 10 entries, remove the oldest entries to keep onl
47
55
 
48
56
  Write constraints.json.
49
57
 
58
+ **Write pheromone signal and update context:**
59
+ ```bash
60
+ bash .aether/aether-utils.sh pheromone-write REDIRECT "$normalized_args" --strength 0.9 --reason "User warned colony away from pattern" 2>/dev/null || true
61
+ bash .aether/aether-utils.sh context-update constraint redirect "$normalized_args" "user" 2>/dev/null || true
62
+ ```
63
+
50
64
  ### Step 3: Confirm
51
65
 
52
66
  Output header:
@@ -65,3 +79,6 @@ Then output:
65
79
 
66
80
  🐜 Colony warned away from this pattern.
67
81
  ```
82
+
83
+
84
+