aether-colony 3.1.17 → 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 (378) hide show
  1. package/.aether/aether-utils.sh +5354 -0
  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 +211 -0
  72. package/.aether/docs/README.md +98 -0
  73. package/.aether/docs/caste-system.md +48 -0
  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 +1682 -0
  78. package/.aether/docs/command-playbooks/build-prep.md +283 -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 +1724 -0
  84. package/.aether/docs/command-playbooks/continue-gates.md +686 -0
  85. package/.aether/docs/command-playbooks/continue-verify.md +406 -0
  86. package/.aether/docs/context-continuity.md +84 -0
  87. package/{runtime → .aether/docs/disciplines}/DISCIPLINES.md +13 -11
  88. package/.aether/docs/error-codes.md +268 -0
  89. package/.aether/docs/known-issues.md +94 -0
  90. package/{runtime → .aether}/docs/pheromones.md +86 -6
  91. package/.aether/docs/plans/pheromone-display-plan.md +257 -0
  92. package/.aether/docs/queen-commands.md +98 -0
  93. package/.aether/docs/source-of-truth-map.md +132 -0
  94. package/.aether/docs/xml-utilities.md +47 -0
  95. package/{runtime → .aether}/exchange/pheromone-xml.sh +2 -1
  96. package/{runtime → .aether}/exchange/registry-xml.sh +7 -3
  97. package/{runtime → .aether}/exchange/wisdom-xml.sh +11 -4
  98. package/.aether/rules/aether-colony.md +144 -0
  99. package/.aether/schemas/example-prompt-builder.xml +234 -0
  100. package/.aether/scripts/incident-test-add.sh +47 -0
  101. package/.aether/scripts/weekly-audit.sh +79 -0
  102. package/.aether/skills/.index.json +649 -0
  103. package/.aether/skills/colony/.manifest.json +16 -0
  104. package/.aether/skills/colony/build-discipline/SKILL.md +78 -0
  105. package/.aether/skills/colony/colony-interaction/SKILL.md +56 -0
  106. package/.aether/skills/colony/colony-lifecycle/SKILL.md +77 -0
  107. package/.aether/skills/colony/colony-visuals/SKILL.md +112 -0
  108. package/.aether/skills/colony/context-management/SKILL.md +80 -0
  109. package/.aether/skills/colony/error-presentation/SKILL.md +99 -0
  110. package/.aether/skills/colony/pheromone-protocol/SKILL.md +79 -0
  111. package/.aether/skills/colony/pheromone-visibility/SKILL.md +81 -0
  112. package/.aether/skills/colony/state-safety/SKILL.md +84 -0
  113. package/.aether/skills/colony/worker-priming/SKILL.md +82 -0
  114. package/.aether/skills/domain/.manifest.json +24 -0
  115. package/.aether/skills/domain/README.md +33 -0
  116. package/.aether/skills/domain/django/SKILL.md +49 -0
  117. package/.aether/skills/domain/docker/SKILL.md +52 -0
  118. package/.aether/skills/domain/golang/SKILL.md +52 -0
  119. package/.aether/skills/domain/graphql/SKILL.md +51 -0
  120. package/.aether/skills/domain/html-css/SKILL.md +48 -0
  121. package/.aether/skills/domain/nextjs/SKILL.md +45 -0
  122. package/.aether/skills/domain/nodejs/SKILL.md +53 -0
  123. package/.aether/skills/domain/postgresql/SKILL.md +53 -0
  124. package/.aether/skills/domain/prisma/SKILL.md +59 -0
  125. package/.aether/skills/domain/python/SKILL.md +50 -0
  126. package/.aether/skills/domain/rails/SKILL.md +52 -0
  127. package/.aether/skills/domain/react/SKILL.md +45 -0
  128. package/.aether/skills/domain/rest-api/SKILL.md +58 -0
  129. package/.aether/skills/domain/svelte/SKILL.md +47 -0
  130. package/.aether/skills/domain/tailwind/SKILL.md +45 -0
  131. package/.aether/skills/domain/testing/SKILL.md +53 -0
  132. package/.aether/skills/domain/typescript/SKILL.md +58 -0
  133. package/.aether/skills/domain/vue/SKILL.md +49 -0
  134. package/.aether/templates/QUEEN.md.template +61 -0
  135. package/.aether/templates/colony-state-reset.jq.template +23 -0
  136. package/.aether/templates/colony-state.template.json +39 -0
  137. package/.aether/templates/constraints.template.json +9 -0
  138. package/.aether/templates/crowned-anthill.template.md +36 -0
  139. package/.aether/templates/handoff-build-error.template.md +30 -0
  140. package/.aether/templates/handoff-build-success.template.md +39 -0
  141. package/.aether/templates/handoff.template.md +40 -0
  142. package/.aether/templates/learning-observations.template.json +6 -0
  143. package/.aether/templates/midden.template.json +13 -0
  144. package/.aether/templates/pheromones.template.json +6 -0
  145. package/.aether/templates/session.template.json +9 -0
  146. package/{runtime → .aether}/utils/atomic-write.sh +68 -22
  147. package/{runtime → .aether}/utils/chamber-compare.sh +23 -10
  148. package/.aether/utils/chamber-utils.sh +440 -0
  149. package/.aether/utils/emoji-audit.sh +166 -0
  150. package/{runtime → .aether}/utils/error-handler.sh +34 -8
  151. package/.aether/utils/file-lock.sh +313 -0
  152. package/.aether/utils/flag.sh +267 -0
  153. package/.aether/utils/hive.sh +572 -0
  154. package/.aether/utils/learning.sh +1928 -0
  155. package/.aether/utils/midden.sh +342 -0
  156. package/.aether/utils/oracle/oracle.md +168 -0
  157. package/.aether/utils/oracle/oracle.sh +1023 -0
  158. package/.aether/utils/pheromone.sh +2029 -0
  159. package/.aether/utils/queen.sh +1698 -0
  160. package/.aether/utils/scan.sh +860 -0
  161. package/.aether/utils/semantic-cli.sh +415 -0
  162. package/.aether/utils/session.sh +552 -0
  163. package/.aether/utils/skills.sh +509 -0
  164. package/.aether/utils/spawn-tree.sh +260 -0
  165. package/.aether/utils/spawn.sh +260 -0
  166. package/.aether/utils/state-api.sh +199 -0
  167. package/{runtime → .aether}/utils/state-loader.sh +8 -6
  168. package/.aether/utils/suggest.sh +611 -0
  169. package/{runtime → .aether}/utils/swarm-display.sh +10 -1
  170. package/.aether/utils/swarm.sh +1004 -0
  171. package/{runtime → .aether}/utils/watch-spawn-tree.sh +11 -2
  172. package/{runtime → .aether}/utils/xml-compose.sh +9 -3
  173. package/.aether/utils/xml-convert.sh +277 -0
  174. package/{runtime → .aether}/utils/xml-core.sh +5 -9
  175. package/.aether/utils/xml-query.sh +201 -0
  176. package/.aether/utils/xml-utils.sh +110 -0
  177. package/{runtime → .aether}/workers.md +97 -81
  178. package/.claude/agents/ant/aether-ambassador.md +265 -0
  179. package/.claude/agents/ant/aether-archaeologist.md +327 -0
  180. package/.claude/agents/ant/aether-architect.md +236 -0
  181. package/.claude/agents/ant/aether-auditor.md +271 -0
  182. package/.claude/agents/ant/aether-builder.md +224 -0
  183. package/.claude/agents/ant/aether-chaos.md +269 -0
  184. package/.claude/agents/ant/aether-chronicler.md +305 -0
  185. package/.claude/agents/ant/aether-gatekeeper.md +330 -0
  186. package/.claude/agents/ant/aether-includer.md +374 -0
  187. package/.claude/agents/ant/aether-keeper.md +272 -0
  188. package/.claude/agents/ant/aether-measurer.md +322 -0
  189. package/.claude/agents/ant/aether-oracle.md +237 -0
  190. package/.claude/agents/ant/aether-probe.md +211 -0
  191. package/.claude/agents/ant/aether-queen.md +330 -0
  192. package/.claude/agents/ant/aether-route-setter.md +178 -0
  193. package/.claude/agents/ant/aether-sage.md +418 -0
  194. package/.claude/agents/ant/aether-scout.md +179 -0
  195. package/.claude/agents/ant/aether-surveyor-disciplines.md +417 -0
  196. package/.claude/agents/ant/aether-surveyor-nest.md +355 -0
  197. package/.claude/agents/ant/aether-surveyor-pathogens.md +289 -0
  198. package/.claude/agents/ant/aether-surveyor-provisions.md +360 -0
  199. package/.claude/agents/ant/aether-tracker.md +270 -0
  200. package/.claude/agents/ant/aether-watcher.md +280 -0
  201. package/.claude/agents/ant/aether-weaver.md +248 -0
  202. package/.claude/commands/ant/archaeology.md +16 -14
  203. package/.claude/commands/ant/build.md +43 -1028
  204. package/.claude/commands/ant/chaos.md +19 -23
  205. package/.claude/commands/ant/colonize.md +52 -31
  206. package/.claude/commands/ant/continue.md +40 -1016
  207. package/.claude/commands/ant/council.md +21 -18
  208. package/.claude/commands/ant/data-clean.md +81 -0
  209. package/.claude/commands/ant/dream.md +27 -15
  210. package/.claude/commands/ant/entomb.md +317 -225
  211. package/.claude/commands/ant/export-signals.md +57 -0
  212. package/.claude/commands/ant/feedback.md +48 -26
  213. package/.claude/commands/ant/flag.md +30 -10
  214. package/.claude/commands/ant/flags.md +34 -12
  215. package/.claude/commands/ant/focus.md +45 -19
  216. package/.claude/commands/ant/help.md +50 -8
  217. package/.claude/commands/ant/history.md +13 -0
  218. package/.claude/commands/ant/import-signals.md +71 -0
  219. package/.claude/commands/ant/init.md +345 -194
  220. package/.claude/commands/ant/insert-phase.md +101 -0
  221. package/.claude/commands/ant/interpret.md +26 -4
  222. package/.claude/commands/ant/lay-eggs.md +184 -127
  223. package/.claude/commands/ant/maturity.md +32 -11
  224. package/.claude/commands/ant/memory-details.md +77 -0
  225. package/.claude/commands/ant/migrate-state.md +20 -2
  226. package/.claude/commands/ant/oracle.md +337 -74
  227. package/.claude/commands/ant/organize.md +39 -25
  228. package/.claude/commands/ant/patrol.md +620 -0
  229. package/.claude/commands/ant/pause-colony.md +23 -27
  230. package/.claude/commands/ant/phase.md +40 -42
  231. package/.claude/commands/ant/pheromones.md +156 -0
  232. package/.claude/commands/ant/plan.md +185 -51
  233. package/.claude/commands/ant/preferences.md +65 -0
  234. package/.claude/commands/ant/redirect.md +45 -30
  235. package/.claude/commands/ant/resume-colony.md +51 -27
  236. package/.claude/commands/ant/resume.md +314 -94
  237. package/.claude/commands/ant/run.md +195 -0
  238. package/.claude/commands/ant/seal.md +650 -221
  239. package/.claude/commands/ant/skill-create.md +286 -0
  240. package/.claude/commands/ant/status.md +196 -31
  241. package/.claude/commands/ant/swarm.md +16 -46
  242. package/.claude/commands/ant/tunnels.md +280 -105
  243. package/.claude/commands/ant/update.md +73 -89
  244. package/.claude/commands/ant/verify-castes.md +100 -42
  245. package/.claude/commands/ant/watch.md +14 -12
  246. package/.opencode/agents/aether-ambassador.md +63 -20
  247. package/.opencode/agents/aether-archaeologist.md +29 -12
  248. package/.opencode/agents/aether-architect.md +103 -36
  249. package/.opencode/agents/aether-auditor.md +51 -18
  250. package/.opencode/agents/aether-builder.md +70 -20
  251. package/.opencode/agents/aether-chaos.md +29 -12
  252. package/.opencode/agents/aether-chronicler.md +60 -18
  253. package/.opencode/agents/aether-gatekeeper.md +27 -18
  254. package/.opencode/agents/aether-includer.md +27 -18
  255. package/.opencode/agents/aether-keeper.md +89 -18
  256. package/.opencode/agents/aether-measurer.md +27 -18
  257. package/.opencode/agents/aether-oracle.md +137 -0
  258. package/.opencode/agents/aether-probe.md +60 -18
  259. package/.opencode/agents/aether-queen.md +172 -24
  260. package/.opencode/agents/aether-route-setter.md +57 -12
  261. package/.opencode/agents/aether-sage.md +26 -18
  262. package/.opencode/agents/aether-scout.md +28 -20
  263. package/.opencode/agents/aether-surveyor-disciplines.md +59 -2
  264. package/.opencode/agents/aether-surveyor-nest.md +59 -2
  265. package/.opencode/agents/aether-surveyor-pathogens.md +57 -2
  266. package/.opencode/agents/aether-surveyor-provisions.md +59 -2
  267. package/.opencode/agents/aether-tracker.md +64 -18
  268. package/.opencode/agents/aether-watcher.md +66 -19
  269. package/.opencode/agents/aether-weaver.md +61 -18
  270. package/.opencode/commands/ant/archaeology.md +7 -14
  271. package/.opencode/commands/ant/build.md +437 -257
  272. package/.opencode/commands/ant/chaos.md +7 -24
  273. package/.opencode/commands/ant/colonize.md +8 -17
  274. package/.opencode/commands/ant/continue.md +661 -142
  275. package/.opencode/commands/ant/council.md +11 -22
  276. package/.opencode/commands/ant/data-clean.md +77 -0
  277. package/.opencode/commands/ant/dream.md +15 -17
  278. package/.opencode/commands/ant/entomb.md +133 -62
  279. package/.opencode/commands/ant/export-signals.md +54 -0
  280. package/.opencode/commands/ant/feedback.md +24 -5
  281. package/.opencode/commands/ant/flag.md +16 -4
  282. package/.opencode/commands/ant/flags.md +24 -10
  283. package/.opencode/commands/ant/focus.md +22 -5
  284. package/.opencode/commands/ant/help.md +41 -8
  285. package/.opencode/commands/ant/history.md +9 -0
  286. package/.opencode/commands/ant/import-signals.md +68 -0
  287. package/.opencode/commands/ant/init.md +374 -167
  288. package/.opencode/commands/ant/insert-phase.md +107 -0
  289. package/.opencode/commands/ant/interpret.md +16 -0
  290. package/.opencode/commands/ant/lay-eggs.md +184 -112
  291. package/.opencode/commands/ant/maturity.md +18 -2
  292. package/.opencode/commands/ant/memory-details.md +83 -0
  293. package/.opencode/commands/ant/migrate-state.md +12 -0
  294. package/.opencode/commands/ant/oracle.md +322 -67
  295. package/.opencode/commands/ant/organize.md +18 -16
  296. package/.opencode/commands/ant/patrol.md +626 -0
  297. package/.opencode/commands/ant/pause-colony.md +12 -29
  298. package/.opencode/commands/ant/phase.md +30 -40
  299. package/.opencode/commands/ant/pheromones.md +162 -0
  300. package/.opencode/commands/ant/plan.md +184 -56
  301. package/.opencode/commands/ant/preferences.md +71 -0
  302. package/.opencode/commands/ant/redirect.md +22 -5
  303. package/.opencode/commands/ant/resume-colony.md +38 -27
  304. package/.opencode/commands/ant/resume.md +385 -0
  305. package/.opencode/commands/ant/run.md +201 -0
  306. package/.opencode/commands/ant/seal.md +259 -45
  307. package/.opencode/commands/ant/skill-create.md +63 -0
  308. package/.opencode/commands/ant/status.md +135 -31
  309. package/.opencode/commands/ant/swarm.md +3 -345
  310. package/.opencode/commands/ant/tunnels.md +152 -9
  311. package/.opencode/commands/ant/update.md +70 -91
  312. package/.opencode/commands/ant/verify-castes.md +96 -42
  313. package/.opencode/commands/ant/watch.md +7 -0
  314. package/CHANGELOG.md +356 -0
  315. package/README.md +203 -573
  316. package/bin/cli.js +455 -527
  317. package/bin/generate-commands.js +186 -0
  318. package/bin/generate-commands.sh +127 -88
  319. package/bin/lib/init.js +13 -3
  320. package/bin/lib/spawn-logger.js +0 -15
  321. package/bin/lib/update-transaction.js +392 -140
  322. package/bin/npx-install.js +178 -0
  323. package/bin/sync-to-runtime.sh +5 -137
  324. package/bin/validate-package.sh +166 -0
  325. package/package.json +14 -7
  326. package/.opencode/agents/aether-guardian.md +0 -107
  327. package/.opencode/agents/workers.md +0 -1034
  328. package/bin/lib/model-profiles.js +0 -445
  329. package/bin/lib/model-verify.js +0 -288
  330. package/bin/lib/proxy-health.js +0 -253
  331. package/bin/lib/telemetry.js +0 -441
  332. package/runtime/CONTEXT.md +0 -160
  333. package/runtime/QUEEN_ANT_ARCHITECTURE.md +0 -402
  334. package/runtime/aether-utils.sh +0 -3879
  335. package/runtime/data/signatures.json +0 -41
  336. package/runtime/docs/AETHER-2.0-IMPLEMENTATION-PLAN.md +0 -1343
  337. package/runtime/docs/AETHER-PHEROMONE-SYSTEM-MASTER-SPEC.md +0 -2642
  338. package/runtime/docs/PHEROMONE-INJECTION.md +0 -240
  339. package/runtime/docs/PHEROMONE-INTEGRATION.md +0 -192
  340. package/runtime/docs/PHEROMONE-SYSTEM-DESIGN.md +0 -426
  341. package/runtime/docs/README.md +0 -94
  342. package/runtime/docs/VISUAL-OUTPUT-SPEC.md +0 -219
  343. package/runtime/docs/biological-reference.md +0 -272
  344. package/runtime/docs/codebase-review.md +0 -399
  345. package/runtime/docs/command-sync.md +0 -164
  346. package/runtime/docs/constraints.md +0 -116
  347. package/runtime/docs/implementation-learnings.md +0 -89
  348. package/runtime/docs/known-issues.md +0 -217
  349. package/runtime/docs/namespace.md +0 -148
  350. package/runtime/docs/pathogen-schema-example.json +0 -36
  351. package/runtime/docs/pathogen-schema.md +0 -111
  352. package/runtime/docs/planning-discipline.md +0 -159
  353. package/runtime/docs/progressive-disclosure.md +0 -184
  354. package/runtime/lib/queen-utils.sh +0 -729
  355. package/runtime/model-profiles.yaml +0 -100
  356. package/runtime/planning.md +0 -159
  357. package/runtime/recover.sh +0 -136
  358. package/runtime/templates/QUEEN.md.template +0 -79
  359. package/runtime/utils/chamber-utils.sh +0 -285
  360. package/runtime/utils/file-lock.sh +0 -122
  361. package/runtime/utils/spawn-tree.sh +0 -428
  362. package/runtime/utils/spawn-with-model.sh +0 -56
  363. package/runtime/utils/xml-utils.sh +0 -2196
  364. package/runtime/workers-new-castes.md +0 -516
  365. /package/{runtime → .aether/docs/disciplines}/coding-standards.md +0 -0
  366. /package/{runtime → .aether/docs/disciplines}/debugging.md +0 -0
  367. /package/{runtime → .aether/docs/disciplines}/learning.md +0 -0
  368. /package/{runtime → .aether/docs/disciplines}/tdd.md +0 -0
  369. /package/{runtime → .aether/docs/disciplines}/verification-loop.md +0 -0
  370. /package/{runtime → .aether/docs/disciplines}/verification.md +0 -0
  371. /package/{runtime → .aether}/schemas/aether-types.xsd +0 -0
  372. /package/{runtime → .aether}/schemas/colony-registry.xsd +0 -0
  373. /package/{runtime → .aether}/schemas/pheromone.xsd +0 -0
  374. /package/{runtime → .aether}/schemas/prompt.xsd +0 -0
  375. /package/{runtime → .aether}/schemas/queen-wisdom.xsd +0 -0
  376. /package/{runtime → .aether}/schemas/worker-priming.xsd +0 -0
  377. /package/{runtime → .aether}/utils/colorize-log.sh +0 -0
  378. /package/{runtime → .aether}/utils/queen-to-md.xsl +0 -0
