aether-colony 5.0.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/.aether/aether-utils.sh +3150 -3349
  2. package/.aether/agents-claude/aether-ambassador.md +265 -0
  3. package/.aether/agents-claude/aether-archaeologist.md +327 -0
  4. package/.aether/agents-claude/aether-architect.md +236 -0
  5. package/.aether/agents-claude/aether-auditor.md +271 -0
  6. package/.aether/agents-claude/aether-builder.md +224 -0
  7. package/.aether/agents-claude/aether-chaos.md +269 -0
  8. package/.aether/agents-claude/aether-chronicler.md +305 -0
  9. package/.aether/agents-claude/aether-gatekeeper.md +330 -0
  10. package/.aether/agents-claude/aether-includer.md +374 -0
  11. package/.aether/agents-claude/aether-keeper.md +272 -0
  12. package/.aether/agents-claude/aether-measurer.md +322 -0
  13. package/.aether/agents-claude/aether-oracle.md +237 -0
  14. package/.aether/agents-claude/aether-probe.md +211 -0
  15. package/.aether/agents-claude/aether-queen.md +330 -0
  16. package/.aether/agents-claude/aether-route-setter.md +178 -0
  17. package/.aether/agents-claude/aether-sage.md +418 -0
  18. package/.aether/agents-claude/aether-scout.md +179 -0
  19. package/.aether/agents-claude/aether-surveyor-disciplines.md +417 -0
  20. package/.aether/agents-claude/aether-surveyor-nest.md +355 -0
  21. package/.aether/agents-claude/aether-surveyor-pathogens.md +289 -0
  22. package/.aether/agents-claude/aether-surveyor-provisions.md +360 -0
  23. package/.aether/agents-claude/aether-tracker.md +270 -0
  24. package/.aether/agents-claude/aether-watcher.md +280 -0
  25. package/.aether/agents-claude/aether-weaver.md +248 -0
  26. package/.aether/commands/archaeology.yaml +653 -0
  27. package/.aether/commands/build.yaml +1221 -0
  28. package/.aether/commands/chaos.yaml +653 -0
  29. package/.aether/commands/colonize.yaml +438 -0
  30. package/.aether/commands/continue.yaml +1484 -0
  31. package/.aether/commands/council.yaml +304 -0
  32. package/.aether/commands/data-clean.yaml +80 -0
  33. package/.aether/commands/dream.yaml +275 -0
  34. package/.aether/commands/entomb.yaml +863 -0
  35. package/.aether/commands/export-signals.yaml +64 -0
  36. package/.aether/commands/feedback.yaml +158 -0
  37. package/.aether/commands/flag.yaml +160 -0
  38. package/.aether/commands/flags.yaml +177 -0
  39. package/.aether/commands/focus.yaml +112 -0
  40. package/.aether/commands/help.yaml +167 -0
  41. package/.aether/commands/history.yaml +137 -0
  42. package/.aether/commands/import-signals.yaml +79 -0
  43. package/.aether/commands/init.yaml +469 -0
  44. package/.aether/commands/insert-phase.yaml +98 -0
  45. package/.aether/commands/interpret.yaml +285 -0
  46. package/.aether/commands/lay-eggs.yaml +224 -0
  47. package/.aether/commands/maturity.yaml +122 -0
  48. package/.aether/commands/memory-details.yaml +74 -0
  49. package/.aether/commands/migrate-state.yaml +174 -0
  50. package/.aether/commands/oracle.yaml +1224 -0
  51. package/.aether/commands/organize.yaml +446 -0
  52. package/.aether/commands/patrol.yaml +621 -0
  53. package/.aether/commands/pause-colony.yaml +424 -0
  54. package/.aether/commands/phase.yaml +124 -0
  55. package/.aether/commands/pheromones.yaml +153 -0
  56. package/.aether/commands/plan.yaml +1313 -0
  57. package/.aether/commands/preferences.yaml +63 -0
  58. package/.aether/commands/redirect.yaml +123 -0
  59. package/.aether/commands/resume-colony.yaml +373 -0
  60. package/.aether/commands/resume.yaml +398 -0
  61. package/.aether/commands/run.yaml +193 -0
  62. package/.aether/commands/seal.yaml +1205 -0
  63. package/.aether/commands/skill-create.yaml +337 -0
  64. package/.aether/commands/status.yaml +364 -0
  65. package/.aether/commands/swarm.yaml +352 -0
  66. package/.aether/commands/tunnels.yaml +814 -0
  67. package/.aether/commands/update.yaml +131 -0
  68. package/.aether/commands/verify-castes.yaml +159 -0
  69. package/.aether/commands/watch.yaml +454 -0
  70. package/.aether/docs/INCIDENT_TEMPLATE.md +32 -0
  71. package/.aether/docs/QUEEN-SYSTEM.md +11 -11
  72. package/.aether/docs/README.md +32 -2
  73. package/.aether/docs/command-playbooks/README.md +23 -0
  74. package/.aether/docs/command-playbooks/build-complete.md +349 -0
  75. package/.aether/docs/command-playbooks/build-context.md +282 -0
  76. package/.aether/docs/command-playbooks/build-full.md +1682 -0
  77. package/.aether/docs/command-playbooks/build-prep.md +283 -0
  78. package/.aether/docs/command-playbooks/build-verify.md +405 -0
  79. package/.aether/docs/command-playbooks/build-wave.md +749 -0
  80. package/.aether/docs/command-playbooks/continue-advance.md +524 -0
  81. package/.aether/docs/command-playbooks/continue-finalize.md +447 -0
  82. package/.aether/docs/command-playbooks/continue-full.md +1724 -0
  83. package/.aether/docs/command-playbooks/continue-gates.md +686 -0
  84. package/.aether/docs/command-playbooks/continue-verify.md +406 -0
  85. package/.aether/docs/context-continuity.md +84 -0
  86. package/.aether/docs/disciplines/DISCIPLINES.md +9 -7
  87. package/.aether/docs/error-codes.md +1 -1
  88. package/.aether/docs/known-issues.md +34 -173
  89. package/.aether/docs/pheromones.md +86 -6
  90. package/.aether/docs/plans/pheromone-display-plan.md +257 -0
  91. package/.aether/docs/queen-commands.md +10 -9
  92. package/.aether/docs/source-of-truth-map.md +132 -0
  93. package/.aether/docs/xml-utilities.md +47 -0
  94. package/.aether/rules/aether-colony.md +23 -13
  95. package/.aether/scripts/incident-test-add.sh +47 -0
  96. package/.aether/scripts/weekly-audit.sh +79 -0
  97. package/.aether/skills/.index.json +649 -0
  98. package/.aether/skills/colony/.manifest.json +16 -0
  99. package/.aether/skills/colony/build-discipline/SKILL.md +78 -0
  100. package/.aether/skills/colony/colony-interaction/SKILL.md +56 -0
  101. package/.aether/skills/colony/colony-lifecycle/SKILL.md +77 -0
  102. package/.aether/skills/colony/colony-visuals/SKILL.md +112 -0
  103. package/.aether/skills/colony/context-management/SKILL.md +80 -0
  104. package/.aether/skills/colony/error-presentation/SKILL.md +99 -0
  105. package/.aether/skills/colony/pheromone-protocol/SKILL.md +79 -0
  106. package/.aether/skills/colony/pheromone-visibility/SKILL.md +81 -0
  107. package/.aether/skills/colony/state-safety/SKILL.md +84 -0
  108. package/.aether/skills/colony/worker-priming/SKILL.md +82 -0
  109. package/.aether/skills/domain/.manifest.json +24 -0
  110. package/.aether/skills/domain/README.md +33 -0
  111. package/.aether/skills/domain/django/SKILL.md +49 -0
  112. package/.aether/skills/domain/docker/SKILL.md +52 -0
  113. package/.aether/skills/domain/golang/SKILL.md +52 -0
  114. package/.aether/skills/domain/graphql/SKILL.md +51 -0
  115. package/.aether/skills/domain/html-css/SKILL.md +48 -0
  116. package/.aether/skills/domain/nextjs/SKILL.md +45 -0
  117. package/.aether/skills/domain/nodejs/SKILL.md +53 -0
  118. package/.aether/skills/domain/postgresql/SKILL.md +53 -0
  119. package/.aether/skills/domain/prisma/SKILL.md +59 -0
  120. package/.aether/skills/domain/python/SKILL.md +50 -0
  121. package/.aether/skills/domain/rails/SKILL.md +52 -0
  122. package/.aether/skills/domain/react/SKILL.md +45 -0
  123. package/.aether/skills/domain/rest-api/SKILL.md +58 -0
  124. package/.aether/skills/domain/svelte/SKILL.md +47 -0
  125. package/.aether/skills/domain/tailwind/SKILL.md +45 -0
  126. package/.aether/skills/domain/testing/SKILL.md +53 -0
  127. package/.aether/skills/domain/typescript/SKILL.md +58 -0
  128. package/.aether/skills/domain/vue/SKILL.md +49 -0
  129. package/.aether/templates/QUEEN.md.template +23 -41
  130. package/.aether/templates/colony-state-reset.jq.template +1 -0
  131. package/.aether/templates/colony-state.template.json +4 -0
  132. package/.aether/templates/learning-observations.template.json +6 -0
  133. package/.aether/templates/midden.template.json +13 -0
  134. package/.aether/templates/pheromones.template.json +6 -0
  135. package/.aether/templates/session.template.json +9 -0
  136. package/.aether/utils/atomic-write.sh +63 -17
  137. package/.aether/utils/chamber-utils.sh +145 -2
  138. package/.aether/utils/emoji-audit.sh +166 -0
  139. package/.aether/utils/error-handler.sh +21 -7
  140. package/.aether/utils/file-lock.sh +182 -27
  141. package/.aether/utils/flag.sh +267 -0
  142. package/.aether/utils/hive.sh +572 -0
  143. package/.aether/utils/learning.sh +1928 -0
  144. package/.aether/utils/midden.sh +342 -0
  145. package/.aether/utils/oracle/oracle.md +168 -0
  146. package/.aether/utils/oracle/oracle.sh +1023 -0
  147. package/.aether/utils/pheromone.sh +2029 -0
  148. package/.aether/utils/queen.sh +1698 -0
  149. package/.aether/utils/scan.sh +860 -0
  150. package/.aether/utils/semantic-cli.sh +10 -8
  151. package/.aether/utils/session.sh +552 -0
  152. package/.aether/utils/skills.sh +509 -0
  153. package/.aether/utils/spawn-tree.sh +103 -271
  154. package/.aether/utils/spawn.sh +260 -0
  155. package/.aether/utils/state-api.sh +199 -0
  156. package/.aether/utils/state-loader.sh +8 -6
  157. package/.aether/utils/suggest.sh +611 -0
  158. package/.aether/utils/swarm-display.sh +10 -1
  159. package/.aether/utils/swarm.sh +1004 -0
  160. package/.aether/utils/watch-spawn-tree.sh +11 -2
  161. package/.aether/utils/xml-compose.sh +2 -2
  162. package/.aether/utils/xml-convert.sh +9 -5
  163. package/.aether/utils/xml-core.sh +5 -9
  164. package/.aether/utils/xml-query.sh +4 -4
  165. package/.aether/workers.md +86 -67
  166. package/.claude/agents/ant/aether-ambassador.md +2 -1
  167. package/.claude/agents/ant/aether-archaeologist.md +6 -1
  168. package/.claude/agents/ant/aether-architect.md +236 -0
  169. package/.claude/agents/ant/aether-auditor.md +6 -1
  170. package/.claude/agents/ant/aether-builder.md +38 -1
  171. package/.claude/agents/ant/aether-chaos.md +2 -1
  172. package/.claude/agents/ant/aether-chronicler.md +1 -0
  173. package/.claude/agents/ant/aether-gatekeeper.md +6 -1
  174. package/.claude/agents/ant/aether-includer.md +1 -0
  175. package/.claude/agents/ant/aether-keeper.md +1 -0
  176. package/.claude/agents/ant/aether-measurer.md +6 -1
  177. package/.claude/agents/ant/aether-oracle.md +237 -0
  178. package/.claude/agents/ant/aether-probe.md +2 -1
  179. package/.claude/agents/ant/aether-queen.md +6 -1
  180. package/.claude/agents/ant/aether-route-setter.md +6 -1
  181. package/.claude/agents/ant/aether-sage.md +68 -3
  182. package/.claude/agents/ant/aether-scout.md +38 -1
  183. package/.claude/agents/ant/aether-surveyor-disciplines.md +2 -1
  184. package/.claude/agents/ant/aether-surveyor-nest.md +2 -1
  185. package/.claude/agents/ant/aether-surveyor-pathogens.md +2 -1
  186. package/.claude/agents/ant/aether-surveyor-provisions.md +2 -1
  187. package/.claude/agents/ant/aether-tracker.md +6 -1
  188. package/.claude/agents/ant/aether-watcher.md +37 -1
  189. package/.claude/agents/ant/aether-weaver.md +2 -1
  190. package/.claude/commands/ant/archaeology.md +1 -8
  191. package/.claude/commands/ant/build.md +43 -1159
  192. package/.claude/commands/ant/chaos.md +1 -14
  193. package/.claude/commands/ant/colonize.md +1 -14
  194. package/.claude/commands/ant/continue.md +40 -1026
  195. package/.claude/commands/ant/council.md +9 -16
  196. package/.claude/commands/ant/data-clean.md +81 -0
  197. package/.claude/commands/ant/dream.md +12 -9
  198. package/.claude/commands/ant/entomb.md +62 -87
  199. package/.claude/commands/ant/export-signals.md +57 -0
  200. package/.claude/commands/ant/feedback.md +18 -0
  201. package/.claude/commands/ant/flag.md +12 -0
  202. package/.claude/commands/ant/flags.md +22 -8
  203. package/.claude/commands/ant/focus.md +18 -0
  204. package/.claude/commands/ant/help.md +40 -8
  205. package/.claude/commands/ant/history.md +3 -0
  206. package/.claude/commands/ant/import-signals.md +71 -0
  207. package/.claude/commands/ant/init.md +316 -191
  208. package/.claude/commands/ant/insert-phase.md +101 -0
  209. package/.claude/commands/ant/interpret.md +11 -0
  210. package/.claude/commands/ant/lay-eggs.md +167 -158
  211. package/.claude/commands/ant/maturity.md +22 -11
  212. package/.claude/commands/ant/memory-details.md +77 -0
  213. package/.claude/commands/ant/migrate-state.md +6 -0
  214. package/.claude/commands/ant/oracle.md +317 -62
  215. package/.claude/commands/ant/organize.md +10 -5
  216. package/.claude/commands/ant/patrol.md +620 -0
  217. package/.claude/commands/ant/pause-colony.md +8 -22
  218. package/.claude/commands/ant/phase.md +26 -37
  219. package/.claude/commands/ant/pheromones.md +156 -0
  220. package/.claude/commands/ant/plan.md +175 -52
  221. package/.claude/commands/ant/preferences.md +65 -0
  222. package/.claude/commands/ant/redirect.md +18 -0
  223. package/.claude/commands/ant/resume-colony.md +34 -20
  224. package/.claude/commands/ant/resume.md +51 -7
  225. package/.claude/commands/ant/run.md +195 -0
  226. package/.claude/commands/ant/seal.md +497 -78
  227. package/.claude/commands/ant/skill-create.md +286 -0
  228. package/.claude/commands/ant/status.md +127 -1
  229. package/.claude/commands/ant/swarm.md +11 -23
  230. package/.claude/commands/ant/tunnels.md +1 -0
  231. package/.claude/commands/ant/update.md +58 -135
  232. package/.claude/commands/ant/verify-castes.md +90 -42
  233. package/.claude/commands/ant/watch.md +1 -0
  234. package/.opencode/agents/aether-ambassador.md +1 -1
  235. package/.opencode/agents/aether-architect.md +133 -0
  236. package/.opencode/agents/aether-builder.md +3 -3
  237. package/.opencode/agents/aether-oracle.md +137 -0
  238. package/.opencode/agents/aether-queen.md +1 -1
  239. package/.opencode/agents/aether-route-setter.md +1 -1
  240. package/.opencode/agents/aether-scout.md +1 -1
  241. package/.opencode/agents/aether-surveyor-disciplines.md +6 -1
  242. package/.opencode/agents/aether-surveyor-nest.md +6 -1
  243. package/.opencode/agents/aether-surveyor-pathogens.md +6 -1
  244. package/.opencode/agents/aether-surveyor-provisions.md +6 -1
  245. package/.opencode/agents/aether-tracker.md +1 -1
  246. package/.opencode/agents/aether-watcher.md +1 -1
  247. package/.opencode/agents/aether-weaver.md +1 -1
  248. package/.opencode/commands/ant/archaeology.md +7 -14
  249. package/.opencode/commands/ant/build.md +54 -88
  250. package/.opencode/commands/ant/chaos.md +7 -24
  251. package/.opencode/commands/ant/colonize.md +8 -17
  252. package/.opencode/commands/ant/continue.md +595 -66
  253. package/.opencode/commands/ant/council.md +11 -22
  254. package/.opencode/commands/ant/data-clean.md +77 -0
  255. package/.opencode/commands/ant/dream.md +15 -17
  256. package/.opencode/commands/ant/entomb.md +28 -18
  257. package/.opencode/commands/ant/export-signals.md +54 -0
  258. package/.opencode/commands/ant/feedback.md +24 -5
  259. package/.opencode/commands/ant/flag.md +16 -4
  260. package/.opencode/commands/ant/flags.md +24 -10
  261. package/.opencode/commands/ant/focus.md +22 -5
  262. package/.opencode/commands/ant/help.md +41 -8
  263. package/.opencode/commands/ant/history.md +9 -0
  264. package/.opencode/commands/ant/import-signals.md +68 -0
  265. package/.opencode/commands/ant/init.md +365 -156
  266. package/.opencode/commands/ant/insert-phase.md +107 -0
  267. package/.opencode/commands/ant/interpret.md +16 -0
  268. package/.opencode/commands/ant/lay-eggs.md +184 -112
  269. package/.opencode/commands/ant/maturity.md +18 -2
  270. package/.opencode/commands/ant/memory-details.md +83 -0
  271. package/.opencode/commands/ant/migrate-state.md +12 -0
  272. package/.opencode/commands/ant/oracle.md +322 -67
  273. package/.opencode/commands/ant/organize.md +14 -12
  274. package/.opencode/commands/ant/patrol.md +626 -0
  275. package/.opencode/commands/ant/pause-colony.md +12 -29
  276. package/.opencode/commands/ant/phase.md +30 -40
  277. package/.opencode/commands/ant/pheromones.md +162 -0
  278. package/.opencode/commands/ant/plan.md +184 -56
  279. package/.opencode/commands/ant/preferences.md +71 -0
  280. package/.opencode/commands/ant/redirect.md +22 -5
  281. package/.opencode/commands/ant/resume-colony.md +38 -27
  282. package/.opencode/commands/ant/resume.md +71 -20
  283. package/.opencode/commands/ant/run.md +201 -0
  284. package/.opencode/commands/ant/seal.md +230 -25
  285. package/.opencode/commands/ant/skill-create.md +63 -0
  286. package/.opencode/commands/ant/status.md +124 -31
  287. package/.opencode/commands/ant/swarm.md +3 -345
  288. package/.opencode/commands/ant/tunnels.md +3 -9
  289. package/.opencode/commands/ant/update.md +63 -127
  290. package/.opencode/commands/ant/verify-castes.md +96 -42
  291. package/.opencode/commands/ant/watch.md +7 -0
  292. package/CHANGELOG.md +278 -1
  293. package/README.md +188 -340
  294. package/bin/cli.js +236 -429
  295. package/bin/generate-commands.js +186 -0
  296. package/bin/generate-commands.sh +128 -89
  297. package/bin/lib/spawn-logger.js +0 -15
  298. package/bin/lib/update-transaction.js +285 -35
  299. package/bin/npx-install.js +178 -0
  300. package/bin/validate-package.sh +85 -3
  301. package/package.json +7 -3
  302. package/.aether/CONTEXT.md +0 -160
  303. package/.aether/docs/QUEEN.md +0 -84
  304. package/.aether/exchange/colony-registry.xml +0 -11
  305. package/.aether/exchange/pheromones.xml +0 -87
  306. package/.aether/exchange/queen-wisdom.xml +0 -14
  307. package/.aether/model-profiles.yaml +0 -100
  308. package/.aether/utils/spawn-with-model.sh +0 -56
  309. package/bin/lib/model-profiles.js +0 -445
  310. package/bin/lib/model-verify.js +0 -288
  311. package/bin/lib/proxy-health.js +0 -253
  312. package/bin/lib/telemetry.js +0 -441
