aether-colony 3.1.4 → 3.1.15
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/.claude/commands/ant/archaeology.md +12 -0
- package/.claude/commands/ant/build.md +382 -319
- package/.claude/commands/ant/chaos.md +23 -1
- package/.claude/commands/ant/colonize.md +147 -87
- package/.claude/commands/ant/continue.md +213 -23
- package/.claude/commands/ant/council.md +22 -0
- package/.claude/commands/ant/dream.md +18 -0
- package/.claude/commands/ant/entomb.md +178 -6
- package/.claude/commands/ant/init.md +87 -13
- package/.claude/commands/ant/lay-eggs.md +45 -5
- package/.claude/commands/ant/oracle.md +82 -9
- package/.claude/commands/ant/organize.md +2 -2
- package/.claude/commands/ant/pause-colony.md +86 -28
- package/.claude/commands/ant/phase.md +26 -0
- package/.claude/commands/ant/plan.md +204 -111
- package/.claude/commands/ant/resume-colony.md +23 -1
- package/.claude/commands/ant/resume.md +159 -0
- package/.claude/commands/ant/seal.md +177 -3
- package/.claude/commands/ant/swarm.md +78 -97
- package/.claude/commands/ant/verify-castes.md +7 -7
- package/.claude/commands/ant/watch.md +17 -0
- package/.opencode/agents/aether-ambassador.md +97 -0
- package/.opencode/agents/aether-archaeologist.md +91 -0
- package/.opencode/agents/aether-architect.md +66 -0
- package/.opencode/agents/aether-auditor.md +111 -0
- package/.opencode/agents/aether-builder.md +28 -10
- package/.opencode/agents/aether-chaos.md +98 -0
- package/.opencode/agents/aether-chronicler.md +80 -0
- package/.opencode/agents/aether-gatekeeper.md +107 -0
- package/.opencode/agents/aether-guardian.md +107 -0
- package/.opencode/agents/aether-includer.md +108 -0
- package/.opencode/agents/aether-keeper.md +106 -0
- package/.opencode/agents/aether-measurer.md +119 -0
- package/.opencode/agents/aether-probe.md +91 -0
- package/.opencode/agents/aether-queen.md +72 -19
- package/.opencode/agents/aether-route-setter.md +85 -0
- package/.opencode/agents/aether-sage.md +98 -0
- package/.opencode/agents/aether-scout.md +33 -15
- package/.opencode/agents/aether-surveyor-disciplines.md +334 -0
- package/.opencode/agents/aether-surveyor-nest.md +272 -0
- package/.opencode/agents/aether-surveyor-pathogens.md +209 -0
- package/.opencode/agents/aether-surveyor-provisions.md +277 -0
- package/.opencode/agents/aether-tracker.md +91 -0
- package/.opencode/agents/aether-watcher.md +30 -12
- package/.opencode/agents/aether-weaver.md +87 -0
- package/.opencode/agents/workers.md +1034 -0
- package/.opencode/commands/ant/archaeology.md +44 -26
- package/.opencode/commands/ant/build.md +327 -295
- package/.opencode/commands/ant/chaos.md +32 -4
- package/.opencode/commands/ant/colonize.md +119 -93
- package/.opencode/commands/ant/continue.md +98 -10
- package/.opencode/commands/ant/council.md +28 -0
- package/.opencode/commands/ant/dream.md +24 -0
- package/.opencode/commands/ant/entomb.md +73 -1
- package/.opencode/commands/ant/feedback.md +8 -2
- package/.opencode/commands/ant/flag.md +9 -3
- package/.opencode/commands/ant/flags.md +8 -2
- package/.opencode/commands/ant/focus.md +8 -2
- package/.opencode/commands/ant/help.md +12 -0
- package/.opencode/commands/ant/init.md +49 -4
- package/.opencode/commands/ant/lay-eggs.md +30 -2
- package/.opencode/commands/ant/oracle.md +39 -7
- package/.opencode/commands/ant/organize.md +9 -3
- package/.opencode/commands/ant/pause-colony.md +54 -1
- package/.opencode/commands/ant/phase.md +36 -4
- package/.opencode/commands/ant/plan.md +225 -117
- package/.opencode/commands/ant/redirect.md +8 -2
- package/.opencode/commands/ant/resume-colony.md +51 -26
- package/.opencode/commands/ant/seal.md +76 -0
- package/.opencode/commands/ant/status.md +50 -20
- package/.opencode/commands/ant/swarm.md +108 -104
- package/.opencode/commands/ant/tunnels.md +107 -2
- package/CHANGELOG.md +21 -0
- package/README.md +199 -86
- package/bin/cli.js +142 -25
- package/bin/generate-commands.sh +100 -16
- package/bin/lib/caste-colors.js +5 -5
- package/bin/lib/errors.js +16 -0
- package/bin/lib/file-lock.js +279 -44
- package/bin/lib/state-sync.js +206 -23
- package/bin/lib/update-transaction.js +206 -24
- package/bin/sync-to-runtime.sh +129 -0
- package/package.json +2 -2
- package/runtime/CONTEXT.md +160 -0
- package/runtime/aether-utils.sh +1421 -55
- package/runtime/docs/AETHER-2.0-IMPLEMENTATION-PLAN.md +1343 -0
- package/runtime/docs/AETHER-PHEROMONE-SYSTEM-MASTER-SPEC.md +2642 -0
- package/runtime/docs/PHEROMONE-INJECTION.md +240 -0
- package/runtime/docs/PHEROMONE-INTEGRATION.md +192 -0
- package/runtime/docs/PHEROMONE-SYSTEM-DESIGN.md +426 -0
- package/runtime/docs/README.md +94 -0
- package/runtime/docs/VISUAL-OUTPUT-SPEC.md +219 -0
- package/runtime/docs/biological-reference.md +272 -0
- package/runtime/docs/codebase-review.md +399 -0
- package/runtime/docs/command-sync.md +164 -0
- package/runtime/docs/implementation-learnings.md +89 -0
- package/runtime/docs/known-issues.md +217 -0
- package/runtime/docs/namespace.md +148 -0
- package/runtime/docs/planning-discipline.md +159 -0
- package/runtime/lib/queen-utils.sh +729 -0
- package/runtime/model-profiles.yaml +100 -0
- package/runtime/recover.sh +136 -0
- package/runtime/templates/QUEEN.md.template +79 -0
- package/runtime/utils/atomic-write.sh +5 -5
- package/runtime/utils/chamber-utils.sh +6 -3
- package/runtime/utils/error-handler.sh +200 -0
- package/runtime/utils/queen-to-md.xsl +395 -0
- package/runtime/utils/spawn-tree.sh +428 -0
- package/runtime/utils/spawn-with-model.sh +56 -0
- package/runtime/utils/state-loader.sh +215 -0
- package/runtime/utils/swarm-display.sh +5 -5
- package/runtime/utils/watch-spawn-tree.sh +90 -22
- package/runtime/utils/xml-compose.sh +247 -0
- package/runtime/utils/xml-core.sh +186 -0
- package/runtime/utils/xml-utils.sh +2161 -0
- package/runtime/verification-loop.md +1 -1
- package/runtime/workers-new-castes.md +516 -0
- package/runtime/workers.md +20 -8
- package/.aether/visualizations/anthill-stages/brood-stable.txt +0 -26
- package/.aether/visualizations/anthill-stages/crowned-anthill.txt +0 -30
- package/.aether/visualizations/anthill-stages/first-mound.txt +0 -18
- package/.aether/visualizations/anthill-stages/open-chambers.txt +0 -24
- package/.aether/visualizations/anthill-stages/sealed-chambers.txt +0 -28
- package/.aether/visualizations/anthill-stages/ventilated-nest.txt +0 -27
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
# Known Issues and Workarounds
|
|
2
|
+
|
|
3
|
+
Documented issues from Oracle research findings. These are known limitations and bugs in the Aether system.
|
|
4
|
+
|
|
5
|
+
---
|
|
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
|
+
- `runtime/**/*`, `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
|
|
37
|
+
**Location:** `.aether/aether-utils.sh:1022`
|
|
38
|
+
**Severity:** HIGH
|
|
39
|
+
**Symptom:** If jq command fails during flag resolution, lock is never released
|
|
40
|
+
**Impact:** Deadlock on flags.json if jq fails (malformed JSON, disk full, etc.)
|
|
41
|
+
**Workaround:** Restart the colony session if commands hang on flag operations
|
|
42
|
+
**Fix:** Add error handling with lock release before json_err
|
|
43
|
+
|
|
44
|
+
### BUG-011: Missing error handling in flag-auto-resolve jq
|
|
45
|
+
**Location:** `.aether/aether-utils.sh:1022`
|
|
46
|
+
**Severity:** HIGH
|
|
47
|
+
**Symptom:** jq failure during auto-resolve not handled
|
|
48
|
+
**Impact:** Combined with BUG-005, causes deadlock
|
|
49
|
+
**Fix:** Add `|| { release_lock; json_err ... }` pattern
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Medium Priority Issues
|
|
54
|
+
|
|
55
|
+
### BUG-002: Missing release_lock in flag-add error path
|
|
56
|
+
**Location:** `.aether/aether-utils.sh:814`
|
|
57
|
+
**Severity:** MEDIUM
|
|
58
|
+
**Symptom:** If acquire_lock succeeds but jq fails, lock is never released
|
|
59
|
+
**Impact:** Potential deadlock on file operations
|
|
60
|
+
**Fix:** Use trap-based cleanup or ensure release_lock in all exit paths
|
|
61
|
+
|
|
62
|
+
### BUG-003: Race condition in backup creation
|
|
63
|
+
**Location:** `.aether/utils/atomic-write.sh:75`
|
|
64
|
+
**Severity:** MEDIUM
|
|
65
|
+
**Symptom:** Backup created AFTER temp file validation but BEFORE atomic move
|
|
66
|
+
**Impact:** If process crashes between validation and backup, inconsistent state
|
|
67
|
+
**Fix:** Create backup BEFORE validation, or use transactional approach
|
|
68
|
+
|
|
69
|
+
### BUG-004: Missing error code in flag-acknowledge
|
|
70
|
+
**Location:** `.aether/aether-utils.sh:930`
|
|
71
|
+
**Severity:** MEDIUM
|
|
72
|
+
**Symptom:** Uses hardcoded string instead of `$E_VALIDATION_FAILED`
|
|
73
|
+
**Impact:** Inconsistent error handling
|
|
74
|
+
**Fix:** Change to `json_err "$E_VALIDATION_FAILED" "Usage: ..."`
|
|
75
|
+
|
|
76
|
+
### BUG-006: No lock release on JSON validation failure
|
|
77
|
+
**Location:** `.aether/utils/atomic-write.sh:66`
|
|
78
|
+
**Severity:** MEDIUM
|
|
79
|
+
**Symptom:** If JSON validation fails, temp file cleaned but lock not released
|
|
80
|
+
**Impact:** Lock remains held if caller had acquired it
|
|
81
|
+
**Fix:** Document lock ownership contract clearly
|
|
82
|
+
|
|
83
|
+
### BUG-007: 17+ instances of missing error codes
|
|
84
|
+
**Location:** `.aether/aether-utils.sh` various lines
|
|
85
|
+
**Severity:** MEDIUM
|
|
86
|
+
**Symptom:** Commands use hardcoded strings instead of error constants
|
|
87
|
+
**Impact:** Inconsistent error handling, harder programmatic processing
|
|
88
|
+
**Fix:** Standardize all to use `json_err "$E_*" "message"` pattern
|
|
89
|
+
|
|
90
|
+
### BUG-008: Missing error code in flag-add jq failure
|
|
91
|
+
**Location:** `.aether/aether-utils.sh:856`
|
|
92
|
+
**Severity:** HIGH
|
|
93
|
+
**Symptom:** Lock released but error code missing on jq failure
|
|
94
|
+
**Impact:** Error response lacks proper error code
|
|
95
|
+
**Fix:** Change to `json_err "$E_JSON_INVALID" "Failed to add flag"`
|
|
96
|
+
|
|
97
|
+
### BUG-009: Missing error codes in file checks
|
|
98
|
+
**Location:** `.aether/aether-utils.sh:899, 933`
|
|
99
|
+
**Severity:** MEDIUM
|
|
100
|
+
**Symptom:** File not found errors use hardcoded strings
|
|
101
|
+
**Impact:** Inconsistent with other file not found errors
|
|
102
|
+
**Fix:** Use `json_err "$E_FILE_NOT_FOUND" "..."`
|
|
103
|
+
|
|
104
|
+
### BUG-010: Missing error codes in context-update
|
|
105
|
+
**Location:** `.aether/aether-utils.sh:1758+`
|
|
106
|
+
**Severity:** MEDIUM
|
|
107
|
+
**Symptom:** Various error paths lack error code constants
|
|
108
|
+
**Impact:** Inconsistent error handling
|
|
109
|
+
|
|
110
|
+
### BUG-012: Missing error code in unknown command
|
|
111
|
+
**Location:** `.aether/aether-utils.sh:2947`
|
|
112
|
+
**Severity:** LOW
|
|
113
|
+
**Symptom:** Unknown command handler uses bare string
|
|
114
|
+
**Impact:** Inconsistent error response
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Architecture Issues
|
|
119
|
+
|
|
120
|
+
### ISSUE-001: Inconsistent error code usage
|
|
121
|
+
**Location:** Multiple locations
|
|
122
|
+
**Severity:** MEDIUM
|
|
123
|
+
**Description:** Some `json_err` calls use hardcoded strings instead of constants
|
|
124
|
+
**Pattern:** Commands added early use strings; later commands use constants
|
|
125
|
+
|
|
126
|
+
### ISSUE-002: Missing exec error handling
|
|
127
|
+
**Location:** `.aether/aether-utils.sh:2132-2144`
|
|
128
|
+
**Severity:** LOW
|
|
129
|
+
**Description:** `model-get` and `model-list` use `exec` without fallback
|
|
130
|
+
**Impact:** If exec fails, script continues to unknown command handler
|
|
131
|
+
|
|
132
|
+
### ISSUE-003: Incomplete help command
|
|
133
|
+
**Location:** `.aether/aether-utils.sh:106-111`
|
|
134
|
+
**Severity:** LOW
|
|
135
|
+
**Description:** Help command missing newer commands like queen-*, view-state-*, swarm-timing-*
|
|
136
|
+
**Impact:** Users cannot discover all available commands
|
|
137
|
+
|
|
138
|
+
### ISSUE-004: Template path hardcoded to runtime/
|
|
139
|
+
**Location:** `.aether/aether-utils.sh:2689`
|
|
140
|
+
**Severity:** MEDIUM
|
|
141
|
+
**Description:** queen-init uses runtime/ directory which may not exist in npm installs
|
|
142
|
+
**Impact:** queen-init will fail when Aether is installed as npm package
|
|
143
|
+
**Workaround:** Use git clone instead of npm install
|
|
144
|
+
|
|
145
|
+
### ISSUE-005: Potential infinite loop in spawn-tree
|
|
146
|
+
**Location:** `.aether/aether-utils.sh:402-448`, `spawn-tree.sh:222-263`
|
|
147
|
+
**Severity:** LOW
|
|
148
|
+
**Description:** Edge case with circular parent chain could cause issues
|
|
149
|
+
**Mitigation:** Safety limit of 5 exists
|
|
150
|
+
|
|
151
|
+
### ISSUE-006: Fallback json_err incompatible
|
|
152
|
+
**Location:** `.aether/aether-utils.sh:65-72`
|
|
153
|
+
**Severity:** LOW
|
|
154
|
+
**Description:** Fallback json_err doesn't accept error code parameter
|
|
155
|
+
**Impact:** If error-handler.sh fails to load, error codes are lost
|
|
156
|
+
|
|
157
|
+
### ISSUE-007: Feature detection race condition
|
|
158
|
+
**Location:** `.aether/aether-utils.sh:33-45`
|
|
159
|
+
**Severity:** LOW
|
|
160
|
+
**Description:** Feature detection runs before error handler fully sourced
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Architecture Gaps
|
|
165
|
+
|
|
166
|
+
### GAP-001: No schema version validation
|
|
167
|
+
**Description:** Commands assume state structure without validating version
|
|
168
|
+
**Impact:** Silent failures when state structure changes
|
|
169
|
+
|
|
170
|
+
### GAP-002: No cleanup for stale spawn-tree entries
|
|
171
|
+
**Description:** spawn-tree.txt grows indefinitely
|
|
172
|
+
**Impact:** File could grow very large over many sessions
|
|
173
|
+
|
|
174
|
+
### GAP-003: No retry logic for failed spawns
|
|
175
|
+
**Description:** Task tool calls don't have retry logic
|
|
176
|
+
**Impact:** Transient failures cause build failures
|
|
177
|
+
|
|
178
|
+
### GAP-004: Missing queen-* documentation
|
|
179
|
+
**Description:** No docs for queen-init, queen-read, queen-promote
|
|
180
|
+
**Impact:** Users cannot discover wisdom feedback loop
|
|
181
|
+
|
|
182
|
+
### GAP-005: No validation of queen-read JSON output
|
|
183
|
+
**Description:** queen-read builds JSON but doesn't validate before returning
|
|
184
|
+
**Impact:** Could return malformed response
|
|
185
|
+
|
|
186
|
+
### GAP-006: Missing queen-* command documentation
|
|
187
|
+
**Description:** Duplicate of GAP-004 - no documentation exists
|
|
188
|
+
**Impact:** Commands are undiscoverable
|
|
189
|
+
|
|
190
|
+
### GAP-007: No error code standards documentation
|
|
191
|
+
**Description:** Error codes exist but aren't documented
|
|
192
|
+
**Impact:** Developers don't know which codes to use
|
|
193
|
+
|
|
194
|
+
### GAP-008: Missing error path test coverage
|
|
195
|
+
**Description:** Error handling paths not tested
|
|
196
|
+
**Impact:** Bugs in error handling go undetected
|
|
197
|
+
|
|
198
|
+
### GAP-009: context-update has no file locking
|
|
199
|
+
**Description:** Race condition possible during concurrent context updates
|
|
200
|
+
**Impact:** Potential data corruption
|
|
201
|
+
|
|
202
|
+
### GAP-010: Missing error code standards documentation
|
|
203
|
+
**Description:** Duplicate of GAP-007
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Workarounds Summary
|
|
208
|
+
|
|
209
|
+
| Issue | Workaround |
|
|
210
|
+
|-------|------------|
|
|
211
|
+
| Lock-related deadlocks (BUG-005, BUG-002) | Restart colony session |
|
|
212
|
+
| Template path issue (ISSUE-004) | Use git clone instead of npm |
|
|
213
|
+
| Missing command docs (GAP-004) | Read source code directly |
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
*Generated from Oracle Research findings - 2026-02-15*
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Namespace Distinctiveness -- Command System
|
|
2
|
+
|
|
3
|
+
This document explains how Aether's command namespace (`ant`) is distinct from other agent namespaces in the global Claude Code configuration, ensuring bulletproof isolation and preventing command collisions.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
Aether uses a directory-based command namespace system that is distinct from other agent systems. The namespace is designed to be bulletproof against collisions with other agent frameworks.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Existing Agent Namespaces
|
|
14
|
+
|
|
15
|
+
The global Claude Code commands directory (`~/.claude/commands/`) contains multiple agent namespaces:
|
|
16
|
+
|
|
17
|
+
| Namespace | Type | Location | Example Commands |
|
|
18
|
+
|-----------|------|----------|-------------------|
|
|
19
|
+
| `ant` | Directory | `ant/` | `/ant:build`, `/ant:plan`, `/ant:focus` |
|
|
20
|
+
| `cds` | Directory | `cds/` | `/cds:new-project`, `/cds:execute-phase` |
|
|
21
|
+
| `mds` | Directory | `mds/` | `/mds:build`, `/mds:plan`, `/mds:test` |
|
|
22
|
+
| `st:` | Prefix | Root files | `/st:caption`, `/st:research` |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## How Commands Are Invoked
|
|
27
|
+
|
|
28
|
+
### Claude Code (Slash Commands)
|
|
29
|
+
|
|
30
|
+
Claude Code uses a slash-based command syntax with namespace prefixing:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
/ant:build 1 # Aether build command
|
|
34
|
+
/ant:focus "auth" # Aether focus command
|
|
35
|
+
/ant:plan # Aether plan command
|
|
36
|
+
|
|
37
|
+
/cds:new-project "myapp" # Claude Development System
|
|
38
|
+
/mds:build # MDS system
|
|
39
|
+
/st:caption "image.png" # ST system (prefix in filename)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Format:** `/<namespace>:<command> <arguments>`
|
|
43
|
+
|
|
44
|
+
### OpenCode
|
|
45
|
+
|
|
46
|
+
OpenCode uses a different syntax with namespace prefixes:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
mds:ant:build 1 # Build using Aether in OpenCode
|
|
50
|
+
mds:cds:new-project myapp # CDS in OpenCode
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Format:** `<tool>:<namespace>:<command> <arguments>`
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Why 'ant' Won't Collide
|
|
58
|
+
|
|
59
|
+
### 1. Directory-Based Isolation
|
|
60
|
+
|
|
61
|
+
The `ant` namespace is stored in a dedicated directory (`~/.claude/commands/ant/`). This provides:
|
|
62
|
+
|
|
63
|
+
- **Physical separation**: Files exist in a distinct directory, not mixed with other commands
|
|
64
|
+
- **Clear ownership**: The `ant/` directory is explicitly owned by Aether
|
|
65
|
+
- **No filename conflicts**: Each command is a separate file in the `ant/` subdirectory
|
|
66
|
+
|
|
67
|
+
### 2. Unique Naming Convention
|
|
68
|
+
|
|
69
|
+
Aether commands use biological/colony metaphors that don't overlap with other systems:
|
|
70
|
+
|
|
71
|
+
| Aether Commands | Other Systems |
|
|
72
|
+
|-----------------|---------------|
|
|
73
|
+
| `/ant:build` | `/cds:execute-phase` |
|
|
74
|
+
| `/ant:plan` | `/mds:plan` |
|
|
75
|
+
| `/ant:focus` | `/st:research` |
|
|
76
|
+
| `/ant:colonize` | `/cds:new-milestone` |
|
|
77
|
+
|
|
78
|
+
**Key distinction:** The `ant:` prefix is unique to Aether. No other agent system uses this prefix.
|
|
79
|
+
|
|
80
|
+
### 3. File Extension Pattern
|
|
81
|
+
|
|
82
|
+
Aether commands are `.md` files within the `ant/` directory:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
.claude/commands/ant/build.md # Invoked as /ant:build
|
|
86
|
+
.claude/commands/ant/plan.md # Invoked as /ant:plan
|
|
87
|
+
.claude/commands/ant/focus.md # Invoked as /ant:focus
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
This is distinct from:
|
|
91
|
+
- `st:*` commands which use prefixes in filenames (e.g., `st:caption.md`)
|
|
92
|
+
- Root-level commands which have no namespace prefix (e.g., `create-prompt.md`)
|
|
93
|
+
|
|
94
|
+
### 4. Sync Mechanism Provides Safety
|
|
95
|
+
|
|
96
|
+
The Aether CLI (`bin/cli.js`) implements hash-based idempotent sync:
|
|
97
|
+
|
|
98
|
+
- **Source**: `.claude/commands/ant/` in the package
|
|
99
|
+
- **Destination**: `~/.aether/commands/claude/` (hub) and `~/.claude/commands/ant/` (global)
|
|
100
|
+
- **Behavior**: Files are only copied when content changes (hash comparison)
|
|
101
|
+
- **Cleanup**: Stale files are automatically removed
|
|
102
|
+
|
|
103
|
+
This ensures:
|
|
104
|
+
- Local modifications are preserved
|
|
105
|
+
- Only Aether-owned files exist in the `ant/` directory
|
|
106
|
+
- No cross-contamination from other namespaces
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Collision Prevention Checklist
|
|
111
|
+
|
|
112
|
+
When adding new commands to Aether, verify:
|
|
113
|
+
|
|
114
|
+
- [ ] Command file is in `.claude/commands/ant/` directory
|
|
115
|
+
- [ ] Filename uses lowercase alphanumeric with hyphens (e.g., `build.md`)
|
|
116
|
+
- [ ] Frontmatter uses `ant:` prefix (e.g., `name: ant:build`)
|
|
117
|
+
- [ ] No naming overlap with existing commands in `cds/`, `mds/`, or root
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Command Count
|
|
122
|
+
|
|
123
|
+
| Namespace | Command Count | Files |
|
|
124
|
+
|-----------|---------------|-------|
|
|
125
|
+
| `ant` | 29 commands | `ant/*.md` |
|
|
126
|
+
| `cds` | 20 commands | `cds/*.md` |
|
|
127
|
+
| `mds` | 19 commands | `mds/*.md` |
|
|
128
|
+
| `st:` | 13 commands | `st:*.md` |
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Best Practices
|
|
133
|
+
|
|
134
|
+
1. **Never modify commands outside the `ant/` directory** - This maintains clear ownership
|
|
135
|
+
2. **Use the sync mechanism** - Let `aether-cli` handle global distribution
|
|
136
|
+
3. **Follow naming conventions** - Use lowercase, hyphens, biological metaphors
|
|
137
|
+
4. **Keep commands atomic** - Each command should do one thing well
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Summary
|
|
142
|
+
|
|
143
|
+
The `ant` namespace is bulletproof because:
|
|
144
|
+
|
|
145
|
+
1. **Directory isolation** - Commands live in `~/.claude/commands/ant/`, separate from other namespaces
|
|
146
|
+
2. **Unique prefix** - `/ant:` is exclusively used by Aether
|
|
147
|
+
3. **Hash-based sync** - Idempotent updates prevent drift and contamination
|
|
148
|
+
4. **Clear ownership** - No other system uses the `ant` prefix or directory
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# Planning Discipline
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Write comprehensive implementation plans with bite-sized tasks, assuming workers have zero context. Each task should be one action (2-5 minutes of work).
|
|
6
|
+
|
|
7
|
+
## Core Principles
|
|
8
|
+
|
|
9
|
+
- **DRY** - Don't Repeat Yourself
|
|
10
|
+
- **YAGNI** - You Aren't Gonna Need It
|
|
11
|
+
- **TDD** - Test-Driven Development (test first, always)
|
|
12
|
+
- **Frequent Commits** - One commit per feature/fix
|
|
13
|
+
|
|
14
|
+
## Bite-Sized Task Granularity
|
|
15
|
+
|
|
16
|
+
**Each step is ONE action:**
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
"Write the failing test" - step
|
|
20
|
+
"Run it to make sure it fails" - step
|
|
21
|
+
"Implement the minimal code to make the test pass" - step
|
|
22
|
+
"Run the tests and make sure they pass" - step
|
|
23
|
+
"Commit" - step
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**NOT acceptable:**
|
|
27
|
+
- "Implement authentication with tests" (too big)
|
|
28
|
+
- "Add validation" (too vague)
|
|
29
|
+
- "Set up the project" (needs breakdown)
|
|
30
|
+
|
|
31
|
+
## Task Structure
|
|
32
|
+
|
|
33
|
+
Each task should include:
|
|
34
|
+
|
|
35
|
+
### 1. Files Section
|
|
36
|
+
|
|
37
|
+
```markdown
|
|
38
|
+
**Files:**
|
|
39
|
+
- Create: `exact/path/to/file.py`
|
|
40
|
+
- Modify: `exact/path/to/existing.py:123-145`
|
|
41
|
+
- Test: `tests/exact/path/to/test.py`
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Always use exact paths. No "somewhere in src/" ambiguity.
|
|
45
|
+
|
|
46
|
+
### 2. Steps with TDD Flow
|
|
47
|
+
|
|
48
|
+
```markdown
|
|
49
|
+
**Step 1: Write the failing test**
|
|
50
|
+
|
|
51
|
+
\`\`\`python
|
|
52
|
+
def test_specific_behavior():
|
|
53
|
+
result = function(input)
|
|
54
|
+
assert result == expected
|
|
55
|
+
\`\`\`
|
|
56
|
+
|
|
57
|
+
**Step 2: Run test to verify it fails**
|
|
58
|
+
|
|
59
|
+
Run: `pytest tests/path/test.py::test_name -v`
|
|
60
|
+
Expected: FAIL with "function not defined"
|
|
61
|
+
|
|
62
|
+
**Step 3: Write minimal implementation**
|
|
63
|
+
|
|
64
|
+
\`\`\`python
|
|
65
|
+
def function(input):
|
|
66
|
+
return expected
|
|
67
|
+
\`\`\`
|
|
68
|
+
|
|
69
|
+
**Step 4: Run test to verify it passes**
|
|
70
|
+
|
|
71
|
+
Run: `pytest tests/path/test.py::test_name -v`
|
|
72
|
+
Expected: PASS
|
|
73
|
+
|
|
74
|
+
**Step 5: Commit**
|
|
75
|
+
|
|
76
|
+
\`\`\`bash
|
|
77
|
+
git add tests/path/test.py src/path/file.py
|
|
78
|
+
git commit -m "feat: add specific feature"
|
|
79
|
+
\`\`\`
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 3. Expected Output
|
|
83
|
+
|
|
84
|
+
For every command, specify expected output:
|
|
85
|
+
|
|
86
|
+
```markdown
|
|
87
|
+
Run: `npm test`
|
|
88
|
+
Expected: 47 passing, 0 failing
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Not just "run tests" - specify what success looks like.
|
|
92
|
+
|
|
93
|
+
## Phase Structure
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
### Phase N: [Component Name]
|
|
97
|
+
|
|
98
|
+
**Goal:** [One sentence describing what this phase achieves]
|
|
99
|
+
|
|
100
|
+
**Dependencies:** [What must exist before this phase]
|
|
101
|
+
|
|
102
|
+
**Tasks:**
|
|
103
|
+
|
|
104
|
+
#### Task N.1: [Specific action]
|
|
105
|
+
|
|
106
|
+
**Files:**
|
|
107
|
+
- Create: `src/components/Button.tsx`
|
|
108
|
+
- Test: `tests/components/Button.test.tsx`
|
|
109
|
+
|
|
110
|
+
**Steps:**
|
|
111
|
+
(TDD steps as above)
|
|
112
|
+
|
|
113
|
+
**Success Criteria:**
|
|
114
|
+
- Tests pass for Button component
|
|
115
|
+
- Component renders without errors
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Quality Checks
|
|
119
|
+
|
|
120
|
+
Before a plan is complete, verify:
|
|
121
|
+
|
|
122
|
+
1. **Exact paths** - Every file reference is complete path
|
|
123
|
+
2. **Complete code** - No "add appropriate code" placeholders
|
|
124
|
+
3. **Expected outputs** - Every command has expected result
|
|
125
|
+
4. **TDD flow** - Test before implementation for each feature
|
|
126
|
+
5. **No assumptions** - Worker could execute with zero context
|
|
127
|
+
6. **Commit points** - Clear where to commit
|
|
128
|
+
|
|
129
|
+
## Integration with Colony
|
|
130
|
+
|
|
131
|
+
The Route-Setter Ant follows this discipline when generating plans.
|
|
132
|
+
|
|
133
|
+
Each task in `plan.phases[N].tasks` should be:
|
|
134
|
+
- Executable in 2-5 minutes
|
|
135
|
+
- Self-contained with file paths
|
|
136
|
+
- Verifiable with specific success criteria
|
|
137
|
+
|
|
138
|
+
## Red Flags
|
|
139
|
+
|
|
140
|
+
**Never in a plan:**
|
|
141
|
+
- "Add tests" (which tests? for what?)
|
|
142
|
+
- "Implement feature" (what specifically?)
|
|
143
|
+
- "Update file" (which file? what changes?)
|
|
144
|
+
- "Handle edge cases" (which cases?)
|
|
145
|
+
|
|
146
|
+
**Always in a plan:**
|
|
147
|
+
- Exact file paths
|
|
148
|
+
- Complete code snippets
|
|
149
|
+
- Exact commands to run
|
|
150
|
+
- Expected outputs/results
|
|
151
|
+
- One action per step
|
|
152
|
+
|
|
153
|
+
## Why This Matters
|
|
154
|
+
|
|
155
|
+
- Workers can execute without asking questions
|
|
156
|
+
- Progress is measurable (step by step)
|
|
157
|
+
- Debugging is easier (clear steps to trace)
|
|
158
|
+
- Commits are atomic and meaningful
|
|
159
|
+
- Quality is built in (TDD from start)
|