@@ -1,3 +1,4 @@
1
+ <!-- Generated from .aether/commands/swarm.yaml - DO NOT EDIT DIRECTLY -->
1
2
  ---
2
3
  name: ant:swarm
3
4
  description: "🔥🐜🗡️🐜🔥 Real-time colony swarm display + stubborn bug destroyer"
@@ -62,11 +63,6 @@ Initialize swarm findings:
62
63
  bash .aether/aether-utils.sh swarm-findings-init "<swarm_id>"
63
64
  ```
64
65
 
65
- Initialize swarm display for real-time tracking:
66
- ```bash
67
- bash .aether/aether-utils.sh swarm-display-init "<swarm_id>"
68
- ```
69
-
70
66
  #### Step 2.5: Check for Stale Swarm Session
71
67
 
72
68
  Capture session start time:
@@ -96,9 +92,9 @@ fi
96
92
 
97
93
  Display header:
98
94
  ```
99
- 🔥🐜🗡️🐜🔥 ═══════════════════════════════════════════════
100
- S W A R M D E P L O Y E D
101
- ═══════════════════════════════════════════════ 🔥🐜🗡️🐜🔥
95
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
96
+ 🔥🐜🗡️🐜🔥 S W A R M D E P L O Y E D
97
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
102
98
 
