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,1050 +1,65 @@
1
+ <!-- Generated from .aether/commands/build.yaml - DO NOT EDIT DIRECTLY -->
1
2
  ---
2
3
  name: ant:build
3
4
  description: "🔨🐜🏗️🐜🔨 Build a phase with pure emergence - colony self-organizes and completes tasks"
4
5
  ---
5
6
 
6
- You are the **Queen**. You DIRECTLY spawn multiple workers — do not delegate to a single Prime Worker.
7
+ You are the **Queen**. Execute `/ant:build` through modular playbooks.
7
8
 
8
9
  The phase to build is: `$ARGUMENTS`
9
10
 
10
- ## Instructions
11
+ ## Purpose
11
12
 
12
- ### Step 0: Version Check (Non-blocking)
13
+ This command is intentionally short. It orchestrates build execution by loading
14
+ smaller playbooks in sequence. This improves instruction-following reliability
15
+ without changing build behavior.
13
16
 
14
- Run using the Bash tool: `bash .aether/aether-utils.sh version-check 2>/dev/null || true`
17
+ ## Rules
15
18
 
16
- If the command succeeds and the JSON result contains a non-empty string, display it as a one-line notice. Proceed regardless of outcome.
19
+ 1. Do **not** invoke nested slash commands like `/ant:build-prep`.
20
+ 2. Use the Read tool to load each playbook file, then execute it.
21
+ 3. Preserve variables/results from prior stages and pass them forward.
22
+ 4. Stop immediately on hard failure conditions defined in any stage.
23
+ 5. Keep existing behavior and output format from the playbooks.
17
24
 
18
- ### Step 0.6: Verify LiteLLM Proxy
25
+ ## Stage Order
19
26
 
20
- Check that the LiteLLM proxy is running for model routing:
27
+ Run these stages in order:
21
28
 
22
- ```bash
23
- curl -s http://localhost:4000/health | grep -q "healthy" && echo "Proxy healthy" || echo "Proxy not running - workers will use default model"
24
- ```
29
+ 1. `.aether/docs/command-playbooks/build-prep.md`
30
+ 2. `.aether/docs/command-playbooks/build-context.md`
31
+ 3. `.aether/docs/command-playbooks/build-wave.md`
32
+ 4. `.aether/docs/command-playbooks/build-verify.md`
33
+ 5. `.aether/docs/command-playbooks/build-complete.md`
25
34
 
26
- If proxy is not healthy, log a warning but continue (workers will fall back to default routing).
35
+ ## Execution Contract
27
36
 
28
- ### Step 0.5: Load Colony State
37
+ For each stage:
29
38
 
30
- Run using Bash tool: `bash .aether/aether-utils.sh load-state`
39
+ 1. Read the file with the Read tool.
40
+ 2. Execute the instructions exactly as written.
41
+ 3. Keep an in-memory stage result record:
42
+ - `stage_name`
43
+ - `status` (`ok` or `failed`)
44
+ - `key_outputs` (values needed downstream)
45
+ 4. If `status == failed`, halt and report the failure with recovery options.
31
46
 
32
- If the command fails (non-zero exit or JSON has ok: false):
33
- 1. Parse error JSON
34
- 2. If error code is E_FILE_NOT_FOUND: "No colony initialized. Run /ant:init first." and stop
35
- 3. If validation error: Display error details with recovery suggestion and stop
36
- 4. For other errors: Display generic error and suggest /ant:status for diagnostics
47
+ ## Required Cross-Stage State
37
48
 
38
- If successful:
39
- 1. Parse the state JSON from result field
40
- 2. Check if goal is null - if so: "No colony initialized. Run /ant:init first." and stop
41
- 3. Extract current_phase and phase name from plan.phases[current_phase - 1].name
42
- 4. Display brief resumption context:
43
- ```
44
- 🔄 Resuming: Phase X - Name
45
- ```
46
- (If HANDOFF.md exists, this provides orientation before the build proceeds)
49
+ Carry these values forward when produced:
47
50
 
48
- After displaying context, run: `bash .aether/aether-utils.sh unload-state` to release the lock.
51
+ - `phase_id`
52
+ - `visual_mode`
53
+ - `verbose_mode`
54
+ - `suggest_enabled`
55
+ - `colony_depth`
56
+ - `prompt_section`
57
+ - `wave_results`
58
+ - `verification_status`
59
+ - `synthesis_status`
60
+ - `next_action`
49
61
 
50
- ### Step 1: Validate + Read State
62
+ ## Final Output
51
63
 
