aether-colony 5.0.0 β†’ 5.1.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 (312) hide show
  1. package/.aether/aether-utils.sh +3150 -3349
  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 +438 -0
  30. package/.aether/commands/continue.yaml +1484 -0
  31. package/.aether/commands/council.yaml +304 -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 +469 -0
  44. package/.aether/commands/insert-phase.yaml +98 -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 +1313 -0
  57. package/.aether/commands/preferences.yaml +63 -0
  58. package/.aether/commands/redirect.yaml +123 -0
  59. package/.aether/commands/resume-colony.yaml +373 -0
  60. package/.aether/commands/resume.yaml +398 -0
  61. package/.aether/commands/run.yaml +193 -0
  62. package/.aether/commands/seal.yaml +1205 -0
  63. package/.aether/commands/skill-create.yaml +337 -0
  64. package/.aether/commands/status.yaml +364 -0
  65. package/.aether/commands/swarm.yaml +352 -0
  66. package/.aether/commands/tunnels.yaml +814 -0
  67. package/.aether/commands/update.yaml +131 -0
  68. package/.aether/commands/verify-castes.yaml +159 -0
  69. package/.aether/commands/watch.yaml +454 -0
  70. package/.aether/docs/INCIDENT_TEMPLATE.md +32 -0
  71. package/.aether/docs/QUEEN-SYSTEM.md +11 -11
  72. package/.aether/docs/README.md +32 -2
  73. package/.aether/docs/command-playbooks/README.md +23 -0
  74. package/.aether/docs/command-playbooks/build-complete.md +349 -0
  75. package/.aether/docs/command-playbooks/build-context.md +282 -0
  76. package/.aether/docs/command-playbooks/build-full.md +1682 -0
  77. package/.aether/docs/command-playbooks/build-prep.md +283 -0
  78. package/.aether/docs/command-playbooks/build-verify.md +405 -0
  79. package/.aether/docs/command-playbooks/build-wave.md +749 -0
  80. package/.aether/docs/command-playbooks/continue-advance.md +524 -0
  81. package/.aether/docs/command-playbooks/continue-finalize.md +447 -0
  82. package/.aether/docs/command-playbooks/continue-full.md +1724 -0
  83. package/.aether/docs/command-playbooks/continue-gates.md +686 -0
  84. package/.aether/docs/command-playbooks/continue-verify.md +406 -0
  85. package/.aether/docs/context-continuity.md +84 -0
  86. package/.aether/docs/disciplines/DISCIPLINES.md +9 -7
  87. package/.aether/docs/error-codes.md +1 -1
  88. package/.aether/docs/known-issues.md +34 -173
  89. package/.aether/docs/pheromones.md +86 -6
  90. package/.aether/docs/plans/pheromone-display-plan.md +257 -0
  91. package/.aether/docs/queen-commands.md +10 -9
  92. package/.aether/docs/source-of-truth-map.md +132 -0
  93. package/.aether/docs/xml-utilities.md +47 -0
  94. package/.aether/rules/aether-colony.md +23 -13
  95. package/.aether/scripts/incident-test-add.sh +47 -0
  96. package/.aether/scripts/weekly-audit.sh +79 -0
  97. package/.aether/skills/.index.json +649 -0
  98. package/.aether/skills/colony/.manifest.json +16 -0
  99. package/.aether/skills/colony/build-discipline/SKILL.md +78 -0
  100. package/.aether/skills/colony/colony-interaction/SKILL.md +56 -0
  101. package/.aether/skills/colony/colony-lifecycle/SKILL.md +77 -0
  102. package/.aether/skills/colony/colony-visuals/SKILL.md +112 -0
  103. package/.aether/skills/colony/context-management/SKILL.md +80 -0
  104. package/.aether/skills/colony/error-presentation/SKILL.md +99 -0
  105. package/.aether/skills/colony/pheromone-protocol/SKILL.md +79 -0
  106. package/.aether/skills/colony/pheromone-visibility/SKILL.md +81 -0
  107. package/.aether/skills/colony/state-safety/SKILL.md +84 -0
  108. package/.aether/skills/colony/worker-priming/SKILL.md +82 -0
  109. package/.aether/skills/domain/.manifest.json +24 -0
  110. package/.aether/skills/domain/README.md +33 -0
  111. package/.aether/skills/domain/django/SKILL.md +49 -0
  112. package/.aether/skills/domain/docker/SKILL.md +52 -0
  113. package/.aether/skills/domain/golang/SKILL.md +52 -0
  114. package/.aether/skills/domain/graphql/SKILL.md +51 -0
  115. package/.aether/skills/domain/html-css/SKILL.md +48 -0
  116. package/.aether/skills/domain/nextjs/SKILL.md +45 -0
  117. package/.aether/skills/domain/nodejs/SKILL.md +53 -0
  118. package/.aether/skills/domain/postgresql/SKILL.md +53 -0
  119. package/.aether/skills/domain/prisma/SKILL.md +59 -0
  120. package/.aether/skills/domain/python/SKILL.md +50 -0
  121. package/.aether/skills/domain/rails/SKILL.md +52 -0
  122. package/.aether/skills/domain/react/SKILL.md +45 -0
  123. package/.aether/skills/domain/rest-api/SKILL.md +58 -0
  124. package/.aether/skills/domain/svelte/SKILL.md +47 -0
  125. package/.aether/skills/domain/tailwind/SKILL.md +45 -0
  126. package/.aether/skills/domain/testing/SKILL.md +53 -0
  127. package/.aether/skills/domain/typescript/SKILL.md +58 -0
  128. package/.aether/skills/domain/vue/SKILL.md +49 -0
  129. package/.aether/templates/QUEEN.md.template +23 -41
  130. package/.aether/templates/colony-state-reset.jq.template +1 -0
  131. package/.aether/templates/colony-state.template.json +4 -0
  132. package/.aether/templates/learning-observations.template.json +6 -0
  133. package/.aether/templates/midden.template.json +13 -0
  134. package/.aether/templates/pheromones.template.json +6 -0
  135. package/.aether/templates/session.template.json +9 -0
  136. package/.aether/utils/atomic-write.sh +63 -17
  137. package/.aether/utils/chamber-utils.sh +145 -2
  138. package/.aether/utils/emoji-audit.sh +166 -0
  139. package/.aether/utils/error-handler.sh +21 -7
  140. package/.aether/utils/file-lock.sh +182 -27
  141. package/.aether/utils/flag.sh +267 -0
  142. package/.aether/utils/hive.sh +572 -0
  143. package/.aether/utils/learning.sh +1928 -0
  144. package/.aether/utils/midden.sh +342 -0
  145. package/.aether/utils/oracle/oracle.md +168 -0
  146. package/.aether/utils/oracle/oracle.sh +1023 -0
  147. package/.aether/utils/pheromone.sh +2029 -0
  148. package/.aether/utils/queen.sh +1698 -0
  149. package/.aether/utils/scan.sh +860 -0
  150. package/.aether/utils/semantic-cli.sh +10 -8
  151. package/.aether/utils/session.sh +552 -0
  152. package/.aether/utils/skills.sh +509 -0
  153. package/.aether/utils/spawn-tree.sh +103 -271
  154. package/.aether/utils/spawn.sh +260 -0
  155. package/.aether/utils/state-api.sh +199 -0
  156. package/.aether/utils/state-loader.sh +8 -6
  157. package/.aether/utils/suggest.sh +611 -0
  158. package/.aether/utils/swarm-display.sh +10 -1
  159. package/.aether/utils/swarm.sh +1004 -0
  160. package/.aether/utils/watch-spawn-tree.sh +11 -2
  161. package/.aether/utils/xml-compose.sh +2 -2
  162. package/.aether/utils/xml-convert.sh +9 -5
  163. package/.aether/utils/xml-core.sh +5 -9
  164. package/.aether/utils/xml-query.sh +4 -4
  165. package/.aether/workers.md +86 -67
  166. package/.claude/agents/ant/aether-ambassador.md +2 -1
  167. package/.claude/agents/ant/aether-archaeologist.md +6 -1
  168. package/.claude/agents/ant/aether-architect.md +236 -0
  169. package/.claude/agents/ant/aether-auditor.md +6 -1
  170. package/.claude/agents/ant/aether-builder.md +38 -1
  171. package/.claude/agents/ant/aether-chaos.md +2 -1
  172. package/.claude/agents/ant/aether-chronicler.md +1 -0
  173. package/.claude/agents/ant/aether-gatekeeper.md +6 -1
  174. package/.claude/agents/ant/aether-includer.md +1 -0
  175. package/.claude/agents/ant/aether-keeper.md +1 -0
  176. package/.claude/agents/ant/aether-measurer.md +6 -1
  177. package/.claude/agents/ant/aether-oracle.md +237 -0
  178. package/.claude/agents/ant/aether-probe.md +2 -1
  179. package/.claude/agents/ant/aether-queen.md +6 -1
  180. package/.claude/agents/ant/aether-route-setter.md +6 -1
  181. package/.claude/agents/ant/aether-sage.md +68 -3
  182. package/.claude/agents/ant/aether-scout.md +38 -1
  183. package/.claude/agents/ant/aether-surveyor-disciplines.md +2 -1
  184. package/.claude/agents/ant/aether-surveyor-nest.md +2 -1
  185. package/.claude/agents/ant/aether-surveyor-pathogens.md +2 -1
  186. package/.claude/agents/ant/aether-surveyor-provisions.md +2 -1
  187. package/.claude/agents/ant/aether-tracker.md +6 -1
  188. package/.claude/agents/ant/aether-watcher.md +37 -1
  189. package/.claude/agents/ant/aether-weaver.md +2 -1
  190. package/.claude/commands/ant/archaeology.md +1 -8
  191. package/.claude/commands/ant/build.md +43 -1159
  192. package/.claude/commands/ant/chaos.md +1 -14
  193. package/.claude/commands/ant/colonize.md +1 -14
  194. package/.claude/commands/ant/continue.md +40 -1026
  195. package/.claude/commands/ant/council.md +9 -16
  196. package/.claude/commands/ant/data-clean.md +81 -0
  197. package/.claude/commands/ant/dream.md +12 -9
  198. package/.claude/commands/ant/entomb.md +62 -87
  199. package/.claude/commands/ant/export-signals.md +57 -0
  200. package/.claude/commands/ant/feedback.md +18 -0
  201. package/.claude/commands/ant/flag.md +12 -0
  202. package/.claude/commands/ant/flags.md +22 -8
  203. package/.claude/commands/ant/focus.md +18 -0
  204. package/.claude/commands/ant/help.md +40 -8
  205. package/.claude/commands/ant/history.md +3 -0
  206. package/.claude/commands/ant/import-signals.md +71 -0
  207. package/.claude/commands/ant/init.md +316 -191
  208. package/.claude/commands/ant/insert-phase.md +101 -0
  209. package/.claude/commands/ant/interpret.md +11 -0
  210. package/.claude/commands/ant/lay-eggs.md +167 -158
  211. package/.claude/commands/ant/maturity.md +22 -11
  212. package/.claude/commands/ant/memory-details.md +77 -0
  213. package/.claude/commands/ant/migrate-state.md +6 -0
  214. package/.claude/commands/ant/oracle.md +317 -62
  215. package/.claude/commands/ant/organize.md +10 -5
  216. package/.claude/commands/ant/patrol.md +620 -0
  217. package/.claude/commands/ant/pause-colony.md +8 -22
  218. package/.claude/commands/ant/phase.md +26 -37
  219. package/.claude/commands/ant/pheromones.md +156 -0
  220. package/.claude/commands/ant/plan.md +175 -52
  221. package/.claude/commands/ant/preferences.md +65 -0
  222. package/.claude/commands/ant/redirect.md +18 -0
  223. package/.claude/commands/ant/resume-colony.md +34 -20
  224. package/.claude/commands/ant/resume.md +51 -7
  225. package/.claude/commands/ant/run.md +195 -0
  226. package/.claude/commands/ant/seal.md +497 -78
  227. package/.claude/commands/ant/skill-create.md +286 -0
  228. package/.claude/commands/ant/status.md +127 -1
  229. package/.claude/commands/ant/swarm.md +11 -23
  230. package/.claude/commands/ant/tunnels.md +1 -0
  231. package/.claude/commands/ant/update.md +58 -135
  232. package/.claude/commands/ant/verify-castes.md +90 -42
  233. package/.claude/commands/ant/watch.md +1 -0
  234. package/.opencode/agents/aether-ambassador.md +1 -1
  235. package/.opencode/agents/aether-architect.md +133 -0
  236. package/.opencode/agents/aether-builder.md +3 -3
  237. package/.opencode/agents/aether-oracle.md +137 -0
  238. package/.opencode/agents/aether-queen.md +1 -1
  239. package/.opencode/agents/aether-route-setter.md +1 -1
  240. package/.opencode/agents/aether-scout.md +1 -1
  241. package/.opencode/agents/aether-surveyor-disciplines.md +6 -1
  242. package/.opencode/agents/aether-surveyor-nest.md +6 -1
  243. package/.opencode/agents/aether-surveyor-pathogens.md +6 -1
  244. package/.opencode/agents/aether-surveyor-provisions.md +6 -1
  245. package/.opencode/agents/aether-tracker.md +1 -1
  246. package/.opencode/agents/aether-watcher.md +1 -1
  247. package/.opencode/agents/aether-weaver.md +1 -1
  248. package/.opencode/commands/ant/archaeology.md +7 -14
  249. package/.opencode/commands/ant/build.md +54 -88
  250. package/.opencode/commands/ant/chaos.md +7 -24
  251. package/.opencode/commands/ant/colonize.md +8 -17
  252. package/.opencode/commands/ant/continue.md +595 -66
  253. package/.opencode/commands/ant/council.md +11 -22
  254. package/.opencode/commands/ant/data-clean.md +77 -0
  255. package/.opencode/commands/ant/dream.md +15 -17
  256. package/.opencode/commands/ant/entomb.md +28 -18
  257. package/.opencode/commands/ant/export-signals.md +54 -0
  258. package/.opencode/commands/ant/feedback.md +24 -5
  259. package/.opencode/commands/ant/flag.md +16 -4
  260. package/.opencode/commands/ant/flags.md +24 -10
  261. package/.opencode/commands/ant/focus.md +22 -5
  262. package/.opencode/commands/ant/help.md +41 -8
  263. package/.opencode/commands/ant/history.md +9 -0
  264. package/.opencode/commands/ant/import-signals.md +68 -0
  265. package/.opencode/commands/ant/init.md +365 -156
  266. package/.opencode/commands/ant/insert-phase.md +107 -0
  267. package/.opencode/commands/ant/interpret.md +16 -0
  268. package/.opencode/commands/ant/lay-eggs.md +184 -112
  269. package/.opencode/commands/ant/maturity.md +18 -2
  270. package/.opencode/commands/ant/memory-details.md +83 -0
  271. package/.opencode/commands/ant/migrate-state.md +12 -0
  272. package/.opencode/commands/ant/oracle.md +322 -67
  273. package/.opencode/commands/ant/organize.md +14 -12
  274. package/.opencode/commands/ant/patrol.md +626 -0
  275. package/.opencode/commands/ant/pause-colony.md +12 -29
  276. package/.opencode/commands/ant/phase.md +30 -40
  277. package/.opencode/commands/ant/pheromones.md +162 -0
  278. package/.opencode/commands/ant/plan.md +184 -56
  279. package/.opencode/commands/ant/preferences.md +71 -0
  280. package/.opencode/commands/ant/redirect.md +22 -5
  281. package/.opencode/commands/ant/resume-colony.md +38 -27
  282. package/.opencode/commands/ant/resume.md +71 -20
  283. package/.opencode/commands/ant/run.md +201 -0
  284. package/.opencode/commands/ant/seal.md +230 -25
  285. package/.opencode/commands/ant/skill-create.md +63 -0
  286. package/.opencode/commands/ant/status.md +124 -31
  287. package/.opencode/commands/ant/swarm.md +3 -345
  288. package/.opencode/commands/ant/tunnels.md +3 -9
  289. package/.opencode/commands/ant/update.md +63 -127
  290. package/.opencode/commands/ant/verify-castes.md +96 -42
  291. package/.opencode/commands/ant/watch.md +7 -0
  292. package/CHANGELOG.md +278 -1
  293. package/README.md +188 -340
  294. package/bin/cli.js +236 -429
  295. package/bin/generate-commands.js +186 -0
  296. package/bin/generate-commands.sh +128 -89
  297. package/bin/lib/spawn-logger.js +0 -15
  298. package/bin/lib/update-transaction.js +285 -35
  299. package/bin/npx-install.js +178 -0
  300. package/bin/validate-package.sh +85 -3
  301. package/package.json +7 -3
  302. package/.aether/CONTEXT.md +0 -160
  303. package/.aether/docs/QUEEN.md +0 -84
  304. package/.aether/exchange/colony-registry.xml +0 -11
  305. package/.aether/exchange/pheromones.xml +0 -87
  306. package/.aether/exchange/queen-wisdom.xml +0 -14
  307. package/.aether/model-profiles.yaml +0 -100
  308. package/.aether/utils/spawn-with-model.sh +0 -56
  309. package/bin/lib/model-profiles.js +0 -445
  310. package/bin/lib/model-verify.js +0 -288
  311. package/bin/lib/proxy-health.js +0 -253
  312. package/bin/lib/telemetry.js +0 -441