@@ -4,118 +4,51 @@ Documented issues from Oracle research findings. These are known limitations and
4
4
 
5
5
  ---
6
6
 
7
- ## Fixed Issues
8
-
9
- ### Checkpoint Allowlist System (Fixed 2026-02-15)
10
-
11
- **Issue:** Build checkpoint could stash user work (TO-DOs.md, dreams, Oracle specs)
12
-
13
- **Root Cause:** `git stash` touched files outside system allowlist, stashing 1,145 lines of user work
14
-
15
- **Fix:** Explicit allowlist system implemented
16
- - Created `.aether/data/checkpoint-allowlist.json` defining safe system files
17
- - Added `checkpoint-check` helper to `.aether/aether-utils.sh`
18
- - Updated `build.md` (Claude and OpenCode) to use allowlist
19
- - User data (`.aether/data/`, `.aether/dreams/`, `TO-DOs.md`) is never touched
20
- - Warning displayed if user files are present during checkpoint
21
-
22
- **System Files (Safe):**
23
- - `.aether/aether-utils.sh`, `.aether/workers.md`, `.aether/docs/**/*.md`
24
- - `.claude/commands/ant/**/*.md`, `.claude/commands/st/**/*.md`
25
- - `.opencode/commands/ant/**/*.md`, `.opencode/agents/**/*.md`
26
- - `bin/**/*`
27
-
28
- **User Data (Never Touch):**
29
- - `.aether/data/`, `.aether/dreams/`, `.aether/oracle/`
30
- - `TO-DOs.md`, `COLONY_STATE.json`, `.env`, `*.log`
31
-
32
- ---
33
-
34
- ## Critical Issues (Fix Immediately)
35
-
36
- ### BUG-005: Missing lock release in flag-auto-resolve — FIXED (Phase 16)
37
- **Location:** `.aether/aether-utils.sh:1022`
38
- **Severity:** HIGH
39
- **Status:** FIXED — Fixed in Phase 16: unified trap pattern (`trap 'release_lock 2>/dev/null || true' EXIT`) applied across all flag commands ensures lock release on all exit paths including jq failure.
40
- **Symptom:** If jq command fails during flag resolution, lock is never released
41
- **Impact:** Deadlock on flags.json if jq fails (malformed JSON, disk full, etc.)
42
- **Workaround:** ~~Restart the colony session if commands hang on flag operations~~ — no longer needed
43
- **Regression test:** `tests/bash/test-lock-lifecycle.sh` — test_flag_auto_resolve_jq_failure_releases_lock
44
-
45
- ### BUG-011: Missing error handling in flag-auto-resolve jq — FIXED (Phase 16)
46
- **Location:** `.aether/aether-utils.sh:1022`
47
- **Severity:** HIGH
48
- **Status:** FIXED — Fixed in Phase 16: unified trap pattern across all flag commands. See BUG-005.
49
- **Symptom:** jq failure during auto-resolve not handled
50
- **Impact:** Combined with BUG-005, causes deadlock
51
- **Fix:** ~~Add `|| { release_lock; json_err ... }` pattern~~ — implemented via EXIT trap
52
-
53
- ---
54
-
55
7
  ## Medium Priority Issues