103
99
  🎯 Target: "{problem description}"
104
100
  📍 Swarm ID: {swarm_id}
@@ -108,7 +104,7 @@ Display header:
108
104
 
109
105
  #### Step 3: Create Git Checkpoint
110
106
 
111
- Before any investigation that might lead to fixes:
107
+ Before any investigation that might lead to fixes, run using the Bash tool:
112
108
  ```bash
113
109
  bash .aether/aether-utils.sh autofix-checkpoint "pre-swarm-$SWARM_ID"
114
110
  ```
@@ -142,14 +138,6 @@ git log --oneline -20 2>/dev/null || echo "(no git history)"
142
138
 
143
139
  Use the **Task** tool to spawn 4 scouts **in a single message** (parallel execution):
144
140
 
145
- Log each scout to swarm display before spawning:
146
- ```bash
147
- bash .aether/aether-utils.sh swarm-display-update "{swarm_id}-Archaeologist" "scout" "excavating" "Git history investigation" "Queen" '{"read":0,"grep":0,"edit":0,"bash":3}' 0
148
- bash .aether/aether-utils.sh swarm-display-update "{swarm_id}-PatternHunter" "scout" "excavating" "Pattern search for similar code" "Queen" '{"read":5,"grep":10,"edit":0,"bash":0}' 0
149
- bash .aether/aether-utils.sh swarm-display-update "{swarm_id}-ErrorAnalyst" "scout" "excavating" "Error chain analysis" "Queen" '{"read":3,"grep":5,"edit":0,"bash":2}' 0
150
- bash .aether/aether-utils.sh swarm-display-update "{swarm_id}-WebResearcher" "scout" "excavating" "External source research" "Queen" '{"read":0,"grep":0,"edit":0,"bash":0}' 0
151
- ```
152
-
153
141
  **Scout 1: 🏛️ Git Archaeologist** (use Task tool with `subagent_type="aether-archaeologist"`)