@@ -1,17 +1,18 @@
1
+ <!-- Generated from .aether/commands/init.yaml - DO NOT EDIT DIRECTLY -->
1
2
  ---
2
3
  name: ant:init
3
- description: "πŸŒ±πŸœπŸ†•πŸœπŸŒ± Initialize Aether colony - Queen sets intention, colony mobilizes"
4
+ description: "Initialize Aether colony - scan repo, approve charter, create colony"
4
5
  ---
5
6
 
6
- You are the **Queen Ant Colony**. Initialize the colony with the Queen's intention.
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
- This ensures arguments work correctly in both Claude Code and OpenCode.
11
+ This ensures arguments work correctly in both Claude Code and OpenCode. Use `$normalized_args` throughout this command.
12
+
13
+ You are the **Queen Ant Colony**. Initialize the colony with the Queen's intention.
14
+
15
+ ## Instructions
15
16
 
16
17
  The user's goal is: `$normalized_args`
17
18
 
@@ -19,25 +20,42 @@ Parse `$normalized_args`:
19
20
  - If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
20
21
  - Otherwise: set `visual_mode = true`
21
22
 
23
+
22
24
  Note: Use `$normalized_args` instead of `$ARGUMENTS` throughout this command.
23
25
 
24
26
  ### Step 0: Initialize Visual Mode (if enabled)