56
8
 
57
- ### BUG-002: Missing release_lock in flag-add error path — FIXED (Phase 16)
58
- **Location:** `.aether/aether-utils.sh:814`
59
- **Severity:** MEDIUM
60
- **Status:** FIXED — Fixed in Phase 16: trap-based EXIT cleanup (`trap 'release_lock 2>/dev/null || true' EXIT`) ensures lock release on all exit paths including jq failure. Trap is cleared on the success path.
61
- **Symptom:** If acquire_lock succeeds but jq fails, lock is never released
62
- **Impact:** Potential deadlock on file operations
63
- **Regression test:** `tests/bash/test-lock-lifecycle.sh` — test_flag_add_jq_failure_releases_lock
64
-
65
- ### BUG-003: Race condition in backup creation — FIXED (Phase 16)
66
- **Location:** `.aether/utils/atomic-write.sh:75`
67
- **Severity:** MEDIUM
68
- **Status:** FIXED — Backup is now created BEFORE JSON validation in both `atomic_write` and `atomic_write_from_file`. Verified in Phase 16 with regression tests confirming backup contains pre-write content.
69
- **Symptom:** Backup created AFTER temp file validation but BEFORE atomic move
70
- **Impact:** If process crashes between validation and backup, inconsistent state
71
- **Regression test:** `tests/bash/test-lock-lifecycle.sh` — test_atomic_write_backup_before_validate, test_atomic_write_from_file_backup_before_validate
72
-
73
9
  ### BUG-004: Missing error code in flag-acknowledge
