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.
Files changed (124) hide show
  1. package/.claude/commands/ant/archaeology.md +12 -0
  2. package/.claude/commands/ant/build.md +382 -319
  3. package/.claude/commands/ant/chaos.md +23 -1
  4. package/.claude/commands/ant/colonize.md +147 -87
  5. package/.claude/commands/ant/continue.md +213 -23
  6. package/.claude/commands/ant/council.md +22 -0
  7. package/.claude/commands/ant/dream.md +18 -0
  8. package/.claude/commands/ant/entomb.md +178 -6
  9. package/.claude/commands/ant/init.md +87 -13
  10. package/.claude/commands/ant/lay-eggs.md +45 -5
  11. package/.claude/commands/ant/oracle.md +82 -9
  12. package/.claude/commands/ant/organize.md +2 -2
  13. package/.claude/commands/ant/pause-colony.md +86 -28
  14. package/.claude/commands/ant/phase.md +26 -0
  15. package/.claude/commands/ant/plan.md +204 -111
  16. package/.claude/commands/ant/resume-colony.md +23 -1
  17. package/.claude/commands/ant/resume.md +159 -0
  18. package/.claude/commands/ant/seal.md +177 -3
  19. package/.claude/commands/ant/swarm.md +78 -97
  20. package/.claude/commands/ant/verify-castes.md +7 -7
  21. package/.claude/commands/ant/watch.md +17 -0
  22. package/.opencode/agents/aether-ambassador.md +97 -0
  23. package/.opencode/agents/aether-archaeologist.md +91 -0
  24. package/.opencode/agents/aether-architect.md +66 -0
  25. package/.opencode/agents/aether-auditor.md +111 -0
  26. package/.opencode/agents/aether-builder.md +28 -10
  27. package/.opencode/agents/aether-chaos.md +98 -0
  28. package/.opencode/agents/aether-chronicler.md +80 -0
  29. package/.opencode/agents/aether-gatekeeper.md +107 -0
  30. package/.opencode/agents/aether-guardian.md +107 -0
  31. package/.opencode/agents/aether-includer.md +108 -0
  32. package/.opencode/agents/aether-keeper.md +106 -0
  33. package/.opencode/agents/aether-measurer.md +119 -0
  34. package/.opencode/agents/aether-probe.md +91 -0
  35. package/.opencode/agents/aether-queen.md +72 -19
  36. package/.opencode/agents/aether-route-setter.md +85 -0
  37. package/.opencode/agents/aether-sage.md +98 -0
  38. package/.opencode/agents/aether-scout.md +33 -15
  39. package/.opencode/agents/aether-surveyor-disciplines.md +334 -0
  40. package/.opencode/agents/aether-surveyor-nest.md +272 -0
  41. package/.opencode/agents/aether-surveyor-pathogens.md +209 -0
  42. package/.opencode/agents/aether-surveyor-provisions.md +277 -0
  43. package/.opencode/agents/aether-tracker.md +91 -0
  44. package/.opencode/agents/aether-watcher.md +30 -12
  45. package/.opencode/agents/aether-weaver.md +87 -0
  46. package/.opencode/agents/workers.md +1034 -0
  47. package/.opencode/commands/ant/archaeology.md +44 -26
  48. package/.opencode/commands/ant/build.md +327 -295
  49. package/.opencode/commands/ant/chaos.md +32 -4
  50. package/.opencode/commands/ant/colonize.md +119 -93
  51. package/.opencode/commands/ant/continue.md +98 -10
  52. package/.opencode/commands/ant/council.md +28 -0
  53. package/.opencode/commands/ant/dream.md +24 -0
  54. package/.opencode/commands/ant/entomb.md +73 -1
  55. package/.opencode/commands/ant/feedback.md +8 -2
  56. package/.opencode/commands/ant/flag.md +9 -3
  57. package/.opencode/commands/ant/flags.md +8 -2
  58. package/.opencode/commands/ant/focus.md +8 -2
  59. package/.opencode/commands/ant/help.md +12 -0
  60. package/.opencode/commands/ant/init.md +49 -4
  61. package/.opencode/commands/ant/lay-eggs.md +30 -2
  62. package/.opencode/commands/ant/oracle.md +39 -7
  63. package/.opencode/commands/ant/organize.md +9 -3
  64. package/.opencode/commands/ant/pause-colony.md +54 -1
  65. package/.opencode/commands/ant/phase.md +36 -4
  66. package/.opencode/commands/ant/plan.md +225 -117
  67. package/.opencode/commands/ant/redirect.md +8 -2
  68. package/.opencode/commands/ant/resume-colony.md +51 -26
  69. package/.opencode/commands/ant/seal.md +76 -0
  70. package/.opencode/commands/ant/status.md +50 -20
  71. package/.opencode/commands/ant/swarm.md +108 -104
  72. package/.opencode/commands/ant/tunnels.md +107 -2
  73. package/CHANGELOG.md +21 -0
  74. package/README.md +199 -86
  75. package/bin/cli.js +142 -25
  76. package/bin/generate-commands.sh +100 -16
  77. package/bin/lib/caste-colors.js +5 -5
  78. package/bin/lib/errors.js +16 -0
  79. package/bin/lib/file-lock.js +279 -44
  80. package/bin/lib/state-sync.js +206 -23
  81. package/bin/lib/update-transaction.js +206 -24
  82. package/bin/sync-to-runtime.sh +129 -0
  83. package/package.json +2 -2
  84. package/runtime/CONTEXT.md +160 -0
  85. package/runtime/aether-utils.sh +1421 -55
  86. package/runtime/docs/AETHER-2.0-IMPLEMENTATION-PLAN.md +1343 -0
  87. package/runtime/docs/AETHER-PHEROMONE-SYSTEM-MASTER-SPEC.md +2642 -0
  88. package/runtime/docs/PHEROMONE-INJECTION.md +240 -0
  89. package/runtime/docs/PHEROMONE-INTEGRATION.md +192 -0
  90. package/runtime/docs/PHEROMONE-SYSTEM-DESIGN.md +426 -0
  91. package/runtime/docs/README.md +94 -0
  92. package/runtime/docs/VISUAL-OUTPUT-SPEC.md +219 -0
  93. package/runtime/docs/biological-reference.md +272 -0
  94. package/runtime/docs/codebase-review.md +399 -0
  95. package/runtime/docs/command-sync.md +164 -0
  96. package/runtime/docs/implementation-learnings.md +89 -0
  97. package/runtime/docs/known-issues.md +217 -0
  98. package/runtime/docs/namespace.md +148 -0
  99. package/runtime/docs/planning-discipline.md +159 -0
  100. package/runtime/lib/queen-utils.sh +729 -0
  101. package/runtime/model-profiles.yaml +100 -0
  102. package/runtime/recover.sh +136 -0
  103. package/runtime/templates/QUEEN.md.template +79 -0
  104. package/runtime/utils/atomic-write.sh +5 -5
  105. package/runtime/utils/chamber-utils.sh +6 -3
  106. package/runtime/utils/error-handler.sh +200 -0
  107. package/runtime/utils/queen-to-md.xsl +395 -0
  108. package/runtime/utils/spawn-tree.sh +428 -0
  109. package/runtime/utils/spawn-with-model.sh +56 -0
  110. package/runtime/utils/state-loader.sh +215 -0
  111. package/runtime/utils/swarm-display.sh +5 -5
  112. package/runtime/utils/watch-spawn-tree.sh +90 -22
  113. package/runtime/utils/xml-compose.sh +247 -0
  114. package/runtime/utils/xml-core.sh +186 -0
  115. package/runtime/utils/xml-utils.sh +2161 -0
  116. package/runtime/verification-loop.md +1 -1
  117. package/runtime/workers-new-castes.md +516 -0
  118. package/runtime/workers.md +20 -8
  119. package/.aether/visualizations/anthill-stages/brood-stable.txt +0 -26
  120. package/.aether/visualizations/anthill-stages/crowned-anthill.txt +0 -30
  121. package/.aether/visualizations/anthill-stages/first-mound.txt +0 -18
  122. package/.aether/visualizations/anthill-stages/open-chambers.txt +0 -24
  123. package/.aether/visualizations/anthill-stages/sealed-chambers.txt +0 -28
  124. 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)