25
27
 
26
28
  If `visual_mode` is true:
27
- ```bash
28
- # Generate session ID
29
- init_id="init-$(date +%s)"
30
29
 
31
- # Initialize swarm display
32
- bash .aether/aether-utils.sh swarm-display-init "$init_id"
33
- bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "excavating" "Colony initialization" "Colony" '{"read":0,"grep":0,"edit":0,"bash":0}' 0 "fungus_garden" 0
34
- ```
35
-
36
- ### Step 0.5: Version Check (Non-blocking)
37
-
38
- Run using the Bash tool: `bash .aether/aether-utils.sh version-check 2>/dev/null || true`
39
30
 
40
- If the command succeeds and the JSON result contains a non-empty string, display it as a one-line notice. Proceed regardless of outcome.
31
+ <failure_modes>
32
+ ### Colony State Overwrite
33
+ Re-init mode detects existing COLONY_STATE.json and preserves all state. Charter content is updated in-place via charter-write. Colony state, wisdom, instincts, learnings, pheromones, and phase progress are never reset.
34
+
35
+ ### Write Failure Mid-Init
36
+ If writing COLONY_STATE.json fails partway:
37
+ - Remove the incomplete file (partial state is worse than no state)
38
+ - Report the error
39
+ - Recovery: user can run /ant:init again safely
40
+ </failure_modes>
41
+
42
+ <success_criteria>
43
+ Command is complete when:
44
+ - User has approved the charter prompt (Charter, Context, Pheromones sections)
45
+ - Charter content is written to QUEEN.md via charter-write
46
+ - COLONY_STATE.json exists and is valid JSON (fresh init only)
47
+ - Session file is written
48
+ - User sees confirmation of colony creation or re-init
49
+ </success_criteria>
50
+
51
+ <read_only>
52
+ Do not touch during init:
53
+ - .aether/dreams/ (user notes)
54
+ - .aether/chambers/ (archived colonies)
55
+ - .env* files
56
+ - .claude/settings.json
57
+ - .github/workflows/
58
+ </read_only>
41
59
 