74
- **Location:** `.aether/aether-utils.sh:930`
10
+ **Location:** `flag-acknowledge` subcommand in `.aether/utils/flag.sh`
75
11
  **Severity:** MEDIUM
76
- **Symptom:** Uses hardcoded string instead of `$E_VALIDATION_FAILED`
77
- **Impact:** Inconsistent error handling
78
- **Fix:** Change to `json_err "$E_VALIDATION_FAILED" "Usage: ..."`
12
+ **Status:** [FIXED in v2.1 -- Phase 10 error triage + Phase 13 modularization]
13
+ `flag-acknowledge` now uses `$E_VALIDATION_FAILED`, `$E_FILE_NOT_FOUND`, `$E_LOCK_FAILED`, and `$E_JSON_INVALID` appropriately.
79
14
 
80
15
  ### BUG-006: No lock release on JSON validation failure
81
- **Location:** `.aether/utils/atomic-write.sh:66`
16
+ **Location:** `atomic_write` in `.aether/utils/atomic-write.sh`
82
17
  **Severity:** MEDIUM
83
- **Symptom:** If JSON validation fails, temp file cleaned but lock not released
84
- **Impact:** Lock remains held if caller had acquired it
85
- **Fix:** Document lock ownership contract clearly
18
+ **Symptom:** If JSON validation fails in `atomic_write`, temp file is cleaned but any lock held by the caller is not released
19
+ **Impact:** Lock remains held if caller had acquired it before calling `atomic_write`
20
+ **Fix:** Document lock ownership contract clearly -- callers must use trap-based cleanup
21
+ **Status:** Open -- `atomic_write` itself does not manage locks; callers are responsible for lock release via EXIT traps
86
22
 
87
23
  ### BUG-007: 17+ instances of missing error codes
88
- **Location:** `.aether/aether-utils.sh` various lines
24
+ **Location:** Various subcommands across `.aether/aether-utils.sh` and domain modules
89
25
  **Severity:** MEDIUM
90
- **Symptom:** Commands use hardcoded strings instead of error constants
91
- **Impact:** Inconsistent error handling, harder programmatic processing
92
- **Fix:** Standardize all to use `json_err "$E_*" "message"` pattern
26
+ **Status:** [Mostly FIXED in v2.1 -- Phase 10 error triage]
27
+ Phase 10 replaced ~110 lazy error suppressions with proper fallbacks and added `$E_*` constants to ~48 dangerous paths. A small number of uncommented `2>/dev/null` idioms remain (SUPPRESS:OK annotated).
93
28
 
94
29
  ### BUG-008: Missing error code in flag-add jq failure