154
142
  # FALLBACK: If "Agent type not found", use general-purpose and inject role: "You are an Archaeologist Ant - git historian that excavates why code exists."
155
143
  ```
@@ -224,11 +212,6 @@ As each scout returns, add their findings:
224
212
  bash .aether/aether-utils.sh swarm-findings-add "{swarm_id}" "{scout_type}" "{confidence}" '{finding_json}'
225
213
  ```
226
214
 
227
- Update scout status in swarm display to "completed":
228
- ```bash
229
- bash .aether/aether-utils.sh swarm-display-update "{swarm_id}-Archaeologist" "scout" "completed" "Git history investigation" "Queen" '{"read":3,"grep":0,"edit":0,"bash":5}' 150
230
- ```
231
-
232
215
  Display each scout's report as they complete:
233
216
  ```
234
217
  🏛️ Archaeologist [{confidence}]
@@ -254,9 +237,9 @@ Cross-compare all findings:
254
237
 
255
238
  Rank fix options:
256
239
  ```
257
- ═══════════════════════════════════════════════
240
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
258
241
  S O L U T I O N R A N K I N G
259
- ═══════════════════════════════════════════════
242
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
260
243
 
261
244
  #1 [0.85 confidence] {best solution}
262
245
  Evidence: {supporting scouts}
