aether-colony 5.3.2 → 5.3.3

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 (165) hide show
  1. package/.aether/aether-utils.sh +181 -5
  2. package/.aether/commands/build.yaml +35 -0
  3. package/.aether/commands/entomb.yaml +1 -1
  4. package/.aether/commands/init.yaml +29 -12
  5. package/.aether/commands/oracle.yaml +70 -0
  6. package/.aether/commands/patrol.yaml +2 -2
  7. package/.aether/commands/run.yaml +3 -3
  8. package/.aether/commands/swarm.yaml +1 -1
  9. package/.aether/docs/command-playbooks/build-complete.md +41 -8
  10. package/.aether/docs/command-playbooks/build-full.md +7 -7
  11. package/.aether/docs/command-playbooks/build-prep.md +1 -1
  12. package/.aether/docs/command-playbooks/continue-advance.md +33 -0
  13. package/.aether/docs/command-playbooks/continue-finalize.md +15 -1
  14. package/.aether/docs/command-playbooks/continue-full.md +15 -1
  15. package/.aether/docs/source-of-truth-map.md +10 -10
  16. package/.aether/docs/structural-learning-stack.md +283 -0
  17. package/.aether/utils/consolidation-seal.sh +196 -0
  18. package/.aether/utils/consolidation.sh +127 -0
  19. package/.aether/utils/curation-ants/archivist.sh +97 -0
  20. package/.aether/utils/curation-ants/critic.sh +214 -0
  21. package/.aether/utils/curation-ants/herald.sh +102 -0
  22. package/.aether/utils/curation-ants/janitor.sh +121 -0
  23. package/.aether/utils/curation-ants/librarian.sh +99 -0
  24. package/.aether/utils/curation-ants/nurse.sh +153 -0
  25. package/.aether/utils/curation-ants/orchestrator.sh +181 -0
  26. package/.aether/utils/curation-ants/scribe.sh +164 -0
  27. package/.aether/utils/curation-ants/sentinel.sh +119 -0
  28. package/.aether/utils/event-bus.sh +301 -0
  29. package/.aether/utils/graph.sh +559 -0
  30. package/.aether/utils/instinct-store.sh +401 -0
  31. package/.aether/utils/learning.sh +79 -7
  32. package/.aether/utils/session.sh +13 -0
  33. package/.aether/utils/state-api.sh +1 -1
  34. package/.aether/utils/trust-scoring.sh +347 -0
  35. package/.aether/utils/worktree.sh +97 -0
  36. package/.claude/commands/ant/entomb.md +1 -1
  37. package/.claude/commands/ant/init.md +29 -12
  38. package/.claude/commands/ant/oracle.md +35 -0
  39. package/.claude/commands/ant/patrol.md +2 -2
  40. package/.claude/commands/ant/run.md +3 -3
  41. package/.claude/commands/ant/swarm.md +1 -1
  42. package/.opencode/commands/ant/build.md +35 -0
  43. package/.opencode/commands/ant/init.md +29 -12
  44. package/.opencode/commands/ant/oracle.md +35 -0
  45. package/.opencode/commands/ant/patrol.md +2 -2
  46. package/.opencode/commands/ant/run.md +3 -3
  47. package/CHANGELOG.md +83 -0
  48. package/README.md +22 -9
  49. package/bin/lib/update-transaction.js +8 -3
  50. package/bin/npx-entry.js +0 -0
  51. package/package.json +1 -1
  52. package/.aether/agents/aether-ambassador.md +0 -140
  53. package/.aether/agents/aether-archaeologist.md +0 -108
  54. package/.aether/agents/aether-architect.md +0 -133
  55. package/.aether/agents/aether-auditor.md +0 -144
  56. package/.aether/agents/aether-builder.md +0 -184
  57. package/.aether/agents/aether-chaos.md +0 -115
  58. package/.aether/agents/aether-chronicler.md +0 -122
  59. package/.aether/agents/aether-gatekeeper.md +0 -116
  60. package/.aether/agents/aether-includer.md +0 -117
  61. package/.aether/agents/aether-keeper.md +0 -177
  62. package/.aether/agents/aether-measurer.md +0 -128
  63. package/.aether/agents/aether-oracle.md +0 -137
  64. package/.aether/agents/aether-probe.md +0 -133
  65. package/.aether/agents/aether-queen.md +0 -286
  66. package/.aether/agents/aether-route-setter.md +0 -130
  67. package/.aether/agents/aether-sage.md +0 -106
  68. package/.aether/agents/aether-scout.md +0 -101
  69. package/.aether/agents/aether-surveyor-disciplines.md +0 -391
  70. package/.aether/agents/aether-surveyor-nest.md +0 -329
  71. package/.aether/agents/aether-surveyor-pathogens.md +0 -264
  72. package/.aether/agents/aether-surveyor-provisions.md +0 -334
  73. package/.aether/agents/aether-tracker.md +0 -137
  74. package/.aether/agents/aether-watcher.md +0 -174
  75. package/.aether/agents/aether-weaver.md +0 -130
  76. package/.aether/commands/claude/archaeology.md +0 -334
  77. package/.aether/commands/claude/build.md +0 -65
  78. package/.aether/commands/claude/chaos.md +0 -336
  79. package/.aether/commands/claude/colonize.md +0 -259
  80. package/.aether/commands/claude/continue.md +0 -60
  81. package/.aether/commands/claude/council.md +0 -507
  82. package/.aether/commands/claude/data-clean.md +0 -81
  83. package/.aether/commands/claude/dream.md +0 -268
  84. package/.aether/commands/claude/entomb.md +0 -498
  85. package/.aether/commands/claude/export-signals.md +0 -57
  86. package/.aether/commands/claude/feedback.md +0 -96
  87. package/.aether/commands/claude/flag.md +0 -151
  88. package/.aether/commands/claude/flags.md +0 -169
  89. package/.aether/commands/claude/focus.md +0 -76
  90. package/.aether/commands/claude/help.md +0 -154
  91. package/.aether/commands/claude/history.md +0 -140
  92. package/.aether/commands/claude/import-signals.md +0 -71
  93. package/.aether/commands/claude/init.md +0 -505
  94. package/.aether/commands/claude/insert-phase.md +0 -105
  95. package/.aether/commands/claude/interpret.md +0 -278
  96. package/.aether/commands/claude/lay-eggs.md +0 -210
  97. package/.aether/commands/claude/maturity.md +0 -113
  98. package/.aether/commands/claude/memory-details.md +0 -77
  99. package/.aether/commands/claude/migrate-state.md +0 -171
  100. package/.aether/commands/claude/oracle.md +0 -642
  101. package/.aether/commands/claude/organize.md +0 -232
  102. package/.aether/commands/claude/patrol.md +0 -620
  103. package/.aether/commands/claude/pause-colony.md +0 -233
  104. package/.aether/commands/claude/phase.md +0 -115
  105. package/.aether/commands/claude/pheromones.md +0 -156
  106. package/.aether/commands/claude/plan.md +0 -693
  107. package/.aether/commands/claude/preferences.md +0 -65
  108. package/.aether/commands/claude/quick.md +0 -100
  109. package/.aether/commands/claude/redirect.md +0 -76
  110. package/.aether/commands/claude/resume-colony.md +0 -197
  111. package/.aether/commands/claude/resume.md +0 -388
  112. package/.aether/commands/claude/run.md +0 -231
  113. package/.aether/commands/claude/seal.md +0 -774
  114. package/.aether/commands/claude/skill-create.md +0 -286
  115. package/.aether/commands/claude/status.md +0 -410
  116. package/.aether/commands/claude/swarm.md +0 -349
  117. package/.aether/commands/claude/tunnels.md +0 -426
  118. package/.aether/commands/claude/update.md +0 -132
  119. package/.aether/commands/claude/verify-castes.md +0 -143
  120. package/.aether/commands/claude/watch.md +0 -239
  121. package/.aether/commands/opencode/archaeology.md +0 -331
  122. package/.aether/commands/opencode/build.md +0 -1168
  123. package/.aether/commands/opencode/chaos.md +0 -329
  124. package/.aether/commands/opencode/colonize.md +0 -195
  125. package/.aether/commands/opencode/continue.md +0 -1436
  126. package/.aether/commands/opencode/council.md +0 -437
  127. package/.aether/commands/opencode/data-clean.md +0 -77
  128. package/.aether/commands/opencode/dream.md +0 -260
  129. package/.aether/commands/opencode/entomb.md +0 -377
  130. package/.aether/commands/opencode/export-signals.md +0 -54
  131. package/.aether/commands/opencode/feedback.md +0 -99
  132. package/.aether/commands/opencode/flag.md +0 -149
  133. package/.aether/commands/opencode/flags.md +0 -167
  134. package/.aether/commands/opencode/focus.md +0 -73
  135. package/.aether/commands/opencode/help.md +0 -157
  136. package/.aether/commands/opencode/history.md +0 -136
  137. package/.aether/commands/opencode/import-signals.md +0 -68
  138. package/.aether/commands/opencode/init.md +0 -518
  139. package/.aether/commands/opencode/insert-phase.md +0 -111
  140. package/.aether/commands/opencode/interpret.md +0 -272
  141. package/.aether/commands/opencode/lay-eggs.md +0 -213
  142. package/.aether/commands/opencode/maturity.md +0 -108
  143. package/.aether/commands/opencode/memory-details.md +0 -83
  144. package/.aether/commands/opencode/migrate-state.md +0 -165
  145. package/.aether/commands/opencode/oracle.md +0 -593
  146. package/.aether/commands/opencode/organize.md +0 -226
  147. package/.aether/commands/opencode/patrol.md +0 -626
  148. package/.aether/commands/opencode/pause-colony.md +0 -203
  149. package/.aether/commands/opencode/phase.md +0 -113
  150. package/.aether/commands/opencode/pheromones.md +0 -162
  151. package/.aether/commands/opencode/plan.md +0 -684
  152. package/.aether/commands/opencode/preferences.md +0 -71
  153. package/.aether/commands/opencode/quick.md +0 -91
  154. package/.aether/commands/opencode/redirect.md +0 -84
  155. package/.aether/commands/opencode/resume-colony.md +0 -190
  156. package/.aether/commands/opencode/resume.md +0 -394
  157. package/.aether/commands/opencode/run.md +0 -237
  158. package/.aether/commands/opencode/seal.md +0 -452
  159. package/.aether/commands/opencode/skill-create.md +0 -63
  160. package/.aether/commands/opencode/status.md +0 -307
  161. package/.aether/commands/opencode/swarm.md +0 -15
  162. package/.aether/commands/opencode/tunnels.md +0 -400
  163. package/.aether/commands/opencode/update.md +0 -127
  164. package/.aether/commands/opencode/verify-castes.md +0 -139
  165. package/.aether/commands/opencode/watch.md +0 -227