42
60
  ### Step 1: Validate Input
43
61
 
@@ -46,8 +64,8 @@ If `$normalized_args` is empty or blank, output:
46
64
  ```
47
65
  Aether Colony
48
66
 
49
- Initialize the colony with a goal. This creates the colony state,
50
- initializes constraints, and logs the init event.
67
+ Initialize the colony with a goal. This scans the repo, generates
68
+ a charter for your approval, then creates colony files.
51
69
 
52
70
  Usage: /ant:init "<your goal here>"
53
71
 
@@ -59,211 +77,402 @@ Aether Colony
59
77
 
60
78
  Stop here. Do not proceed.
61
79
 
62
- ### Step 1.5: Bootstrap System Files (Conditional)
80
+ ### Step 1.5: Verify Aether Setup
63
81
 
64
82
  Check if `.aether/aether-utils.sh` exists using the Read tool.
65
83
 
66
- **If the file already exists** β€” skip this step entirely. System files are present.
84
+ **If the file already exists** -- skip this step entirely. Aether is set up.
67
85
 
68
86
  **If the file does NOT exist:**
69
- - Check if `~/.aether/system/aether-utils.sh` exists (expand `~` to the user's home directory)
70
- - **If the hub exists:** Run using the Bash tool:
71
- ```bash
72
- mkdir -p .aether/docs .aether/utils .aether/templates .aether/schemas .aether/exchange .claude/rules && \
73
- cp -f ~/.aether/system/aether-utils.sh .aether/ && \
74
- cp -f ~/.aether/system/workers.md .aether/ 2>/dev/null || true && \
75
- cp -f ~/.aether/system/CONTEXT.md .aether/ 2>/dev/null || true && \
76
- cp -f ~/.aether/system/model-profiles.yaml .aether/ 2>/dev/null || true && \
77
- cp -Rf ~/.aether/system/docs/* .aether/docs/ 2>/dev/null || true && \
78
- cp -Rf ~/.aether/system/utils/* .aether/utils/ 2>/dev/null || true && \
79
- cp -Rf ~/.aether/system/templates/* .aether/templates/ 2>/dev/null || true && \
80
- cp -Rf ~/.aether/system/schemas/* .aether/schemas/ 2>/dev/null || true && \
81
- cp -Rf ~/.aether/system/exchange/* .aether/exchange/ 2>/dev/null || true && \
82
- cp -Rf ~/.aether/system/rules/* .claude/rules/ 2>/dev/null || true && \
83
- chmod +x .aether/aether-utils.sh
84
- ```
85
- This copies system files from the global hub into `.aether/` and rules into `.claude/rules/`. Display:
86
- ```
87
- Bootstrapped system files from global hub.
88
- ```
89
- - **If the hub does NOT exist:** Output:
90
- ```
91
- No Aether system files found locally or in ~/.aether/system/.
92
- Run `aether install` or `npx aether-colony install` to set up the global hub first.
93
- ```
94
- Stop here. Do not proceed.
95
-
96
- ### Step 2: Read Current State
97
-
98
- Use the Read tool to read `.aether/data/COLONY_STATE.json`.
99
-
100
- If the `goal` field is not null, output:
87
+ ```
88
+ Aether is not set up in this repo yet.
89
+
90
+ Run /ant:lay-eggs first to create the .aether/ directory
91
+ with all system files, then run /ant:init "your goal" to
92
+ start a colony.
101
93
 
94
+ If the global hub isn't installed either:
95
+ npm install -g aether-colony (installs the hub)
96
+ /ant:lay-eggs (sets up this repo)
97
+ /ant:init "your goal" (starts the colony)
102
98
  ```
103
- Colony already initialized with goal: "{existing_goal}"
99
+ Stop here. Do not proceed.
100
+
101
+ ### Step 2: Initialize QUEEN.md
104
102
 
105
- To reinitialize with a new goal, the current state will be reset.
106
- Proceeding with new goal: "{new_goal}"
103
+ Run:
104
+ ```
105
+ bash .aether/aether-utils.sh queen-init
107
106
  ```
108
107
 
109
- ### Step 2.5: Load Prior Colony Knowledge (Optional)
108
+ Parse the JSON result:
109
+ - If `created` is true: Display `QUEEN.md initialized`
110
+ - If `created` is false and `reason` is "already_exists": Display `QUEEN.md already exists`
110
111
 
111
- Check if `.aether/data/completion-report.md` exists using the Read tool.
112
+ This step is non-blocking -- proceed regardless of outcome.
112
113
 
113
- **If the file does NOT exist**, skip to Step 3 β€” this is a fresh colony with no prior history.
114
+ ### Step 3: Scan Repository
114
115
 
115
- **If the file exists**, read it and extract:
116
- 1. **Instincts** β€” look for the `## Colony Instincts` section. Each line has format: `N. [confidence] domain: description`. Keep only instincts with confidence >= 0.5.
117
- 2. **Learnings** β€” look for the `## Colony Learnings (Validated)` section. Keep all numbered items.
116
+ Run the scan via Bash tool:
117
+ ```bash
118
+ scan_result=$(bash .aether/aether-utils.sh init-research 2>/dev/null)
119
+ scan_data=$(echo "$scan_result" | jq '.result')
120
+ ```
118
121
 
119
- Store the extracted instincts and learnings for use in Step 3. Display a brief note:
122
+ Extract fields with jq defaults for missing data:
123
+ - `tech_langs`: `.tech_stack.languages | if length > 0 then join(", ") else "not detected" end`
124
+ - `tech_fwks`: `.tech_stack.frameworks | if length > 0 then join(", ") else "none" end`
125
+ - `tech_pkg`: `.tech_stack.package_managers | join(", ")`
126
+ - `complexity`: `.complexity.size`
127
+ - `file_count`: `.complexity.metrics.file_count`
128
+ - `top_dirs`: `.directory_structure.top_level_dirs | if . and length > 0 then join(", ") else "flat" end`
129
+ - `commit_count`: `.git_history.commit_count // "unknown"`
130
+ - `is_git`: `.git_history.is_git_repo // false`
131
+ - `survey_suggestion`: `.survey_status.suggestion.reason // empty`
132
+ - `has_active`: `.prior_colonies.has_active_colony // false`
133
+ - `active_goal`: `.prior_colonies.active_goal // empty`
120
134
 
135
+ **Intelligence fields (new):**
136
+ - `colony_context_colonies`: `.colony_context.prior_colonies // []` -- array of prior colony summaries (each has goal, phases, outcome, summary)
137
+ - `colony_context_charter`: `.colony_context.existing_charter // {}` -- existing charter content from QUEEN.md
138
+ - `governance_rules`: `.governance.rules // []` -- array of governance rule objects (each has rule, source, strength)
139
+ - `pheromone_suggestions`: `.pheromone_suggestions // []` -- array of suggestion objects (each has type, content, reason, priority)
140
+
141
+ If `scan_result` is empty or `jq` fails, set all fields to fallback values (empty arrays/objects for intelligence fields) and proceed (graceful degradation -- never stop init because scan fails).
142
+
143
+ ### Step 4: Detect Re-Init Mode
144
+
145
+ Use Read tool to check `.aether/data/COLONY_STATE.json`.
146
+
147
+ - If file exists AND has a non-null `goal` field: set `reinit_mode = true`, store `existing_goal`
148
+ - Otherwise: set `reinit_mode = false`
149
+
150
+ If re-init mode, read existing charter entries from `.aether/QUEEN.md`:
151
+ ```bash
152
+ existing_intent=$(grep '\[charter\] \*\*Intent\*\*:' .aether/QUEEN.md 2>/dev/null | sed 's/.*\*\*Intent\*\*: //' | sed 's/ (Colony:.*//' || true)
153
+ existing_vision=$(grep '\[charter\] \*\*Vision\*\*:' .aether/QUEEN.md 2>/dev/null | sed 's/.*\*\*Vision\*\*: //' | sed 's/ (Colony:.*//' || true)
154
+ existing_governance=$(grep '\[charter\] \*\*Governance\*\*:' .aether/QUEEN.md 2>/dev/null | sed 's/.*\*\*Governance\*\*: //' | sed 's/ (Colony:.*//' || true)
155
+ existing_goals=$(grep '\[charter\] \*\*Goal\*\*:' .aether/QUEEN.md 2>/dev/null | sed 's/.*\*\*Goal\*\*: //' | sed 's/ (Colony:.*//' || true)
156
+ ```
157
+
158
+ Strip `(Colony: ...)` suffixes using sed. If grep finds nothing, variables remain empty.
159
+
160
+ ### Step 5: Assemble and Display Approval Prompt
161
+
162
+ Display a brief header:
121
163
  ```