@@ -309,13 +292,9 @@ Inject learnings:
309
292
  - Add FOCUS for the pattern that worked (to constraints.json)
310
293
  - Add REDIRECT for the anti-pattern that caused the bug (to constraints.json)
311
294
 
312
- Set solution in swarm findings:
295
+ Set solution in swarm findings and log success:
313
296
  ```bash
314
297
  bash .aether/aether-utils.sh swarm-solution-set "{swarm_id}" '{solution_json}'
315
- ```
316
-
317
- Log success:
318
- ```bash
319
298
  bash .aether/aether-utils.sh activity-log "SWARM_SUCCESS" "Queen" "Swarm {swarm_id} fixed: {brief description}"
320
299
  ```
321
300
 
@@ -329,13 +308,9 @@ Tests: {status}
329
308
  Attempting rollback...
330
309
  ```
331
310
 
332
- Rollback:
311
+ Rollback and log failure:
333
312
  ```bash
334
313
  bash .aether/aether-utils.sh autofix-rollback "{checkpoint_type}" "{checkpoint_ref}"
335
- ```
336
-
337
- Log failure:
338
- ```bash
339
314
  bash .aether/aether-utils.sh activity-log "SWARM_FAILED" "Queen" "Swarm {swarm_id} fix failed verification"
340
315
  ```
341
316
 
@@ -360,20 +335,15 @@ Swarm will not attempt further fixes on this issue.
360
335
 
361
336
  #### Step 10: Cleanup
362
337
 
363
- Clear swarm display:
364
- ```bash
365
- bash .aether/aether-utils.sh swarm-display-init "complete-{swarm_id}"
366
- ```
367
-
368
- Archive swarm findings:
338
+ Archive findings:
369
339
  ```bash
370
340
  bash .aether/aether-utils.sh swarm-cleanup "{swarm_id}" --archive
371
341
  ```
372
342
 
373
- Display next steps:
374
- ```
375
- 🐜 Next steps:
376
- /ant:continue ⏭️ Verify and advance phase
377
- /ant:status 📊 View colony status
378
- /ant:flags 🚩 Check remaining blockers
343
+ Generate the state-based Next Up block:
344
+ ```bash
345
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
346
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
347
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
348
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
379
349
  ```
@@ -1,3 +1,4 @@
1
+ <!-- Generated from .aether/commands/tunnels.yaml - DO NOT EDIT DIRECTLY -->
1
2
  ---
2
3
  name: ant:tunnels
3
4
  description: "🕳️🐜🕳️ Explore tunnels (browse archived colonies, compare chambers)"
@@ -9,9 +10,9 @@ You are the **Queen**. Browse the colony history.
9
10
 
10
11
  ### Argument Handling
11
12
 
12
- - No arguments: Show chamber list (Step 4)
13
- - One argument: Show single chamber detail (Step 3)
14
- - Two arguments: Compare two chambers (Step 5)
13
+ - No arguments: Show timeline view (Step 4)
14
+ - One argument: Show single chamber detail with seal document (Step 3)
15
+ - Two arguments: Compare two chambers side-by-side (Step 5)
15
16
  - More than two: "Too many arguments. Use: /ant:tunnels [chamber1] [chamber2]"
16
17
 
17
18
  ### Step 1: Check for Chambers Directory
@@ -20,9 +21,7 @@ Check if `.aether/chambers/` exists.
20
21
 
21
22
  If not:
22
23
  ```
23
- 🕳️ ═══════════════════════════════════════════════════
24
- T U N N E L S (Colony History)
25
- ══════════════════════════════════════════════════ 🕳️
24
+ TUNNELS — Colony Timeline
26
25
 
27
26
  No chambers found.
28
27
 
@@ -32,26 +31,24 @@ Stop here.
32
31
 
33
32
  ### Step 2: List All Chambers
34
33
 
35
- Run: `bash .aether/aether-utils.sh chamber-list`
34
+ Run using the Bash tool with description "Loading chamber list...": `bash .aether/aether-utils.sh chamber-list`
36
35
 
37
36
  Parse JSON result into array of chambers.
38
37
 
39
38
  If no chambers (empty array):
40
39
  ```
41
- 🕳️ ═══════════════════════════════════════════════════
42
- T U N N E L S (Colony History)
43
- ══════════════════════════════════════════════════ 🕳️
40
+ TUNNELS — Colony Timeline
44
41
 
45
- Chambers: 0 colonies archived
42
+ 0 colonies archived
46
43
 
47
44
  The tunnel network is empty.
48
45
  Archive colonies with /ant:entomb to preserve history.
49
46
  ```
50
47
  Stop here.
51
48
 
52
- ### Step 3: Handle Detail View (if argument provided)
49
+ ### Step 3: Detail View — Show Seal Document (if one argument provided)
53
50
 
54
- If `$ARGUMENTS` is not empty:
51
+ If `$ARGUMENTS` is not empty and contains exactly one argument:
55
52
  - Treat it as chamber name
56
53
  - Check if `.aether/chambers/{arguments}/` exists
57
54
  - If not found:
@@ -62,43 +59,111 @@ If `$ARGUMENTS` is not empty:
62
59
  ```
63
60
  Stop here.
64
61
 
65
- - If found, read manifest.json and display detailed view:
62
+ **If CROWNED-ANTHILL.md exists in the chamber:**
63
+
64
+ ```bash
65
+ seal_doc=".aether/chambers/{arguments}/CROWNED-ANTHILL.md"
66
+ ```
67
+
68
+ Display the header:
69
+ ```
70
+ CHAMBER DETAILS — {chamber_name}
71
+ ```
72
+
73
+ Then display the FULL content of `CROWNED-ANTHILL.md` (read and output the file contents — this IS the seal ceremony record).
74
+
75
+ After the seal document, check if `colony-archive.xml` exists in the chamber:
76
+
77
+ ```bash
78
+ chamber_has_xml=false
79
+ [[ -f ".aether/chambers/{chamber_name}/colony-archive.xml" ]] && chamber_has_xml=true
66
80
  ```
