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.
- package/.aether/aether-utils.sh +3150 -3349
- package/.aether/agents-claude/aether-ambassador.md +265 -0
- package/.aether/agents-claude/aether-archaeologist.md +327 -0
- package/.aether/agents-claude/aether-architect.md +236 -0
- package/.aether/agents-claude/aether-auditor.md +271 -0
- package/.aether/agents-claude/aether-builder.md +224 -0
- package/.aether/agents-claude/aether-chaos.md +269 -0
- package/.aether/agents-claude/aether-chronicler.md +305 -0
- package/.aether/agents-claude/aether-gatekeeper.md +330 -0
- package/.aether/agents-claude/aether-includer.md +374 -0
- package/.aether/agents-claude/aether-keeper.md +272 -0
- package/.aether/agents-claude/aether-measurer.md +322 -0
- package/.aether/agents-claude/aether-oracle.md +237 -0
- package/.aether/agents-claude/aether-probe.md +211 -0
- package/.aether/agents-claude/aether-queen.md +330 -0
- package/.aether/agents-claude/aether-route-setter.md +178 -0
- package/.aether/agents-claude/aether-sage.md +418 -0
- package/.aether/agents-claude/aether-scout.md +179 -0
- package/.aether/agents-claude/aether-surveyor-disciplines.md +417 -0
- package/.aether/agents-claude/aether-surveyor-nest.md +355 -0
- package/.aether/agents-claude/aether-surveyor-pathogens.md +289 -0
- package/.aether/agents-claude/aether-surveyor-provisions.md +360 -0
- package/.aether/agents-claude/aether-tracker.md +270 -0
- package/.aether/agents-claude/aether-watcher.md +280 -0
- package/.aether/agents-claude/aether-weaver.md +248 -0
- package/.aether/commands/archaeology.yaml +653 -0
- package/.aether/commands/build.yaml +1221 -0
- package/.aether/commands/chaos.yaml +653 -0
- package/.aether/commands/colonize.yaml +438 -0
- package/.aether/commands/continue.yaml +1484 -0
- package/.aether/commands/council.yaml +304 -0
- package/.aether/commands/data-clean.yaml +80 -0
- package/.aether/commands/dream.yaml +275 -0
- package/.aether/commands/entomb.yaml +863 -0
- package/.aether/commands/export-signals.yaml +64 -0
- package/.aether/commands/feedback.yaml +158 -0
- package/.aether/commands/flag.yaml +160 -0
- package/.aether/commands/flags.yaml +177 -0
- package/.aether/commands/focus.yaml +112 -0
- package/.aether/commands/help.yaml +167 -0
- package/.aether/commands/history.yaml +137 -0
- package/.aether/commands/import-signals.yaml +79 -0
- package/.aether/commands/init.yaml +469 -0
- package/.aether/commands/insert-phase.yaml +98 -0
- package/.aether/commands/interpret.yaml +285 -0
- package/.aether/commands/lay-eggs.yaml +224 -0
- package/.aether/commands/maturity.yaml +122 -0
- package/.aether/commands/memory-details.yaml +74 -0
- package/.aether/commands/migrate-state.yaml +174 -0
- package/.aether/commands/oracle.yaml +1224 -0
- package/.aether/commands/organize.yaml +446 -0
- package/.aether/commands/patrol.yaml +621 -0
- package/.aether/commands/pause-colony.yaml +424 -0
- package/.aether/commands/phase.yaml +124 -0
- package/.aether/commands/pheromones.yaml +153 -0
- package/.aether/commands/plan.yaml +1313 -0
- package/.aether/commands/preferences.yaml +63 -0
- package/.aether/commands/redirect.yaml +123 -0
- package/.aether/commands/resume-colony.yaml +373 -0
- package/.aether/commands/resume.yaml +398 -0
- package/.aether/commands/run.yaml +193 -0
- package/.aether/commands/seal.yaml +1205 -0
- package/.aether/commands/skill-create.yaml +337 -0
- package/.aether/commands/status.yaml +364 -0
- package/.aether/commands/swarm.yaml +352 -0
- package/.aether/commands/tunnels.yaml +814 -0
- package/.aether/commands/update.yaml +131 -0
- package/.aether/commands/verify-castes.yaml +159 -0
- package/.aether/commands/watch.yaml +454 -0
- package/.aether/docs/INCIDENT_TEMPLATE.md +32 -0
- package/.aether/docs/QUEEN-SYSTEM.md +11 -11
- package/.aether/docs/README.md +32 -2
- package/.aether/docs/command-playbooks/README.md +23 -0
- package/.aether/docs/command-playbooks/build-complete.md +349 -0
- package/.aether/docs/command-playbooks/build-context.md +282 -0
- package/.aether/docs/command-playbooks/build-full.md +1682 -0
- package/.aether/docs/command-playbooks/build-prep.md +283 -0
- package/.aether/docs/command-playbooks/build-verify.md +405 -0
- package/.aether/docs/command-playbooks/build-wave.md +749 -0
- package/.aether/docs/command-playbooks/continue-advance.md +524 -0
- package/.aether/docs/command-playbooks/continue-finalize.md +447 -0
- package/.aether/docs/command-playbooks/continue-full.md +1724 -0
- package/.aether/docs/command-playbooks/continue-gates.md +686 -0
- package/.aether/docs/command-playbooks/continue-verify.md +406 -0
- package/.aether/docs/context-continuity.md +84 -0
- package/.aether/docs/disciplines/DISCIPLINES.md +9 -7
- package/.aether/docs/error-codes.md +1 -1
- package/.aether/docs/known-issues.md +34 -173
- package/.aether/docs/pheromones.md +86 -6
- package/.aether/docs/plans/pheromone-display-plan.md +257 -0
- package/.aether/docs/queen-commands.md +10 -9
- package/.aether/docs/source-of-truth-map.md +132 -0
- package/.aether/docs/xml-utilities.md +47 -0
- package/.aether/rules/aether-colony.md +23 -13
- package/.aether/scripts/incident-test-add.sh +47 -0
- package/.aether/scripts/weekly-audit.sh +79 -0
- package/.aether/skills/.index.json +649 -0
- package/.aether/skills/colony/.manifest.json +16 -0
- package/.aether/skills/colony/build-discipline/SKILL.md +78 -0
- package/.aether/skills/colony/colony-interaction/SKILL.md +56 -0
- package/.aether/skills/colony/colony-lifecycle/SKILL.md +77 -0
- package/.aether/skills/colony/colony-visuals/SKILL.md +112 -0
- package/.aether/skills/colony/context-management/SKILL.md +80 -0
- package/.aether/skills/colony/error-presentation/SKILL.md +99 -0
- package/.aether/skills/colony/pheromone-protocol/SKILL.md +79 -0
- package/.aether/skills/colony/pheromone-visibility/SKILL.md +81 -0
- package/.aether/skills/colony/state-safety/SKILL.md +84 -0
- package/.aether/skills/colony/worker-priming/SKILL.md +82 -0
- package/.aether/skills/domain/.manifest.json +24 -0
- package/.aether/skills/domain/README.md +33 -0
- package/.aether/skills/domain/django/SKILL.md +49 -0
- package/.aether/skills/domain/docker/SKILL.md +52 -0
- package/.aether/skills/domain/golang/SKILL.md +52 -0
- package/.aether/skills/domain/graphql/SKILL.md +51 -0
- package/.aether/skills/domain/html-css/SKILL.md +48 -0
- package/.aether/skills/domain/nextjs/SKILL.md +45 -0
- package/.aether/skills/domain/nodejs/SKILL.md +53 -0
- package/.aether/skills/domain/postgresql/SKILL.md +53 -0
- package/.aether/skills/domain/prisma/SKILL.md +59 -0
- package/.aether/skills/domain/python/SKILL.md +50 -0
- package/.aether/skills/domain/rails/SKILL.md +52 -0
- package/.aether/skills/domain/react/SKILL.md +45 -0
- package/.aether/skills/domain/rest-api/SKILL.md +58 -0
- package/.aether/skills/domain/svelte/SKILL.md +47 -0
- package/.aether/skills/domain/tailwind/SKILL.md +45 -0
- package/.aether/skills/domain/testing/SKILL.md +53 -0
- package/.aether/skills/domain/typescript/SKILL.md +58 -0
- package/.aether/skills/domain/vue/SKILL.md +49 -0
- package/.aether/templates/QUEEN.md.template +23 -41
- package/.aether/templates/colony-state-reset.jq.template +1 -0
- package/.aether/templates/colony-state.template.json +4 -0
- package/.aether/templates/learning-observations.template.json +6 -0
- package/.aether/templates/midden.template.json +13 -0
- package/.aether/templates/pheromones.template.json +6 -0
- package/.aether/templates/session.template.json +9 -0
- package/.aether/utils/atomic-write.sh +63 -17
- package/.aether/utils/chamber-utils.sh +145 -2
- package/.aether/utils/emoji-audit.sh +166 -0
- package/.aether/utils/error-handler.sh +21 -7
- package/.aether/utils/file-lock.sh +182 -27
- package/.aether/utils/flag.sh +267 -0
- package/.aether/utils/hive.sh +572 -0
- package/.aether/utils/learning.sh +1928 -0
- package/.aether/utils/midden.sh +342 -0
- package/.aether/utils/oracle/oracle.md +168 -0
- package/.aether/utils/oracle/oracle.sh +1023 -0
- package/.aether/utils/pheromone.sh +2029 -0
- package/.aether/utils/queen.sh +1698 -0
- package/.aether/utils/scan.sh +860 -0
- package/.aether/utils/semantic-cli.sh +10 -8
- package/.aether/utils/session.sh +552 -0
- package/.aether/utils/skills.sh +509 -0
- package/.aether/utils/spawn-tree.sh +103 -271
- package/.aether/utils/spawn.sh +260 -0
- package/.aether/utils/state-api.sh +199 -0
- package/.aether/utils/state-loader.sh +8 -6
- package/.aether/utils/suggest.sh +611 -0
- package/.aether/utils/swarm-display.sh +10 -1
- package/.aether/utils/swarm.sh +1004 -0
- package/.aether/utils/watch-spawn-tree.sh +11 -2
- package/.aether/utils/xml-compose.sh +2 -2
- package/.aether/utils/xml-convert.sh +9 -5
- package/.aether/utils/xml-core.sh +5 -9
- package/.aether/utils/xml-query.sh +4 -4
- package/.aether/workers.md +86 -67
- package/.claude/agents/ant/aether-ambassador.md +2 -1
- package/.claude/agents/ant/aether-archaeologist.md +6 -1
- package/.claude/agents/ant/aether-architect.md +236 -0
- package/.claude/agents/ant/aether-auditor.md +6 -1
- package/.claude/agents/ant/aether-builder.md +38 -1
- package/.claude/agents/ant/aether-chaos.md +2 -1
- package/.claude/agents/ant/aether-chronicler.md +1 -0
- package/.claude/agents/ant/aether-gatekeeper.md +6 -1
- package/.claude/agents/ant/aether-includer.md +1 -0
- package/.claude/agents/ant/aether-keeper.md +1 -0
- package/.claude/agents/ant/aether-measurer.md +6 -1
- package/.claude/agents/ant/aether-oracle.md +237 -0
- package/.claude/agents/ant/aether-probe.md +2 -1
- package/.claude/agents/ant/aether-queen.md +6 -1
- package/.claude/agents/ant/aether-route-setter.md +6 -1
- package/.claude/agents/ant/aether-sage.md +68 -3
- package/.claude/agents/ant/aether-scout.md +38 -1
- package/.claude/agents/ant/aether-surveyor-disciplines.md +2 -1
- package/.claude/agents/ant/aether-surveyor-nest.md +2 -1
- package/.claude/agents/ant/aether-surveyor-pathogens.md +2 -1
- package/.claude/agents/ant/aether-surveyor-provisions.md +2 -1
- package/.claude/agents/ant/aether-tracker.md +6 -1
- package/.claude/agents/ant/aether-watcher.md +37 -1
- package/.claude/agents/ant/aether-weaver.md +2 -1
- package/.claude/commands/ant/archaeology.md +1 -8
- package/.claude/commands/ant/build.md +43 -1159
- package/.claude/commands/ant/chaos.md +1 -14
- package/.claude/commands/ant/colonize.md +1 -14
- package/.claude/commands/ant/continue.md +40 -1026
- package/.claude/commands/ant/council.md +9 -16
- package/.claude/commands/ant/data-clean.md +81 -0
- package/.claude/commands/ant/dream.md +12 -9
- package/.claude/commands/ant/entomb.md +62 -87
- package/.claude/commands/ant/export-signals.md +57 -0
- package/.claude/commands/ant/feedback.md +18 -0
- package/.claude/commands/ant/flag.md +12 -0
- package/.claude/commands/ant/flags.md +22 -8
- package/.claude/commands/ant/focus.md +18 -0
- package/.claude/commands/ant/help.md +40 -8
- package/.claude/commands/ant/history.md +3 -0
- package/.claude/commands/ant/import-signals.md +71 -0
- package/.claude/commands/ant/init.md +316 -191
- package/.claude/commands/ant/insert-phase.md +101 -0
- package/.claude/commands/ant/interpret.md +11 -0
- package/.claude/commands/ant/lay-eggs.md +167 -158
- package/.claude/commands/ant/maturity.md +22 -11
- package/.claude/commands/ant/memory-details.md +77 -0
- package/.claude/commands/ant/migrate-state.md +6 -0
- package/.claude/commands/ant/oracle.md +317 -62
- package/.claude/commands/ant/organize.md +10 -5
- package/.claude/commands/ant/patrol.md +620 -0
- package/.claude/commands/ant/pause-colony.md +8 -22
- package/.claude/commands/ant/phase.md +26 -37
- package/.claude/commands/ant/pheromones.md +156 -0
- package/.claude/commands/ant/plan.md +175 -52
- package/.claude/commands/ant/preferences.md +65 -0
- package/.claude/commands/ant/redirect.md +18 -0
- package/.claude/commands/ant/resume-colony.md +34 -20
- package/.claude/commands/ant/resume.md +51 -7
- package/.claude/commands/ant/run.md +195 -0
- package/.claude/commands/ant/seal.md +497 -78
- package/.claude/commands/ant/skill-create.md +286 -0
- package/.claude/commands/ant/status.md +127 -1
- package/.claude/commands/ant/swarm.md +11 -23
- package/.claude/commands/ant/tunnels.md +1 -0
- package/.claude/commands/ant/update.md +58 -135
- package/.claude/commands/ant/verify-castes.md +90 -42
- package/.claude/commands/ant/watch.md +1 -0
- package/.opencode/agents/aether-ambassador.md +1 -1
- package/.opencode/agents/aether-architect.md +133 -0
- package/.opencode/agents/aether-builder.md +3 -3
- package/.opencode/agents/aether-oracle.md +137 -0
- package/.opencode/agents/aether-queen.md +1 -1
- package/.opencode/agents/aether-route-setter.md +1 -1
- package/.opencode/agents/aether-scout.md +1 -1
- package/.opencode/agents/aether-surveyor-disciplines.md +6 -1
- package/.opencode/agents/aether-surveyor-nest.md +6 -1
- package/.opencode/agents/aether-surveyor-pathogens.md +6 -1
- package/.opencode/agents/aether-surveyor-provisions.md +6 -1
- package/.opencode/agents/aether-tracker.md +1 -1
- package/.opencode/agents/aether-watcher.md +1 -1
- package/.opencode/agents/aether-weaver.md +1 -1
- package/.opencode/commands/ant/archaeology.md +7 -14
- package/.opencode/commands/ant/build.md +54 -88
- package/.opencode/commands/ant/chaos.md +7 -24
- package/.opencode/commands/ant/colonize.md +8 -17
- package/.opencode/commands/ant/continue.md +595 -66
- package/.opencode/commands/ant/council.md +11 -22
- package/.opencode/commands/ant/data-clean.md +77 -0
- package/.opencode/commands/ant/dream.md +15 -17
- package/.opencode/commands/ant/entomb.md +28 -18
- package/.opencode/commands/ant/export-signals.md +54 -0
- package/.opencode/commands/ant/feedback.md +24 -5
- package/.opencode/commands/ant/flag.md +16 -4
- package/.opencode/commands/ant/flags.md +24 -10
- package/.opencode/commands/ant/focus.md +22 -5
- package/.opencode/commands/ant/help.md +41 -8
- package/.opencode/commands/ant/history.md +9 -0
- package/.opencode/commands/ant/import-signals.md +68 -0
- package/.opencode/commands/ant/init.md +365 -156
- package/.opencode/commands/ant/insert-phase.md +107 -0
- package/.opencode/commands/ant/interpret.md +16 -0
- package/.opencode/commands/ant/lay-eggs.md +184 -112
- package/.opencode/commands/ant/maturity.md +18 -2
- package/.opencode/commands/ant/memory-details.md +83 -0
- package/.opencode/commands/ant/migrate-state.md +12 -0
- package/.opencode/commands/ant/oracle.md +322 -67
- package/.opencode/commands/ant/organize.md +14 -12
- package/.opencode/commands/ant/patrol.md +626 -0
- package/.opencode/commands/ant/pause-colony.md +12 -29
- package/.opencode/commands/ant/phase.md +30 -40
- package/.opencode/commands/ant/pheromones.md +162 -0
- package/.opencode/commands/ant/plan.md +184 -56
- package/.opencode/commands/ant/preferences.md +71 -0
- package/.opencode/commands/ant/redirect.md +22 -5
- package/.opencode/commands/ant/resume-colony.md +38 -27
- package/.opencode/commands/ant/resume.md +71 -20
- package/.opencode/commands/ant/run.md +201 -0
- package/.opencode/commands/ant/seal.md +230 -25
- package/.opencode/commands/ant/skill-create.md +63 -0
- package/.opencode/commands/ant/status.md +124 -31
- package/.opencode/commands/ant/swarm.md +3 -345
- package/.opencode/commands/ant/tunnels.md +3 -9
- package/.opencode/commands/ant/update.md +63 -127
- package/.opencode/commands/ant/verify-castes.md +96 -42
- package/.opencode/commands/ant/watch.md +7 -0
- package/CHANGELOG.md +278 -1
- package/README.md +188 -340
- package/bin/cli.js +236 -429
- package/bin/generate-commands.js +186 -0
- package/bin/generate-commands.sh +128 -89
- package/bin/lib/spawn-logger.js +0 -15
- package/bin/lib/update-transaction.js +285 -35
- package/bin/npx-install.js +178 -0
- package/bin/validate-package.sh +85 -3
- package/package.json +7 -3
- package/.aether/CONTEXT.md +0 -160
- package/.aether/docs/QUEEN.md +0 -84
- package/.aether/exchange/colony-registry.xml +0 -11
- package/.aether/exchange/pheromones.xml +0 -87
- package/.aether/exchange/queen-wisdom.xml +0 -14
- package/.aether/model-profiles.yaml +0 -100
- package/.aether/utils/spawn-with-model.sh +0 -56
- package/bin/lib/model-profiles.js +0 -445
- package/bin/lib/model-verify.js +0 -288
- package/bin/lib/proxy-health.js +0 -253
- 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/
|
|
10
|
+
**Location:** `flag-acknowledge` subcommand in `.aether/utils/flag.sh`
|
|
75
11
|
**Severity:** MEDIUM
|
|
76
|
-
**
|
|
77
|
-
|
|
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
|
|
16
|
+
**Location:** `atomic_write` in `.aether/utils/atomic-write.sh`
|
|
82
17
|
**Severity:** MEDIUM
|
|
83
|
-
**Symptom:** If JSON validation fails
|
|
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`
|
|
24
|
+
**Location:** Various subcommands across `.aether/aether-utils.sh` and domain modules
|
|
89
25
|
**Severity:** MEDIUM
|
|
90
|
-
**
|
|
91
|
-
|
|
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/
|
|
30
|
+
**Location:** `flag-add` subcommand in `.aether/utils/flag.sh`
|
|
96
31
|
**Severity:** HIGH
|
|
97
|
-
**
|
|
98
|
-
|
|
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/
|
|
36
|
+
**Location:** `flag-acknowledge` and related subcommands in `.aether/utils/flag.sh`
|
|
103
37
|
**Severity:** MEDIUM
|
|
104
|
-
**
|
|
105
|
-
|
|
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
|
|
42
|
+
**Location:** `context-update` subcommand in `.aether/aether-utils.sh`
|
|
110
43
|
**Severity:** MEDIUM
|
|
111
|
-
**
|
|
112
|
-
|
|
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
|
|
48
|
+
**Location:** Default case (`*`) in `.aether/aether-utils.sh` dispatch
|
|
116
49
|
**Severity:** LOW
|
|
117
|
-
**
|
|
118
|
-
|
|
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
|
-
**
|
|
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/
|
|
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
|
|
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
|
|
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."
|
|
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.
|
|
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 |
|
|
154
|
-
| FOCUS + REDIRECT |
|
|
155
|
-
| FEEDBACK + 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:**
|
|
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
|