122
- 🧠 Prior colony knowledge found:
123
- {N} instinct(s) inherited (confidence >= 0.5)
124
- {N} validated learning(s) carried forward
164
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
165
+ A E T H E R C O L O N Y I N I T
166
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
125
167
  ```
126
168
 
127
- If no instincts meet the threshold, display:
169
+ If re-init mode, display:
128
170
  ```
129
- 🧠 Prior colony knowledge found but no high-confidence instincts to inherit.
171
+ Re-init mode detected (existing goal: "{existing_goal}")
172
+ Charter will be updated. All colony state, wisdom, instincts, and progress will be preserved.
130
173
  ```
131
174
 
132
- **Important:** This step is read-only and non-blocking. If the file is malformed or unreadable, skip silently and proceed to Step 3 with empty memory.
175
+ Then display the approval prompt as formatted Markdown. Section ordering: Prior Context (if any) -> Charter -> Context -> Pheromones.
133
176
 
134
- ### Step 3: Write Colony State
177
+ **Section 1: Prior Context (conditional -- only when prior colonies exist)**
178
+
179
+ If `colony_context_colonies` has entries (length > 0), display:
180
+ ```markdown
181
+ ## Prior Context
182
+
183
+ Previous colonies in this repo:
184
+
185
+ {For each colony (max 3, most recent first):}
186
+ - **{goal}** -- {outcome} ({phases} phases){if summary is non-empty: ". {summary}"}
187
+ ```
188
+
189
+ Per locked decision: when no prior colonies exist, omit this section entirely. No placeholder, no header.
190
+
191
+ Keep each colony to 1-2 lines. Show goal, outcome (milestone), phase count, and summary from CROWNED-ANTHILL.md if available.
192
+
193
+ **Section 2: Charter**
194
+ ```markdown
195
+ ## Charter
196
+
197
+ **Intent:** {user's goal from $normalized_args, or existing_intent if re-init}
198
+ **Vision:** {derived from user's goal by Claude, or existing_vision if re-init}
199
+ **Governance:** {see governance logic below}
200
+ **Goals:** {blank for fresh init, or existing_goals if re-init}
201
+ ```
135
202
 
136
- Generate a session ID in the format `session_{unix_timestamp}_{random}` and an ISO-8601 UTC timestamp.
203
+ For fresh init, Claude should derive a brief Vision from the user's goal (1-2 sentences). Goals start blank. The user fills them in if desired.
137
204
 
138
- Resolve the colony-state template path:
139
- Check `~/.aether/system/templates/colony-state.template.json` first,
140
- then `.aether/templates/colony-state.template.json`.
205
+ **Governance field logic:**
206
+ - For fresh init with `governance_rules` available (length > 0): pre-populate with semicolon-separated rule text from the detected rules. Format: `"TDD required; ESLint enforced; Follow CONTRIBUTING.md"`. These are editable by the user.
207
+ - For fresh init with no governance_rules: leave blank.
208
+ - For re-init with existing_governance non-empty: pre-populate from existing QUEEN.md charter entries.
209
+ - For re-init with existing_governance empty but governance_rules available: pre-populate from governance_rules.
141
210
 
142
- If no template found: output "Template missing: colony-state.template.json. Run aether update to fix." and stop.
211
+ For re-init, pre-populate Intent, Vision, and Goals from existing QUEEN.md charter entries.
143
212
 
144
- Read the template file. Follow its `_instructions` field.
145
- Replace all `__PLACEHOLDER__` values:
146
- - `__GOAL__` β†’ the user's goal from $normalized_args
147
- - `__SESSION_ID__` β†’ the generated session ID (format: `session_{unix_timestamp}_{random}`)
148
- - `__ISO8601_TIMESTAMP__` β†’ the current ISO-8601 UTC timestamp (used in both `initialized_at` and the events entry)
149
- - `__PHASE_LEARNINGS__` β†’ JSON array from Step 2.5, or `[]` if none
150
- - `__INSTINCTS__` β†’ JSON array from Step 2.5, or `[]` if none
213
+ **Section 3: Context**
214
+ ```markdown
215
+ ## Context
151
216
 
152
- IMPORTANT: `__PHASE_LEARNINGS__` and `__INSTINCTS__` must be JSON array values (e.g., `[]` not `"[]"`).
217
+ **Tech Stack:** {tech_langs} | {tech_fwks} | {tech_pkg}
218
+ **Project Size:** {complexity} ({file_count} files)
219
+ **Structure:** {top_dirs}
220
+ **Git:** {commit_count} commits
221
+ {if survey_suggestion: **Note:** {survey_suggestion}}
222
+ ```
153
223
 
154
- **If Step 2.5 found instincts to inherit**, convert each into the instinct format for the `__INSTINCTS__` array. Each inherited instinct should have:
155
- - `id`: `instinct_inherited_{index}`
156
- - `trigger`: inferred from the instinct description
157
- - `action`: the instinct description
158
- - `confidence`: the original confidence value (from the completion report)
159
- - `domain`: the original domain (from the completion report)
160
- - `source`: `"inherited:completion-report"`
161
- - `evidence`: `["Validated in prior colony session"]`
162
- - `created_at`: current ISO-8601 timestamp
163
- - `last_applied`: null
164
- - `applications`: 0
165
- - `successes`: 0
224
+ **Section 4: Pheromones**
166
225
 
167
- **If Step 2.5 found validated learnings**, seed the `__PHASE_LEARNINGS__` array with each as:
168
- - `phase`: `"inherited"`
169
- - `learning`: the learning text
170
- - `status`: `"validated"`
171
- - `source`: `"inherited:completion-report"`
226
+ If `pheromone_suggestions` has entries (length > 0), display:
227
+ ```markdown
228
+ ## Pheromones
172
229
 
173
- **If Step 2.5 was skipped or found nothing**, use empty arrays `[]` for both `__PHASE_LEARNINGS__` and `__INSTINCTS__`.
230
+ Suggested signals based on repo analysis:
174
231
 
175
- Remove ALL keys starting with underscore (`_template`, `_version`, `_instructions`, `_comment_*`).
176
- Write the resulting JSON to `.aether/data/COLONY_STATE.json` using the Write tool.
232
+ 1. [FOCUS] Testing infrastructure present (47 test files) -- maintain TDD discipline
233
+ 2. [REDIRECT] Environment files detected -- never commit secrets or .env files
234
+ 3. [FOCUS] Code quality tools configured -- follow existing lint/format rules
177
235
 
178
- ### Step 4: Initialize Constraints
236
+ Edit, remove, or add signals as needed. Approved signals will be auto-applied.
237
+ ```
179
238
 
180
- Resolve the constraints template path:
181
- Check `~/.aether/system/templates/constraints.template.json` first,
182
- then `.aether/templates/constraints.template.json`.
239
+ The numbered list uses the actual type and content from `pheromone_suggestions`. Each line format: `{N}. [{type}] {content}`.
183
240
 
184
- If no template found: output "Template missing: constraints.template.json. Run aether update to fix." and stop.
241
+ Per locked decision: suggestions are fully editable. User can reword, remove, or add their own.
242
+ Per locked decision: all sections look the same -- no visual distinction between auto-generated and user-written content.
185
243
 
186
- Read the template file. Follow its `_instructions` field.
187
- No placeholder substitution needed β€” the data keys are written as-is.
188
- Remove ALL keys starting with underscore (`_template`, `_version`, `_instructions`, `_comment_*`).
189
- Write the resulting JSON to `.aether/data/constraints.json` using the Write tool.
244
+ If no pheromone suggestions available (empty array), display the existing default:
245
+ ```markdown
246
+ ## Pheromones
190
247
 
191
- ### Step 5: Validate State File
248
+ No pheromone suggestions yet -- use /ant:focus and /ant:redirect to guide the colony.
249
+ ```
192
250
 
193
- Use the Bash tool to run:
251
+ End with clear instructions:
194
252
  ```
195
- bash .aether/aether-utils.sh validate-state colony
253
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
254
+ Review the prompt above. You can:
255
+ - Edit any section (just describe your changes)
256
+ - Say "approve" or "looks good" to proceed
257
+ - Say "cancel" to abort
258
+
259
+ If you don't respond, the colony will not be initialized.
260
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
196
261
  ```
197
262
 
198
- This validates COLONY_STATE.json structure. If validation fails, output a warning.
263
+ **STOP HERE.** Wait for the user's response. Do NOT proceed to Step 6 until the user responds.
199
264
 
200
- ### Step 5.5: Detect Nestmates
265
+ ### Step 6: Handle User Response
201
266
 
202
- Run using Bash tool: `node -e "const nl = require('./bin/lib/nestmate-loader'); console.log(JSON.stringify(nl.findNestmates(process.cwd())))"`
267
+ Parse the user's response:
268
+ - If the user approves (says "approve", "looks good", "yes", "ok", or similar): proceed to Step 7
269
+ - If the user provides edits: apply the edits to the relevant section(s), re-display the full prompt, increment a revision counter, and wait again
270
+ - If the user cancels: display "Colony initialization cancelled." and stop
271
+ - Max 2 revision rounds. After 2 rejections/edits, display: "Maximum revisions reached. Approve current version, or cancel init?" and wait for final decision
203
272
 
204
- If nestmates are found:
205
- 1. Display: `Nestmates found: N related colonies`
206
- 2. List each nestmate with name and truncated goal
207
- 3. Check for shared TO-DOs or cross-project dependencies
273
+ When applying edits, Claude updates the section content in memory (not files) and re-displays the full prompt. Each re-display includes a revision counter: "(Revision {N}/2)"
208
274
 
209
- ### Step 5.6: Register Repo (Silent)
275
+ ### Step 7: Create Colony (Post-Approval)
210
276
 
211
- Attempt to register this repo in the global hub. Both steps are silent on failure β€” registry is not required for the colony to work.
277
+ Only reached after user approval. ALL file writes happen here.
212
278
 
213
- Run using the Bash tool (ignore errors):
279
+ **If re-init mode:**
280
+
281
+ 1. Write charter content via:
282
+ ```bash
283
+ bash .aether/aether-utils.sh charter-write --intent "{approved_intent}" --vision "{approved_vision}" --governance "{approved_governance}" --goals "{approved_goals}"
214
284
  ```
215
- bash .aether/aether-utils.sh registry-add "$(pwd)" "$(jq -r '.version // "unknown"' ~/.aether/version.json 2>/dev/null || echo 'unknown')" 2>/dev/null || true
285
+
286
+ 2. Auto-apply approved pheromone suggestions (see pheromone auto-apply below).
287
+
288
+ 3. Optionally update the goal field in COLONY_STATE.json in-place:
289
+ ```bash
290
+ jq --arg new_goal "{approved_intent}" '.goal = $new_goal' .aether/data/COLONY_STATE.json > .aether/data/COLONY_STATE.json.tmp && mv .aether/data/COLONY_STATE.json.tmp .aether/data/COLONY_STATE.json
216
291
  ```
217
292
 
218
- Then attempt to write `.aether/version.json` with the hub version:
293
+ 4. Run `bash .aether/aether-utils.sh session-init "$(jq -r '.session_id' .aether/data/COLONY_STATE.json)" "{approved_intent}"`
294
+
295
+ 5. Skip to Step 8 (display result). Do NOT write COLONY_STATE.json from template, do NOT write constraints.json, do NOT write pheromones.json.
296
+
297
+ **If fresh init:**
298
+
299
+ 1. Initialize QUEEN.md (already done in Step 2)
300
+ 2. Write charter content via charter-write (same command as above)
301
+ 3. Auto-apply approved pheromone suggestions (see pheromone auto-apply below).
302
+ 4. Write COLONY_STATE.json from template:
303
+ - Generate a session ID in the format `session_{unix_timestamp}_{random}` and an ISO-8601 UTC timestamp
304
+ - Resolve template: check `~/.aether/system/templates/colony-state.template.json` first, then `.aether/templates/colony-state.template.json`
305
+ - If no template found: output "Template missing: colony-state.template.json. Run aether update to fix." and stop
306
+ - Read the template file. Follow its `_instructions` field
307
+ - Replace placeholders: `__GOAL__` with approved intent, `__SESSION_ID__` with generated session ID, `__ISO8601_TIMESTAMP__` with current timestamp, `__PHASE_LEARNINGS__` with `[]`, `__INSTINCTS__` with `[]`
308
+ - Remove ALL keys starting with underscore
309
+ - Write the resulting JSON to `.aether/data/COLONY_STATE.json` using the Write tool
310
+
311
+ 5. Write constraints.json from template:
312
+ - Resolve template: check `~/.aether/system/templates/constraints.template.json` first, then `.aether/templates/constraints.template.json`
313
+ - If no template found: output "Template missing: constraints.template.json. Run aether update to fix." and stop
314
+ - Read template, follow `_instructions`, remove `_` prefixed keys, write to `.aether/data/constraints.json`
315
+
316
+ 6. Initialize runtime files from templates (non-blocking):
317
+ ```bash
318
+ for template in pheromones midden learning-observations; do
319
+ if [[ "$template" == "midden" ]]; then
320
+ target=".aether/data/midden/midden.json"
321
+ else
322
+ target=".aether/data/${template}.json"
323
+ fi
324
+ if [[ ! -f "$target" ]]; then
325
+ template_file=""
326
+ for path in ~/.aether/system/templates/${template}.template.json .aether/templates/${template}.template.json; do
327
+ if [[ -f "$path" ]]; then
328
+ template_file="$path"
329
+ break
330
+ fi
331
+ done
332
+ if [[ -n "$template_file" ]]; then
333
+ jq 'with_entries(select(.key | startswith("_") | not))' "$template_file" > "$target" 2>/dev/null || true
334
+ fi
335
+ fi
336
+ done
219
337
  ```
338
+
339
+ 7. Run `bash .aether/aether-utils.sh context-update init "{approved_intent}"`
340
+ 8. Run `bash .aether/aether-utils.sh validate-state colony`
341
+ 9. Register repo (silent on failure):
342
+ ```bash
343
+ domain_tags=$(bash .aether/aether-utils.sh domain-detect 2>/dev/null | jq -r '.result.tags // ""' || echo "")
344
+ bash .aether/aether-utils.sh registry-add "$(pwd)" "$(jq -r '.version // "unknown"' ~/.aether/version.json 2>/dev/null || echo 'unknown')" --goal "{approved_intent}" --active true --tags "$domain_tags" 2>/dev/null || true
220
345
  cp ~/.aether/version.json .aether/version.json 2>/dev/null || true
221
346
  ```
347
+ 10. Seed QUEEN.md from hive (non-blocking):
348
+ ```bash
349
+ domain_tags=$(jq -r --arg repo "$(pwd)" \
350
+ '[.repos[] | select(.path == $repo) | .domain_tags // []] | .[0] // [] | join(",")' \
351
+ "$HOME/.aether/registry.json" 2>/dev/null || echo "")
352
+ seed_args="queen-seed-from-hive --limit 5"
353
+ [[ -n "$domain_tags" ]] && seed_args="$seed_args --domain $domain_tags"
354
+ seed_result=$(bash .aether/aether-utils.sh $seed_args 2>/dev/null || echo '{}')
355
+ seeded_count=$(echo "$seed_result" | jq -r '.result.seeded // 0' 2>/dev/null || echo "0")
356
+ ```
357
+ 11. Run `bash .aether/aether-utils.sh session-init "{session_id}" "{approved_intent}"`
222
358
 
223
- If either command fails, proceed silently. These are optional bookkeeping.
359
+ **Pheromone auto-apply (referenced by both re-init and fresh init paths above):**
224
360
 
225
- ### Step 6: Display Result
361
+ If approved pheromone suggestions exist (the user kept them in the prompt and didn't remove them during the approval loop):
226
362
 
227
- **If visual_mode is true, render final swarm display:**
363
+ For each approved pheromone suggestion, call:
228
364
  ```bash
229
- bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "completed" "Colony initialized" "Colony" '{"read":5,"grep":2,"edit":3,"bash":2}' 100 "fungus_garden" 100
230
- bash .aether/aether-utils.sh swarm-display-render "$init_id"
365
+ bash .aether/aether-utils.sh pheromone-write "{type}" '{content}' --source "system:init" --reason '{reason}' --ttl "30d" 2>/dev/null || true
231
366
  ```
232
367
 
233
- Output this header:
368
+ Implementation notes:
369
+ - Claude (the LLM executing init.md) tracks which pheromones the user kept, edited, or removed during the approval loop (Step 6). Only emit pheromones that survived approval.
370
+ - Use single quotes around pheromone content and reason to avoid shell metacharacter issues (per pitfall 4).
371
+ - Each `pheromone-write` call uses `2>/dev/null || true` to make it non-blocking -- a failed write should never stop colony creation.
372
+ - The `--source "system:init"` tag identifies these as init-derived pheromones.
373
+ - The `--ttl "30d"` gives suggestions a 30-day lifespan (project-level conventions, not phase-specific).
374
+ - `pheromone-write` handles deduplication via content hashing -- if a signal with the same content already exists, it will reinforce rather than duplicate.
375
+
376
+ ### Step 7.5: Import Previous Colony Data (optional)
377
+
378
+ Check if previous colony chambers contain importable XML data:
234
379
 
380
+ ```bash
381
+ # Find most recent chamber with XML files (per D-07)
382
+ latest_chamber=$(ls -d .aether/chambers/20* 2>/dev/null | sort -r | head -1)
383
+ xml_import_available=false
384
+ import_summary=""
385
+
386
+ if [[ -n "$latest_chamber" ]]; then
387
+ xml_count=$(find "$latest_chamber" -maxdepth 1 -name "*.xml" ! -name "colony-archive.xml" 2>/dev/null | wc -l | tr -d ' ')
388
+ if [[ "$xml_count" -gt 0 ]] && command -v xmllint >/dev/null 2>&1; then
389
+ xml_import_available=true
390
+ chamber_name=$(basename "$latest_chamber")
391
+ # Count importable items for display
392
+ signal_count=$(jq '.signals | length' "$latest_chamber/pheromones.json" 2>/dev/null || echo "0")
393
+ import_summary="Found ${signal_count} signal(s) and ${xml_count} XML file(s) from colony '${chamber_name}'"
394
+ fi
395
+ fi
235
396
  ```
236
- πŸŒ±πŸœπŸ†•πŸœπŸŒ± ═══════════════════════════════════════════════════
237
- A E T H E R C O L O N Y
238
- ═══════════════════════════════════════════════════ πŸŒ±πŸœπŸ†•πŸœπŸŒ±
397
+
398
+ **If xml_import_available is true:**
399
+
400
+ Display the import offer (per D-08):
239
401
  ```
402
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
403
+ PREVIOUS COLONY DATA FOUND
404
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
405
+
406
+ {import_summary}
240
407
 
241
- Then output the result:
408
+ Import signals and wisdom from this colony?
409
+ This will add to (not replace) your current colony data.
242
410
 
411
+ Import? (yes/no)
243
412
  ```
244
- πŸ‘‘ Queen has set the colony's intention
245
413
 
246
- "{goal}"
414
+ Use `AskUserQuestion` with yes/no options.
415
+
416
+ **If user selects "yes":**
417
+
418
+ Import ALL available data types (per D-09 -- no cherry-picking):
419
+
420
+ ```bash
421
+ # Import pheromones (per D-09)
422
+ if [[ -f "$latest_chamber/pheromones.xml" ]]; then
423
+ pher_import=$(bash .aether/aether-utils.sh pheromone-import-xml "$latest_chamber/pheromones.xml" "imported" 2>/dev/null || echo '{"ok":false}')
424
+ pher_imported=$(echo "$pher_import" | jq -r '.result.imported // 0' 2>/dev/null || echo "0")
425
+ echo "Pheromones: ${pher_imported} signal(s) imported"
426
+ fi
427
+
428
+ # Import wisdom to queen-wisdom.json (per D-09)
429
+ if [[ -f "$latest_chamber/queen-wisdom.xml" ]]; then
430
+ wis_import=$(bash .aether/aether-utils.sh wisdom-import-xml "$latest_chamber/queen-wisdom.xml" ".aether/data/queen-wisdom.json" 2>/dev/null || echo '{"ok":false}')
431
+ wis_imported=$(echo "$wis_import" | jq -r '.result.imported // 0' 2>/dev/null || echo "0")
432
+ echo "Wisdom: ${wis_imported} entries(s) imported to queen-wisdom.json"
433
+ fi
434
+
435
+ # Import registry lineage (per D-09)
436
+ if [[ -f "$latest_chamber/colony-registry.xml" ]]; then
437
+ reg_import=$(bash .aether/aether-utils.sh registry-import-xml "$latest_chamber/colony-registry.xml" 2>/dev/null || echo '{"ok":false}')
438
+ reg_imported=$(echo "$reg_import" | jq -r '.result.imported // 0' 2>/dev/null || echo "0")
439
+ echo "Registry: ${reg_imported} colon(ies) lineage imported"
440
+ fi
441
+ ```
442
+
443
+ All imports are non-blocking -- log warning and continue if any fails.
444
+
445
+ **If user selects "no":**
446
+
447
+ Display "Import skipped. Starting fresh colony." and proceed to Step 8.
448
+
449
+ **If xml_import_available is false (no chambers, no XML, or no xmllint):**
450
+
451
+ Skip silently -- proceed directly to Step 8 without any mention of import (per D-11).
452
+ ### Step 8: Display Result
453
+
454
+ Display the success header and result block:
455
+
456
+ ```
457
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
458
+ A E T H E R C O L O N Y
459
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
247
460
 
248
- 🏠 Colony Status: READY
249
- πŸ“‹ Session: <session_id>
461
+ Queen has set the colony's intention
250
462
 
251
- {If instincts or learnings were inherited from Step 2.5:}
252
- 🧠 Inherited from prior colony:
253
- {N} instinct(s) | {N} learning(s)
254
- {End if}
463
+ "{approved_intent}"
255
464
 
256
- {If nestmates found in Step 5.5:}
257
- 🏘️ Nest Context: {N} sibling colonies detected
258
- Context from related projects will be automatically considered
259
- during planning and execution.
260
- {End if}
465
+ Colony Status: READY
261
466
 
262
- 🐜 The colony awaits your command:
467
+ {If re-init: " Mode: Re-init (charter updated, state preserved)"}
468
+ {If fresh and seeded_count > 0: " Hive wisdom: {seeded_count} cross-colony pattern(s) seeded into QUEEN.md"}
263
469
 
264
- /ant:plan πŸ“‹ Generate project plan
265
- /ant:colonize πŸ—ΊοΈ Analyze existing codebase first
266
- /ant:watch πŸ‘οΈ Set up live visibility
470
+ State persisted -- safe to /clear, then run /ant:plan
267
471
 
268
- πŸ’Ύ State persisted β€” safe to /clear, then run /ant:plan
472
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
473
+ Next Up
474
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
475
+ /ant:plan Generate execution plan
476
+ /ant:status Check colony state
477
+ /ant:focus Set initial focus
269
478
  ```