67
- 🕳️ ═══════════════════════════════════════════════════
68
- C H A M B E R D E T A I L S
69
- ══════════════════════════════════════════════════ 🕳️
70
81
 
71
- 📦 {chamber_name}
82
+ **If `colony-archive.xml` exists in the chamber**, show footer with import option:
83
+ ```
84
+ Chamber integrity: {hash_status from chamber-verify}
85
+ Chamber location: .aether/chambers/{chamber_name}/
86
+ XML Archive: colony-archive.xml found
87
+
88
+ Actions:
89
+ 1. Import signals from this colony into current colony
90
+ 2. Return to timeline
91
+ 3. Compare with another chamber
92
+
93
+ Select an action (1/2/3)
94
+ ```
95
+
96
+ Use AskUserQuestion with three options.
72
97
 
73
- 👑 Goal:
74
- {goal}
98
+ If option 1 selected: proceed to Step 6 (Import Signals from Chamber).
99
+ If option 2 selected: return to timeline (run /ant:tunnels).
100
+ If option 3 selected: prompt for second chamber name then run /ant:tunnels {chamber_a} {chamber_b}.
75
101
 
76
- 🏆 Milestone: {milestone} ({version})
77
- 📍 Progress: {phases_completed} of {total_phases} phases
78
- 📅 Entombed: {entombed_at}
102
+ **If `colony-archive.xml` does NOT exist in the chamber**, show the existing footer unchanged:
103
+ ```
104
+ Chamber integrity: {hash_status from chamber-verify}
105
+ Chamber location: .aether/chambers/{chamber_name}/
79
106
 
80
- {If decisions exist:}
81
- 🧠 Decisions Preserved:
82
- {N} architectural decisions recorded
83
- {End if}
107
+ Run /ant:tunnels to return to timeline
108
+ Run /ant:tunnels {chamber_a} {chamber_b} to compare chambers
109
+ ```
84
110
 
85
- {If learnings exist:}
86
- 💡 Learnings Preserved:
87
- {N} validated learnings recorded
88
- {End if}
111
+ **If CROWNED-ANTHILL.md does NOT exist (older chamber):**
89
112
 
90
- 📁 Files:
91
- - COLONY_STATE.json (verified: {hash_status})
92
- - manifest.json
113
+ Display the header:
114
+ ```
115
+ CHAMBER DETAILS — {chamber_name}
93
116
 
94
- Run /ant:tunnels to return to chamber list.
117
+ (No seal document this chamber was created before the sealing ceremony was introduced)
95
118
  ```
96
119
 
97
- To get the counts and hash status:
120
+ Fall back to manifest data display:
121
+ - Read `manifest.json` and show: goal, milestone, version, phases_completed, total_phases, entombed_at
122
+ - Show decisions count and learnings count from manifest
123
+ - Show hash status from `chamber-verify`
124
+
125
+ Footer with navigation guidance:
126
+ ```
127
+ Run /ant:tunnels to return to timeline
128
+ Run /ant:tunnels {chamber_a} {chamber_b} to compare chambers
129
+ ```
130
+
131
+ To get the hash status, run using the Bash tool with description "Verifying chamber integrity...":
98
132
  - Run `bash .aether/aether-utils.sh chamber-verify .aether/chambers/{chamber_name}`
99
- - If verified: hash_status = ""
100
- - If not verified: hash_status = "⚠️ hash mismatch"
101
- - If error: hash_status = "⚠️ error"
133
+ - If verified: hash_status = "verified"
134
+ - If not verified: hash_status = "hash mismatch"
135
+ - If error: hash_status = "error"
136
+
137
+ Stop here.
138
+
139
+ ### Step 4: Timeline View (default, no arguments)
140
+
141
+ Display header:
142
+ ```
143
+ TUNNELS — Colony Timeline
144
+
145
+ {count} colonies archived
146
+ ```
147
+
148
+ For each chamber in sorted list (already sorted by `chamber-list` — newest first), display as a timeline entry:
149
+ ```
150
+ [{date}] {milestone_emoji} {chamber_name}
151
+ {goal (truncated to 60 chars)}
152
+ {phases_completed} phases | {milestone}
153
+ ```
154
+
155
+ Where `milestone_emoji` is:
156
+ - Crowned Anthill: crown emoji
157
+ - Sealed Chambers: lock emoji
158
+ - Other: circle emoji
159
+
160
+ After the timeline entries, show:
161
+ ```
162
+ Run /ant:tunnels <chamber_name> to view seal document
163
+ Run /ant:tunnels <chamber_a> <chamber_b> to compare two colonies
164
+ ```
165
+
166
+ Use the entombed_at field from the chamber-list JSON to extract the date (first 10 chars of ISO timestamp).
102
167
 
103
168
  Stop here.
104
169
 
@@ -106,9 +171,8 @@ Stop here.
106
171
 
107
172
  If two arguments provided (chamber names separated by space):
108
173
  - Treat as: `/ant:tunnels <chamber_a> <chamber_b>`
109
- - Run comparison: `bash .aether/utils/chamber-compare.sh compare <chamber_a> <chamber_b>`
110
174
 
111
- If either chamber not found:
175
+ Check both chambers exist. If either missing:
112
176
  ```
113
177
  Chamber not found: {chamber_name}
114
178
 
@@ -117,73 +181,75 @@ Available chambers:
117
181
  ```
118
182
  Stop here.
119
183
 
184
+ Run comparison using the Bash tool with description "Comparing chambers...":
185
+ ```bash
186
+ bash .aether/utils/chamber-compare.sh compare <chamber_a> <chamber_b>
187
+ bash .aether/utils/chamber-compare.sh stats <chamber_a> <chamber_b>
188
+ ```
189
+
120
190
  Display comparison header:
121
191
  ```
122
- 🕳️ ═══════════════════════════════════════════════════
123
- C H A M B E R C O M P A R I S O N
124
- ══════════════════════════════════════════════════ 🕳️
192
+ CHAMBER COMPARISON
125
193
 
126
- 📦 {chamber_a} vs 📦 {chamber_b}
194
+ {chamber_a} vs {chamber_b}
127
195
  ```