95
- **Location:** `.aether/aether-utils.sh:856`
30
+ **Location:** `flag-add` subcommand in `.aether/utils/flag.sh`
96
31
  **Severity:** HIGH
97
- **Symptom:** Lock released but error code missing on jq failure
98
- **Impact:** Error response lacks proper error code
99
- **Fix:** Change to `json_err "$E_JSON_INVALID" "Failed to add flag"`
32
+ **Status:** [FIXED in v2.1 -- Phase 10 error triage + Phase 13 modularization]
33
+ `flag-add` now uses `$E_VALIDATION_FAILED`, `$E_JSON_INVALID`, and proper error handling throughout.
100
34
 
101
35
  ### BUG-009: Missing error codes in file checks
102
- **Location:** `.aether/aether-utils.sh:899, 933`
36
+ **Location:** `flag-acknowledge` and related subcommands in `.aether/utils/flag.sh`
103
37
  **Severity:** MEDIUM
104
- **Symptom:** File not found errors use hardcoded strings
105
- **Impact:** Inconsistent with other file not found errors
106
- **Fix:** Use `json_err "$E_FILE_NOT_FOUND" "..."`
38
+ **Status:** [FIXED in v2.1 -- Phase 10 error triage + Phase 13 modularization]
39
+ File-not-found errors now use `json_err "$E_FILE_NOT_FOUND" "..."` consistently.
107
40
 
108
41
  ### BUG-010: Missing error codes in context-update
109
- **Location:** `.aether/aether-utils.sh:1758+`
42
+ **Location:** `context-update` subcommand in `.aether/aether-utils.sh`
110
43
  **Severity:** MEDIUM
111
- **Symptom:** Various error paths lack error code constants
112
- **Impact:** Inconsistent error handling
44
+ **Status:** [FIXED in v2.1 -- Phase 10 error triage]
45
+ All error paths now use `$E_FILE_NOT_FOUND`, `$E_LOCK_FAILED`, and `$E_VALIDATION_FAILED` consistently.
113
46
 
114
47
  ### BUG-012: Missing error code in unknown command
115
- **Location:** `.aether/aether-utils.sh:2947`
48
+ **Location:** Default case (`*`) in `.aether/aether-utils.sh` dispatch
116
49
  **Severity:** LOW
117
- **Symptom:** Unknown command handler uses bare string
118
- **Impact:** Inconsistent error response
50
+ **Status:** [FIXED in v2.1 -- Phase 10 error triage]
51
+ Unknown command handler now uses `json_err "$E_VALIDATION_FAILED" "Unknown command: $cmd"`.
119
52
 
120
53
  ---
121
54
 
@@ -125,109 +58,37 @@ Documented issues from Oracle research findings. These are known limitations and
125
58
  **Location:** Multiple locations
126
59
  **Severity:** MEDIUM
127
60
  **Description:** Some `json_err` calls use hardcoded strings instead of constants
128
- **Pattern:** Commands added early use strings; later commands use constants
129
-
130
- ### ISSUE-002: Missing exec error handling — FIXED (Phase 18-02)
131
- **Location:** `.aether/aether-utils.sh:2132-2144`
132
- **Severity:** LOW
133
- **Description:** `model-get` and `model-list` use `exec` without fallback
134
- **Impact:** If exec fails, script continues to unknown command handler
135
- **Status:** FIXED — Phase 18-02: subprocess error handling added to model-get and model-list with structured E_* error codes on failure.
136
-
137
- ### ISSUE-003: Incomplete help command — FIXED (Phase 18-03)
138
- **Location:** `.aether/aether-utils.sh:106-111`
139
- **Severity:** LOW
140
- **Description:** Help command missing newer commands like queen-*, view-state-*, swarm-timing-*
141
- **Impact:** Users cannot discover all available commands
142
- **Status:** FIXED — Phase 18-03: help command sections key added with all command groups including Queen Commands, Model Routing, Swarm Operations, and all newer commands.
143
-
144
- ### ISSUE-004: Template path hardcoded to staging directory — FIXED (Phase 20)
145
- **Location:** `.aether/aether-utils.sh:2689`
146
- **Severity:** MEDIUM
147
- **Status:** FIXED — Phase 20: stale staging template path removed from queen-init lookup array. Template is now found via hub path (`~/.aether/system/templates/`) or dev repo path (`.aether/templates/`) or legacy hub fallback.
148
- **Description:** queen-init used a staging directory path that did not exist in npm installs
149
- **Impact:** ~~queen-init will fail when Aether is installed as npm package~~
150
- **~~Workaround:~~** ~~Use git clone instead of npm install~~ — no longer needed
61
+ **Status:** [Mostly FIXED in v2.1 -- Phase 10 error triage]
62
+ The majority of error paths now use `$E_*` constants. Remaining intentional suppressions are annotated with SUPPRESS:OK comments.
151
63
 
152
64
  ### ISSUE-005: Potential infinite loop in spawn-tree
153
- **Location:** `.aether/aether-utils.sh:402-448`, `spawn-tree.sh:222-263`
65
+ **Location:** `spawn-tree-depth` in `.aether/utils/spawn.sh`
154
66
  **Severity:** LOW
155
67
  **Description:** Edge case with circular parent chain could cause issues
156
68
  **Mitigation:** Safety limit of 5 exists
69
+ **Status:** Open -- low risk due to safety limit; code extracted to `spawn.sh` during Phase 13 modularization
157
70
 
158
71
  ### ISSUE-006: Fallback json_err incompatible
159
- **Location:** `.aether/aether-utils.sh:65-72`
72
+ **Location:** `.aether/aether-utils.sh` (lines ~65-72, fallback error handler)
160
73
  **Severity:** LOW
161
74
  **Description:** Fallback json_err doesn't accept error code parameter
162
75
  **Impact:** If error-handler.sh fails to load, error codes are lost
163
-
164
- ### ISSUE-007: Feature detection race condition — FIXED (Phase 18-01)
165
- **Location:** `.aether/aether-utils.sh:33-45`
166
- **Severity:** LOW
167
- **Description:** Feature detection runs before error handler fully sourced
168
- **Status:** FIXED — Phase 18-01 (ARCH-09): feature detection block moved after fallback json_err definition (line 68 -> 81) so all fallback infrastructure available when feature detection runs.
76
+ **Status:** Open -- low risk since error-handler.sh is a stable infrastructure module
169
77
 
170
78
  ---
171
79
 
172
80
  ## Architecture Gaps
173
81
 