52
- **Parse $ARGUMENTS:**
53
- 1. Extract the phase number (first argument)
54
- 2. Check remaining arguments for flags:
55
- - If contains `--verbose` or `-v`: set `verbose_mode = true`
56
- - If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
57
- - If contains `--model <name>` or `-m <name>`: set `cli_model_override = <name>`
58
- - Otherwise: set `visual_mode = true` (visual is default)
59
-
60
- If the phase number is empty or not a number:
61
-
62
- ```
63
- Usage: /ant:build <phase_number> [--verbose|-v] [--no-visual] [--model <model>|-m <model>]
64
-
65
- Options:
66
- --verbose, -v Show full completion details (spawn tree, TDD, patterns)
67
- --no-visual Disable real-time visual display (visual is on by default)
68
- --model, -m <name> Override model for this build (one-time)
69
-
70
- Examples:
71
- /ant:build 1 Build Phase 1 (with visual display)
72
- /ant:build 1 --verbose Build Phase 1 (full details + visual)
73
- /ant:build 1 --no-visual Build Phase 1 without visual display
74
- /ant:build 1 --model glm-5 Build Phase 1 with glm-5 for all workers
75
- ```
76
-
77
- Stop here.
78
-
79
- **Validate CLI model override (if provided):**
80
- If `cli_model_override` is set:
81
- 1. Validate the model: `bash .aether/aether-utils.sh model-profile validate "$cli_model_override"`
82
- 2. Parse JSON result - if `.result.valid` is false:
83
- - Display: `Error: Invalid model "$cli_model_override"`
84
- - Display: `Valid models: {list from .result.models}`
85
- - Stop here
86
- 3. If valid: Display `Using override model: {model}`
87
-
88
- **Auto-upgrade old state:**
89
- If `version` field is missing, "1.0", or "2.0":
90
- 1. Preserve: `goal`, `state`, `current_phase`, `plan.phases`
91
- 2. Write upgraded v3.0 state (same structure as /ant:init but preserving data)
92
- 3. Output: `State auto-upgraded to v3.0`
93
- 4. Continue with command.
94
-
95
- Extract:
96
- - `goal`, `state`, `current_phase` from top level
97
- - `plan.phases` for phase data
98
- - `errors.records` for error context
99
- - `memory` for decisions/learnings
100
-
101
- **Validate:**
102
- - If `plan.phases` is empty -> output `No project plan. Run /ant:plan first.` and stop.
103
- - Find the phase matching the requested ID. If not found -> output `Phase {id} not found.` and stop.
104
- - If the phase status is `"completed"` -> output `Phase {id} already completed.` and stop.
105
-
106
- ### Step 1.5: Blocker Advisory (Non-blocking)
107
-
108
- Check for unresolved blocker flags on the requested phase:
109
-
110
- ```bash
111
- bash .aether/aether-utils.sh flag-check-blockers {phase_number}
112
- ```
113
-
114
- Parse the JSON result (`.result.blockers`):
115
-
116
- - **If blockers == 0:** Display nothing (or optionally a brief `No active blockers for Phase {id}.` line). Proceed to Step 2.
117
- - **If blockers > 0:** Retrieve blocker details:
118
- ```bash
119
- bash .aether/aether-utils.sh flag-list --type blocker --phase {phase_number}
120
- ```
121
- Parse `.result.flags` and display an advisory warning:
122
- ```
123
- ⚠️ BLOCKER ADVISORY: {blockers} unresolved blocker(s) for Phase {id}
124
- {for each flag in result.flags:}
125
- - [{flag.id}] {flag.title}
126
- {end for}
127
-
128
- Consider reviewing with /ant:flags or auto-fixing with /ant:swarm before building.
129
- Proceeding anyway...
130
- ```
131
- **This is advisory only — do NOT stop.** Continue to Step 2 regardless.
132
-
133
- ### Step 2: Update State
134
-
135
- Read then update `.aether/data/COLONY_STATE.json`:
136
- - Set `state` to `"EXECUTING"`
137
- - Set `current_phase` to the phase number
138
- - Set the phase's `status` to `"in_progress"` in `plan.phases[N]`
139
- - Add `build_started_at` field with current ISO-8601 UTC timestamp
140
- - Append to `events`: `"<timestamp>|phase_started|build|Phase <id>: <name> started"`
141
-
142
- If `events` exceeds 100 entries, keep only the last 100.
143
-
144
- Write COLONY_STATE.json.
145
-
146
- ### Step 3: Git Checkpoint
147
-
148
- Create a git checkpoint for rollback capability.
149
-
150
- ```bash
151
- git rev-parse --git-dir 2>/dev/null
152
- ```
153
-
154
- - **If succeeds** (is a git repo):
155
- 1. Check for changes in Aether-managed directories only: `.aether .claude/commands/ant .claude/commands/st .opencode runtime bin`
156
- 2. **If changes exist**: `git stash push -m "aether-checkpoint: pre-phase-$PHASE_NUMBER" -- .aether .claude/commands/ant .claude/commands/st .opencode runtime bin`
157
- - IMPORTANT: Never use `--include-untracked` — it stashes ALL files including user work!
158
- - Verify: `git stash list | head -1 | grep "aether-checkpoint"` — warn if empty
159
- - Store checkpoint as `{type: "stash", ref: "aether-checkpoint: pre-phase-$PHASE_NUMBER"}`
160
- 3. **If clean working tree**: Record `HEAD` hash via `git rev-parse HEAD`
161
- - Store checkpoint as `{type: "commit", ref: "$HEAD_HASH"}`
162
- - **If fails** (not a git repo): Set checkpoint to `{type: "none", ref: "(not a git repo)"}`.
163
-
164
- Rollback procedure: `git stash pop` (if type is "stash") or `git reset --hard $ref` (if type is "commit").
165
-
166
- Output header:
167
-
168
- ```
169
- 🔨🐜🏗️🐜🔨 ═══════════════════════════════════════════════════
170
- B U I L D I N G P H A S E {id}
171
- ═══════════════════════════════════════════════════ 🔨🐜🏗️🐜🔨
172
-
173
- 📍 Phase {id}: {name}
174
- 💾 Git Checkpoint: {checkpoint_type} → {checkpoint_ref}
175
- 🔄 Rollback: `git stash pop` (stash) or `git reset --hard {ref}` (commit)
176
- ```
177
-
178
- ### Step 4: Load Constraints
179
-
180
- Read `.aether/data/constraints.json` if it exists.
181
-
182
- Format for display:
183
- ```
184
- CONSTRAINTS:
185
- FOCUS: {focus areas, comma-separated}
186
- AVOID: {patterns to avoid from constraints}
187
- ```
188
-
189
- If file doesn't exist or is empty:
190
- ```
191
- CONSTRAINTS: (none)
192
- ```
193
-
194
- ### Step 4.0: Load Territory Survey
195
-
196
- Check if territory survey exists and load relevant documents:
197
-
198
- ```bash
199
- bash .aether/aether-utils.sh survey-load "{phase_name}" 2>/dev/null
200
- ```
201
-
202
- **Parse the JSON response:**
203
- - If `.ok` is false: Set `survey_docs = null` and skip survey loading
204
- - If successful: Extract `.docs` (comma-separated list) and `.dir`
205
-
206
- **Determine phase type from phase name:**
207
- | Phase Contains | Documents to Load |
208
- |----------------|-------------------|
209
- | UI, frontend, component, button, page | DISCIPLINES.md, CHAMBERS.md |
210
- | API, endpoint, backend, route | BLUEPRINT.md, DISCIPLINES.md |
211
- | database, schema, model, migration | BLUEPRINT.md, PROVISIONS.md |
212
- | test, spec, coverage | SENTINEL-PROTOCOLS.md, DISCIPLINES.md |
213
- | integration, external, client | TRAILS.md, PROVISIONS.md |
214
- | refactor, cleanup, debt | PATHOGENS.md, BLUEPRINT.md |
215
- | setup, config, initialize | PROVISIONS.md, CHAMBERS.md |
216
- | *default* | PROVISIONS.md, BLUEPRINT.md |
217
-
218
- **Read the relevant survey documents** from `.aether/data/survey/`:
219
- - Extract key patterns to follow
220
- - Note file locations for new code
221
- - Identify known concerns to avoid
222
-
223
- **Display summary:**
224
- ```
225
- 🗺️ SURVEY LOADED
226
- ================
227
- {for each doc loaded}
228
- {emoji} {filename} — {brief description}
229
- {/for}
230
-
231
- {if no survey}
232
- (No territory survey — run /ant:colonize for deeper context)
233
- {/if}
234
- ```
235
-
236
- **Store for builder injection:**
237
- - `survey_patterns` — patterns to follow
238
- - `survey_locations` — where to place files
239
- - `survey_concerns` — concerns to avoid
240
-
241
- ### Step 4.1: Load QUEEN.md Wisdom
242
-
243
- Call `queen-read` to extract eternal wisdom for worker priming:
244
-
245
- ```bash
246
- bash .aether/aether-utils.sh queen-read 2>/dev/null
247
- ```
248
-
249
- **Parse the JSON response:**
250
- - If `.ok` is false or command fails: Set `queen_wisdom = null` and skip wisdom injection
251
- - If successful: Extract wisdom sections from `.result.wisdom`
252
-
253
- **Store wisdom variables:**
254
- ```
255
- queen_philosophies = .result.wisdom.philosophies (if .result.priming.has_philosophies)
256
- queen_patterns = .result.wisdom.patterns (if .result.priming.has_patterns)
257
- queen_redirects = .result.wisdom.redirects (if .result.priming.has_redirects)
258
- queen_stack_wisdom = .result.wisdom.stack_wisdom (if .result.priming.has_stack_wisdom)
259
- queen_decrees = .result.wisdom.decrees (if .result.priming.has_decrees)
260
- ```
261
-
262
- **Display summary (if any wisdom exists):**
263
- ```
264
- 📜 QUEEN WISDOM LOADED
265
- =====================
266
- {if queen_philosophies:} 📜 Philosophies: yes{/if}
267
- {if queen_patterns:} 🧭 Patterns: yes{/if}
268
- {if queen_redirects:} ⚠️ Redirects: yes{/if}
269
- {if queen_stack_wisdom:} 🔧 Stack Wisdom: yes{/if}
270
- {if queen_decrees:} 🏛️ Decrees: yes{/if}
271
-
272
- {if none exist:} (no eternal wisdom recorded yet){/if}
273
- ```
274
-
275
- **Graceful handling:** If QUEEN.md doesn't exist or `queen-read` fails, continue without wisdom injection. Workers will receive standard prompts.
276
-
277
- ### Step 4.2: Archaeologist Pre-Build Scan
278
-
279
- **Conditional step — only fires when the phase modifies existing files.**
280
-
281
- 1. **Detect existing-file modification:**
282
- Examine each task in the phase. Look at task descriptions, constraints, and hints for signals:
283
- - Keywords: "update", "modify", "add to", "integrate into", "extend", "change", "refactor", "fix"
284
- - References to existing file paths (files that already exist in the repo)
285
- - Task type: if a task is purely "create new file X" with no references to existing code, it is new-file-only
286
-
287
- **If ALL tasks are new-file-only** (no existing files will be modified):
288
- - Skip this step silently — produce no output, no spawn
289
- - Proceed directly to Step 5
290
-
291
- 2. **If existing code modification detected — spawn Archaeologist Scout:**
292
-
293
- Generate archaeologist name and log:
294
- ```bash
295
- bash .aether/aether-utils.sh generate-ant-name "archaeologist"
296
- bash .aether/aether-utils.sh spawn-log "Queen" "scout" "{archaeologist_name}" "Pre-build archaeology scan"
297
- bash .aether/aether-utils.sh swarm-display-update "{archaeologist_name}" "scout" "excavating" "Pre-build archaeology scan" "Queen" '{"read":0,"grep":0,"edit":0,"bash":0}' 0 "fungus_garden" 15
298
- ```
299
-
300
- Display:
301
- ```
302
- 🏺🐜 Archaeologist {archaeologist_name} spawning
303
- Scanning history of files to be modified...
304
- ```
305
-
306
- Spawn a Scout (using Task tool with `subagent_type="aether-archaeologist"`) with this prompt:
307
- # FALLBACK: If "Agent type not found", use general-purpose and inject role: "You are an Archaeologist Ant - git historian that excavates why code exists."
308
-
309
- ```
310
- You are {Archaeologist-Name}, a 🏺🐜 Archaeologist Ant.
311
-
312
- Mission: Pre-build archaeology scan
313
-
314
- Files: {list of existing files that will be modified}
315
-
316
- Work:
317
- 1. Read each file to understand current state
318
- 2. Run: git log --oneline -15 -- "{file_path}" for history
319
- 3. Run: git log --all --grep="fix\|bug\|workaround\|hack\|revert" --oneline -- "{file_path}" for incident history
320
- 4. Run: git blame "{file_path}" | head -40 for authorship
321
- 5. Note TODO/FIXME/HACK markers
322
-
323
- Log activity: bash .aether/aether-utils.sh activity-log "READ" "{Ant-Name}" "description"
324
-
325
- Report (plain text):
326
- - WHY key code sections exist (from commits)
327
- - Known workarounds/hacks to preserve
328
- - Key architectural decisions
329
- - Areas of caution (high churn, reverts, emergencies)
330
- - Stable bedrock vs volatile sand sections
331
- ```
332
-
333
- **Wait for results** (blocking — use TaskOutput with `block: true`).
334
-
335
- Log completion and update swarm display:
336
- ```bash
337
- bash .aether/aether-utils.sh spawn-complete "{archaeologist_name}" "completed" "Pre-build archaeology scan"
338
- bash .aether/aether-utils.sh swarm-display-update "{archaeologist_name}" "scout" "completed" "Pre-build archaeology scan" "Queen" '{"read":8,"grep":5,"edit":0,"bash":2}' 100 "fungus_garden" 100
339
- ```
340
-
341
- 3. **Store and display findings:**
342
-
343
- Store the archaeologist's output as `archaeology_context`.
344
-
345
- Display summary:
346
- ```
347
- 🏺 ARCHAEOLOGY CONTEXT
348
- =====================
349
- {summary of findings from archaeologist}
350
- ```
351
-
352
- 4. **Injection into builder prompts:**
353
- The `archaeology_context` will be injected into builder prompts in Step 5.1 (see below).
354
- If this step was skipped (no existing files modified), the archaeology section is omitted from builder prompts.
355
-
356
- ---
357
-
358
- ### Step 5: Initialize Swarm Display and Analyze Tasks
359
-
360
- **YOU (the Queen) will spawn workers directly. Do NOT delegate to a single Prime Worker.**
361
-
362
- **Initialize visual swarm tracking:**
363
- ```bash
364
- # Generate unique build ID
365
- build_id="build-$(date +%s)"
366
-
367
- # Initialize swarm display for this build
368
- bash .aether/aether-utils.sh swarm-display-init "$build_id"
369
-
370
- # Log phase start
371
- bash .aether/aether-utils.sh activity-log "EXECUTING" "Queen" "Phase {id}: {name} - Queen dispatching workers"
372
-
373
- # Display animated header
374
- bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "excavating" "Phase {id}: {name}" "Colony" '{"read":0,"grep":0,"edit":0,"bash":0}' 10 "fungus_garden" 0
375
- ```
376
-
377
- **Show real-time display header:**
378
- ```
379
- 🔨 COLONY BUILD INITIATED
380
- ═══════════════════════════════════════════════════
381
- Phase {id}: {name}
382
- Build ID: {build_id}
383
-
384
- Launching swarm display...
385
- ```
386
-
387
- Analyze the phase tasks:
388
-
389
- Analyze the phase tasks:
390
-
391
- 1. **Group tasks by dependencies:**
392
- - **Wave 1:** Tasks with `depends_on: "none"` or `depends_on: []` (can run in parallel)
393
- - **Wave 2:** Tasks depending on Wave 1 tasks
394
- - **Wave 3+:** Continue until all tasks assigned
395
-
396
- 2. **Assign castes:**
397
- - Implementation tasks → 🔨🐜 Builder
398
- - Research/docs tasks → 🔍🐜 Scout
399
- - Testing/validation → 👁️🐜 Watcher (ALWAYS spawn at least one)
400
- - Resilience testing → 🎲🐜 Chaos (ALWAYS spawn one after Watcher)
401
-
402
- 3. **Generate ant names for each worker:**
403
- ```bash
404
- bash .aether/aether-utils.sh generate-ant-name "builder"
405
- bash .aether/aether-utils.sh generate-ant-name "watcher"
406
- bash .aether/aether-utils.sh generate-ant-name "chaos"
407
- ```
408
-
409
- Display spawn plan with caste emojis:
410
- ```
411
- 🐜 SPAWN PLAN
412
-
413
- Wave 1 — Parallel
414
- 🔨🐜 {Builder-Name} Task {id} {description}
415
- 🔨🐜 {Builder-Name} Task {id} {description}
416
-
417
- Wave 2 — After Wave 1
418
- 🔨🐜 {Builder-Name} Task {id} {description}
419
-
420
- Verification
421
- 👁️🐜 {Watcher-Name} Verify all work independently
422
- 🎲🐜 {Chaos-Name} Resilience testing (after Watcher)
423
-
424
- Total: {N} Builders + 1 Watcher + 1 Chaos = {N+2} spawns
425
- ```
426
-
427
- **Caste Emoji Legend:**
428
- - 🔨🐜 Builder (cyan if color enabled)
429
- - 👁️🐜 Watcher (green if color enabled)
430
- - 🎲🐜 Chaos (red if color enabled)
431
- - 🔍🐜 Scout (yellow if color enabled)
432
- - 🏺🐜 Archaeologist (magenta if color enabled)
433
- - 🥚 Queen/Prime
434
-
435
- **Every spawn must show its caste emoji.**
436
-
437
- ### Step 5.1: Spawn Wave 1 Workers (Parallel)
438
-
439
- **CRITICAL: Spawn ALL Wave 1 workers in a SINGLE message using multiple Task tool calls.**
440
-
441
- **First, mark build start in context:**
442
- ```bash
443
- bash .aether/aether-utils.sh context-update build-start {phase_id} {wave_1_worker_count} {wave_1_task_count}
444
- ```
445
-
446
- For each Wave 1 task, use Task tool with `subagent_type="aether-builder"` (DO NOT use run_in_background - multiple Task calls in a single message run in parallel and block until complete):
447
-
448
- Log each spawn and update swarm display:
449
- ```bash
450
- bash .aether/aether-utils.sh spawn-log "Queen" "builder" "{ant_name}" "{task_description}"
451
- bash .aether/aether-utils.sh swarm-display-update "{ant_name}" "builder" "excavating" "{task_description}" "Queen" '{"read":0,"grep":0,"edit":0,"bash":0}' 0 "fungus_garden" 10
452
- bash .aether/aether-utils.sh context-update worker-spawn "{ant_name}" "builder" "{task_description}"
453
- ```
454
-
455
- **Builder Worker Prompt (CLEAN OUTPUT):**
456
- ```
457
- You are {Ant-Name}, a 🔨🐜 Builder Ant.
458
-
459
- Task {id}: {description}
460
-
461
- Goal: "{colony_goal}"
462
-
463
- { archaeology_context if exists }
464
-
465
- { queen_wisdom_section if any wisdom exists }
466
-
467
- Work:
468
- 1. Read .aether/workers.md for Builder discipline
469
- 2. Implement task, write tests
470
- 3. Log activity: bash .aether/aether-utils.sh activity-log "ACTION" "{Ant-Name}" "description"
471
- 4. Update display: bash .aether/aether-utils.sh swarm-display-update "{Ant-Name}" "builder" "excavating" "current task" "Queen" '{"read":0,"grep":0,"edit":0,"bash":0}' {progress} "fungus_garden" 50
472
-
473
- Spawn sub-workers ONLY if 3x complexity:
474
- - Check: bash .aether/aether-utils.sh spawn-can-spawn {depth}
475
- - Generate name: bash .aether/aether-utils.sh generate-ant-name "builder"
476
- - Announce: "🐜 Spawning {child_name} for {reason}"
477
- - Log: bash .aether/aether-utils.sh spawn-log "{Ant-Name}" "builder" "{child_name}" "{task}"
478
-
479
- Return ONLY this JSON (no other text):
480
- {"ant_name": "{Ant-Name}", "task_id": "{id}", "status": "completed|failed|blocked", "summary": "What you did", "files_created": [], "files_modified": [], "tests_written": [], "blockers": []}
481
- ```
482
-
483
- **Queen Wisdom Section Template (injected only if wisdom exists):**
484
- ```
485
- --- QUEEN WISDOM (Eternal Guidance) ---
486
- { if queen_philosophies: }
487
- 📜 Philosophies:
488
- {queen_philosophies}
489
- { endif }
490
- { if queen_patterns: }
491
- 🧭 Patterns:
492
- {queen_patterns}
493
- { endif }
494
- { if queen_redirects: }
495
- ⚠️ Redirects (AVOID these):
496
- {queen_redirects}
497
- { endif }
498
- { if queen_stack_wisdom: }
499
- 🔧 Stack Wisdom:
500
- {queen_stack_wisdom}
501
- { endif }
502
- { if queen_decrees: }
503
- 🏛️ Decrees:
504
- {queen_decrees}
505
- { endif }
506
- --- END QUEEN WISDOM ---
507
- ```
508
-
509
- ### Step 5.2: Process Wave 1 Results
510
-
511
- **Task calls return results directly (no TaskOutput needed).**
512
-
513
- **As each worker result arrives, immediately display:**
514
- ```
515
- ✅ 🔨🐜 {Builder-Name} completed Task {id}
516
- 📖{read_count} 🔍{grep_count} ✏️{edit_count} ⚡{bash_count} {elapsed_time}
517
- ```
518
-
519
- Log and update swarm display:
520
- ```bash
521
- bash .aether/aether-utils.sh spawn-complete "{ant_name}" "completed" "{summary}"
522
- bash .aether/aether-utils.sh swarm-display-update "{ant_name}" "builder" "completed" "{task_description}" "Queen" '{"read":5,"grep":3,"edit":2,"bash":1}' 100 "fungus_garden" 100
523
- bash .aether/aether-utils.sh context-update worker-complete "{ant_name}" "completed"
524
- ```
525
-
526
- **Parse each worker's JSON output to collect:** status, files_created, files_modified, blockers
527
-
528
- **Visual Mode: Render live display (if enabled):**
529
- If `visual_mode` is true, render the swarm display after all workers complete:
530
- ```bash
531
- bash .aether/aether-utils.sh swarm-display-inline "$build_id"
532
- ```
533
-
534
- ### Step 5.3: Spawn Wave 2+ Workers (Sequential Waves)
535
-
536
- Repeat Step 5.1-5.2 for each subsequent wave, waiting for previous wave to complete.
537
-
538
- ### Step 5.4: Spawn Watcher for Verification
539
-
540
- **MANDATORY: Always spawn a Watcher — testing must be independent.**
541
-
542
- Spawn the Watcher using Task tool with `subagent_type="aether-watcher"` (DO NOT use run_in_background - task blocks until complete):
543
-
544
- ```bash
545
- bash .aether/aether-utils.sh spawn-log "Queen" "watcher" "{watcher_name}" "Independent verification"
546
- bash .aether/aether-utils.sh swarm-display-update "{watcher_name}" "watcher" "observing" "Verification in progress" "Queen" '{"read":0,"grep":0,"edit":0,"bash":0}' 0 "nursery" 50
547
- ```
548
-
549
- **Watcher Worker Prompt (CLEAN OUTPUT):**
550
- ```
551
- You are {Watcher-Name}, a 👁️🐜 Watcher Ant.
552
-
553
- Verify all work done by Builders in Phase {id}.
554
-
555
- Files to verify:
556
- - Created: {list from builder results}
557
- - Modified: {list from builder results}
558
-
559
- Verification:
560
- 1. Check files exist (Read each)
561
- 2. Run build/type-check
562
- 3. Run tests if they exist
563
- 4. Check success criteria: {list}
564
-
565
- Spawn sub-workers if needed:
566
- - Log: bash .aether/aether-utils.sh spawn-log "{Watcher-Name}" "watcher" "{child}" "{task}"
567
- - Announce: "🐜 Spawning {child} to investigate {issue}"
568
-
569
- Return ONLY this JSON:
570
- {"ant_name": "{Watcher-Name}", "verification_passed": true|false, "files_verified": [], "issues_found": [], "quality_score": N, "recommendation": "proceed|fix_required"}
571
- ```
572
-
573
- ### Step 5.5: Process Watcher Results
574
-
575
- **Task call returns results directly (no TaskOutput needed).**
576
-
577
- **Parse the Watcher's JSON response:** verification_passed, issues_found, quality_score, recommendation
578
-
579
- **Store results for synthesis in Step 5.7**
580
-
581
- **Update swarm display when Watcher completes:**
582
- ```bash
583
- bash .aether/aether-utils.sh swarm-display-update "{watcher_name}" "watcher" "completed" "Verification complete" "Queen" '{"read":3,"grep":2,"edit":0,"bash":1}' 100 "nursery" 100
584
- ```
585
-
586
- ### Step 5.6: Spawn Chaos Ant for Resilience Testing
587
-
588
- **After the Watcher completes, spawn a Chaos Ant to probe the phase work for edge cases and boundary conditions.**
589
-
590
- Generate a chaos ant name and log the spawn:
591
- ```bash
592
- bash .aether/aether-utils.sh generate-ant-name "chaos"
593
- bash .aether/aether-utils.sh spawn-log "Queen" "chaos" "{chaos_name}" "Resilience testing of Phase {id} work"
594
- bash .aether/aether-utils.sh swarm-display-update "{chaos_name}" "chaos" "probing" "Resilience testing" "Queen" '{"read":0,"grep":0,"edit":0,"bash":0}' 0 "refuse_pile" 75
595
- ```
596
-
597
- **Retrieve existing flags for this phase** (to avoid duplicate findings):
598
- ```bash
599
- bash .aether/aether-utils.sh flag-list --phase {phase_number}
600
- ```
601
- Parse the result and extract unresolved flag titles into a list: `{existing_flag_titles}` (comma-separated titles from `.result.flags[].title`). If no flags exist, set `{existing_flag_titles}` to "None".
602
-
603
- Spawn the Chaos Ant using Task tool with `subagent_type="aether-chaos"` (DO NOT use run_in_background - task blocks until complete):
604
- # FALLBACK: If "Agent type not found", use general-purpose and inject role: "You are a Chaos Ant - resilience tester that probes edge cases and boundary conditions."
605
-
606
- **Chaos Ant Prompt (CLEAN OUTPUT):**
607
- ```
608
- You are {Chaos-Name}, a 🎲🐜 Chaos Ant.
609
-
610
- Test Phase {id} work for edge cases and boundary conditions.
611
-
612
- Files to test:
613
- - {list from builder results}
614
-
615
- Skip these known issues: {existing_flag_titles}
616
-
617
- Rules:
618
- - Max 5 scenarios
619
- - Read-only (don't modify code)
620
- - Focus: edge cases, boundaries, error handling
621
-
622
- Return ONLY this JSON:
623
- {"ant_name": "{Chaos-Name}", "scenarios_tested": 5, "findings": [{"id": 1, "category": "edge_case|boundary|error_handling", "severity": "critical|high|medium|low", "title": "...", "description": "..."}], "overall_resilience": "strong|moderate|weak", "summary": "..."}
624
- ```
625
-
626
- ### Step 5.7: Process Chaos Ant Results
627
-
628
- **Task call returns results directly (no TaskOutput needed).**
629
-
630
- **Parse the Chaos Ant's JSON response:** findings, overall_resilience, summary
631
-
632
- **Store results for synthesis in Step 5.9**
633
-
634
- **Flag critical/high findings:**
635
-
636
- If any findings have severity `"critical"` or `"high"`:
637
- ```bash
638
- # Create a blocker flag for each critical/high chaos finding
639
- bash .aether/aether-utils.sh flag-add "blocker" "{finding.title}" "{finding.description}" "chaos-testing" {phase_number}
640
- ```
641
-
642
- Log the flag:
643
- ```bash
644
- bash .aether/aether-utils.sh activity-log "FLAG" "Chaos" "Created blocker: {finding.title}"
645
- ```
646
-
647
- Log chaos ant completion and update swarm display:
648
- ```bash
649
- bash .aether/aether-utils.sh spawn-complete "{chaos_name}" "completed" "{summary}"
650
- bash .aether/aether-utils.sh swarm-display-update "{chaos_name}" "chaos" "completed" "Resilience testing done" "Queen" '{"read":2,"grep":1,"edit":0,"bash":0}' 100 "refuse_pile" 100
651
- ```
652
-
653
- ### Step 5.8: Create Flags for Verification Failures
654
-
655
- If the Watcher reported `verification_passed: false` or `recommendation: "fix_required"`:
656
-
657
- For each issue in `issues_found`:
658
- ```bash
659
- # Create a blocker flag for each verification failure
660
- bash .aether/aether-utils.sh flag-add "blocker" "{issue_title}" "{issue_description}" "verification" {phase_number}
661
- ```
662
-
663
- Log the flag creation:
664
- ```bash
665
- bash .aether/aether-utils.sh activity-log "FLAG" "Watcher" "Created blocker: {issue_title}"
666
- ```
667
-
668
- This ensures verification failures are persisted as blockers that survive context resets. Chaos Ant findings are flagged in Step 5.7.
669
-
670
- ### Step 5.9: Synthesize Results
671
-
672
- **This step runs after all worker tasks have completed (Builders, Watcher, Chaos).**
673
-
674
- Collect all worker outputs and create phase summary:
675
-
676
- ```json
677
- {
678
- "status": "completed" | "failed" | "blocked",
679
- "summary": "...",
680
- "tasks_completed": [...],
681
- "tasks_failed": [...],
682
- "files_created": [...],
683
- "files_modified": [...],
684
- "spawn_metrics": {
685
- "spawn_count": {total workers spawned, including archaeologist if Step 4.5 fired},
686
- "builder_count": {N},
687
- "watcher_count": 1,
688
- "chaos_count": 1,
689
- "archaeologist_count": {0 or 1, conditional on Step 4.5},
690
- "parallel_batches": {number of waves}
691
- },
692
- "spawn_tree": {
693
- "{Archaeologist-Name}": {"caste": "archaeologist", "task": "pre-build history scan", "status": "completed"},
694
- "{Builder-Name}": {"caste": "builder", "task": "...", "status": "completed"},
695
- "{Watcher-Name}": {"caste": "watcher", "task": "verify", "status": "completed"},
696
- "{Chaos-Name}": {"caste": "chaos", "task": "resilience testing", "status": "completed"}
697
- },
698
- "verification": {from Watcher output},
699
- "resilience": {from Chaos Ant output},
700
- "archaeology": {from Archaeologist output, or null if Step 4.5 was skipped},
701
- "quality_notes": "..."
702
- }
703
- ```
704
-
705
- **Graveyard Recording:**
706
- For each worker that returned `status: "failed"`:
707
- For each file in that worker's `files_modified` or `files_created`:
708
- ```bash
709
- bash .aether/aether-utils.sh grave-add "{file}" "{ant_name}" "{task_id}" {phase} "{first blocker or summary}"
710
- ```
711
- Log the grave marker:
712
- ```bash
713
- bash .aether/aether-utils.sh activity-log "GRAVE" "Queen" "Grave marker placed at {file} — {ant_name} failed: {summary}"
714
- ```
715
-
716
- **Error Handoff Update:**
717
- If workers failed, update handoff with error context for recovery:
718
- ```bash
719
- cat > .aether/HANDOFF.md << 'HANDOFF_EOF'
720
- # Colony Session — Build Errors
721
-
722
- ## ⚠️ Build Status: ISSUES DETECTED
723
- **Phase:** {phase_number} — {phase_name}
724
- **Status:** Build completed with failures
725
- **Updated:** $(date -u +%Y-%m-%dT%H:%M:%SZ)
726
-
727
- ## Failed Workers
728
- {for each failed worker:}
729
- - {ant_name}: {failure_summary}
730
- {end for}
731
-
732
- ## Grave Markers Placed
733
- {for each grave:}
734
- - {file}: {caution_level} caution
735
- {end for}
736
-
737
- ## Recovery Options
738
- 1. Review failures: Check `.aether/data/activity.log`
739
- 2. Fix and retry: `/ant:build {phase_number}`
740
- 3. Swarm fix: `/ant:swarm` for auto-repair
741
- 4. Manual fix: Address issues, then `/ant:continue`
742
-
743
- ## Session Note
744
- Build completed but workers failed. Grave markers placed.
745
- Review failures before advancing.
746
- HANDOFF_EOF
747
- ```
748
-
749
- Only fires when workers fail. Zero impact on successful builds.
750
-
751
- --- SPAWN TRACKING ---
752
-
753
- The spawn tree will be visible in `/ant:watch` because each spawn is logged.
754
-
755
- --- OUTPUT FORMAT ---
756
-
757
- Return JSON:
758
- {
759
- "status": "completed" | "failed" | "blocked",
760
- "summary": "What the phase accomplished",
761
- "tasks_completed": ["1.1", "1.2"],
762
- "tasks_failed": [],
763
- "files_created": ["path1", "path2"],
764
- "files_modified": ["path3"],
765
- "spawn_metrics": {
766
- "spawn_count": 6,
767
- "watcher_count": 1,
768
- "chaos_count": 1,
769
- "archaeologist_count": 1,
770
- "builder_count": 3,
771
- "parallel_batches": 2,
772
- "sequential_tasks": 1
773
- },
774
- "spawn_tree": {
775
- "Relic-8": {"caste": "archaeologist", "task": "pre-build history scan", "status": "completed", "children": {}},
776
- "Hammer-42": {"caste": "builder", "task": "...", "status": "completed", "children": {}},
777
- "Vigil-17": {"caste": "watcher", "task": "...", "status": "completed", "children": {}},
778
- "Entropy-9": {"caste": "chaos", "task": "resilience testing", "status": "completed", "children": {}}
779
- },
780
- "verification": {
781
- "build": {"command": "npm run build", "exit_code": 0, "passed": true},
782
- "tests": {"command": "npm test", "passed": 24, "failed": 0, "total": 24},
783
- "success_criteria": [
784
- {"criterion": "API endpoint exists", "evidence": "GET /api/users returns 200", "passed": true},
785
- {"criterion": "Tests cover happy path", "evidence": "3 tests in users.test.ts", "passed": true}
786
- ]
787
- },
788
- "debugging": {
789
- "issues_encountered": 0,
790
- "issues_resolved": 0,
791
- "fix_attempts": 0,
792
- "architectural_concerns": []
793
- },
794
- "tdd": {
795
- "cycles_completed": 5,
796
- "tests_added": 5,
797
- "tests_total": 47,
798
- "coverage_percent": 85,
799
- "all_passing": true
800
- },
801
- "learning": {
802
- "patterns_observed": [
803
- {
804
- "type": "success",
805
- "trigger": "when implementing API endpoints",
806
- "action": "use repository pattern with DI",
807
- "evidence": "All tests passed first try"
808
- }
809
- ],
810
- "instincts_applied": ["instinct_123"],
811
- "instinct_outcomes": [
812
- {"id": "instinct_123", "success": true}
813
- ]
814
- },
815
- "quality_notes": "Any concerns or recommendations",
816
- "ui_touched": true | false
817
- }
818
- ```
819
-
820
- ### Step 6: Visual Checkpoint (if UI touched)
821
-
822
- Parse synthesis result. If `ui_touched` is true:
823
-
824
- ```
825
- Visual Checkpoint
826
- =================
827
-
828
- UI changes detected. Verify appearance before continuing.
829
-
830
- Files touched:
831
- {list files from files_created + files_modified that match UI patterns}
832
-
833
- Options:
834
- 1. Approve - UI looks correct
835
- 2. Reject - needs changes (describe issues)
836
- 3. Skip - defer visual review
837
- ```
838
-
839
- Use AskUserQuestion to get approval. Record in events:
840
- - If approved: `"<timestamp>|visual_approved|build|Phase {id} UI approved"`
841
- - If rejected: `"<timestamp>|visual_rejected|build|Phase {id} UI rejected: {reason}"`
842
-
843
- ### Step 6.5: Update Handoff Document
844
-
845
- After synthesis is complete, update the handoff document with current state for session recovery:
846
-
847
- ```bash
848
- # Update handoff with build results
849
- jq -n \
850
- --arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
851
- --arg goal "$(jq -r '.goal' .aether/data/COLONY_STATE.json)" \
852
- --arg phase "$(jq -r '.current_phase' .aether/data/COLONY_STATE.json)" \
853
- --arg phase_name "{phase_name}" \
854
- --arg status "{synthesis.status}" \
855
- --arg summary "{synthesis.summary}" \
856
- --argjson tasks_completed '{synthesis.tasks_completed | length}' \
857
- --argjson tasks_failed '{synthesis.tasks_failed | length}' \
858
- --arg next_action "{if synthesis.status == "completed" then "/ant:continue" else "/ant:flags" end}" \
859
- '{
860
- "last_updated": $timestamp,
861
- "goal": $goal,
862
- "current_phase": $phase,
863
- "phase_name": $phase_name,
864
- "build_status": $status,
865
- "summary": $summary,
866
- "tasks_completed": $tasks_completed,
867
- "tasks_failed": $tasks_failed,
868
- "next_recommended_action": $next_action,
869
- "can_resume": true,
870
- "note": "Phase build completed. Run /ant:continue to advance if verification passed."
871
- }' > .aether/data/last-build-result.json
872
-
873
- # Write handoff markdown
874
- cat > .aether/HANDOFF.md << 'HANDOFF_EOF'
875
- # Colony Session — Build Complete
876
-
877
- ## Quick Resume
878
- Run `/ant:continue` to advance phase, or `/ant:resume-colony` to restore full context.
879
-
880
- ## State at Build Completion
881
- - Goal: "$(jq -r '.goal' .aether/data/COLONY_STATE.json)"
882
- - Phase: {phase_number} — {phase_name}
883
- - Build Status: {synthesis.status}
884
- - Updated: $(date -u +%Y-%m-%dT%H:%M:%SZ)
885
-
886
- ## Build Summary
887
- {summary}
888
-
889
- ## Tasks
890
- - Completed: {synthesis.tasks_completed | length}
891
- - Failed: {synthesis.tasks_failed | length}
892
-
893
- ## Files Changed
894
- - Created: {synthesis.files_created | length} files
895
- - Modified: {synthesis.files_modified | length} files
896
-
897
- ## Next Steps
898
- - If verification passed: `/ant:continue` to advance to next phase
899
- - If issues found: `/ant:flags` to review blockers
900
- - To pause: `/ant:pause-colony`
901
-
902
- ## Session Note
903
- $(if synthesis.status == "completed" then "Build succeeded — ready to advance." else "Build completed with issues — review before continuing." end)
904
- HANDOFF_EOF
905
- ```
906
-
907
- This ensures the handoff always reflects the latest build state, even if the session crashes before explicit pause.
908
-
909
- ### Step 6.5: Update Context Document
910
-
911
- Log this build activity to `.aether/CONTEXT.md`:
912
-
913
- ```bash
914
- bash .aether/aether-utils.sh context-update activity "build {phase_id}" "{synthesis.status}" "{files_created_count + files_modified_count}"
915
- ```
916
-
917
- Mark build as complete in context:
918
- ```bash
919
- bash .aether/aether-utils.sh context-update build-complete "{synthesis.status}" "{synthesis.status == 'completed' ? 'success' : 'failed'}"
920
- ```
921
-
922
- Also update safe-to-clear status:
923
- - If build completed successfully: `context-update safe-to-clear "YES" "Build complete, ready to continue"`
924
- - If build failed: `context-update safe-to-clear "NO" "Build failed — run /ant:swarm or /ant:flags"`
925
-
926
- ### Step 7: Display Results
927
-
928
- **This step runs ONLY after synthesis is complete. All values come from actual worker results.**
929
-
930
- **First, render the final swarm display showing all completed workers:**
931
- ```bash
932
- # Final swarm display update - mark Queen as completed
933
- bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "completed" "Phase {id} complete" "Colony" '{"read":10,"grep":5,"edit":5,"bash":2}' 100 "fungus_garden" 100
934
-
935
- # Render the final swarm display
936
- bash .aether/aether-utils.sh swarm-display-inline "$build_id"
937
- ```
938
-
939
- The swarm display will show:
940
- - 🐜 All workers with their caste emojis (🔨🐜 Builder, 👁️🐜 Watcher, 🎲🐜 Chaos)
941
- - 📖 Tool usage stats (Read, Grep, Edit, Bash counts)
942
- - 🏠 Chamber activity map (Fungus Garden, Nursery, Refuse Pile)
943
- - ✅ Progress bars at 100% for completed work
944
- - 🌈 Color-coded by caste
945
-
946
- **Then display build summary based on synthesis results AND `verbose_mode` from Step 1:**
947
-
948
- **If verbose_mode = false (compact output, ~12 lines):**
949
-
950
- ```
951
- 🔨 PHASE {id} {status_icon}
952
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
953
- 📍 {name}
954
- 📊 {status} | 📁 {files_created count} created, {files_modified count} modified
955
- 🐜 {spawn_count} workers | 🧪 {tests_total} tests {if all_passing}passing{else}{passed}/{total}{end if}
956
- {if learning.patterns_observed.length > 0:}🧠 +{patterns_observed.length} patterns{end if}
957
-
958
- {if synthesis.status == "failed" OR verification.recommendation == "fix_required":}
959
- ⚠️ BLOCKERS: {first 2 issues, comma-separated}
960
- {end if}
961
-
962
- ➡️ Next: {primary_command}
963
- --verbose for spawn tree, TDD details, patterns
964
- ```
965
-
966
- **Status icon logic:** completed+proceed = checkmark, blockers = warning, failed = X
967
-
968
- **Primary command logic:**
969
- - completed + proceed: `/ant:continue`
970
- - has blockers: `/ant:flags`
971
- - failed: `/ant:swarm`
972
-
973
- **If verbose_mode = true (full output):**
974
-
975
- ```
976
- 🔨🐜🏗️🐜🔨 ═══════════════════════════════════════════════════
977
- P H A S E {id} C O M P L E T E
978
- ═══════════════════════════════════════════════════ 🔨🐜🏗️🐜🔨
979
-
980
- 📍 Phase {id}: {name}
981
- 📊 Status: {status}
982
- 💾 Git Checkpoint: {commit_hash}
983
-
984
- 📝 Summary:
985
- {summary from synthesis}
986
-
987
- 🐜 Colony Work Tree:
988
- 👑Queen
989
- {for each spawn in spawn_tree:}
990
- ├── {caste_emoji}{ant_name}: {task} [{status}]
991
- {end for}
992
-
993
- ✅ Tasks Completed:
994
- {for each task in tasks_completed:}
995
- 🐜 {task_id}: done
996
- {end for}
997
- {for each task in tasks_failed:}
998
- ❌ {task_id}: failed
999
- {end for}
1000
-
1001
- 📁 Files: {files_created count} created, {files_modified count} modified
1002
-
1003
- {if tdd.tests_added > 0:}
1004
- 🧪 TDD: {tdd.cycles_completed} cycles | {tdd.tests_added} tests | {tdd.coverage_percent}% coverage
1005
- {end if}
1006
-
1007
- {if learning.patterns_observed not empty:}
1008
- 🧠 Patterns Learned:
1009
- {for each pattern in learning.patterns_observed:}
1010
- 🐜 {pattern.trigger} → {pattern.action}
1011
- {end for}
1012
- {end if}
1013
-
1014
- {if debugging.issues_encountered > 0:}
1015
- 🔧 Debugging: {debugging.issues_resolved}/{debugging.issues_encountered} resolved
1016
- {end if}
1017
-
1018
- 🤖 Model Routing:
1019
- {for each spawn in spawn_tree where model_context exists:}
1020
- {caste_emoji}{ant_name}: {model_context.assigned} {if model_context.assigned matches caste expectation:}✓{else}⚠️{end if}
1021
- {end for}
1022
- Proxy: {if proxy_healthy:}✓ Healthy @ http://localhost:4000{else}✗ Not running (using default model){end if}
1023
-
1024
- 🐜 Next Steps:
1025
- {if synthesis.status == "completed" AND verification.recommendation == "proceed":}
1026
- /ant:continue ➡️ Advance to next phase
1027
- /ant:feedback 💬 Give feedback first
1028
- {else if synthesis.status == "failed" OR verification.recommendation == "fix_required":}
1029
- ⚠️ BLOCKERS DETECTED - Cannot proceed until resolved
1030
- /ant:flags 🚩 View blockers
1031
- /ant:swarm 🔥 Auto-fix issues
1032
- {end if}
1033
-
1034
- 💾 State persisted — safe to /clear, then run /ant:continue
1035
- ```
1036
-
1037
- **Conditional Next Steps:** The suggestions above are based on actual worker results. If verification failed or blockers exist, `/ant:continue` is NOT suggested.
1038
-
1039
- **IMPORTANT:** Build does NOT update task statuses or advance state. Run `/ant:continue` to:
1040
- - Mark tasks as completed
1041
- - Extract learnings
1042
- - Advance to next phase
1043
-
1044
- ### Step 8: Update Session
1045
-
1046
- Update the session tracking file to enable `/ant:resume` after context clear:
1047
-
1048
- ```bash
1049
- bash .aether/aether-utils.sh session-update "/ant:build {phase_id}" "/ant:continue" "Phase {phase_id} build completed: {synthesis.status}"
1050
- ```
64
+ After `build-complete.md` finishes, return the normal build summary and next-step
65
+ routing exactly as defined there.