128
196
 
129
197
  Display side-by-side comparison:
130
198
  ```
131
- ┌─────────────────────┬─────────────────────┐
132
- {chamber_a} {chamber_b}
133
- ├─────────────────────┼─────────────────────┤
134
- 👑 {goal_a} 👑 {goal_b}
135
-
136
- 🏆 {milestone_a} 🏆 {milestone_b}
137
- {version_a}{version_b}
138
-
139
- 📍 {phases_a} done 📍 {phases_b} done
140
- of {total_a}of {total_b}
141
-
142
- 🧠 {decisions_a} 🧠 {decisions_b}
143
- decisionsdecisions
144
-
145
- 💡 {learnings_a} 💡 {learnings_b}
146
- learningslearnings
147
-
148
- 📅 {date_a} 📅 {date_b}
149
- └─────────────────────┴─────────────────────┘
199
+ +---------------------+---------------------+
200
+ | {chamber_a} | {chamber_b} |
201
+ +---------------------+---------------------+
202
+ | Goal: {goal_a} | Goal: {goal_b} |
203
+ | | |
204
+ | {milestone_a} | {milestone_b} |
205
+ | {version_a} | {version_b} |
206
+ | | |
207
+ | {phases_a} done | {phases_b} done |
208
+ | of {total_a} | of {total_b} |
209
+ | | |
210
+ | {decisions_a} | {decisions_b} |
211
+ | decisions | decisions |
212
+ | | |
213
+ | {learnings_a} | {learnings_b} |
214
+ | learnings | learnings |
215
+ | | |
216
+ | {date_a} | {date_b} |
217
+ +---------------------+---------------------+
150
218
  ```
151
219
 
152
220
  Display growth metrics:
153
221
  ```
154
- 📈 Growth Between Chambers:
155
- Phases: +{phases_diff} ({phases_a} {phases_b})
156
- Decisions: +{decisions_diff} new
157
- Learnings: +{learnings_diff} new
158
- Time: {time_between} days apart
222
+ Growth Between Chambers:
223
+ Phases: +{phases_diff} ({phases_a} -> {phases_b})
224
+ Decisions: +{decisions_diff} new
225
+ Learnings: +{learnings_diff} new
226
+ Time: {time_between} days apart
159
227
  ```
160
228
 
161
- If phases_diff > 0: show "📈 Colony grew"
162
- If phases_diff < 0: show "📉 Colony reduced (unusual)"
163
- If same_milestone: show "🏆 Same milestone reached"
164
- If milestone changed: show "🏆 Milestone advanced: {milestone_a} {milestone_b}"
229
+ If phases_diff > 0: show "Colony grew"
230
+ If phases_diff < 0: show "Colony reduced (unusual)"
231
+ If same_milestone: show "Same milestone reached"
232
+ If milestone changed: show "Milestone advanced: {milestone_a} -> {milestone_b}"
165
233
 
166
- Display pheromone trail diff (new decisions/learnings in B):
234
+ Display pheromone trail diff (new decisions/learnings in B) by running using the Bash tool with description "Analyzing pheromone differences...":
167
235
  ```bash
168
236
  bash .aether/utils/chamber-compare.sh diff <chamber_a> <chamber_b>
169
237
  ```
170
238
 
171
239
  Parse result and show:
172
240
  ```
173
- 🧠 New Decisions in {chamber_b}:
174
- {N} new architectural decisions
175
- {if N <= 5, list them; else show first 3 + "...and {N-3} more"}
241
+ New Decisions in {chamber_b}:
242
+ {N} new architectural decisions
243
+ {if N <= 5, list them; else show first 3 + "...and {N-3} more"}
176
244
 
177
- 💡 New Learnings in {chamber_b}:
178
- {N} new validated learnings
179
- {if N <= 5, list them; else show first 3 + "...and {N-3} more"}
245
+ New Learnings in {chamber_b}:
246
+ {N} new validated learnings
247
+ {if N <= 5, list them; else show first 3 + "...and {N-3} more"}
180
248
  ```
181
249
 
182
- Display knowledge preservation:
250
+ If both chambers have `CROWNED-ANTHILL.md`, note:
183
251
  ```
184
- 📚 Knowledge Preservation:
185
- {preserved_decisions} decisions carried forward
186
- {preserved_learnings} learnings carried forward
252
+ Both colonies have seal documents. Run /ant:tunnels <name> to view individually.
187
253
  ```
188
254
 
189
255
  Footer:
@@ -194,36 +260,145 @@ Run /ant:tunnels <chamber> to view single chamber details
194
260
 
195
261
  Stop here.
196
262
 
197
- ### Step 4: Display Chamber List (default view)
263
+ ### Step 6: Import Signals from Chamber
264
+
265
+ When user selects "Import signals" from Step 3:
266
+
267
+ **Step 6.1: Check XML tools** by running using the Bash tool with description "Checking XML tools...":
268
+ ```bash
269
+ if command -v xmllint >/dev/null 2>&1; then
270
+ xmllint_available=true
271
+ else
272
+ xmllint_available=false
273
+ fi
274
+ ```
275
+
276
+ If xmllint not available:
277
+ ```
278
+ Import requires xmllint. Install it first:
279
+ macOS: xcode-select --install
280
+ Linux: apt-get install libxml2-utils
281
+ ```
282
+ Stop here (return to timeline).
283
+
284
+ **Step 6.2: Extract source colony name** by running using the Bash tool with description "Extracting colony info...":
285
+ ```bash
286
+ chamber_xml=".aether/chambers/{chamber_name}/colony-archive.xml"
287
+ # Extract colony_id from the archive root element
288
+ source_colony=$(xmllint --xpath "string(/*/@colony_id)" "$chamber_xml" 2>/dev/null)
289
+ [[ -z "$source_colony" ]] && source_colony="{chamber_name}"
290
+ ```
291
+
292
+ **Step 6.3: Extract pheromone section and show import preview**
293
+
294
+ The combined `colony-archive.xml` contains pheromones, wisdom, and registry sections. Extract the pheromone section to a temp file before counting or importing. This prevents over-counting signals from wisdom/registry sections and ensures `pheromone-import-xml` receives the format it expects (`<pheromones>` as root element).
198
295
 