174
- ### GAP-001: No schema version validation — FIXED (Phase 18-04)
175
- **Description:** Commands assume state structure without validating version
176
- **Impact:** Silent failures when state structure changes
177
- **Status:** FIXED — Phase 18-04: `_migrate_colony_state` added to validate-state colony; auto-migrates pre-3.0 state files to v3.0 (additive only), notifies via W_MIGRATED warning; corrupt state files backed up before error.
178
-
179
- ### GAP-002: No cleanup for stale spawn-tree entries — FIXED (Phase 18-01)
180
- **Description:** spawn-tree.txt grows indefinitely
181
- **Impact:** File could grow very large over many sessions
182
- **Status:** FIXED — Phase 18-01: `_rotate_spawn_tree` added to session-init; rotates spawn-tree.txt on each session start with timestamped archives; 5-archive cap; in-place truncation preserves tail -f file handles.
183
-
184
- ### GAP-003: No retry logic for failed spawns — RESOLVED (Phase 18-02)
185
- **Description:** Task tool calls don't have retry logic
186
- **Impact:** Transient failures cause build failures
187
- **Status:** RESOLVED — User decision: fail-fast with rich error context (Phase 18-02). Retry logic adds complexity without clear benefit; subprocess errors now emit structured E_* codes with actionable Try: suggestions, allowing callers to decide on retry strategy.
188
-
189
- ### GAP-004: Missing queen-* documentation — FIXED (Phase 18-03)
190
- **Description:** No docs for queen-init, queen-read, queen-promote
191
- **Impact:** Users cannot discover wisdom feedback loop
192
- **Status:** FIXED — Phase 18-03: queen-commands.md created in .aether/docs/; help command sections key added with Queen Commands section listing all three commands with descriptions.
193
-
194
- ### GAP-005: No validation of queen-read JSON output — FIXED (Phase 18-04)
195
- **Description:** queen-read builds JSON but doesn't validate before returning
196
- **Impact:** Could return malformed response
197
- **Status:** FIXED — Phase 18-04: Two validation gates added to queen-read: Gate 1 validates METADATA JSON before --argjson use; Gate 2 validates assembled result before json_ok. Both emit E_JSON_INVALID with actionable Try: suggestion.
198
-
199
- ### GAP-006: Missing queen-* command documentation — FIXED (Phase 18-03)
200
- **Description:** Duplicate of GAP-004 - no documentation exists
201
- **Impact:** Commands are undiscoverable
202
- **Status:** FIXED — Phase 18-03: See GAP-004.
203
-
204
82
  ### GAP-007: No error code standards documentation
205
- **Description:** Error codes exist but aren't documented
83
+ **Description:** Error codes exist but aren't documented for external consumers
206
84
  **Impact:** Developers don't know which codes to use
85
+ **Status:** Partially addressed -- `_aether_log_error` infrastructure added in Phase 10, but no standalone error code reference doc exists yet
207
86
 
208
87
  ### GAP-008: Missing error path test coverage
209
- **Description:** Error handling paths not tested
88
+ **Description:** Error handling paths not fully tested
210
89
  **Impact:** Bugs in error handling go undetected
211
-
212
- ### GAP-009: context-update has no file locking — FIXED (Phase 16)
213
- **Description:** Race condition possible during concurrent context updates
214
- **Status:** FIXED — Fixed in Phase 16: context-update wraps all 11 action handlers in a single acquire_lock/release_lock pair. Lock is held for the duration of the update and released on both success and error paths via EXIT trap. force-unlock subcommand added for emergency recovery.
215
- **Impact:** Potential data corruption
216
- **Regression test:** `tests/bash/test-lock-lifecycle.sh` — test_context_update_acquires_lock, test_force_unlock_clears_locks
217
-
218
- ### GAP-010: Missing error code standards documentation
219
- **Description:** Duplicate of GAP-007
220
-
221
- ---
222
-
223
- ## Workarounds Summary
224
-
225
- | Issue | Workaround |
226
- |-------|------------|
227
- | ~~Lock-related deadlocks (BUG-005, BUG-002)~~ | ~~Restart colony session~~ — FIXED in Phase 16 |
228
- | ~~Template path issue (ISSUE-004)~~ | ~~Use git clone instead of npm~~ — FIXED in Phase 20 |
229
- | Missing command docs (GAP-004) | Read source code directly |
90
+ **Status:** Partially addressed -- Phase 12 added state-api tests; 580+ tests now pass, but error-specific path coverage remains incomplete
230
91
 
231
92
  ---
232
93
 
233
- *Generated from Oracle Research findings - 2026-02-15*
94
+ *Generated from Oracle Research findings -- Updated 2026-03-24 during v2.1 documentation accuracy phase*
@@ -10,17 +10,31 @@ Pheromones are how you communicate with the colony. Instead of micromanaging ind
10
10
  - **Optional TTL** -- use `--ttl` flag for wall-clock expiration (e.g., `--ttl 2h` for 2 hours)
11
11
  - **Priority levels** determine worker attention: high (REDIRECT), normal (FOCUS), low (FEEDBACK)
12
12
  - **Expired signals** are filtered on read -- no cleanup process needed
13
+ - **Compact priming path** (`pheromone-prime --compact`) injects only top signals by priority/strength for low token usage
13
14
 
14
15
  Run `/ant:status` at any time to see all active pheromones.
15
16
 
16
17
  ---
17
18
 
19
+ ## How Signals Reach Workers
20
+
21
+ Workers do not independently read or query pheromone files. Instead, colony-prime handles signal delivery:
22
+
23
+ 1. **colony-prime assembles signals** via `pheromone-prime --compact`, collecting all active signals sorted by priority and strength
24
+ 2. **Signals are injected into the `prompt_section`** of the worker spawn context -- they become part of the worker's prompt, not something the worker looks up
25
+ 3. **Workers see signals as part of their instructions**, not by reading `.aether/data/pheromones.json` directly
26
+ 4. **Builder, Watcher, and Scout** have `pheromone_protocol` sections in their agent definitions (`.claude/agents/ant/`) that instruct them how to act on the injected signals
27
+
28
+ This injection model means pheromones influence worker behavior through prompt context, the same way any other instruction reaches a worker.
29
+
30
+ ---
31
+
18
32
  ## FOCUS -- Guide Attention
19
33
 
20
34
  **Command:** `/ant:focus "<area>"`
21
35
  **Priority:** normal | **Default expiration:** end of phase
22
36
 
23
- **What it does:** Tells the colony "pay extra attention here." Workers read FOCUS signals and weight this area higher in their task execution.
37
+ **What it does:** Tells the colony "pay extra attention here." FOCUS signals are injected into worker prompts via colony-prime, weighting the indicated area higher in task execution.
24
38
 
25
39
  ### When to use FOCUS
26
40
 
