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,442 @@
1
+ name: "ant:colonize"
2
+ description: "📊🐜🗺️🐜📊 Survey territory with 4 parallel scouts for comprehensive colony intelligence"
3
+ body_claude: |
4
+ You are the **Queen**. Dispatch Surveyor Ants to map the territory.
5
+
6
+ The arguments are: `$ARGUMENTS`
7
+
8
+ **Parse arguments:**
9
+ - If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
10
+ - If contains `--force` or `--force-resurvey`: set `force_resurvey = true`
11
+ - Otherwise: set `visual_mode = true`, `force_resurvey = false`
12
+
13
+ <failure_modes>
14
+ ### Existing Survey Overwrite
15
+ If .aether/data/survey/ already contains survey documents:
16
+ - Warn before overwriting: "Existing survey found from [date]. Re-surveying will replace it."
17
+ - Options: (1) Continue and overwrite, (2) Keep existing survey, (3) Merge (re-survey only outdated sections)
18
+
19
+ ### Surveyor Spawn Failure
20
+ If a surveyor agent fails during codebase exploration:
21
+ - Report which survey document was not produced
22
+ - Partial surveys are acceptable -- note which documents are complete vs. missing
23
+ - Recovery: user can re-run /ant:colonize to regenerate missing surveys
24
+ </failure_modes>
25
+
26
+ <success_criteria>
27
+ Command is complete when:
28
+ - All surveyor agents have completed their exploration
29
+ - Survey documents exist in .aether/data/survey/
30
+ - COLONY_STATE.json reflects colonized status
31
+ - User sees summary of survey findings
32
+ </success_criteria>
33
+
34
+ <read_only>
35
+ Do not touch during colonize:
36
+ - .aether/dreams/ (user notes)
37
+ - .aether/chambers/ (archived colonies)
38
+ - Source code files (survey is read-only exploration)
39
+ - .env* files
40
+ - .claude/settings.json
41
+ - COLONY_STATE.json structure beyond colonize-specific fields
42
+ </read_only>
43
+
44
+ ## Instructions
45
+
46
+ ### Step 0: Initialize Visual Mode (if enabled)
47
+
48
+ Display header:
49
+ ```
50
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
51
+ 📊🐜🗺️🐜📊 C O L O N I Z E — T e r r i t o r y S u r v e y
52
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
53
+
54
+ Queen dispatching Surveyor Ants...
55
+ ```
56
+
57
+ ### Step 1: Validate
58
+
59
+ Read `.aether/data/COLONY_STATE.json`.
60
+
61
+ **If the file does not exist or cannot be read:**
62
+ 1. Create `.aether/data/` directory if it does not exist.
63
+ 2. Write a minimal COLONY_STATE.json:
64
+ `{"version": "3.0", "goal": null, "state": "IDLE", "current_phase": 0, "session_id": null, "initialized_at": null, "build_started_at": null, "plan": {"generated_at": null, "confidence": null, "phases": []}, "memory": {"phase_learnings": [], "decisions": [], "instincts": []}, "errors": {"records": [], "flagged_patterns": []}, "signals": [], "graveyards": [], "events": []}`
65
+ 3. Output: "No colony state found. Bootstrapping minimal state for territory survey."
66
+
67
+ **If the file exists:** continue.
68
+
69
+ **If `milestone` == `"Crowned Anthill"`:** output "This colony has been sealed. Start a new colony with `/ant:init \"new goal\"`.", stop.
70
+
71
+ **If `plan.phases` is not empty:** output "Colony already has phases. Use /ant:continue.", stop.
72
+
73
+ ### Step 2: Quick Surface Scan (for session context)
74
+
75
+ Use Glob to find key files (read up to 20 total) to provide context for the survey.
76
+
77
+ **Package manifests:**
78
+ - package.json, Cargo.toml, pyproject.toml, go.mod, Gemfile, pom.xml, build.gradle
79
+
80
+ **Documentation:**
81
+ - README.md, README.*, docs/README.md
82
+
83
+ **Entry points:**
84
+ - src/index.*, src/main.*, main.*, app.*, lib/index.*, index.*
85
+
86
+ **Config:**
87
+ - tsconfig.json, .eslintrc.*, jest.config.*, vite.config.*, webpack.config.*
88
+
89
+ Read found files. Extract basic info:
90
+ - Tech stack (language, framework)
91
+ - Entry points (main files)
92
+ - Key directories
93
+
94
+ ### Step 3: Dispatch Surveyor Ants (Parallel)
95
+
96
+ Create the survey directory:
97
+ ```bash
98
+ mkdir -p .aether/data/survey
99
+ ```
100
+
101
+ #### Step 3.1: Check for Stale Survey Session
102
+
103
+ Before dispatching surveyors, check for existing survey files and capture session start time:
104
+
105
+ ```bash
106
+ SURVEY_START=$(date +%s)
107
+
108
+ # Check for stale survey files
109
+ stale_check=$(bash .aether/aether-utils.sh session-verify-fresh --command survey "" "$SURVEY_START")
110
+ has_stale=$(echo "$stale_check" | jq -r '.stale | length')
111
+ has_fresh=$(echo "$stale_check" | jq -r '.fresh | length')
112
+
113
+ if [[ "$has_stale" -gt 0 ]] || [[ "$has_fresh" -gt 0 ]]; then
114
+ # Found existing survey files
115
+ if [[ "$force_resurvey" == "true" ]]; then
116
+ bash .aether/aether-utils.sh session-clear --command survey
117
+ echo "Cleared existing survey files for fresh territory mapping"
118
+ else
119
+ echo "Found existing territory survey. Use --force-resurvey to remap."
120
+ # Continue - will use existing survey files
121
+ fi
122
+ fi
123
+ ```
124
+
125
+ Generate unique names for the 4 Surveyor Ants (each name must be captured separately):
126
+ ```bash
127
+ bash .aether/aether-utils.sh generate-ant-name "surveyor"
128
+ bash .aether/aether-utils.sh generate-ant-name "surveyor"
129
+ bash .aether/aether-utils.sh generate-ant-name "surveyor"
130
+ bash .aether/aether-utils.sh generate-ant-name "surveyor"
131
+ ```
132
+
133
+ Log the dispatches (consolidated - fire-and-forget logging):
134
+ ```bash
135
+ bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{provisions_name}" "Mapping provisions and trails" && bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{nest_name}" "Mapping nest structure" && bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{disciplines_name}" "Mapping disciplines and sentinels" && bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{pathogens_name}" "Identifying pathogens"
136
+ ```
137
+
138
+ **Spawn 4 Surveyor Ants in parallel using the Task tool:**
139
+
140
+ Each Task should use `subagent_type="aether-surveyor-{focus}"`:
141
+ 1. `aether-surveyor-provisions` — Maps PROVISIONS.md and TRAILS.md
142
+ 2. `aether-surveyor-nest` — Maps BLUEPRINT.md and CHAMBERS.md
143
+ 3. `aether-surveyor-disciplines` — Maps DISCIPLINES.md and SENTINEL-PROTOCOLS.md
144
+ 4. `aether-surveyor-pathogens` — Maps PATHOGENS.md
145
+
146
+ **Prompt for each surveyor:**
147
+ ```
148
+ You are Surveyor Ant {name}. Explore this codebase and write your survey documents.
149
+
150
+ Focus: {provisions|nest|disciplines|pathogens}
151
+
152
+ The surface scan found:
153
+ - Language: {language}
154
+ - Framework: {framework}
155
+ - Key directories: {dirs}
156
+
157
+ Write your documents to `.aether/data/survey/` following your agent template.
158
+ Return only confirmation when complete — do not include document contents.
159
+ ```
160
+
161
+ Collect confirmations from all 4 surveyors. Each should return:
162
+ - Document name(s) written
163
+ - Line count(s)
164
+ - Brief status
165
+
166
+ ### Step 4: Verify Survey Completeness
167
+
168
+ Check that all 7 documents were created (consolidated):
169
+ ```bash
170
+ ls .aether/data/survey/PROVISIONS.md .aether/data/survey/TRAILS.md .aether/data/survey/BLUEPRINT.md .aether/data/survey/CHAMBERS.md .aether/data/survey/DISCIPLINES.md .aether/data/survey/SENTINEL-PROTOCOLS.md .aether/data/survey/PATHOGENS.md 2>&1 | grep -q "No such file" && echo "Some documents missing" || echo "All survey documents present"
171
+ ```
172
+
173
+ If any documents are missing, note which ones in the output.
174
+
175
+ #### Step 4.5: Verify Survey Files Are Fresh
176
+
177
+ Verify that all survey files were created after the session start:
178
+ ```bash
179
+ verify_result=$(bash .aether/aether-utils.sh session-verify-fresh --command survey "" "$SURVEY_START")
180
+ fresh_count=$(echo "$verify_result" | jq -r '.fresh | length')
181
+
182
+ if [[ "$fresh_count" -lt 7 ]]; then
183
+ echo "Warning: Some survey files may be stale or missing"
184
+ echo "$verify_result" | jq -r '.stale[], .missing[]' | while read doc; do
185
+ echo " - $doc"
186
+ done
187
+ fi
188
+ ```
189
+
190
+ ### Step 5: Update State
191
+
192
+ Read `.aether/data/COLONY_STATE.json`. Update:
193
+ - Set `state` to `"IDLE"` (ready for planning)
194
+ - Set `territory_surveyed` to `"<ISO-8601 UTC>"`
195
+
196
+ Write Event: Append to the `events` array as pipe-delimited string:
197
+ `"<ISO-8601 UTC>|territory_surveyed|colonize|Territory surveyed: 7 documents"`
198
+
199
+ If the `events` array exceeds 100 entries, remove the oldest entries to keep only 100.
200
+
201
+ Write the updated COLONY_STATE.json.
202
+
203
+ ### Step 6: Confirm
204
+
205
+ Output header:
206
+
207
+ ```
208
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
209
+ 📊🐜🗺️🐜📊 T E R R I T O R Y S U R V E Y C O M P L E T E
210
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
211
+ ```
212
+
213
+ Then output:
214
+
215
+ ```
216
+ 🗺️ Colony territory has been surveyed.
217
+
218
+ Survey Reports:
219
+ 📦 PROVISIONS.md — Tech stack & dependencies
220
+ 🛤️ TRAILS.md — External integrations
221
+ 📐 BLUEPRINT.md — Architecture patterns
222
+ 🏠 CHAMBERS.md — Directory structure
223
+ 📜 DISCIPLINES.md — Coding conventions
224
+ 🛡️ SENTINEL-PROTOCOLS.md — Testing patterns
225
+ ⚠️ PATHOGENS.md — Tech debt & concerns
226
+
227
+ Location: .aether/data/survey/
228
+
229
+ {If any docs missing:}
230
+ ⚠️ Missing: {list missing documents}
231
+ {/if}
232
+
233
+ Stack: <language> + <framework>
234
+ Entry: <main entry point>
235
+ Files: <total count> across <N> directories
236
+
237
+ {Read the goal from COLONY_STATE.json. If goal is null:}
238
+ Next:
239
+ /ant:init "<goal>" Set colony goal (required before planning)
240
+ /ant:focus "<area>" Inject focus before planning
241
+ /ant:redirect "<pat>" Inject constraint before planning
242
+
243
+ {If goal is not null:}
244
+ Next:
245
+ /ant:plan Generate project plan (will load relevant survey docs)
246
+ /ant:focus "<area>" Inject focus before planning
247
+ /ant:redirect "<pat>" Inject constraint before planning
248
+ ```
249
+
250
+ Generate the state-based Next Up block:
251
+ ```bash
252
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
253
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
254
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
255
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
256
+ ```
257
+
258
+ body_opencode: |
259
+ You are the **Queen**. Dispatch Surveyor Ants to map the territory.
260
+
261
+ The arguments are: `$normalized_args`
262
+
263
+ **Parse arguments:**
264
+ - If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
265
+ - Otherwise: set `visual_mode = true`
266
+
267
+ ## Instructions
268
+
269
+ ### Step 0: Display Header
270
+
271
+ Display header:
272
+ ```
273
+ 📊🐜🗺️🐜📊 ═══════════════════════════════════════════════
274
+ C O L O N I Z E — T e r r i t o r y S u r v e y
275
+ ═══════════════════════════════════════════════ 📊🐜🗺️🐜📊
276
+
277
+ Queen dispatching Surveyor Ants...
278
+ ```
279
+
280
+ ### Step 1: Validate
281
+
282
+ Read `.aether/data/COLONY_STATE.json`.
283
+
284
+ **If the file does not exist or cannot be read:**
285
+ 1. Create `.aether/data/` directory if it does not exist.
286
+ 2. Write a minimal COLONY_STATE.json:
287
+ `{"version": "3.0", "goal": null, "state": "IDLE", "current_phase": 0, "session_id": null, "initialized_at": null, "build_started_at": null, "plan": {"generated_at": null, "confidence": null, "phases": []}, "memory": {"phase_learnings": [], "decisions": [], "instincts": []}, "errors": {"records": [], "flagged_patterns": []}, "signals": [], "graveyards": [], "events": []}`
288
+ 3. Output: "No colony state found. Bootstrapping minimal state for territory survey."
289
+
290
+ **If the file exists:** continue.
291
+
292
+ **If `milestone` == `"Crowned Anthill"`:** output "This colony has been sealed. Start a new colony with `/ant:init \"new goal\"`.", stop.
293
+
294
+ **If `plan.phases` is not empty:** output "Colony already has phases. Use /ant:continue.", stop.
295
+
296
+ ### Step 2: Quick Surface Scan (for session context)
297
+
298
+ Use Glob to find key files (read up to 20 total) to provide context for the survey.
299
+
300
+ **Package manifests:**
301
+ - package.json, Cargo.toml, pyproject.toml, go.mod, Gemfile, pom.xml, build.gradle
302
+
303
+ **Documentation:**
304
+ - README.md, README.*, docs/README.md
305
+
306
+ **Entry points:**
307
+ - src/index.*, src/main.*, main.*, app.*, lib/index.*, index.*
308
+
309
+ **Config:**
310
+ - tsconfig.json, .eslintrc.*, jest.config.*, vite.config.*, webpack.config.*
311
+
312
+ Read found files. Extract basic info:
313
+ - Tech stack (language, framework)
314
+ - Entry points (main files)
315
+ - Key directories
316
+
317
+ ### Step 3: Dispatch Surveyor Ants (Parallel)
318
+
319
+ Create the survey directory:
320
+ ```bash
321
+ mkdir -p .aether/data/survey
322
+ ```
323
+
324
+ Generate unique names for the 4 Surveyor Ants and log their dispatch:
325
+ ```bash
326
+ bash .aether/aether-utils.sh generate-ant-name "surveyor"
327
+ bash .aether/aether-utils.sh generate-ant-name "surveyor"
328
+ bash .aether/aether-utils.sh generate-ant-name "surveyor"
329
+ bash .aether/aether-utils.sh generate-ant-name "surveyor"
330
+ ```
331
+
332
+ Log the dispatch:
333
+ ```bash
334
+ bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{provisions_name}" "Mapping provisions and trails"
335
+ bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{nest_name}" "Mapping nest structure"
336
+ bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{disciplines_name}" "Mapping disciplines and sentinels"
337
+ bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{pathogens_name}" "Identifying pathogens"
338
+ ```
339
+
340
+ **Spawn 4 Surveyor Ants in parallel using the Task tool:**
341
+
342
+ Each Task should use `subagent_type="aether-surveyor-{focus}"`:
343
+ 1. `aether-surveyor-provisions` — Maps PROVISIONS.md and TRAILS.md
344
+ 2. `aether-surveyor-nest` — Maps BLUEPRINT.md and CHAMBERS.md
345
+ 3. `aether-surveyor-disciplines` — Maps DISCIPLINES.md and SENTINEL-PROTOCOLS.md
346
+ 4. `aether-surveyor-pathogens` — Maps PATHOGENS.md
347
+
348
+ **Prompt for each surveyor:**
349
+ ```
350
+ You are Surveyor Ant {name}. Explore this codebase and write your survey documents.
351
+
352
+ Focus: {provisions|nest|disciplines|pathogens}
353
+
354
+ The surface scan found:
355
+ - Language: {language}
356
+ - Framework: {framework}
357
+ - Key directories: {dirs}
358
+
359
+ Write your documents to `.aether/data/survey/` following your agent template.
360
+ Return only confirmation when complete — do not include document contents.
361
+ ```
362
+
363
+ Collect confirmations from all 4 surveyors. Each should return:
364
+ - Document name(s) written
365
+ - Line count(s)
366
+ - Brief status
367
+
368
+ ### Step 4: Verify Survey Completeness
369
+
370
+ Check that all 7 documents were created:
371
+ ```bash
372
+ ls .aether/data/survey/PROVISIONS.md 2>/dev/null && echo "PROVISIONS: OK" || echo "PROVISIONS: MISSING"
373
+ ls .aether/data/survey/TRAILS.md 2>/dev/null && echo "TRAILS: OK" || echo "TRAILS: MISSING"
374
+ ls .aether/data/survey/BLUEPRINT.md 2>/dev/null && echo "BLUEPRINT: OK" || echo "BLUEPRINT: MISSING"
375
+ ls .aether/data/survey/CHAMBERS.md 2>/dev/null && echo "CHAMBERS: OK" || echo "CHAMBERS: MISSING"
376
+ ls .aether/data/survey/DISCIPLINES.md 2>/dev/null && echo "DISCIPLINES: OK" || echo "DISCIPLINES: MISSING"
377
+ ls .aether/data/survey/SENTINEL-PROTOCOLS.md 2>/dev/null && echo "SENTINEL: OK" || echo "SENTINEL: MISSING"
378
+ ls .aether/data/survey/PATHOGENS.md 2>/dev/null && echo "PATHOGENS: OK" || echo "PATHOGENS: MISSING"
379
+ ```
380
+
381
+ If any documents are missing, note which ones in the output.
382
+
383
+ ### Step 5: Update State
384
+
385
+ Read `.aether/data/COLONY_STATE.json`. Update:
386
+ - Set `state` to `"IDLE"` (ready for planning)
387
+ - Set `territory_surveyed` to `"<ISO-8601 UTC>"`
388
+
389
+ Write Event: Append to the `events` array as pipe-delimited string:
390
+ `"<ISO-8601 UTC>|territory_surveyed|colonize|Territory surveyed: 7 documents"`
391
+
392
+ If the `events` array exceeds 100 entries, remove the oldest entries to keep only 100.
393
+
394
+ Write the updated COLONY_STATE.json.
395
+
396
+ ### Step 6: Confirm
397
+
398
+ Output header:
399
+
400
+ ```
401
+ 📊🐜🗺️🐜📊 ═══════════════════════════════════════════════════
402
+ T E R R I T O R Y S U R V E Y C O M P L E T E
403
+ ═══════════════════════════════════════════════════ 📊🐜🗺️🐜📊
404
+ ```
405
+
406
+ Then output:
407
+
408
+ ```
409
+ 🗺️ Colony territory has been surveyed.
410
+
411
+ Survey Reports:
412
+ 📦 PROVISIONS.md — Tech stack & dependencies
413
+ 🛤️ TRAILS.md — External integrations
414
+ 📐 BLUEPRINT.md — Architecture patterns
415
+ 🏠 CHAMBERS.md — Directory structure
416
+ 📜 DISCIPLINES.md — Coding conventions
417
+ 🛡️ SENTINEL-PROTOCOLS.md — Testing patterns
418
+ ⚠️ PATHOGENS.md — Tech debt & concerns
419
+
420
+ Location: .aether/data/survey/
421
+
422
+ {If any docs missing:}
423
+ ⚠️ Missing: {list missing documents}
424
+ {/if}
425
+
426
+ Stack: <language> + <framework>
427
+ Entry: <main entry point>
428
+ Files: <total count> across <N> directories
429
+
430
+ {Read the goal from COLONY_STATE.json. If goal is null:}
431
+ Next:
432
+ /ant:init "<goal>" Set colony goal (required before planning)
433
+ /ant:focus "<area>" Inject focus before planning
434
+ /ant:redirect "<pat>" Inject constraint before planning
435
+
436
+ {If goal is not null:}
437
+ Next:
438
+ /ant:plan Generate project plan (will load relevant survey docs)
439
+ /ant:focus "<area>" Inject focus before planning
440
+ /ant:redirect "<pat>" Inject constraint before planning
441
+ ```
442
+