296
+ Run using the Bash tool with description "Extracting pheromone signals...":
297
+ ```bash
298
+ # Extract the <pheromones> section from the combined archive into a standalone temp file
299
+ import_tmp_dir=$(mktemp -d)
300
+ import_tmp_pheromones="$import_tmp_dir/pheromones-extracted.xml"
301
+
302
+ # Use xmllint to extract the pheromones element (with its namespace)
303
+ xmllint --xpath "//*[local-name()='pheromones']" "$chamber_xml" > "$import_tmp_pheromones" 2>/dev/null
304
+
305
+ # Add XML declaration to make it a standalone well-formed document
306
+ if [[ -s "$import_tmp_pheromones" ]]; then
307
+ # Portable approach: prepend declaration via temp file (avoids macOS/Linux sed -i differences)
308
+ { echo '<?xml version="1.0" encoding="UTF-8"?>'; cat "$import_tmp_pheromones"; } > "$import_tmp_dir/tmp_decl.xml"
309
+ mv "$import_tmp_dir/tmp_decl.xml" "$import_tmp_pheromones"
310
+ fi
311
+
312
+ # Count pheromone signals in extracted pheromone-only XML
313
+ # Scoped to pheromone section only — no over-counting from wisdom/registry sections
314
+ pheromone_count=$(xmllint --xpath "count(//*[local-name()='signal'])" "$import_tmp_pheromones" 2>/dev/null || echo "unknown")
199
315
  ```
200
- 🕳️ ═══════════════════════════════════════════════════
201
- T U N N E L S (Colony History)
202
- ══════════════════════════════════════════════════ 🕳️
203
316
 
204
- Chambers: {count} colonies archived
317
+ Display:
318
+ ```
319
+ IMPORT FROM COLONY: {source_colony}
205
320
 
206
- {For each chamber in sorted list:}
207
- 📦 {chamber_name}
208
- 👑 {goal (truncated to 50 chars)}
209
- 🏆 {milestone} ({version})
210
- 📍 {phases_completed} phases | 📅 {date}
321
+ Source: .aether/chambers/{chamber_name}/colony-archive.xml
322
+ Signals available: ~{pheromone_count} pheromone signals
211
323
 
212
- {End for}
324
+ Import behavior:
325
+ - Signals tagged with prefix "{source_colony}:" to identify origin
326
+ - Additive merge — your current signals are never overwritten
327
+ - On conflict, your current colony wins
213
328
 
214
- Run /ant:tunnels <chamber_name> to view details
329
+ Import these signals? (yes/no)
215
330
  ```
216
331
 
217
- **Formatting details:**
218
- - Sort by entombed_at descending (newest first) - already sorted by chamber-list
219
- - Truncate goal to 50 characters with "..." if longer
220
- - Format date as YYYY-MM-DD from ISO timestamp (extract first 10 chars of entombed_at)
221
- - Show chamber count at top
332
+ Use AskUserQuestion with yes/no options.
222
333
 
223
- **Edge cases:**
224
- - Malformed manifest: show "⚠️ Invalid manifest" for that chamber and skip it
225
- - Missing COLONY_STATE.json: show "⚠️ Incomplete chamber" for that chamber
226
- - Very long chamber list: display all (no pagination for now)
334
+ If no: "Import cancelled." Clean up: `rm -rf "$import_tmp_dir"`. Return to timeline.
335
+
336
+ **Step 6.4: Perform import**
337
+
338
+ Pass the extracted pheromone-only temp file (NOT the combined `colony-archive.xml`) to `pheromone-import-xml`, along with `$source_colony` as the second argument. This ensures:
339
+ 1. `pheromone-import-xml` receives XML with `<pheromones>` as root element (the format it expects)
340
+ 2. The prefix-tagging logic prepends `${source_colony}:` to each imported signal's ID before the merge
341
+
342
+ Run using the Bash tool with description "Importing pheromone signals...":
343
+ ```bash
344
+ # Import the EXTRACTED pheromone-only XML (NOT the combined colony-archive.xml)
345
+ # $import_tmp_pheromones has <pheromones> as root — the format pheromone-import-xml expects
346
+ # Second argument triggers prefix-tagging — imported signal IDs become "{source_colony}:original_id"
347
+ import_result=$(bash .aether/aether-utils.sh pheromone-import-xml "$import_tmp_pheromones" "$source_colony" 2>&1)
348
+ import_ok=$(echo "$import_result" | jq -r '.ok // false' 2>/dev/null)
349
+
350
+ if [[ "$import_ok" == "true" ]]; then
351
+ imported_count=$(echo "$import_result" | jq -r '.result.signal_count // 0' 2>/dev/null)
352
+ else
353
+ imported_count=0
354
+ import_error=$(echo "$import_result" | jq -r '.error // "Unknown error"' 2>/dev/null)
355
+ fi
356
+
357
+ # Clean up temp files
358
+ rm -rf "$import_tmp_dir"
359
+ ```
360
+
361
+ **Step 6.5: Display result**
362
+
363
+ If import succeeded:
364
+ ```
365
+ SIGNALS IMPORTED
366
+
367
+ Source: {source_colony}
368
+ Imported: {imported_count} pheromone signals
369
+ Tagged with: "{source_colony}:" prefix
370
+
371
+ Your colony now carries wisdom from {source_colony}.
372
+ Run /ant:status to see current colony state.
373
+ ```
374
+
375
+ If import failed:
376
+ ```
377
+ Import failed: {import_error}
378
+
379
+ The archive may be malformed. Check:
380
+ .aether/chambers/{chamber_name}/colony-archive.xml
381
+ ```
382
+
383
+ ### Edge Cases
384
+
385
+ **Malformed manifest:** show "Invalid manifest" for that chamber and skip it.
386
+
387
+ **Missing COLONY_STATE.json:** show "Incomplete chamber" for that chamber.
388
+
389
+ **Very long chamber list:** display all (no pagination for now).
390
+
391
+ **Older chambers without CROWNED-ANTHILL.md:** Fall back to manifest data in detail view.
392
+
393
+ ### Step 7: Next Up
394
+
395
+ Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
396
+ ```bash
397
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
398
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
399
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
400
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
401
+ ```
227
402
 
228
403
  ## Implementation Notes
229
404