@@ -146,16 +160,16 @@ Auto-emitted signals have their `source` field set to indicate origin: `"worker:
146
160
 
147
161
  ## Signal Combinations
148
162
 
149
- Pheromones combine. Workers check all active signals and respond accordingly:
163
+ Pheromones combine. colony-prime injects all active signals into worker prompts, ordered by priority:
150
164
 
151
165
  | Combination | Effect |
152
166
  |-------------|--------|
153
- | FOCUS + FEEDBACK | Workers concentrate on the focused area and adjust approach based on feedback |
154
- | FOCUS + REDIRECT | Workers prioritize the focused area while avoiding the redirected pattern |
155
- | FEEDBACK + REDIRECT | Workers adjust approach (feedback) and avoid specific patterns (redirect) |
167
+ | FOCUS + FEEDBACK | The focused area is weighted higher and approach is adjusted based on feedback |
168
+ | FOCUS + REDIRECT | The focused area is prioritized while the redirected pattern is flagged for avoidance |
169
+ | FEEDBACK + REDIRECT | Approach adjustments (feedback) and avoidance patterns (redirect) are both injected |
156
170
  | All three | Full steering: attention (FOCUS), avoidance (REDIRECT), and adjustment (FEEDBACK) |
157
171
 
158
- **Priority processing:** Workers check high priority signals first, then normal, then low.
172
+ **Priority processing:** High priority signals appear first in the injected context, then normal, then low.
159
173
 
160
174
  ---
161
175
 
@@ -188,6 +202,70 @@ This ensures signals don't expire while you're away from the project.
188
202
 
189
203
  ---
190
204
 
205
+ ## Viewing Active Pheromones
206
+
207
+ **Command:** `/ant:pheromones [filter]`
208
+
209
+ Displays all active signals in a formatted table with:
210
+ - Signal type (FOCUS/REDIRECT/FEEDBACK)
211
+ - Current strength percentage (accounting for decay)
212
+ - Elapsed time since creation
213
+ - Remaining time before expiration
214
+
215
+ **Filters:**
216
+ - `/ant:pheromones` — Show all active signals
217
+ - `/ant:pheromones focus` — Show only FOCUS signals
218
+ - `/ant:pheromones redirect` — Show only REDIRECT signals
219
+ - `/ant:pheromones feedback` — Show only FEEDBACK signals
220
+ - `/ant:pheromones clear` — Clear expired/inactive signals
221
+
222
+ ---
223
+
224
+ ## Automatic Suggestions
225
+
226
+ The colony can analyze your codebase and suggest pheromones worth capturing.
227
+
228
+ **During builds:** At Step 4.2, the colony automatically analyzes the codebase and proposes relevant signals:
229
+ - Detects hardcoded values that should be configurable
230
+ - Finds error-prone patterns from the midden
231
+ - Identifies architectural constraints from directory structure
232
+ - Suggests FOCUS areas based on file modification patterns
233
+ - Proposes REDIRECT signals for anti-patterns
234
+
235
+ **Tick-to-approve UI:** When suggestions are found, the build pauses to show:
236
+
237
+ ```
238
+ 🎯 Proposed Pheromone 1 of 3
239
+
240
+ Type: FOCUS
241
+ Content: "Audio processing — maintain thread safety"
242
+ Confidence: High (3 similar patterns found)
243
+
244
+ [A]pprove [R]eject [S]kip [D]ismiss All
245
+ ```
246
+
247
+ **Actions:**
248
+ - **A**pprove — Creates the pheromone signal
249
+ - **R**eject — Discards this suggestion (logs reason)
250
+ - **S**kip — Defer decision (shown again next build)
251
+ - **D**ismiss All — Skip all remaining suggestions
252
+
253
+ ---
254
+
255
+ ## Signal Decay
256
+
257
+ Pheromones lose strength over time (natural decay):
258
+
259
+ | Signal Type | Half-life | Full decay |
260
+ |-------------|-----------|------------|
261
+ | FOCUS | 15 days | 30 days |
262
+ | REDIRECT | 30 days | 60 days |
263
+ | FEEDBACK | 45 days | 90 days |
264
+
265
+ Signals below 10% strength are considered inactive but remain in history.
266
+
267
+ ---
268
+
191
269
  ## Quick Reference
192
270
 
193
271
  | Signal | Command | Priority | Default Expiration | Use for |
@@ -203,3 +281,5 @@ This ensures signals don't expire while you're away from the project.
203
281
  - For gentle nudges: FEEDBACK (low priority)
204
282
  - For attention: FOCUS (normal priority)
205
283
  - For short-lived signals: use `--ttl` flag
284
+ - To see current signals: `/ant:pheromones`
285
+ - To clear expired: `/ant:pheromones clear`
@@ -0,0 +1,257 @@
1
+ # Pheromone Display Enhancement Plan
2
+
3
+ **Created:** 2026-02-21
4
+ **Status:** ✅ COMPLETED
5
+ **Priority:** High - User-requested feature gap
6
+
7
+ ---
8
+
9
+ ## Problem Statement
10
+
11
+ The pheromone system works but is invisible:
12
+
13
+ 1. **Council command exists** - `/ant:council` proposes pheromones via multiple choice
14
+ 2. **Pheromone signals exist** - Stored in `.aether/data/pheromones.json`
15
+ 3. **Colony-prime loads them** - But only shows a count like "Primed: 2 signals"
16
+ 4. **User never sees them** - The actual content is hidden
17
+
18
+ **User's exact words:** "I think it's important to create a significant plan here for how to display the pheromones that are being injected."
19
+
20
+ ---
21
+
22
+ ## What Exists (Don't Rebuild)
23
+
24
+ | Component | Location | Status |
25
+ |-----------|----------|--------|
26
+ | Council command | `.claude/commands/ant/council.md` | ✅ Works - multi-choice pheromone proposal |
27
+ | Focus command | `.claude/commands/ant/focus.md` | ✅ Works - emits FOCUS signal |
28
+ | Redirect command | `.claude/commands/ant/redirect.md` | ✅ Works - emits REDIRECT signal |
29
+ | Feedback command | `.claude/commands/ant/feedback.md` | ✅ Works - emits FEEDBACK signal |
30
+ | Pheromone storage | `.aether/data/pheromones.json` | ✅ Works - stores signals |
31
+ | Pheromone-prime | `aether-utils.sh:6211` | ✅ Works - loads signals with decay |
32
+ | Colony-prime | `aether-utils.sh:6337` | ✅ Works - combines wisdom + signals |
33
+ | Pheromone-count | `aether-utils.sh:6036` | ✅ Works - counts active signals |
34
+
35
+ ---
36
+
37
+ ## What's Missing
38
+
39
+ ### 1. **Pheromone Display Function** (aether-utils.sh)
40
+
41
+ A new `pheromone-display` function that outputs a formatted table:
42
+
43
+ ```
44
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
45
+ A C T I V E P H E R O M O N E S
46
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
47
+
48
+ 🎯 FOCUS (Pay attention here)
49
+ 1. [85%] "security" — injected 2d ago
50
+ 2. [72%] "performance optimization" — injected 5d ago
51
+
52
+ 🚫 REDIRECT (Hard constraints - DO NOT do this)
53
+ 1. [90%] "use ORM" — injected 1d ago
54
+ 2. [68%] "jQuery" — injected 7d ago
55
+
56
+ 💬 FEEDBACK (Guidance to consider)
57
+ 1. [65%] "prefer composition over inheritance" — injected 3d ago
58
+
59
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
60
+ Total: 5 active signals | Decay: FOCUS 30d, REDIRECT 60d, FEEDBACK 90d
61
+ ```
62
+
63
+ ### 2. **Build Command Enhancement** (build.md)
64
+
65
+ After Step 4 (Load Colony Context), add Step 4.1:
66
+
67
+ ```markdown
68
+ ### Step 4.1: Display Active Pheromones
69
+
70
+ Run using the Bash tool:
71
+ ```bash
72
+ bash .aether/aether-utils.sh pheromone-display
73
+ ```
74
+
75
+ This displays the formatted pheromone table to the user so they can see what guidance is active.
76
+ ```
77
+
78
+ ### 3. **Status Command Enhancement** (status.md)
79
+
80
+ Add pheromone summary to `/ant:status` output:
81
+
82
+ ```markdown
83
+ ### Pheromones Active
84
+
85
+ 🎯 FOCUS: 2 signals
86
+ 🚫 REDIRECT: 1 signal
87
+ 💬 FEEDBACK: 1 signal
88
+
89
+ Run /ant:pheromones for full details
90
+ ```
91
+
92
+ ### 4. **New Pheromones Command** (pheromones.md)
93
+
94
+ A dedicated command for viewing/managing pheromones:
95
+
96
+ ```markdown
97
+ ---
98
+ name: ant:pheromones
99
+ description: "🎯🐜🚫🐜💬 View and manage active pheromone signals"
100
+ ---
101
+
102
+ Usage:
103
+ /ant:pheromones # Display all active signals
104
+ /ant:pheromones focus # Show only FOCUS signals
105
+ /ant:pheromones redirect # Show only REDIRECT signals
106
+ /ant:pheromones feedback # Show only FEEDBACK signals
107
+ /ant:pheromones clear # Clear all expired signals
108
+ /ant:pheromones expire <id> # Expire a specific signal
109
+ ```
110
+
111
+ ---
112
+
113
+ ## Implementation Plan
114
+
115
+ ### Phase 1: pheromone-display Function (aether-utils.sh)
116
+
117
+ **Location:** After `pheromone-count` (~line 6058)
118
+
119
+ ```bash
120
+ pheromone-display)
121
+ # Display active pheromones in formatted table
122
+ # Usage: pheromone-display [type]
123
+ # type: Optional filter (focus/redirect/feedback)
124
+ # Returns: Formatted table string
125
+
126
+ pd_file="$DATA_DIR/pheromones.json"
127
+ pd_type="${1:-all}"
128
+ pd_now=$(date +%s)
129
+
130
+ if [[ ! -f "$pd_file" ]]; then
131
+ echo "No pheromones file found. Run /ant:init to initialize colony."
132
+ exit 0
133
+ fi
134
+
135
+ # Build display using same decay logic as pheromone-read
136
+ # ... (implementation details)
137
+ ```
138
+
139
+ **Output format:**
140
+ - Header with box drawing
141
+ - Grouped by type (FOCUS, REDIRECT, FEEDBACK)
142
+ - Each signal shows: effective strength %, content, age
143
+ - Footer with totals and decay info
144
+
145
+ ### Phase 2: Update build.md
146
+
147
+ Add Step 4.1 after colony-prime call to display pheromones visibly.
148
+
149
+ ### Phase 3: Update status.md
150
+
151
+ Add pheromone summary section after memory health display.
152
+
153
+ ### Phase 4: Create pheromones.md Command
154
+
155
+ New slash command for dedicated pheromone viewing and management.
156
+
157
+ ---
158
+
159
+ ## Display Locations
160
+
161
+ | Where | What | When |
162
+ |-------|------|------|
163
+ | `/ant:build` | Full table | Before spawning workers |
164
+ | `/ant:status` | Summary counts | In colony overview |
165
+ | `/ant:council` | After injection | Show what was added |
166
+ | `/ant:pheromones` | Full table + management | On demand |
167
+ | `/ant:continue` | Summary | After phase completion |
168
+
169
+ ---
170
+
171
+ ## Visual Design
172
+
173
+ ### Full Table (for /ant:build, /ant:pheromones)
174
+
175
+ ```
176
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
177
+ A C T I V E P H E R O M O N E S
178
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
179
+
180
+ 🎯 FOCUS (Pay attention here)
181
+ 1. [85%] "security"
182
+ └── injected 2d ago, expires in 28d
183
+ 2. [72%] "performance optimization"
184
+ └── injected 5d ago, expires in 25d
185
+
186
+ 🚫 REDIRECT (Hard constraints - DO NOT do this)
187
+ 1. [90%] "use ORM"
188
+ └── injected 1d ago, expires in 59d
189
+ 2. [68%] "jQuery"
190
+ └── injected 7d ago, expires in 53d
191
+
192
+ 💬 FEEDBACK (Guidance to consider)
193
+ 1. [65%] "prefer composition over inheritance"
194
+ └── injected 3d ago, expires in 87d
195
+
196
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
197
+ 5 signals active | Decay rates: FOCUS 30d, REDIRECT 60d, FEEDBACK 90d
198
+ ```
199
+
200
+ ### Summary (for /ant:status)
201
+
202
+ ```
203
+ ┌─────────────────────────────────────────────────────────┐
204
+ │ PHEROMONES │
205
+ ├─────────────────────────────────────────────────────────┤
206
+ │ 🎯 FOCUS: 2 🚫 REDIRECT: 1 💬 FEEDBACK: 1 │
207
+ │ │
208
+ │ Strongest: "use ORM" [90%] │
209
+ │ Newest: "security" [85%] - 2d ago │
210
+ │ │
211
+ │ Run /ant:pheromones for details │
212
+ └─────────────────────────────────────────────────────────┘
213
+ ```
214
+
215
+ ### Injection Confirmation (for /ant:council, /ant:focus, etc.)
216
+
217
+ ```
218
+ ✓ Pheromone injected:
219
+ 🎯 FOCUS: "security"
220
+ Strength: 0.8 | Expires: 30d
221
+
222
+ Active signals: 5
223
+ ```
224
+
225
+ ---
226
+
227
+ ## Files to Create/Modify
228
+
229
+ | File | Action | Purpose |
230
+ |------|--------|---------|
231
+ | `.aether/aether-utils.sh` | Modify | Add `pheromone-display` function |
232
+ | `.claude/commands/ant/build.md` | Modify | Add Step 4.1 - display pheromones |
233
+ | `.claude/commands/ant/status.md` | Modify | Add pheromone summary section |
234
+ | `.claude/commands/ant/pheromones.md` | Create | New command for viewing/managing |
235
+ | `.opencode/commands/ant/pheromones.md` | Create | OpenCode version |
236
+
237
+ ---
238
+
239
+ ## Testing
240
+
241
+ 1. Run `/ant:focus "test signal"` and verify it appears in display
242
+ 2. Run `/ant:redirect "avoid this"` and verify it appears in display
243
+ 3. Run `/ant:build 1` and verify pheromone table shows before workers spawn
244
+ 4. Run `/ant:status` and verify pheromone summary appears
245
+ 5. Test decay: Create signal, wait, verify strength decreases
246
+
247
+ ---
248
+
249
+ ## Success Criteria
250
+
251
+ - [x] `/ant:build` displays full pheromone table before spawning workers
252
+ - [x] `/ant:status` shows pheromone counts and strongest/newest
253
+ - [x] `/ant:pheromones` command exists for dedicated viewing
254
+ - [x] `/ant:council` displays what was injected after session (already existed)
255
+ - [x] All signal types (FOCUS/REDIRECT/FEEDBACK) visible
256
+ - [x] Decay strength shown as percentage
257
+ - [x] Age and expiry shown per signal