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
@@ -0,0 +1,502 @@
1
+ name: "ant:init"
2
+ description: "Initialize Aether colony - scan repo, approve charter, create colony"
3
+ body: |
4
+ You are the **Queen Ant Colony**. Initialize the colony with the Queen's intention.
5
+
6
+ ## Instructions
7
+
8
+ The user's goal is: `{{ARGUMENTS}}`
9
+
10
+ Parse `{{ARGUMENTS}}`:
11
+ - If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
12
+ - Otherwise: set `visual_mode = true`
13
+
14
+ {{#opencode}}
15
+ Note: Use `$normalized_args` instead of `$ARGUMENTS` throughout this command.
16
+
17
+ ### Step 0: Initialize Visual Mode (if enabled)
18
+
19
+ If `visual_mode` is true:
20
+ {{/opencode}}
21
+
22
+ <failure_modes>
23
+ ### Colony State Overwrite
24
+ 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.
25
+
26
+ ### Write Failure Mid-Init
27
+ If writing COLONY_STATE.json fails partway:
28
+ - Remove the incomplete file (partial state is worse than no state)
29
+ - Report the error
30
+ - Recovery: user can run /ant:init again safely
31
+ </failure_modes>
32
+
33
+ <success_criteria>
34
+ Command is complete when:
35
+ - User has approved the charter prompt (Charter, Context, Pheromones sections)
36
+ - Charter content is written to QUEEN.md via charter-write
37
+ - COLONY_STATE.json exists and is valid JSON (fresh init only)
38
+ - Session file is written
39
+ - User sees confirmation of colony creation or re-init
40
+ </success_criteria>
41
+
42
+ <read_only>
43
+ Do not touch during init:
44
+ - .aether/dreams/ (user notes)
45
+ - .aether/chambers/ (archived colonies)
46
+ - .env* files
47
+ - .claude/settings.json
48
+ - .github/workflows/
49
+ </read_only>
50
+
51
+ ### Step 1: Validate Input
52
+
53
+ If `{{ARGUMENTS}}` is empty or blank, output:
54
+
55
+ ```
56
+ Aether Colony
57
+
58
+ Initialize the colony with a goal. This scans the repo, generates
59
+ a charter for your approval, then creates colony files.
60
+
61
+ Usage: /ant:init "<your goal here>"
62
+
63
+ Examples:
64
+ /ant:init "Build a REST API with authentication"
65
+ /ant:init "Create a soothing sound application"
66
+ /ant:init "Design a calculator CLI tool"
67
+ ```
68
+
69
+ Stop here. Do not proceed.
70
+
71
+ ### Step 1.5: Verify Aether Setup
72
+
73
+ Check if `.aether/aether-utils.sh` exists using the Read tool.
74
+
75
+ **If the file already exists** -- skip this step entirely. Aether is set up.
76
+
77
+ **If the file does NOT exist:**
78
+ ```
79
+ Aether is not set up in this repo yet.
80
+
81
+ Run /ant:lay-eggs first to create the .aether/ directory
82
+ with all system files, then run /ant:init "your goal" to
83
+ start a colony.
84
+
85
+ If the global hub isn't installed either:
86
+ npm install -g aether-colony (installs the hub)
87
+ /ant:lay-eggs (sets up this repo)
88
+ /ant:init "your goal" (starts the colony)
89
+ ```
90
+ Stop here. Do not proceed.
91
+
92
+ ### Step 2: Initialize QUEEN.md
93
+
94
+ {{TOOL_PREFIX "Initializing QUEEN.md..."}}
95
+ ```
96
+ bash .aether/aether-utils.sh queen-init
97
+ ```
98
+
99
+ Parse the JSON result:
100
+ - If `created` is true: Display `QUEEN.md initialized`
101
+ - If `created` is false and `reason` is "already_exists": Display `QUEEN.md already exists`
102
+
103
+ This step is non-blocking -- proceed regardless of outcome.
104
+
105
+ ### Step 3: Scan Repository
106
+
107
+ Run the scan via Bash tool:
108
+ ```bash
109
+ scan_result=$(bash .aether/aether-utils.sh init-research 2>/dev/null)
110
+ scan_data=$(echo "$scan_result" | jq '.result')
111
+ ```
112
+
113
+ Extract fields with jq defaults for missing data:
114
+ - `tech_langs`: `.tech_stack.languages | if length > 0 then join(", ") else "not detected" end`
115
+ - `tech_fwks`: `.tech_stack.frameworks | if length > 0 then join(", ") else "none" end`
116
+ - `tech_pkg`: `.tech_stack.package_managers | join(", ")`
117
+ - `complexity`: `.complexity.size`
118
+ - `file_count`: `.complexity.metrics.file_count`
119
+ - `top_dirs`: `.directory_structure.top_level_dirs | if . and length > 0 then join(", ") else "flat" end`
120
+ - `commit_count`: `.git_history.commit_count // "unknown"`
121
+ - `is_git`: `.git_history.is_git_repo // false`
122
+ - `survey_suggestion`: `.survey_status.suggestion.reason // empty`
123
+ - `has_active`: `.prior_colonies.has_active_colony // false`
124
+ - `active_goal`: `.prior_colonies.active_goal // empty`
125
+
126
+ **Intelligence fields (new):**
127
+ - `colony_context_colonies`: `.colony_context.prior_colonies // []` -- array of prior colony summaries (each has goal, phases, outcome, summary)
128
+ - `colony_context_charter`: `.colony_context.existing_charter // {}` -- existing charter content from QUEEN.md
129
+ - `governance_rules`: `.governance.rules // []` -- array of governance rule objects (each has rule, source, strength)
130
+ - `pheromone_suggestions`: `.pheromone_suggestions // []` -- array of suggestion objects (each has type, content, reason, priority)
131
+
132
+ 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).
133
+
134
+ ### Step 4: Detect Re-Init Mode
135
+
136
+ Use Read tool to check `.aether/data/COLONY_STATE.json`.
137
+
138
+ - If file exists AND has a non-null `goal` field:
139
+ - Check the `milestone` field. If `milestone == "Crowned Anthill"`:
140
+ - This is a **sealed colony**. Treat as **fresh init**, NOT re-init.
141
+ - Set `reinit_mode = false`
142
+ - Display: `Previous colony was sealed. Starting fresh colony.`
143
+ - The old COLONY_STATE.json will be overwritten in Step 7 (fresh init path).
144
+ - Otherwise (colony exists but is NOT sealed): set `reinit_mode = true`, store `existing_goal`
145
+ - If file does not exist or `goal` is null: set `reinit_mode = false`
146
+
147
+ If re-init mode, read existing charter entries from `.aether/QUEEN.md`:
148
+ ```bash
149
+ existing_intent=$(grep '\[charter\] \*\*Intent\*\*:' .aether/QUEEN.md 2>/dev/null | sed 's/.*\*\*Intent\*\*: //' | sed 's/ (Colony:.*//' || true)
150
+ existing_vision=$(grep '\[charter\] \*\*Vision\*\*:' .aether/QUEEN.md 2>/dev/null | sed 's/.*\*\*Vision\*\*: //' | sed 's/ (Colony:.*//' || true)
151
+ existing_governance=$(grep '\[charter\] \*\*Governance\*\*:' .aether/QUEEN.md 2>/dev/null | sed 's/.*\*\*Governance\*\*: //' | sed 's/ (Colony:.*//' || true)
152
+ existing_goals=$(grep '\[charter\] \*\*Goal\*\*:' .aether/QUEEN.md 2>/dev/null | sed 's/.*\*\*Goal\*\*: //' | sed 's/ (Colony:.*//' || true)
153
+ ```
154
+
155
+ Strip `(Colony: ...)` suffixes using sed. If grep finds nothing, variables remain empty.
156
+
157
+ ### Step 5: Assemble and Display Approval Prompt
158
+
159
+ Display a brief header:
160
+ ```
161
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
162
+ A E T H E R C O L O N Y I N I T
163
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
164
+ ```
165
+
166
+ If re-init mode, display:
167
+ ```
168
+ Re-init mode detected (existing goal: "{existing_goal}")
169
+ Charter will be updated. All colony state, wisdom, instincts, and progress will be preserved.
170
+ ```
171
+
172
+ Then display the approval prompt as formatted Markdown. Section ordering: Prior Context (if any) -> Charter -> Context -> Pheromones.
173
+
174
+ **Section 1: Prior Context (conditional -- only when prior colonies exist)**
175
+
176
+ If `colony_context_colonies` has entries (length > 0), display:
177
+ ```markdown
178
+ ## Prior Context
179
+
180
+ Previous colonies in this repo:
181
+
182
+ {For each colony (max 3, most recent first):}
183
+ - **{goal}** -- {outcome} ({phases} phases){if summary is non-empty: ". {summary}"}
184
+ ```
185
+
186
+ Per locked decision: when no prior colonies exist, omit this section entirely. No placeholder, no header.
187
+
188
+ Keep each colony to 1-2 lines. Show goal, outcome (milestone), phase count, and summary from CROWNED-ANTHILL.md if available.
189
+
190
+ **Section 2: Charter**
191
+ ```markdown
192
+ ## Charter
193
+
194
+ **Intent:** {user's goal from {{ARGUMENTS}}, or existing_intent if re-init}
195
+ **Vision:** {derived from user's goal by Claude, or existing_vision if re-init}
196
+ **Governance:** {see governance logic below}
197
+ **Goals:** {blank for fresh init, or existing_goals if re-init}
198
+ ```
199
+
200
+ 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.
201
+
202
+ **Governance field logic:**
203
+ - 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.
204
+ - For fresh init with no governance_rules: leave blank.
205
+ - For re-init with existing_governance non-empty: pre-populate from existing QUEEN.md charter entries.
206
+ - For re-init with existing_governance empty but governance_rules available: pre-populate from governance_rules.
207
+
208
+ For re-init, pre-populate Intent, Vision, and Goals from existing QUEEN.md charter entries.
209
+
210
+ **Section 3: Context**
211
+ ```markdown
212
+ ## Context
213
+
214
+ **Tech Stack:** {tech_langs} | {tech_fwks} | {tech_pkg}
215
+ **Project Size:** {complexity} ({file_count} files)
216
+ **Structure:** {top_dirs}
217
+ **Git:** {commit_count} commits
218
+ {if survey_suggestion: **Note:** {survey_suggestion}}
219
+ ```
220
+
221
+ **Section 4: Pheromones**
222
+
223
+ If `pheromone_suggestions` has entries (length > 0), display:
224
+ ```markdown
225
+ ## Pheromones
226
+
227
+ Suggested signals based on repo analysis:
228
+
229
+ 1. [FOCUS] Testing infrastructure present (47 test files) -- maintain TDD discipline
230
+ 2. [REDIRECT] Environment files detected -- never commit secrets or .env files
231
+ 3. [FOCUS] Code quality tools configured -- follow existing lint/format rules
232
+
233
+ Edit, remove, or add signals as needed. Approved signals will be auto-applied.
234
+ ```
235
+
236
+ The numbered list uses the actual type and content from `pheromone_suggestions`. Each line format: `{N}. [{type}] {content}`.
237
+
238
+ Per locked decision: suggestions are fully editable. User can reword, remove, or add their own.
239
+ Per locked decision: all sections look the same -- no visual distinction between auto-generated and user-written content.
240
+
241
+ If no pheromone suggestions available (empty array), display the existing default:
242
+ ```markdown
243
+ ## Pheromones
244
+
245
+ No pheromone suggestions yet -- use /ant:focus and /ant:redirect to guide the colony.
246
+ ```
247
+
248
+ End with clear instructions:
249
+ ```
250
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
251
+ Review the prompt above. You can:
252
+ - Edit any section (just describe your changes)
253
+ - Say "approve" or "looks good" to proceed
254
+ - Say "cancel" to abort
255
+
256
+ If you don't respond, the colony will not be initialized.
257
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
258
+ ```
259
+
260
+ **STOP HERE.** Wait for the user's response. Do NOT proceed to Step 6 until the user responds.
261
+
262
+ ### Step 6: Handle User Response
263
+
264
+ Parse the user's response:
265
+ - If the user approves (says "approve", "looks good", "yes", "ok", or similar): proceed to Step 7
266
+ - 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
267
+ - If the user cancels: display "Colony initialization cancelled." and stop
268
+ - Max 2 revision rounds. After 2 rejections/edits, display: "Maximum revisions reached. Approve current version, or cancel init?" and wait for final decision
269
+
270
+ 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)"
271
+
272
+ ### Step 7: Create Colony (Post-Approval)
273
+
274
+ Only reached after user approval. ALL file writes happen here.
275
+
276
+ **If re-init mode:**
277
+
278
+ 1. Write charter content via:
279
+ ```bash
280
+ bash .aether/aether-utils.sh charter-write --intent "{approved_intent}" --vision "{approved_vision}" --governance "{approved_governance}" --goals "{approved_goals}"
281
+ ```
282
+
283
+ 2. Auto-apply approved pheromone suggestions (see pheromone auto-apply below).
284
+
285
+ 3. Update the goal field in COLONY_STATE.json in-place using the state API:
286
+ ```bash
287
+ bash .aether/aether-utils.sh state-write "$(jq --arg new_goal "{approved_intent}" '.goal = $new_goal' .aether/data/COLONY_STATE.json)"
288
+ ```
289
+
290
+ 4. **Verify the write** — read back and confirm goal is set:
291
+ ```bash
292
+ verify_goal=$(jq -r '.goal' .aether/data/COLONY_STATE.json)
293
+ if [[ "$verify_goal" == "null" || -z "$verify_goal" ]]; then
294
+ echo "ERROR: Colony state write failed — goal is still null after write. Re-run /ant:init."
295
+ # Attempt recovery: write goal directly
296
+ jq --arg g "{approved_intent}" '.goal = $g' .aether/data/COLONY_STATE.json > .aether/data/COLONY_STATE.json.tmp && mv .aether/data/COLONY_STATE.json.tmp .aether/data/COLONY_STATE.json
297
+ verify_goal=$(jq -r '.goal' .aether/data/COLONY_STATE.json)
298
+ if [[ "$verify_goal" == "null" || -z "$verify_goal" ]]; then
299
+ echo "FATAL: Recovery write also failed. Colony state may be corrupted."
300
+ stop
301
+ fi
302
+ fi
303
+ ```
304
+
305
+ 5. Run `bash .aether/aether-utils.sh session-init "$(jq -r '.session_id' .aether/data/COLONY_STATE.json)" "{approved_intent}"`
306
+
307
+ 6. Skip to Step 8 (display result). Do NOT write COLONY_STATE.json from template, do NOT write constraints.json, do NOT write pheromones.json.
308
+
309
+ **If fresh init:**
310
+
311
+ 1. Initialize QUEEN.md (already done in Step 2)
312
+ 2. Write charter content via charter-write (same command as above)
313
+ 3. Auto-apply approved pheromone suggestions (see pheromone auto-apply below).
314
+ 4. Write COLONY_STATE.json from template:
315
+ - Generate a session ID in the format `session_{unix_timestamp}_{random}` and an ISO-8601 UTC timestamp
316
+ - Resolve template: check `~/.aether/system/templates/colony-state.template.json` first, then `.aether/templates/colony-state.template.json`
317
+ - If no template found: output "Template missing: colony-state.template.json. Run aether update to fix." and stop
318
+ - Read the template file. Follow its `_instructions` field
319
+ - Replace placeholders: `__GOAL__` with approved intent, `__SESSION_ID__` with generated session ID, `__ISO8601_TIMESTAMP__` with current timestamp, `__PHASE_LEARNINGS__` with `[]`, `__INSTINCTS__` with `[]`
320
+ - Remove ALL keys starting with underscore
321
+ - Write the resulting JSON to `.aether/data/COLONY_STATE.json` using the Write tool
322
+
323
+ 5. **Verify the write** — read back and confirm COLONY_STATE.json is valid and goal is set:
324
+ ```bash
325
+ verify_goal=$(jq -r '.goal' .aether/data/COLONY_STATE.json 2>/dev/null)
326
+ verify_valid=$(jq -e . .aether/data/COLONY_STATE.json >/dev/null 2>&1 && echo "valid" || echo "invalid")
327
+ if [[ "$verify_valid" != "valid" || "$verify_goal" == "null" || -z "$verify_goal" ]]; then
328
+ echo "ERROR: Colony state write verification failed (valid=$verify_valid, goal=$verify_goal)"
329
+ echo "The colony file may be corrupted. Remove .aether/data/COLONY_STATE.json and re-run /ant:init."
330
+ stop
331
+ fi
332
+ echo "Colony state verified: goal=\"$verify_goal\""
333
+ ```
334
+
335
+ 6. Write constraints.json from template:
336
+ - Resolve template: check `~/.aether/system/templates/constraints.template.json` first, then `.aether/templates/constraints.template.json`
337
+ - If no template found: output "Template missing: constraints.template.json. Run aether update to fix." and stop
338
+ - Read template, follow `_instructions`, remove `_` prefixed keys, write to `.aether/data/constraints.json`
339
+
340
+ 7. Initialize runtime files from templates (non-blocking):
341
+ ```bash
342
+ for template in pheromones midden learning-observations; do
343
+ if [[ "$template" == "midden" ]]; then
344
+ target=".aether/data/midden/midden.json"
345
+ else
346
+ target=".aether/data/${template}.json"
347
+ fi
348
+ if [[ ! -f "$target" ]]; then
349
+ template_file=""
350
+ for path in ~/.aether/system/templates/${template}.template.json .aether/templates/${template}.template.json; do
351
+ if [[ -f "$path" ]]; then
352
+ template_file="$path"
353
+ break
354
+ fi
355
+ done
356
+ if [[ -n "$template_file" ]]; then
357
+ jq 'with_entries(select(.key | startswith("_") | not))' "$template_file" > "$target" 2>/dev/null || true
358
+ fi
359
+ fi
360
+ done
361
+ ```
362
+
363
+ 8. Run `bash .aether/aether-utils.sh context-update init "{approved_intent}"`
364
+ 9. Run `bash .aether/aether-utils.sh validate-state colony`
365
+ 10. Register repo (silent on failure):
366
+ ```bash
367
+ domain_tags=$(bash .aether/aether-utils.sh domain-detect 2>/dev/null | jq -r '.result.tags // ""' || echo "")
368
+ 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
369
+ cp ~/.aether/version.json .aether/version.json 2>/dev/null || true
370
+ ```
371
+ 11. Seed QUEEN.md from hive (non-blocking):
372
+ ```bash
373
+ domain_tags=$(jq -r --arg repo "$(pwd)" \
374
+ '[.repos[] | select(.path == $repo) | .domain_tags // []] | .[0] // [] | join(",")' \
375
+ "$HOME/.aether/registry.json" 2>/dev/null || echo "")
376
+ seed_args="queen-seed-from-hive --limit 5"
377
+ [[ -n "$domain_tags" ]] && seed_args="$seed_args --domain $domain_tags"
378
+ seed_result=$(bash .aether/aether-utils.sh $seed_args 2>/dev/null || echo '{}')
379
+ seeded_count=$(echo "$seed_result" | jq -r '.result.seeded // 0' 2>/dev/null || echo "0")
380
+ ```
381
+ 12. Run `bash .aether/aether-utils.sh session-init "{session_id}" "{approved_intent}"`
382
+
383
+ **Pheromone auto-apply (referenced by both re-init and fresh init paths above):**
384
+
385
+ If approved pheromone suggestions exist (the user kept them in the prompt and didn't remove them during the approval loop):
386
+
387
+ For each approved pheromone suggestion, call:
388
+ ```bash
389
+ bash .aether/aether-utils.sh pheromone-write "{type}" '{content}' --source "system:init" --reason '{reason}' --ttl "30d" 2>/dev/null || true
390
+ ```
391
+
392
+ Implementation notes:
393
+ - 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.
394
+ - Use single quotes around pheromone content and reason to avoid shell metacharacter issues (per pitfall 4).
395
+ - Each `pheromone-write` call uses `2>/dev/null || true` to make it non-blocking -- a failed write should never stop colony creation.
396
+ - The `--source "system:init"` tag identifies these as init-derived pheromones.
397
+ - The `--ttl "30d"` gives suggestions a 30-day lifespan (project-level conventions, not phase-specific).
398
+ - `pheromone-write` handles deduplication via content hashing -- if a signal with the same content already exists, it will reinforce rather than duplicate.
399
+
400
+ ### Step 7.5: Import Previous Colony Data (optional)
401
+
402
+ Check if previous colony chambers contain importable XML data:
403
+
404
+ ```bash
405
+ # Find most recent chamber with XML files (per D-07)
406
+ latest_chamber=$(ls -d .aether/chambers/20* 2>/dev/null | sort -r | head -1)
407
+ xml_import_available=false
408
+ import_summary=""
409
+
410
+ if [[ -n "$latest_chamber" ]]; then
411
+ xml_count=$(find "$latest_chamber" -maxdepth 1 -name "*.xml" ! -name "colony-archive.xml" 2>/dev/null | wc -l | tr -d ' ')
412
+ if [[ "$xml_count" -gt 0 ]] && command -v xmllint >/dev/null 2>&1; then
413
+ xml_import_available=true
414
+ chamber_name=$(basename "$latest_chamber")
415
+ # Count importable items for display
416
+ signal_count=$(jq '.signals | length' "$latest_chamber/pheromones.json" 2>/dev/null || echo "0")
417
+ import_summary="Found ${signal_count} signal(s) and ${xml_count} XML file(s) from colony '${chamber_name}'"
418
+ fi
419
+ fi
420
+ ```
421
+
422
+ **If xml_import_available is true:**
423
+
424
+ Display the import offer (per D-08):
425
+ ```
426
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
427
+ PREVIOUS COLONY DATA FOUND
428
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
429
+
430
+ {import_summary}
431
+
432
+ Import signals and wisdom from this colony?
433
+ This will add to (not replace) your current colony data.
434
+
435
+ Import? (yes/no)
436
+ ```
437
+
438
+ Use `AskUserQuestion` with yes/no options.
439
+
440
+ **If user selects "yes":**
441
+
442
+ Import ALL available data types (per D-09 -- no cherry-picking):
443
+
444
+ ```bash
445
+ # Import pheromones (per D-09)
446
+ if [[ -f "$latest_chamber/pheromones.xml" ]]; then
447
+ pher_import=$(bash .aether/aether-utils.sh pheromone-import-xml "$latest_chamber/pheromones.xml" "imported" 2>/dev/null || echo '{"ok":false}')
448
+ pher_imported=$(echo "$pher_import" | jq -r '.result.imported // 0' 2>/dev/null || echo "0")
449
+ echo "Pheromones: ${pher_imported} signal(s) imported"
450
+ fi
451
+
452
+ # Import wisdom to queen-wisdom.json (per D-09)
453
+ if [[ -f "$latest_chamber/queen-wisdom.xml" ]]; then
454
+ 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}')
455
+ wis_imported=$(echo "$wis_import" | jq -r '.result.imported // 0' 2>/dev/null || echo "0")
456
+ echo "Wisdom: ${wis_imported} entries(s) imported to queen-wisdom.json"
457
+ fi
458
+
459
+ # Import registry lineage (per D-09)
460
+ if [[ -f "$latest_chamber/colony-registry.xml" ]]; then
461
+ reg_import=$(bash .aether/aether-utils.sh registry-import-xml "$latest_chamber/colony-registry.xml" 2>/dev/null || echo '{"ok":false}')
462
+ reg_imported=$(echo "$reg_import" | jq -r '.result.imported // 0' 2>/dev/null || echo "0")
463
+ echo "Registry: ${reg_imported} colon(ies) lineage imported"
464
+ fi
465
+ ```
466
+
467
+ All imports are non-blocking -- log warning and continue if any fails.
468
+
469
+ **If user selects "no":**
470
+
471
+ Display "Import skipped. Starting fresh colony." and proceed to Step 8.
472
+
473
+ **If xml_import_available is false (no chambers, no XML, or no xmllint):**
474
+
475
+ Skip silently -- proceed directly to Step 8 without any mention of import (per D-11).
476
+ ### Step 8: Display Result
477
+
478
+ Display the success header and result block:
479
+
480
+ ```
481
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
482
+ A E T H E R C O L O N Y
483
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
484
+
485
+ Queen has set the colony's intention
486
+
487
+ "{approved_intent}"
488
+
489
+ Colony Status: READY
490
+
491
+ {If re-init: " Mode: Re-init (charter updated, state preserved)"}
492
+ {If fresh and seeded_count > 0: " Hive wisdom: {seeded_count} cross-colony pattern(s) seeded into QUEEN.md"}
493
+
494
+ State persisted -- safe to /clear, then run /ant:plan
495
+
496
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
497
+ Next Up
498
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
499
+ /ant:plan Generate execution plan
500
+ /ant:status Check colony state
501
+ /ant:focus Set initial focus
502
+ ```
@@ -0,0 +1,102 @@
1
+ name: "ant:insert-phase"
2
+ description: "➕🐜 Insert a corrective phase into the active plan"
3
+ body: |
4
+ You are the **Queen**. Insert a new corrective phase without forcing the user to provide flags.
5
+
6
+ ## Instructions
7
+
8
+ ### Step 1: Validate Colony State
9
+
10
+ Read `.aether/data/COLONY_STATE.json`.
11
+
12
+ If `goal` is null:
13
+ `No colony initialized. Run /ant:init first.`
14
+ Stop.
15
+
16
+ If `milestone` == `"Crowned Anthill"`:
17
+ `This colony has been sealed. Start a new colony with /ant:init "new goal".`
18
+ Stop.
19
+
20
+ If `plan.phases` is empty:
21
+ `No project plan. Run /ant:plan first.`
22
+ Stop.
23
+
24
+ Determine:
25
+ - `current_phase`
26
+ - `total_phases`
27
+ - `current_phase_name` (if available)
28
+
29
+ ### Step 2: Collect Minimal Input
30
+
31
+ This command is designed to work with no arguments.
32
+
33
+ If `{{ARGUMENTS}}` is non-empty:
34
+ - Use `{{ARGUMENTS}}` as the issue summary.
35
+ - Skip the first question.
36
+
37
+ Otherwise ask:
38
+ ```text
39
+ What is not working and needs a corrective phase?
40
+ ```
41
+
42
+ Then ask:
43
+ ```text
44
+ What should the inserted phase accomplish?
45
+ ```
46
+
47
+ Then ask (optional):
48
+ ```text
49
+ Any hard constraints to enforce while fixing this? (or say "none")
50
+ ```
51
+
52
+ If constraints answer is `none` (case-insensitive), treat constraints as empty.
53
+
54
+ ### Step 3: Derive Phase Name
55
+
56
+ Create a concise phase name from the user goal:
57
+ - Start with `Stabilize`
58
+ - Add a short noun phrase from the goal (max 6 words)
59
+ - Keep under 80 characters
60
+
61
+ Example:
62
+ - Goal: `Fix retry flow and stop duplicate requests`
63
+ - Name: `Stabilize retry flow and duplicate requests`
64
+
65
+ ### Step 4: Insert Phase Safely
66
+
67
+ {{TOOL_PREFIX "Inserting corrective phase..."}}
68
+
69
+ ```bash
70
+ bash .aether/aether-utils.sh phase-insert "<phase_name>" "<goal_text>" "<constraints_text>"
71
+ ```
72
+
73
+ Parse JSON result:
74
+ - If `ok != true`, display error and stop.
75
+ - Extract `inserted_phase_id` and `after_phase`.
76
+
77
+ ### Step 5: Confirm Outcome
78
+
79
+ Display:
80
+
81
+ ```text
82
+ Inserted corrective phase successfully.
83
+ New phase: <inserted_phase_id> — <phase_name>
84
+ Inserted after phase: <after_phase>
85
+ Goal: <goal_text>
86
+ ```
87
+
88
+ If constraints were provided, also display:
89
+ ```text
90
+ Constraints captured: <constraints_text>
91
+ ```
92
+
93
+ ### Step 6: Next Up
94
+
95
+ Show:
96
+
97
+ ```text
98
+ Next steps:
99
+ /ant:phase <inserted_phase_id> Review inserted phase details
100
+ /ant:build <inserted_phase_id> Execute corrective phase
101
+ /ant:status Verify updated plan state
102
+ ```