aether-colony 5.3.2 → 5.4.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 +181 -5
- package/.aether/commands/archaeology.yaml +3 -3
- package/.aether/commands/build.yaml +80 -45
- package/.aether/commands/chaos.yaml +7 -7
- package/.aether/commands/colonize.yaml +17 -17
- package/.aether/commands/continue.yaml +40 -40
- package/.aether/commands/council.yaml +6 -6
- package/.aether/commands/data-clean.yaml +3 -3
- package/.aether/commands/dream.yaml +2 -2
- package/.aether/commands/entomb.yaml +12 -12
- package/.aether/commands/export-signals.yaml +2 -2
- package/.aether/commands/feedback.yaml +6 -6
- package/.aether/commands/flag.yaml +2 -2
- package/.aether/commands/flags.yaml +4 -4
- package/.aether/commands/focus.yaml +6 -6
- package/.aether/commands/help.yaml +1 -1
- package/.aether/commands/history.yaml +1 -1
- package/.aether/commands/import-signals.yaml +2 -2
- package/.aether/commands/init.yaml +44 -27
- package/.aether/commands/insert-phase.yaml +1 -1
- package/.aether/commands/interpret.yaml +2 -2
- package/.aether/commands/lay-eggs.yaml +3 -3
- package/.aether/commands/maturity.yaml +2 -2
- package/.aether/commands/memory-details.yaml +1 -1
- package/.aether/commands/migrate-state.yaml +1 -1
- package/.aether/commands/oracle.yaml +147 -82
- package/.aether/commands/organize.yaml +5 -5
- package/.aether/commands/patrol.yaml +8 -8
- package/.aether/commands/pause-colony.yaml +7 -7
- package/.aether/commands/phase.yaml +1 -1
- package/.aether/commands/pheromones.yaml +1 -1
- package/.aether/commands/plan.yaml +14 -14
- package/.aether/commands/quick.yaml +4 -4
- package/.aether/commands/redirect.yaml +6 -6
- package/.aether/commands/resume-colony.yaml +9 -9
- package/.aether/commands/resume.yaml +5 -38
- package/.aether/commands/run.yaml +10 -10
- package/.aether/commands/seal.yaml +33 -33
- package/.aether/commands/skill-create.yaml +4 -4
- package/.aether/commands/status.yaml +14 -14
- package/.aether/commands/swarm.yaml +14 -14
- package/.aether/commands/tunnels.yaml +7 -7
- package/.aether/commands/update.yaml +1 -1
- package/.aether/commands/verify-castes.yaml +3 -3
- package/.aether/commands/watch.yaml +15 -15
- package/.aether/docs/command-playbooks/build-complete.md +48 -15
- package/.aether/docs/command-playbooks/build-context.md +11 -11
- package/.aether/docs/command-playbooks/build-full.md +76 -76
- package/.aether/docs/command-playbooks/build-prep.md +10 -10
- package/.aether/docs/command-playbooks/build-verify.md +27 -27
- package/.aether/docs/command-playbooks/build-wave.md +38 -38
- package/.aether/docs/command-playbooks/continue-advance.md +60 -27
- package/.aether/docs/command-playbooks/continue-finalize.md +25 -11
- package/.aether/docs/command-playbooks/continue-full.md +60 -46
- package/.aether/docs/command-playbooks/continue-gates.md +18 -18
- package/.aether/docs/command-playbooks/continue-verify.md +10 -10
- package/.aether/docs/source-of-truth-map.md +10 -10
- package/.aether/docs/structural-learning-stack.md +283 -0
- package/.aether/templates/colony-state-template.json +1 -0
- package/.aether/utils/consolidation-seal.sh +196 -0
- package/.aether/utils/consolidation.sh +127 -0
- package/.aether/utils/curation-ants/archivist.sh +97 -0
- package/.aether/utils/curation-ants/critic.sh +214 -0
- package/.aether/utils/curation-ants/herald.sh +102 -0
- package/.aether/utils/curation-ants/janitor.sh +121 -0
- package/.aether/utils/curation-ants/librarian.sh +99 -0
- package/.aether/utils/curation-ants/nurse.sh +153 -0
- package/.aether/utils/curation-ants/orchestrator.sh +181 -0
- package/.aether/utils/curation-ants/scribe.sh +164 -0
- package/.aether/utils/curation-ants/sentinel.sh +119 -0
- package/.aether/utils/event-bus.sh +301 -0
- package/.aether/utils/graph.sh +559 -0
- package/.aether/utils/instinct-store.sh +401 -0
- package/.aether/utils/learning.sh +79 -7
- package/.aether/utils/oracle/oracle-stop-hook.sh +896 -0
- package/.aether/utils/session.sh +13 -0
- package/.aether/utils/state-api.sh +1 -1
- package/.aether/utils/trust-scoring.sh +347 -0
- package/.aether/utils/worktree.sh +97 -0
- package/.claude/commands/ant/archaeology.md +2 -2
- package/.claude/commands/ant/chaos.md +4 -4
- package/.claude/commands/ant/colonize.md +9 -9
- package/.claude/commands/ant/council.md +6 -6
- package/.claude/commands/ant/data-clean.md +3 -3
- package/.claude/commands/ant/dream.md +2 -2
- package/.claude/commands/ant/entomb.md +9 -9
- package/.claude/commands/ant/export-signals.md +2 -2
- package/.claude/commands/ant/feedback.md +4 -4
- package/.claude/commands/ant/flag.md +2 -2
- package/.claude/commands/ant/flags.md +4 -4
- package/.claude/commands/ant/focus.md +4 -4
- package/.claude/commands/ant/help.md +1 -1
- package/.claude/commands/ant/history.md +1 -1
- package/.claude/commands/ant/import-signals.md +2 -2
- package/.claude/commands/ant/init.md +44 -27
- package/.claude/commands/ant/insert-phase.md +1 -1
- package/.claude/commands/ant/interpret.md +2 -2
- package/.claude/commands/ant/lay-eggs.md +2 -2
- package/.claude/commands/ant/maturity.md +2 -2
- package/.claude/commands/ant/memory-details.md +1 -1
- package/.claude/commands/ant/migrate-state.md +1 -1
- package/.claude/commands/ant/oracle.md +78 -42
- package/.claude/commands/ant/organize.md +3 -3
- package/.claude/commands/ant/patrol.md +8 -8
- package/.claude/commands/ant/pause-colony.md +5 -5
- package/.claude/commands/ant/phase.md +1 -1
- package/.claude/commands/ant/pheromones.md +1 -1
- package/.claude/commands/ant/plan.md +8 -8
- package/.claude/commands/ant/quick.md +4 -4
- package/.claude/commands/ant/redirect.md +4 -4
- package/.claude/commands/ant/resume-colony.md +5 -5
- package/.claude/commands/ant/resume.md +17 -29
- package/.claude/commands/ant/run.md +10 -10
- package/.claude/commands/ant/seal.md +25 -25
- package/.claude/commands/ant/skill-create.md +2 -2
- package/.claude/commands/ant/status.md +14 -14
- package/.claude/commands/ant/swarm.md +14 -14
- package/.claude/commands/ant/tunnels.md +4 -4
- package/.claude/commands/ant/update.md +1 -1
- package/.claude/commands/ant/verify-castes.md +2 -2
- package/.claude/commands/ant/watch.md +8 -8
- package/.opencode/commands/ant/archaeology.md +1 -1
- package/.opencode/commands/ant/build.md +80 -45
- package/.opencode/commands/ant/chaos.md +3 -3
- package/.opencode/commands/ant/colonize.md +8 -8
- package/.opencode/commands/ant/continue.md +40 -40
- package/.opencode/commands/ant/council.md +5 -5
- package/.opencode/commands/ant/data-clean.md +2 -2
- package/.opencode/commands/ant/dream.md +1 -1
- package/.opencode/commands/ant/entomb.md +3 -3
- package/.opencode/commands/ant/export-signals.md +1 -1
- package/.opencode/commands/ant/feedback.md +2 -2
- package/.opencode/commands/ant/flag.md +1 -1
- package/.opencode/commands/ant/flags.md +3 -3
- package/.opencode/commands/ant/focus.md +2 -2
- package/.opencode/commands/ant/import-signals.md +1 -1
- package/.opencode/commands/ant/init.md +44 -27
- package/.opencode/commands/ant/insert-phase.md +1 -1
- package/.opencode/commands/ant/interpret.md +1 -1
- package/.opencode/commands/ant/lay-eggs.md +2 -2
- package/.opencode/commands/ant/maturity.md +1 -1
- package/.opencode/commands/ant/memory-details.md +1 -1
- package/.opencode/commands/ant/oracle.md +69 -40
- package/.opencode/commands/ant/organize.md +2 -2
- package/.opencode/commands/ant/patrol.md +8 -8
- package/.opencode/commands/ant/pause-colony.md +2 -2
- package/.opencode/commands/ant/pheromones.md +1 -1
- package/.opencode/commands/ant/plan.md +6 -6
- package/.opencode/commands/ant/quick.md +4 -4
- package/.opencode/commands/ant/redirect.md +2 -2
- package/.opencode/commands/ant/resume-colony.md +4 -4
- package/.opencode/commands/ant/resume.md +5 -17
- package/.opencode/commands/ant/run.md +10 -10
- package/.opencode/commands/ant/seal.md +8 -8
- package/.opencode/commands/ant/skill-create.md +2 -2
- package/.opencode/commands/ant/status.md +10 -10
- package/.opencode/commands/ant/tunnels.md +3 -3
- package/.opencode/commands/ant/verify-castes.md +1 -1
- package/.opencode/commands/ant/watch.md +7 -7
- package/CHANGELOG.md +83 -0
- package/README.md +22 -9
- package/bin/cli.js +118 -3
- package/bin/lib/binary-downloader.js +267 -0
- package/bin/lib/update-transaction.js +27 -3
- package/bin/lib/version-gate.js +179 -0
- package/bin/npx-entry.js +0 -0
- package/package.json +1 -1
- package/.aether/agents/aether-ambassador.md +0 -140
- package/.aether/agents/aether-archaeologist.md +0 -108
- package/.aether/agents/aether-architect.md +0 -133
- package/.aether/agents/aether-auditor.md +0 -144
- package/.aether/agents/aether-builder.md +0 -184
- package/.aether/agents/aether-chaos.md +0 -115
- package/.aether/agents/aether-chronicler.md +0 -122
- package/.aether/agents/aether-gatekeeper.md +0 -116
- package/.aether/agents/aether-includer.md +0 -117
- package/.aether/agents/aether-keeper.md +0 -177
- package/.aether/agents/aether-measurer.md +0 -128
- package/.aether/agents/aether-oracle.md +0 -137
- package/.aether/agents/aether-probe.md +0 -133
- package/.aether/agents/aether-queen.md +0 -286
- package/.aether/agents/aether-route-setter.md +0 -130
- package/.aether/agents/aether-sage.md +0 -106
- package/.aether/agents/aether-scout.md +0 -101
- package/.aether/agents/aether-surveyor-disciplines.md +0 -391
- package/.aether/agents/aether-surveyor-nest.md +0 -329
- package/.aether/agents/aether-surveyor-pathogens.md +0 -264
- package/.aether/agents/aether-surveyor-provisions.md +0 -334
- package/.aether/agents/aether-tracker.md +0 -137
- package/.aether/agents/aether-watcher.md +0 -174
- package/.aether/agents/aether-weaver.md +0 -130
- package/.aether/commands/claude/archaeology.md +0 -334
- package/.aether/commands/claude/build.md +0 -65
- package/.aether/commands/claude/chaos.md +0 -336
- package/.aether/commands/claude/colonize.md +0 -259
- package/.aether/commands/claude/continue.md +0 -60
- package/.aether/commands/claude/council.md +0 -507
- package/.aether/commands/claude/data-clean.md +0 -81
- package/.aether/commands/claude/dream.md +0 -268
- package/.aether/commands/claude/entomb.md +0 -498
- package/.aether/commands/claude/export-signals.md +0 -57
- package/.aether/commands/claude/feedback.md +0 -96
- package/.aether/commands/claude/flag.md +0 -151
- package/.aether/commands/claude/flags.md +0 -169
- package/.aether/commands/claude/focus.md +0 -76
- package/.aether/commands/claude/help.md +0 -154
- package/.aether/commands/claude/history.md +0 -140
- package/.aether/commands/claude/import-signals.md +0 -71
- package/.aether/commands/claude/init.md +0 -505
- package/.aether/commands/claude/insert-phase.md +0 -105
- package/.aether/commands/claude/interpret.md +0 -278
- package/.aether/commands/claude/lay-eggs.md +0 -210
- package/.aether/commands/claude/maturity.md +0 -113
- package/.aether/commands/claude/memory-details.md +0 -77
- package/.aether/commands/claude/migrate-state.md +0 -171
- package/.aether/commands/claude/oracle.md +0 -642
- package/.aether/commands/claude/organize.md +0 -232
- package/.aether/commands/claude/patrol.md +0 -620
- package/.aether/commands/claude/pause-colony.md +0 -233
- package/.aether/commands/claude/phase.md +0 -115
- package/.aether/commands/claude/pheromones.md +0 -156
- package/.aether/commands/claude/plan.md +0 -693
- package/.aether/commands/claude/preferences.md +0 -65
- package/.aether/commands/claude/quick.md +0 -100
- package/.aether/commands/claude/redirect.md +0 -76
- package/.aether/commands/claude/resume-colony.md +0 -197
- package/.aether/commands/claude/resume.md +0 -388
- package/.aether/commands/claude/run.md +0 -231
- package/.aether/commands/claude/seal.md +0 -774
- package/.aether/commands/claude/skill-create.md +0 -286
- package/.aether/commands/claude/status.md +0 -410
- package/.aether/commands/claude/swarm.md +0 -349
- package/.aether/commands/claude/tunnels.md +0 -426
- package/.aether/commands/claude/update.md +0 -132
- package/.aether/commands/claude/verify-castes.md +0 -143
- package/.aether/commands/claude/watch.md +0 -239
- package/.aether/commands/opencode/archaeology.md +0 -331
- package/.aether/commands/opencode/build.md +0 -1168
- package/.aether/commands/opencode/chaos.md +0 -329
- package/.aether/commands/opencode/colonize.md +0 -195
- package/.aether/commands/opencode/continue.md +0 -1436
- package/.aether/commands/opencode/council.md +0 -437
- package/.aether/commands/opencode/data-clean.md +0 -77
- package/.aether/commands/opencode/dream.md +0 -260
- package/.aether/commands/opencode/entomb.md +0 -377
- package/.aether/commands/opencode/export-signals.md +0 -54
- package/.aether/commands/opencode/feedback.md +0 -99
- package/.aether/commands/opencode/flag.md +0 -149
- package/.aether/commands/opencode/flags.md +0 -167
- package/.aether/commands/opencode/focus.md +0 -73
- package/.aether/commands/opencode/help.md +0 -157
- package/.aether/commands/opencode/history.md +0 -136
- package/.aether/commands/opencode/import-signals.md +0 -68
- package/.aether/commands/opencode/init.md +0 -518
- package/.aether/commands/opencode/insert-phase.md +0 -111
- package/.aether/commands/opencode/interpret.md +0 -272
- package/.aether/commands/opencode/lay-eggs.md +0 -213
- package/.aether/commands/opencode/maturity.md +0 -108
- package/.aether/commands/opencode/memory-details.md +0 -83
- package/.aether/commands/opencode/migrate-state.md +0 -165
- package/.aether/commands/opencode/oracle.md +0 -593
- package/.aether/commands/opencode/organize.md +0 -226
- package/.aether/commands/opencode/patrol.md +0 -626
- package/.aether/commands/opencode/pause-colony.md +0 -203
- package/.aether/commands/opencode/phase.md +0 -113
- package/.aether/commands/opencode/pheromones.md +0 -162
- package/.aether/commands/opencode/plan.md +0 -684
- package/.aether/commands/opencode/preferences.md +0 -71
- package/.aether/commands/opencode/quick.md +0 -91
- package/.aether/commands/opencode/redirect.md +0 -84
- package/.aether/commands/opencode/resume-colony.md +0 -190
- package/.aether/commands/opencode/resume.md +0 -394
- package/.aether/commands/opencode/run.md +0 -237
- package/.aether/commands/opencode/seal.md +0 -452
- package/.aether/commands/opencode/skill-create.md +0 -63
- package/.aether/commands/opencode/status.md +0 -307
- package/.aether/commands/opencode/swarm.md +0 -15
- package/.aether/commands/opencode/tunnels.md +0 -400
- package/.aether/commands/opencode/update.md +0 -127
- package/.aether/commands/opencode/verify-castes.md +0 -139
- package/.aether/commands/opencode/watch.md +0 -227
|
@@ -25,14 +25,14 @@ REVIEW_CONTEXT=$(bash "$AETHER_UTILS" pr-context --compact 2>/dev/null) || true
|
|
|
25
25
|
|
|
26
26
|
Spawn the Watcher using Task tool with `subagent_type="aether-watcher"`, include `description: "👁️ Watcher {Watcher-Name}: Independent verification"` (DO NOT use run_in_background - task blocks until complete):
|
|
27
27
|
|
|
28
|
-
Run using the Bash tool with description "Dispatching watcher...": `
|
|
28
|
+
Run using the Bash tool with description "Dispatching watcher...": `aether spawn-log "Queen" "watcher" "{watcher_name}" "Independent verification"`
|
|
29
29
|
|
|
30
30
|
**Load skills for the Watcher role (NON-BLOCKING):**
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
|
-
skill_match_result=$(
|
|
34
|
-
skill_inject_result=$(
|
|
35
|
-
skill_section=$(
|
|
33
|
+
skill_match_result=$(aether skill-match "watcher" "{verification_context}" 2>/dev/null)
|
|
34
|
+
skill_inject_result=$(aether skill-inject "$(printf '%s\n' "$skill_match_result" | jq -r '.result')" 2>/dev/null)
|
|
35
|
+
skill_section=$(printf '%s\n' "$skill_inject_result" | jq -r '.result.skill_section // ""')
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
Display: `🧠 Skills loaded for watcher verification`
|
|
@@ -85,7 +85,7 @@ Return ONLY this JSON:
|
|
|
85
85
|
**Task call returns results directly (no TaskOutput needed).**
|
|
86
86
|
|
|
87
87
|
Validate watcher payload first:
|
|
88
|
-
Run using the Bash tool with description "Validating watcher response...": `
|
|
88
|
+
Run using the Bash tool with description "Validating watcher response...": `aether validate-worker-response watcher '{watcher_json}'`
|
|
89
89
|
|
|
90
90
|
**Parse the Watcher's validated JSON response:** verification_passed, issues_found, quality_score, recommendation
|
|
91
91
|
|
|
@@ -138,8 +138,8 @@ For failed verification:
|
|
|
138
138
|
|
|
139
139
|
3. **Generate Measurer name and dispatch:**
|
|
140
140
|
|
|
141
|
-
Run using the Bash tool with description "Naming measurer...": `
|
|
142
|
-
Run using the Bash tool with description "Dispatching measurer...": `
|
|
141
|
+
Run using the Bash tool with description "Naming measurer...": `aether generate-ant-name "measurer"` (store as `{measurer_name}`)
|
|
142
|
+
Run using the Bash tool with description "Dispatching measurer...": `aether spawn-log "Queen" "measurer" "{measurer_name}" "Performance baseline measurement"`
|
|
143
143
|
|
|
144
144
|
Display:
|
|
145
145
|
```
|
|
@@ -184,7 +184,7 @@ For failed verification:
|
|
|
184
184
|
|
|
185
185
|
**IMPORTANT:** You are strictly read-only. Do not modify any files.
|
|
186
186
|
|
|
187
|
-
Log activity:
|
|
187
|
+
Log activity: aether activity-log "BENCHMARKING" "{Measurer-Name}" "description"
|
|
188
188
|
|
|
189
189
|
Return ONLY this JSON (no other text):
|
|
190
190
|
{
|
|
@@ -216,7 +216,7 @@ For failed verification:
|
|
|
216
216
|
Extract from response: `baselines_established`, `bottlenecks_identified`, `recommendations`, `tool_count`
|
|
217
217
|
|
|
218
218
|
Log completion:
|
|
219
|
-
Run using the Bash tool with description "Recording measurer completion...": `
|
|
219
|
+
Run using the Bash tool with description "Recording measurer completion...": `aether spawn-complete "{measurer_name}" "completed" "Baselines established, bottlenecks identified"`
|
|
220
220
|
|
|
221
221
|
**Display Measurer completion line:**
|
|
222
222
|
```
|
|
@@ -227,17 +227,17 @@ For failed verification:
|
|
|
227
227
|
|
|
228
228
|
For each baseline established, run using the Bash tool with description "Logging baseline...":
|
|
229
229
|
```bash
|
|
230
|
-
|
|
230
|
+
aether midden-write "performance" "Baseline: {baseline.operation} ({baseline.complexity}) at {baseline.file}:{baseline.line}" "measurer"
|
|
231
231
|
```
|
|
232
232
|
|
|
233
233
|
For each bottleneck identified, run using the Bash tool with description "Logging bottleneck...":
|
|
234
234
|
```bash
|
|
235
|
-
|
|
235
|
+
aether midden-write "performance" "Bottleneck: {bottleneck.description} ({bottleneck.severity}) at {bottleneck.location}" "measurer"
|
|
236
236
|
```
|
|
237
237
|
|
|
238
238
|
For each recommendation, run using the Bash tool with description "Logging recommendation...":
|
|
239
239
|
```bash
|
|
240
|
-
|
|
240
|
+
aether midden-write "performance" "Recommendation (P{rec.priority}): {rec.change} - {rec.estimated_improvement}" "measurer"
|
|
241
241
|
```
|
|
242
242
|
|
|
243
243
|
8. **Display summary and store for synthesis:**
|
|
@@ -265,10 +265,10 @@ For failed verification:
|
|
|
265
265
|
**After the Watcher completes, spawn a Chaos Ant to probe the phase work for edge cases and boundary conditions.**
|
|
266
266
|
|
|
267
267
|
Generate a chaos ant name and dispatch:
|
|
268
|
-
Run using the Bash tool with description "Naming chaos ant...": `
|
|
269
|
-
Run using the Bash tool with description "Loading existing flags...": `
|
|
268
|
+
Run using the Bash tool with description "Naming chaos ant...": `aether generate-ant-name "chaos"` (store as `{chaos_name}`)
|
|
269
|
+
Run using the Bash tool with description "Loading existing flags...": `aether flag-list --phase {phase_number}`
|
|
270
270
|
Parse the result and extract unresolved flag titles into a list: `{existing_flag_titles}` (comma-separated titles from `.result.flags[].title`). If no flags exist, set `{existing_flag_titles}` to "None".
|
|
271
|
-
Run using the Bash tool with description "Dispatching chaos ant...": `
|
|
271
|
+
Run using the Bash tool with description "Dispatching chaos ant...": `aether spawn-log "Queen" "chaos" "{chaos_name}" "Resilience testing of Phase {id} work"`
|
|
272
272
|
|
|
273
273
|
**Announce the resilience testing wave:**
|
|
274
274
|
```
|
|
@@ -324,13 +324,13 @@ Return ONLY this JSON:
|
|
|
324
324
|
**Flag critical/high findings:**
|
|
325
325
|
|
|
326
326
|
If any findings have severity `"critical"` or `"high"`:
|
|
327
|
-
Run using the Bash tool with description "Flagging {finding.title}...": `
|
|
327
|
+
Run using the Bash tool with description "Flagging {finding.title}...": `aether flag-add "blocker" "{finding.title}" "{finding.description}" "chaos-testing" {phase_number} && aether activity-log "FLAG" "Chaos" "Created blocker: {finding.title}"`
|
|
328
328
|
|
|
329
329
|
**Log resilience finding to midden (MEM-02):**
|
|
330
330
|
|
|
331
331
|
For each critical/high finding, run using the Bash tool with description "Logging resilience finding...":
|
|
332
332
|
```bash
|
|
333
|
-
colony_name=$(
|
|
333
|
+
colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
|
|
334
334
|
[[ -z "$colony_name" ]] && colony_name="unknown"
|
|
335
335
|
phase_num=$(jq -r '.phase.number // "unknown"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "unknown")
|
|
336
336
|
|
|
@@ -348,10 +348,10 @@ cat >> .aether/midden/build-failures.md << EOF
|
|
|
348
348
|
EOF
|
|
349
349
|
|
|
350
350
|
# Write to structured midden for threshold detection (MID-01)
|
|
351
|
-
|
|
351
|
+
aether midden-write "resilience" "Chaos finding: ${finding.title} (${finding.severity})" "chaos" 2>/dev/null || true
|
|
352
352
|
|
|
353
353
|
# Capture resilience failure in memory pipeline (observe + pheromone + auto-promotion)
|
|
354
|
-
|
|
354
|
+
aether memory-capture \
|
|
355
355
|
"failure" \
|
|
356
356
|
"Resilience issue found: ${finding.title} (${finding.severity})" \
|
|
357
357
|
"failure" \
|
|
@@ -359,7 +359,7 @@ bash .aether/aether-utils.sh memory-capture \
|
|
|
359
359
|
```
|
|
360
360
|
|
|
361
361
|
Log chaos ant completion:
|
|
362
|
-
Run using the Bash tool with description "Recording chaos completion...": `
|
|
362
|
+
Run using the Bash tool with description "Recording chaos completion...": `aether spawn-complete "{chaos_name}" "completed" "{summary}"`
|
|
363
363
|
|
|
364
364
|
**Success capture: chaos resilience (MEM-01):**
|
|
365
365
|
|
|
@@ -367,7 +367,7 @@ If `overall_resilience` is `"strong"`:
|
|
|
367
367
|
|
|
368
368
|
Run using the Bash tool with description "Capturing chaos resilience success...":
|
|
369
369
|
```bash
|
|
370
|
-
|
|
370
|
+
aether memory-capture \
|
|
371
371
|
"success" \
|
|
372
372
|
"Chaos resilience strong: ${summary}" \
|
|
373
373
|
"pattern" \
|
|
@@ -381,13 +381,13 @@ This records the resilience success in learning-observations.json via the existi
|
|
|
381
381
|
If the Watcher reported `verification_passed: false` or `recommendation: "fix_required"`:
|
|
382
382
|
|
|
383
383
|
For each issue in `issues_found`:
|
|
384
|
-
Run using the Bash tool with description "Flagging {issue_title}...": `
|
|
384
|
+
Run using the Bash tool with description "Flagging {issue_title}...": `aether flag-add "blocker" "{issue_title}" "{issue_description}" "verification" {phase_number} && aether activity-log "FLAG" "Watcher" "Created blocker: {issue_title}"`
|
|
385
385
|
|
|
386
386
|
**Log verification failure to midden (MEM-02):**
|
|
387
387
|
|
|
388
388
|
After flagging each issue, run using the Bash tool with description "Logging verification failure...":
|
|
389
389
|
```bash
|
|
390
|
-
colony_name=$(
|
|
390
|
+
colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
|
|
391
391
|
[[ -z "$colony_name" ]] && colony_name="unknown"
|
|
392
392
|
phase_num=$(jq -r '.phase.number // "unknown"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "unknown")
|
|
393
393
|
|
|
@@ -405,10 +405,10 @@ cat >> .aether/midden/test-failures.md << EOF
|
|
|
405
405
|
EOF
|
|
406
406
|
|
|
407
407
|
# Write to structured midden for threshold detection (MID-01)
|
|
408
|
-
|
|
408
|
+
aether midden-write "verification" "Watcher verification failed: ${issue_title}" "watcher" 2>/dev/null || true
|
|
409
409
|
|
|
410
410
|
# Capture verification failure in memory pipeline (observe + pheromone + auto-promotion)
|
|
411
|
-
|
|
411
|
+
aether memory-capture \
|
|
412
412
|
"failure" \
|
|
413
413
|
"Verification failed: ${issue_title} - ${issue_description}" \
|
|
414
414
|
"failure" \
|
|
@@ -427,7 +427,7 @@ Run using the Bash tool with description "Collecting midden from merged branch..
|
|
|
427
427
|
```bash
|
|
428
428
|
# Only runs if merge context is available
|
|
429
429
|
if [[ -n "${last_merged_branch:-}" && -n "${last_merge_sha:-}" ]]; then
|
|
430
|
-
collect_result=$(
|
|
430
|
+
collect_result=$(aether midden-collect \
|
|
431
431
|
--branch "$last_merged_branch" --merge-sha "$last_merge_sha" \
|
|
432
432
|
2>/dev/null || echo '{"ok":false}')
|
|
433
433
|
collect_ok=$(echo "$collect_result" | jq -r '.ok // false' 2>/dev/null)
|
|
@@ -440,7 +440,7 @@ if [[ -n "${last_merged_branch:-}" && -n "${last_merge_sha:-}" ]]; then
|
|
|
440
440
|
fi
|
|
441
441
|
|
|
442
442
|
# Run cross-PR analysis after collection (per D-05)
|
|
443
|
-
analysis_result=$(
|
|
443
|
+
analysis_result=$(aether midden-cross-pr-analysis --window 14 \
|
|
444
444
|
2>/dev/null || echo '{"ok":false}')
|
|
445
445
|
analysis_ok=$(echo "$analysis_result" | jq -r '.ok // false' 2>/dev/null)
|
|
446
446
|
if [[ "$analysis_ok" == "true" ]]; then
|
|
@@ -4,7 +4,7 @@ Before modifying colony state during the build, create a rolling backup:
|
|
|
4
4
|
|
|
5
5
|
Run using the Bash tool with description "Checkpointing colony state...":
|
|
6
6
|
```bash
|
|
7
|
-
|
|
7
|
+
aether state-checkpoint "pre-build-wave" 2>/dev/null || echo "Warning: State checkpoint failed -- continuing without backup" >&2
|
|
8
8
|
```
|
|
9
9
|
|
|
10
10
|
This creates a timestamped backup of COLONY_STATE.json in `.aether/data/backups/` with at most 3 retained.
|
|
@@ -39,9 +39,9 @@ Analyze the phase tasks:
|
|
|
39
39
|
|
|
40
40
|
3. **Generate ant names for each worker:**
|
|
41
41
|
|
|
42
|
-
Run using the Bash tool with description "Naming builder ant...": `
|
|
43
|
-
Run using the Bash tool with description "Naming watcher ant...": `
|
|
44
|
-
Run using the Bash tool with description "Naming chaos ant...": `
|
|
42
|
+
Run using the Bash tool with description "Naming builder ant...": `aether generate-ant-name "builder"`
|
|
43
|
+
Run using the Bash tool with description "Naming watcher ant...": `aether generate-ant-name "watcher"`
|
|
44
|
+
Run using the Bash tool with description "Naming chaos ant...": `aether generate-ant-name "chaos"`
|
|
45
45
|
|
|
46
46
|
Display spawn plan with caste emojis:
|
|
47
47
|
```
|
|
@@ -87,10 +87,10 @@ The `colony_depth` value is available from build-prep.md cross-stage state.
|
|
|
87
87
|
**Oracle runs BEFORE worker waves. Failure is non-blocking -- the build continues with a warning.**
|
|
88
88
|
|
|
89
89
|
1. **Generate Oracle name:**
|
|
90
|
-
Run using the Bash tool with description "Naming oracle ant...": `
|
|
90
|
+
Run using the Bash tool with description "Naming oracle ant...": `aether generate-ant-name "oracle"` (store as `{oracle_name}`)
|
|
91
91
|
|
|
92
92
|
2. **Log spawn:**
|
|
93
|
-
Run using the Bash tool with description "Dispatching oracle...": `
|
|
93
|
+
Run using the Bash tool with description "Dispatching oracle...": `aether spawn-log "Queen" "oracle" "{oracle_name}" "Phase {phase_id} research"`
|
|
94
94
|
|
|
95
95
|
3. **Display announcement:**
|
|
96
96
|
```
|
|
@@ -148,7 +148,7 @@ The `colony_depth` value is available from build-prep.md cross-stage state.
|
|
|
148
148
|
```
|
|
149
149
|
|
|
150
150
|
6. **Log completion:**
|
|
151
|
-
Run using the Bash tool with description "Recording oracle completion...": `
|
|
151
|
+
Run using the Bash tool with description "Recording oracle completion...": `aether spawn-complete "{oracle_name}" "{status}" "{summary}"`
|
|
152
152
|
|
|
153
153
|
### Step 5.0.2: Architect Design Step (Non-Blocking)
|
|
154
154
|
|
|
@@ -161,10 +161,10 @@ Architect depends on Oracle findings. If Oracle was skipped, Architect must also
|
|
|
161
161
|
**Architect runs AFTER Oracle, BEFORE worker waves. Failure is non-blocking -- the build continues with a warning.**
|
|
162
162
|
|
|
163
163
|
1. **Generate Architect name:**
|
|
164
|
-
Run using the Bash tool with description "Naming architect ant...": `
|
|
164
|
+
Run using the Bash tool with description "Naming architect ant...": `aether generate-ant-name "architect"` (store as `{architect_name}`)
|
|
165
165
|
|
|
166
166
|
2. **Log spawn:**
|
|
167
|
-
Run using the Bash tool with description "Dispatching architect...": `
|
|
167
|
+
Run using the Bash tool with description "Dispatching architect...": `aether spawn-log "Queen" "architect" "{architect_name}" "Phase {phase_id} design"`
|
|
168
168
|
|
|
169
169
|
3. **Display announcement:**
|
|
170
170
|
```
|
|
@@ -223,7 +223,7 @@ Architect depends on Oracle findings. If Oracle was skipped, Architect must also
|
|
|
223
223
|
```
|
|
224
224
|
|
|
225
225
|
6. **Log completion:**
|
|
226
|
-
Run using the Bash tool with description "Recording architect completion...": `
|
|
226
|
+
Run using the Bash tool with description "Recording architect completion...": `aether spawn-complete "{architect_name}" "{status}" "{summary}"`
|
|
227
227
|
|
|
228
228
|
### Step 5.0.5: Select and Announce Workflow Pattern
|
|
229
229
|
|
|
@@ -302,8 +302,8 @@ Parse the JSON result. If `is_integration_phase` is `"false"`:
|
|
|
302
302
|
If `is_integration_phase` is `"true"`:
|
|
303
303
|
|
|
304
304
|
1. **Generate Ambassador name and dispatch:**
|
|
305
|
-
Run using the Bash tool with description "Naming ambassador...": `
|
|
306
|
-
Run using the Bash tool with description "Dispatching ambassador...": `
|
|
305
|
+
Run using the Bash tool with description "Naming ambassador...": `aether generate-ant-name "ambassador"` (store as `{ambassador_name}`)
|
|
306
|
+
Run using the Bash tool with description "Dispatching ambassador...": `aether spawn-log "Queen" "ambassador" "{ambassador_name}" "External integration design"`
|
|
307
307
|
|
|
308
308
|
Display:
|
|
309
309
|
```
|
|
@@ -353,7 +353,7 @@ If `is_integration_phase` is `"true"`:
|
|
|
353
353
|
- HTTPS only
|
|
354
354
|
- Validate SSL certificates
|
|
355
355
|
|
|
356
|
-
Log activity:
|
|
356
|
+
Log activity: aether activity-log "RESEARCH" "{Ambassador-Name}" "description"
|
|
357
357
|
|
|
358
358
|
Return ONLY this JSON (no other text):
|
|
359
359
|
{
|
|
@@ -382,7 +382,7 @@ If `is_integration_phase` is `"true"`:
|
|
|
382
382
|
Extract from response: `integration_plan`, `env_vars_required`, `error_scenarios_covered`, `blockers`
|
|
383
383
|
|
|
384
384
|
Log completion:
|
|
385
|
-
Run using the Bash tool with description "Recording ambassador completion...": `
|
|
385
|
+
Run using the Bash tool with description "Recording ambassador completion...": `aether spawn-complete "{ambassador_name}" "completed" "Integration design complete"`
|
|
386
386
|
|
|
387
387
|
**Display Ambassador completion line:**
|
|
388
388
|
```
|
|
@@ -392,12 +392,12 @@ If `is_integration_phase` is `"true"`:
|
|
|
392
392
|
4. **Log integration plan to midden:**
|
|
393
393
|
Run using the Bash tool with description "Logging integration plan...":
|
|
394
394
|
```bash
|
|
395
|
-
|
|
395
|
+
aether midden-write "integration" "Plan for {integration_plan.service_name}: {integration_plan.integration_pattern} pattern, auth via {integration_plan.authentication_method}" "ambassador"
|
|
396
396
|
```
|
|
397
397
|
|
|
398
398
|
For each env var required:
|
|
399
399
|
```bash
|
|
400
|
-
|
|
400
|
+
aether midden-write "integration" "Required env var: {env_var}" "ambassador"
|
|
401
401
|
```
|
|
402
402
|
|
|
403
403
|
5. **Display integration summary:**
|
|
@@ -415,14 +415,14 @@ If `is_integration_phase` is `"true"`:
|
|
|
415
415
|
Store the `integration_plan` object to be injected into Builder prompts in the standard Wave 1 spawn.
|
|
416
416
|
|
|
417
417
|
**First, mark build start in context:**
|
|
418
|
-
Run using the Bash tool with description "Marking build start...": `
|
|
418
|
+
Run using the Bash tool with description "Marking build start...": `aether context-update build-start {phase_id} {wave_1_worker_count} {wave_1_task_count}`
|
|
419
419
|
|
|
420
420
|
Before dispatching each worker, refresh colony context so new pheromones/memory are visible:
|
|
421
|
-
Run using the Bash tool with description "Refreshing colony context...": `prime_result=$(
|
|
421
|
+
Run using the Bash tool with description "Refreshing colony context...": `prime_result=$(aether colony-prime --compact 2>/dev/null)` and update `prompt_section` from `prime_result.result.prompt_section`.
|
|
422
422
|
|
|
423
423
|
**PER WAVE:** Query midden for recent failures to inject into builder context:
|
|
424
424
|
Run using the Bash tool with description "Checking midden for recent failures...":
|
|
425
|
-
`midden_result=$(
|
|
425
|
+
`midden_result=$(aether midden-recent-failures 3 2>/dev/null || echo '{"count":0,"failures":[]}')`
|
|
426
426
|
|
|
427
427
|
Parse `midden_result`. If `count > 0`, format as `midden_context`:
|
|
428
428
|
```
|
|
@@ -442,7 +442,7 @@ For each Wave 1 task, use Task tool with `subagent_type="aether-builder"`, inclu
|
|
|
442
442
|
**PER WORKER:** Build graveyard caution context automatically:
|
|
443
443
|
- Identify explicit repo file paths from the task metadata (`files`, `hints`, `constraints`, and description when a concrete path is present).
|
|
444
444
|
- For each identified file path, run using the Bash tool with description "Checking graveyard cautions for {file}...":
|
|
445
|
-
`
|
|
445
|
+
`aether grave-check "{file}"`
|
|
446
446
|
- Parse each JSON result and keep only entries where `caution_level` is `high` or `low`.
|
|
447
447
|
- Merge these into a single `grave_context` block for that worker.
|
|
448
448
|
- **Budget cap:** `grave_context` must not exceed 2000 characters per worker. If it exceeds the cap, truncate and append `[graveyard truncated]`.
|
|
@@ -453,11 +453,11 @@ For each Wave 1 task, use Task tool with `subagent_type="aether-builder"`, inclu
|
|
|
453
453
|
**PER WORKER:** Match and inject skills for the worker's role and task:
|
|
454
454
|
Run using the Bash tool with description "Matching skills for {ant_name}...":
|
|
455
455
|
```bash
|
|
456
|
-
skill_match_result=$(
|
|
457
|
-
skill_inject_result=$(
|
|
458
|
-
skill_section=$(
|
|
459
|
-
skill_colony_count=$(
|
|
460
|
-
skill_domain_count=$(
|
|
456
|
+
skill_match_result=$(aether skill-match "builder" "{task_description}" 2>/dev/null) || skill_match_result='{"result":{"colony_skills":[],"domain_skills":[]}}'
|
|
457
|
+
skill_inject_result=$(aether skill-inject "$(printf '%s\n' "$skill_match_result" | jq -r '.result')" 2>/dev/null) || skill_inject_result='{"result":{"skill_section":"","colony_count":0,"domain_count":0}}'
|
|
458
|
+
skill_section=$(printf '%s\n' "$skill_inject_result" | jq -r '.result.skill_section // ""')
|
|
459
|
+
skill_colony_count=$(printf '%s\n' "$skill_inject_result" | jq -r '.result.colony_count // 0')
|
|
460
|
+
skill_domain_count=$(printf '%s\n' "$skill_inject_result" | jq -r '.result.domain_count // 0')
|
|
461
461
|
```
|
|
462
462
|
|
|
463
463
|
Display per worker:
|
|
@@ -465,7 +465,7 @@ Display per worker:
|
|
|
465
465
|
🧠 Skills: {colony_count} colony + {domain_count} domain loaded for builder
|
|
466
466
|
```
|
|
467
467
|
|
|
468
|
-
**PER WORKER:** Run using the Bash tool with description "Preparing worker {name}...": `
|
|
468
|
+
**PER WORKER:** Run using the Bash tool with description "Preparing worker {name}...": `aether spawn-log "Queen" "builder" "{ant_name}" "{task_description}" && aether context-update worker-spawn "{ant_name}" "builder" "{task_description}"`
|
|
469
469
|
|
|
470
470
|
**Context layer budget caps (enforce before injecting into prompt):**
|
|
471
471
|
- `archaeology_context`: cap at 4000 characters. If it exceeds the cap, truncate and append `[archaeology truncated]`.
|
|
@@ -533,7 +533,7 @@ Work:
|
|
|
533
533
|
**Approach Change Logging:**
|
|
534
534
|
If you try an approach that doesn't work and switch to a different approach, log it:
|
|
535
535
|
```bash
|
|
536
|
-
colony_name=$(
|
|
536
|
+
colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
|
|
537
537
|
[[ -z "$colony_name" ]] && colony_name="unknown"
|
|
538
538
|
phase_num=$(jq -r '.phase.number // "unknown"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "unknown")
|
|
539
539
|
|
|
@@ -549,10 +549,10 @@ cat >> .aether/midden/approach-changes.md << EOF
|
|
|
549
549
|
EOF
|
|
550
550
|
|
|
551
551
|
# Write to structured midden for threshold detection (MID-02)
|
|
552
|
-
|
|
552
|
+
aether midden-write "abandoned-approach" "Tried: initial approach that failed. Switched to: new approach. Reason: reason it didn't work" "builder" 2>/dev/null || true
|
|
553
553
|
|
|
554
554
|
# Enter memory pipeline for learning observation tracking (MID-02)
|
|
555
|
-
|
|
555
|
+
aether memory-capture \
|
|
556
556
|
"failure" \
|
|
557
557
|
"Approach abandoned: initial approach that failed -> new approach (reason it didn't work)" \
|
|
558
558
|
"failure" \
|
|
@@ -560,7 +560,7 @@ bash .aether/aether-utils.sh memory-capture \
|
|
|
560
560
|
```
|
|
561
561
|
|
|
562
562
|
Spawn sub-workers ONLY if 3x complexity:
|
|
563
|
-
- Check spawn budget using Bash tool with description: `
|
|
563
|
+
- Check spawn budget using Bash tool with description: `aether spawn-can-spawn {depth} --enforce`
|
|
564
564
|
- Generate name using Bash tool with description
|
|
565
565
|
- Announce: "🐜 Spawning {child_name} for {reason}"
|
|
566
566
|
- Log spawn using Bash tool with description
|
|
@@ -576,7 +576,7 @@ Return ONLY this JSON (no other text):
|
|
|
576
576
|
**Task calls return results directly (no TaskOutput needed).**
|
|
577
577
|
|
|
578
578
|
Before using any worker payload, validate schema:
|
|
579
|
-
Run using the Bash tool with description "Validating worker response...": `
|
|
579
|
+
Run using the Bash tool with description "Validating worker response...": `aether validate-worker-response builder '{worker_json}'`
|
|
580
580
|
If validation fails, treat the worker as failed with blocker `invalid_worker_response`.
|
|
581
581
|
|
|
582
582
|
**As each worker result arrives, IMMEDIATELY display a single completion line — do not wait for other workers:**
|
|
@@ -597,7 +597,7 @@ Where `tool_count` comes from the worker's returned JSON `tool_count` field, and
|
|
|
597
597
|
|
|
598
598
|
After displaying a failed worker, run using the Bash tool with description "Logging failure to midden...":
|
|
599
599
|
```bash
|
|
600
|
-
colony_name=$(
|
|
600
|
+
colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
|
|
601
601
|
[[ -z "$colony_name" ]] && colony_name="unknown"
|
|
602
602
|
phase_num=$(jq -r '.phase.number // "unknown"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "unknown")
|
|
603
603
|
|
|
@@ -615,17 +615,17 @@ cat >> .aether/midden/build-failures.md << EOF
|
|
|
615
615
|
EOF
|
|
616
616
|
|
|
617
617
|
# Write to structured midden for threshold detection (MID-01)
|
|
618
|
-
|
|
618
|
+
aether midden-write "worker_failure" "Builder ${ant_name} failed on task ${task_id}: ${blockers[0]:-$failure_reason}" "builder" 2>/dev/null || true
|
|
619
619
|
|
|
620
620
|
# Capture failure in memory pipeline (observe + pheromone + auto-promotion)
|
|
621
|
-
|
|
621
|
+
aether memory-capture \
|
|
622
622
|
"failure" \
|
|
623
623
|
"Builder ${ant_name} failed on task ${task_id}: ${blockers[0]:-$failure_reason}" \
|
|
624
624
|
"failure" \
|
|
625
625
|
"worker:builder" 2>/dev/null || true
|
|
626
626
|
```
|
|
627
627
|
|
|
628
|
-
**PER WORKER:** Run using the Bash tool with description "Recording {name} completion...": `
|
|
628
|
+
**PER WORKER:** Run using the Bash tool with description "Recording {name} completion...": `aether spawn-complete "{ant_name}" "completed" "{summary}" && aether context-update worker-complete "{ant_name}" "completed"`
|
|
629
629
|
|
|
630
630
|
**Check for total wave failure:**
|
|
631
631
|
|
|
@@ -680,7 +680,7 @@ Awaiting your choice.
|
|
|
680
680
|
```
|
|
681
681
|
|
|
682
682
|
Log escalation as flag:
|
|
683
|
-
Run using the Bash tool with description "Logging escalation...": `
|
|
683
|
+
Run using the Bash tool with description "Logging escalation...": `aether flag-add "blocker" "{task title}" "{failure summary}" "escalation" {phase_number}`
|
|
684
684
|
|
|
685
685
|
If at least one worker succeeded, continue normally to the next wave.
|
|
686
686
|
|
|
@@ -692,7 +692,7 @@ After processing all wave results, check if any midden error category has reache
|
|
|
692
692
|
|
|
693
693
|
Run using the Bash tool with description "Checking midden thresholds...":
|
|
694
694
|
```bash
|
|
695
|
-
midden_result=$(
|
|
695
|
+
midden_result=$(aether midden-recent-failures 50 2>/dev/null || echo '{"count":0,"failures":[]}')
|
|
696
696
|
midden_count=$(echo "$midden_result" | jq '.count // 0')
|
|
697
697
|
|
|
698
698
|
if [[ "$midden_count" -gt 0 ]]; then
|
|
@@ -717,7 +717,7 @@ if [[ "$midden_count" -gt 0 ]]; then
|
|
|
717
717
|
' .aether/data/pheromones.json 2>/dev/null || echo "0")
|
|
718
718
|
|
|
719
719
|
if [[ "$existing" == "0" ]]; then
|
|
720
|
-
|
|
720
|
+
aether pheromone-write REDIRECT \
|
|
721
721
|
"[error-pattern] Category \"$category\" recurring ($count occurrences)" \
|
|
722
722
|
--strength 0.7 \
|
|
723
723
|
--source "auto:error" \
|