@@ -1,349 +0,0 @@
1
- <!-- Generated from .aether/commands/swarm.yaml - DO NOT EDIT DIRECTLY -->
2
- ---
3
- name: ant:swarm
4
- description: "🔥🐜🗡️🐜🔥 Real-time colony swarm display + stubborn bug destroyer"
5
- ---
6
-
7
- You are the **Queen Ant Colony**. Deploy the swarm to destroy a stubborn bug or view real-time colony activity.
8
-
9
- ## Instructions
10
-
11
- ### Quick View Mode (No Arguments)
12
-
13
- If `$ARGUMENTS` is empty or equals "--watch":
14
-
15
- Run the real-time swarm display:
16
- ```bash
17
- bash .aether/utils/swarm-display.sh
18
- ```
19
-
20
- This shows:
21
- - Active ants with caste colors and emojis (🔨🐜 Builder in blue, etc.)
22
- - Tool usage stats per ant (📖5 🔍3 ✏️2 ⚡1)
23
- - Trophallaxis metrics (🍯 token consumption)
24
- - Timing information (elapsed time per ant)
25
- - Chamber activity map (which nest zones have active ants)
26
- - Animated status phrases ("excavating...", "foraging...")
27
-
28
- Display updates automatically as ants start/complete work.
29
- Press Ctrl+C to exit.
30
-
31
- ### Bug Destruction Mode (With Arguments)
32
-
33
- The problem to investigate is: `$ARGUMENTS`
34
-
35
- #### Step 1: Validate Input
36
-
37
- If `$ARGUMENTS` is empty:
38
- ```
39
- 🔥🐜🗡️🐜🔥 SWARM
40
-
41
- Deploy parallel scouts to investigate and fix stubborn bugs.
42
-
43
- Usage: /ant:swarm "<describe the problem>"
44
-
45
- Examples:
46
- /ant:swarm "Tests keep failing in auth module"
47
- /ant:swarm "TypeError: Cannot read property 'id' of undefined"
48
- /ant:swarm "API returns 500 but I can't find the cause"
49
-
50
- This is the nuclear option - use when repeated fix attempts fail.
51
- ```
52
- Stop here.
53
-
54
- #### Step 2: Read State & Initialize
55
-
56
- Read `.aether/data/COLONY_STATE.json`.
57
- If `goal` is null → "No colony initialized. Run /ant:init first.", stop.
58
-
59
- Generate swarm ID: `swarm-<unix_timestamp>`
60
-
61
- Initialize swarm findings:
62
- ```bash
63
- bash .aether/aether-utils.sh swarm-findings-init "<swarm_id>"
64
- ```
65
-
66
- #### Step 2.5: Check for Stale Swarm Session
67
-
68
- Capture session start time:
69
- ```bash
70
- SWARM_START=$(date +%s)
71
- ```
72
-
73
- Check for stale swarm files:
74
- ```bash
75
- stale_check=$(bash .aether/aether-utils.sh session-verify-fresh --command swarm "" "$SWARM_START")
76
- has_stale=$(echo "$stale_check" | jq -r '.stale | length')
77
-
78
- if [[ "$has_stale" -gt 0 ]]; then
79
- # Auto-clear stale swarm findings (safe - findings are temporary)
80
- bash .aether/aether-utils.sh session-clear --command swarm
81
- echo "Cleared stale swarm findings for fresh investigation"
82
- fi
83
- ```
84
-
85
- After initializing findings, verify swarm files are fresh:
86
- ```bash
87
- verify_result=$(bash .aether/aether-utils.sh session-verify-fresh --command swarm "" "$SWARM_START")
88
- if [[ $(echo "$verify_result" | jq -r '.missing | length') -gt 0 ]]; then
89
- echo "Warning: Swarm files not properly initialized"
90
- fi
91
- ```
92
-
93
- Display header:
94
- ```
95
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
96
- 🔥🐜🗡️🐜🔥 S W A R M D E P L O Y E D
97
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
98
-
99
- 🎯 Target: "{problem description}"
100
- 📍 Swarm ID: {swarm_id}
101
-
102
- ⚡ Deploying 4 parallel scouts...
103
- ```
104
-
105
- #### Step 3: Create Git Checkpoint
106
-
107
- Before any investigation that might lead to fixes, run using the Bash tool:
108
- ```bash
109
- bash .aether/aether-utils.sh autofix-checkpoint "pre-swarm-$SWARM_ID"
110
- ```
111
-
112
- Store the result for potential rollback:
113
- - `checkpoint_type` = result.type ("stash", "commit", or "none")
114
- - `checkpoint_ref` = result.ref
115
-
116
- ```
117
- 💾 Checkpoint: {checkpoint_type} → {checkpoint_ref}
118
- ```
119
-
120
- #### Step 4: Read Context
121
-
122
- Read existing blockers for context:
123
- ```bash
124
- bash .aether/aether-utils.sh flag-list --type blocker
125
- ```
126
-
127
- Read recent activity:
128
- ```bash
129
- tail -50 .aether/data/activity.log 2>/dev/null || echo "(no activity log)"
130
- ```
131
-
132
- Scan recent git commits for context:
133
- ```bash
134
- git log --oneline -20 2>/dev/null || echo "(no git history)"
135
- ```
136
-
137
- #### Step 5: Deploy 4 Parallel Scouts
138
-
139
- Use the **Task** tool to spawn 4 scouts **in a single message** (parallel execution):
140
-
141
- **Scout 1: 🏛️ Git Archaeologist** (use Task tool with `subagent_type="aether-archaeologist"`)
142
- # FALLBACK: If "Agent type not found", use general-purpose and inject role: "You are an Archaeologist Ant - git historian that excavates why code exists."
143
- ```
144
- You are {swarm_id}-Archaeologist, a 🏛️🐜 Archaeologist Ant.
145
-
146
- Investigate git history for: {problem description}
147
-
148
- Steps:
149
- 1. Run `git log --oneline -30`
150
- 2. Run `git log -p --since="1 week ago" -- {relevant files}`
151
- 3. Run `git blame {suspected file}` if mentioned
152
- 4. Find commits that introduced the bug
153
-
154
- Return ONLY this JSON:
155
- {"scout": "git-archaeologist", "confidence": 0.0-1.0, "finding": {"likely_cause": "...", "relevant_commits": [], "when_it_broke": "...", "evidence": []}, "suggested_fix": "..."}
156
- ```
157
-
158
- **Scout 2: 🔍 Pattern Hunter** (use Task tool with `subagent_type="aether-scout"`)
159
- ```
160
- You are {swarm_id}-PatternHunter, a 🔍🐜 Scout Ant.
161
-
162
- Find working patterns for: {problem description}
163
-
164
- Steps:
165
- 1. Grep/glob for related working code
166
- 2. Find how other parts handle this
167
- 3. Look for test files showing correct usage
168
- 4. Identify applicable patterns
169
-
170
- Return ONLY this JSON:
171
- {"scout": "pattern-hunter", "confidence": 0.0-1.0, "finding": {"working_examples": [], "applicable_patterns": [], "differences": "..."}, "suggested_fix": "..."}
172
- ```
173
-
174
- **Scout 3: 💥 Error Analyst** (use Task tool with `subagent_type="aether-tracker"`)
175
- ```
176
- You are {swarm_id}-ErrorAnalyst, a 🔍🐜 Tracker Ant.
177
-
178
- Analyze error: {problem description}
179
-
180
- Steps:
181
- 1. Trace through stack trace frames
182
- 2. Identify actual failing line vs surface error
183
- 3. Check for null refs, async issues, type mismatches
184
- 4. Look for error handling masking the issue
185
-
186
- Return ONLY this JSON:
187
- {"scout": "error-analyst", "confidence": 0.0-1.0, "finding": {"root_cause": "...", "error_chain": [], "masked_by": "...", "category": "null-ref|async|type|logic|config|dependency"}, "suggested_fix": "..."}
188
- ```
189
-
190
- **Scout 4: 🌐 Web Researcher** (use Task tool with `subagent_type="aether-scout"`)
191
- ```
192
- You are {swarm_id}-WebResearcher, a 🔍🐜 Scout Ant.
193
-
194
- Research external solutions for: {problem description}
195
-
196
- Steps:
197
- 1. Search for exact error message
198
- 2. Find library/framework docs
199
- 3. Check GitHub issues
200
- 4. Find Stack Overflow answers
201
-
202
- Return ONLY this JSON:
203
- {"scout": "web-researcher", "confidence": 0.0-1.0, "finding": {"known_issue": true/false, "documentation_link": "...", "similar_issues": [], "community_solutions": []}, "suggested_fix": "..."}
204
- ```
205
-
206
- Wait for all 4 scouts to complete.
207
-
208
- #### Step 6: Collect and Cross-Compare Findings
209
-
210
- As each scout returns, add their findings:
211
- ```bash
212
- bash .aether/aether-utils.sh swarm-findings-add "{swarm_id}" "{scout_type}" "{confidence}" '{finding_json}'
213
- ```
214
-
215
- Display each scout's report as they complete:
216
- ```
217
- 🏛️ Archaeologist [{confidence}]
218
- {summary of finding}
219
-
220
- 🔍 PatternHunter [{confidence}]
221
- {summary of finding}
222
-
223
- 💥 ErrorAnalyst [{confidence}]
224
- {summary of finding}
225
-
226
- 🌐 WebResearcher [{confidence}]
227
- {summary of finding}
228
- ```
229
-
230
- #### Step 7: Synthesize Solution
231
-
232
- Cross-compare all findings:
233
- 1. Identify where scouts agree (high confidence)
234
- 2. Note where scouts disagree (investigate further)
235
- 3. Weight by confidence scores
236
- 4. Prefer findings with concrete evidence
237
-
238
- Rank fix options:
239
- ```
240
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
241
- S O L U T I O N R A N K I N G
242
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
243
-
244
- #1 [0.85 confidence] {best solution}
245
- Evidence: {supporting scouts}
246
-
247
- #2 [0.72 confidence] {alternative}
248
- Evidence: {supporting scouts}
249
-
250
- #3 [0.45 confidence] {fallback}
251
- Evidence: {limited support}
252
- ```
253
-
254
- #### Step 8: Apply Best Fix
255
-
256
- Select the highest-confidence solution and apply it:
257
-
258
- **Command Resolution:** Before running verification, resolve `{build_command}` and `{test_command}` using this priority chain (stop at first match per command):
259
- 1. **CLAUDE.md** — Check project CLAUDE.md (in your system context) for explicit build/test commands
260
- 2. **CODEBASE.md** — Read `.aether/data/codebase.md` `## Commands` section
261
- 3. **Fallback** — Use project manifest heuristics (e.g., `npm run build`/`npm test` for package.json)
262
-
263
- ```
264
- 🔧 Applying Fix #1...
265
- ```
266
-
267
- Make the actual code changes using Edit/Write tools.
268
-
269
- After applying:
270
- ```bash
271
- # Run verification
272
- {build_command} 2>&1 | tail -30
273
- {test_command} 2>&1 | tail -50
274
- ```
275
-
276
- #### Step 9: Verify and Report
277
-
278
- **If verification passes:**
279
- ```
280
- ✅ FIX VERIFIED
281
-
282
- Build: PASS
283
- Tests: PASS
284
-
285
- 🔥🐜🗡️🐜🔥 Swarm successful!
286
-
287
- The fix will be confirmed when you run:
288
- /ant:continue
289
- ```
290
-
291
- Inject learnings:
292
- - Add FOCUS for the pattern that worked (to constraints.json)
293
- - Add REDIRECT for the anti-pattern that caused the bug (to constraints.json)
294
-
295
- Set solution in swarm findings and log success:
296
- ```bash
297
- bash .aether/aether-utils.sh swarm-solution-set "{swarm_id}" '{solution_json}'
298
- bash .aether/aether-utils.sh activity-log "SWARM_SUCCESS" "Queen" "Swarm {swarm_id} fixed: {brief description}"
299
- ```
300
-
301
- **If verification fails:**
302
- ```
303
- ❌ FIX VERIFICATION FAILED
304
-
305
- Build: {status}
306
- Tests: {status}
307
-
308
- Attempting rollback...
309
- ```
310
-
311
- Rollback and log failure:
312
- ```bash
313
- bash .aether/aether-utils.sh autofix-rollback "{checkpoint_type}" "{checkpoint_ref}"
314
- bash .aether/aether-utils.sh activity-log "SWARM_FAILED" "Queen" "Swarm {swarm_id} fix failed verification"
315
- ```
316
-
317
- Track attempt count. If this is the 3rd failure on the same issue:
318
- ```
319
- ⚠️ ARCHITECTURAL CONCERN
320
-
321
- This problem has resisted 3 swarm attempts.
322
-
323
- This suggests:
324
- - Root cause may be architectural, not implementational
325
- - Pattern may be fundamentally unsound
326
- - Different approach needed
327
-
328
- Recommended:
329
- - Review the codebase architecture
330
- - Consider refactoring vs. patching
331
- - Create a new phase for structural fix
332
-
333
- Swarm will not attempt further fixes on this issue.
334
- ```
335
-
336
- #### Step 10: Cleanup
337
-
338
- Archive findings:
339
- ```bash
340
- bash .aether/aether-utils.sh swarm-cleanup "{swarm_id}" --archive
341
- ```
342
-
343
- Generate the state-based Next Up block:
344
- ```bash
345
- state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
346
- current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
347
- total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
348
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
349
- ```