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
|
@@ -87,7 +87,7 @@ If proxy is not healthy, log a warning but continue (workers will fall back to d
|
|
|
87
87
|
|
|
88
88
|
### Step 0.5: Load Colony State
|
|
89
89
|
|
|
90
|
-
Run using the Bash tool with description "Loading colony state...": `
|
|
90
|
+
Run using the Bash tool with description "Loading colony state...": `aether load-state`
|
|
91
91
|
|
|
92
92
|
If the command fails (non-zero exit or JSON has ok: false):
|
|
93
93
|
1. Parse error JSON
|
|
@@ -106,7 +106,7 @@ If successful:
|
|
|
106
106
|
```
|
|
107
107
|
(If HANDOFF.md exists, this provides orientation before the build proceeds)
|
|
108
108
|
|
|
109
|
-
After displaying context, run using the Bash tool with description "Releasing colony lock...": `
|
|
109
|
+
After displaying context, run using the Bash tool with description "Releasing colony lock...": `aether unload-state` to release the lock.
|
|
110
110
|
|
|
111
111
|
### Step 1: Validate + Read State
|
|
112
112
|
|
|
@@ -142,7 +142,7 @@ Stop here.
|
|
|
142
142
|
|
|
143
143
|
**Set colony depth (if --depth flag provided):**
|
|
144
144
|
If `cli_depth_override` is set:
|
|
145
|
-
1. Run using the Bash tool with description "Setting colony depth...": `
|
|
145
|
+
1. Run using the Bash tool with description "Setting colony depth...": `aether colony-depth set "$cli_depth_override"`
|
|
146
146
|
2. Parse JSON result - if `.ok` is false:
|
|
147
147
|
- Display: `Error: Invalid depth "$cli_depth_override". Use: light, standard, deep, full`
|
|
148
148
|
- Stop here
|
|
@@ -152,7 +152,7 @@ If `cli_depth_override` is set:
|
|
|
152
152
|
|
|
153
153
|
Run using the Bash tool with description "Reading colony depth...":
|
|
154
154
|
```bash
|
|
155
|
-
depth_result=$(
|
|
155
|
+
depth_result=$(aether colony-depth get 2>/dev/null || echo '{"ok":true,"result":{"depth":"standard","source":"default"}}')
|
|
156
156
|
colony_depth=$(echo "$depth_result" | jq -r '.result.depth // "standard"')
|
|
157
157
|
depth_source=$(echo "$depth_result" | jq -r '.result.source // "default"')
|
|
158
158
|
echo "colony_depth=$colony_depth"
|
|
@@ -201,7 +201,7 @@ Check for unresolved blocker flags on the requested phase:
|
|
|
201
201
|
|
|
202
202
|
Run using the Bash tool with description "Checking for blockers...":
|
|
203
203
|
```bash
|
|
204
|
-
|
|
204
|
+
aether flag-check-blockers {phase_number}
|
|
205
205
|
```
|
|
206
206
|
|
|
207
207
|
Parse the JSON result (`.result.blockers`):
|
|
@@ -210,7 +210,7 @@ Parse the JSON result (`.result.blockers`):
|
|
|
210
210
|
- **If blockers > 0:** Retrieve blocker details:
|
|
211
211
|
Run using the Bash tool with description "Loading blocker details...":
|
|
212
212
|
```bash
|
|
213
|
-
|
|
213
|
+
aether flag-list --type blocker --phase {phase_number}
|
|
214
214
|
```
|
|
215
215
|
Parse `.result.flags` and display an advisory warning:
|
|
216
216
|
```
|
|
@@ -240,7 +240,7 @@ Write COLONY_STATE.json.
|
|
|
240
240
|
Validate the state file:
|
|
241
241
|
Run using the Bash tool with description "Validating colony state...":
|
|
242
242
|
```bash
|
|
243
|
-
|
|
243
|
+
aether validate-state colony
|
|
244
244
|
```
|
|
245
245
|
|
|
246
246
|
### Step 3: Git Checkpoint
|
|
@@ -268,7 +268,7 @@ Output header:
|
|
|
268
268
|
|
|
269
269
|
```
|
|
270
270
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
271
|
-
|
|
271
|
+
🔨 B U I L D I N G P H A S E {id}
|
|
272
272
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
273
273
|
|
|
274
274
|
📍 Phase {id}: {name}
|
|
@@ -281,7 +281,7 @@ Call `colony-prime --compact` to get unified worker context (wisdom + context ca
|
|
|
281
281
|
|
|
282
282
|
Run using the Bash tool with description "Loading colony context...":
|
|
283
283
|
```bash
|
|
284
|
-
prime_result=$(
|
|
284
|
+
prime_result=$(aether colony-prime --compact 2>/dev/null)
|
|
285
285
|
```
|
|
286
286
|
|
|
287
287
|
**Parse the JSON response:**
|
|
@@ -299,7 +299,7 @@ Display after constraints:
|
|
|
299
299
|
|
|
300
300
|
Then display the active pheromones table by running:
|
|
301
301
|
```bash
|
|
302
|
-
|
|
302
|
+
aether pheromone-display
|
|
303
303
|
```
|
|
304
304
|
|
|
305
305
|
This shows the user exactly what signals are guiding the colony:
|
|
@@ -315,7 +315,7 @@ Check if territory survey exists and load relevant documents:
|
|
|
315
315
|
|
|
316
316
|
Run using the Bash tool with description "Loading territory survey...":
|
|
317
317
|
```bash
|
|
318
|
-
|
|
318
|
+
aether survey-load "{phase_name}" 2>/dev/null
|
|
319
319
|
```
|
|
320
320
|
|
|
321
321
|
**Parse the JSON response:**
|
|
@@ -378,14 +378,14 @@ Analyze codebase and suggest pheromone signals based on detected patterns.
|
|
|
378
378
|
|
|
379
379
|
Run using the Bash tool with description "Analyzing codebase for suggestions...":
|
|
380
380
|
```bash
|
|
381
|
-
|
|
381
|
+
aether suggest-approve --dry-run 2>/dev/null
|
|
382
382
|
```
|
|
383
383
|
|
|
384
384
|
Parse the JSON result to get `suggestion_count`.
|
|
385
385
|
|
|
386
386
|
If `suggestion_count` > 0:
|
|
387
387
|
- Display: "💡 {count} pheromone suggestion(s) detected from code analysis"
|
|
388
|
-
- Run: `
|
|
388
|
+
- Run: `aether suggest-approve`
|
|
389
389
|
- Parse result for approved/rejected/skipped counts
|
|
390
390
|
- If approved > 0: Display "✓ {approved} FOCUS signal(s) added"
|
|
391
391
|
|
|
@@ -403,8 +403,8 @@ log a warning and continue to Step 5.
|
|
|
403
403
|
2. **If existing code modification detected — spawn Archaeologist Scout:**
|
|
404
404
|
|
|
405
405
|
Generate archaeologist name and dispatch:
|
|
406
|
-
Run using the Bash tool with description "Naming archaeologist...": `
|
|
407
|
-
Run using the Bash tool with description "Dispatching archaeologist...": `
|
|
406
|
+
Run using the Bash tool with description "Naming archaeologist...": `aether generate-ant-name "archaeologist"` (store as `{archaeologist_name}`)
|
|
407
|
+
Run using the Bash tool with description "Dispatching archaeologist...": `aether spawn-log "Queen" "scout" "{archaeologist_name}" "Pre-build archaeology scan"`
|
|
408
408
|
|
|
409
409
|
Display:
|
|
410
410
|
```
|
|
@@ -429,7 +429,7 @@ log a warning and continue to Step 5.
|
|
|
429
429
|
4. Run: git blame "{file_path}" | head -40 for authorship
|
|
430
430
|
5. Note TODO/FIXME/HACK markers
|
|
431
431
|
|
|
432
|
-
Log activity:
|
|
432
|
+
Log activity: aether activity-log "READ" "{Ant-Name}" "description"
|
|
433
433
|
|
|
434
434
|
Report (plain text):
|
|
435
435
|
- WHY key code sections exist (from commits)
|
|
@@ -442,7 +442,7 @@ log a warning and continue to Step 5.
|
|
|
442
442
|
**Wait for results** (blocking — use TaskOutput with `block: true`).
|
|
443
443
|
|
|
444
444
|
Log completion and update swarm display:
|
|
445
|
-
Run using the Bash tool with description "Recording archaeologist findings...": `
|
|
445
|
+
Run using the Bash tool with description "Recording archaeologist findings...": `aether spawn-complete "{archaeologist_name}" "completed" "Pre-build archaeology scan"`
|
|
446
446
|
|
|
447
447
|
3. **Store and display findings:**
|
|
448
448
|
|
|
@@ -467,7 +467,7 @@ log a warning and continue to Step 5.
|
|
|
467
467
|
**Log phase start:**
|
|
468
468
|
Run using the Bash tool with description "Logging phase start...":
|
|
469
469
|
```bash
|
|
470
|
-
|
|
470
|
+
aether activity-log "EXECUTING" "Queen" "Phase {id}: {name} - Queen dispatching workers"
|
|
471
471
|
```
|
|
472
472
|
|
|
473
473
|
**Show real-time display header:**
|
|
@@ -498,9 +498,9 @@ Analyze the phase tasks:
|
|
|
498
498
|
|
|
499
499
|
3. **Generate ant names for each worker:**
|
|
500
500
|
|
|
501
|
-
Run using the Bash tool with description "Naming builder ant...": `
|
|
502
|
-
Run using the Bash tool with description "Naming watcher ant...": `
|
|
503
|
-
Run using the Bash tool with description "Naming chaos ant...": `
|
|
501
|
+
Run using the Bash tool with description "Naming builder ant...": `aether generate-ant-name "builder"`
|
|
502
|
+
Run using the Bash tool with description "Naming watcher ant...": `aether generate-ant-name "watcher"`
|
|
503
|
+
Run using the Bash tool with description "Naming chaos ant...": `aether generate-ant-name "chaos"`
|
|
504
504
|
|
|
505
505
|
Display spawn plan with caste emojis:
|
|
506
506
|
```
|
|
@@ -610,8 +610,8 @@ Parse the JSON result. If `is_integration_phase` is `"false"`:
|
|
|
610
610
|
If `is_integration_phase` is `"true"`:
|
|
611
611
|
|
|
612
612
|
1. **Generate Ambassador name and dispatch:**
|
|
613
|
-
Run using the Bash tool with description "Naming ambassador...": `
|
|
614
|
-
Run using the Bash tool with description "Dispatching ambassador...": `
|
|
613
|
+
Run using the Bash tool with description "Naming ambassador...": `aether generate-ant-name "ambassador"` (store as `{ambassador_name}`)
|
|
614
|
+
Run using the Bash tool with description "Dispatching ambassador...": `aether spawn-log "Queen" "ambassador" "{ambassador_name}" "External integration design"`
|
|
615
615
|
|
|
616
616
|
Display:
|
|
617
617
|
```
|
|
@@ -660,7 +660,7 @@ If `is_integration_phase` is `"true"`:
|
|
|
660
660
|
- HTTPS only
|
|
661
661
|
- Validate SSL certificates
|
|
662
662
|
|
|
663
|
-
Log activity:
|
|
663
|
+
Log activity: aether activity-log "RESEARCH" "{Ambassador-Name}" "description"
|
|
664
664
|
|
|
665
665
|
Return ONLY this JSON (no other text):
|
|
666
666
|
{
|
|
@@ -689,7 +689,7 @@ If `is_integration_phase` is `"true"`:
|
|
|
689
689
|
Extract from response: `integration_plan`, `env_vars_required`, `error_scenarios_covered`, `blockers`
|
|
690
690
|
|
|
691
691
|
Log completion and update swarm display:
|
|
692
|
-
Run using the Bash tool with description "Recording ambassador completion...": `
|
|
692
|
+
Run using the Bash tool with description "Recording ambassador completion...": `aether spawn-complete "{ambassador_name}" "completed" "Integration design complete"`
|
|
693
693
|
|
|
694
694
|
**Display Ambassador completion line:**
|
|
695
695
|
```
|
|
@@ -699,12 +699,12 @@ If `is_integration_phase` is `"true"`:
|
|
|
699
699
|
4. **Log integration plan to midden:**
|
|
700
700
|
Run using the Bash tool with description "Logging integration plan...":
|
|
701
701
|
```bash
|
|
702
|
-
|
|
702
|
+
aether midden-write "integration" "Plan for {integration_plan.service_name}: {integration_plan.integration_pattern} pattern, auth via {integration_plan.authentication_method}" "ambassador"
|
|
703
703
|
```
|
|
704
704
|
|
|
705
705
|
For each env var required:
|
|
706
706
|
```bash
|
|
707
|
-
|
|
707
|
+
aether midden-write "integration" "Required env var: {env_var}" "ambassador"
|
|
708
708
|
```
|
|
709
709
|
|
|
710
710
|
5. **Display integration summary:**
|
|
@@ -722,24 +722,24 @@ If `is_integration_phase` is `"true"`:
|
|
|
722
722
|
Store the `integration_plan` object to be injected into Builder prompts in the standard Wave 1 spawn.
|
|
723
723
|
|
|
724
724
|
**First, mark build start in context:**
|
|
725
|
-
Run using the Bash tool with description "Marking build start...": `
|
|
725
|
+
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}`
|
|
726
726
|
|
|
727
727
|
Before dispatching each worker, refresh colony context so new pheromones/memory are visible:
|
|
728
|
-
Run using the Bash tool with description "Refreshing colony context...": `prime_result=$(
|
|
728
|
+
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`.
|
|
729
729
|
|
|
730
730
|
For each Wave 1 task, use Task tool with `subagent_type="aether-builder"`, include `description: "🔨 Builder {Ant-Name}: {task_description}"` (DO NOT use run_in_background - multiple Task calls in a single message run in parallel and block until complete):
|
|
731
731
|
|
|
732
732
|
**PER WORKER:** Build graveyard caution context automatically:
|
|
733
733
|
- Identify explicit repo file paths from the task metadata (`files`, `hints`, `constraints`, and description when a concrete path is present).
|
|
734
734
|
- For each identified file path, run using the Bash tool with description "Checking graveyard cautions for {file}...":
|
|
735
|
-
`
|
|
735
|
+
`aether grave-check "{file}"`
|
|
736
736
|
- Parse each JSON result and keep only entries where `caution_level` is `high` or `low`.
|
|
737
737
|
- Merge these into a single `grave_context` block for that worker.
|
|
738
738
|
- If no file paths are identified, or all checks return `none`, set `grave_context` to empty.
|
|
739
739
|
- If `grave_context` is non-empty, display a visible line before spawning that worker:
|
|
740
740
|
`⚰️ Graveyard caution for {ant_name}: {file_1} ({level_1}), {file_2} ({level_2})`
|
|
741
741
|
|
|
742
|
-
**PER WORKER:** Run using the Bash tool with description "Preparing worker {name}...": `
|
|
742
|
+
**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}"`
|
|
743
743
|
|
|
744
744
|
**Builder Worker Prompt (CLEAN OUTPUT):**
|
|
745
745
|
```
|
|
@@ -789,7 +789,7 @@ Work:
|
|
|
789
789
|
**Approach Change Logging:**
|
|
790
790
|
If you try an approach that doesn't work and switch to a different approach, log it:
|
|
791
791
|
```bash
|
|
792
|
-
colony_name=$(
|
|
792
|
+
colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
|
|
793
793
|
[[ -z "$colony_name" ]] && colony_name="unknown"
|
|
794
794
|
phase_num=$(jq -r '.phase.number // "unknown"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "unknown")
|
|
795
795
|
|
|
@@ -805,10 +805,10 @@ cat >> .aether/midden/approach-changes.md << EOF
|
|
|
805
805
|
EOF
|
|
806
806
|
|
|
807
807
|
# Write to structured midden for threshold detection (MID-02)
|
|
808
|
-
|
|
808
|
+
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
|
|
809
809
|
|
|
810
810
|
# Enter memory pipeline for learning observation tracking (MID-02)
|
|
811
|
-
|
|
811
|
+
aether memory-capture \
|
|
812
812
|
"failure" \
|
|
813
813
|
"Approach abandoned: initial approach that failed -> new approach (reason it didn't work)" \
|
|
814
814
|
"failure" \
|
|
@@ -816,7 +816,7 @@ bash .aether/aether-utils.sh memory-capture \
|
|
|
816
816
|
```
|
|
817
817
|
|
|
818
818
|
Spawn sub-workers ONLY if 3x complexity:
|
|
819
|
-
- Check spawn budget using Bash tool with description: `
|
|
819
|
+
- Check spawn budget using Bash tool with description: `aether spawn-can-spawn {depth} --enforce`
|
|
820
820
|
- Generate name using Bash tool with description
|
|
821
821
|
- Announce: "🐜 Spawning {child_name} for {reason}"
|
|
822
822
|
- Log spawn using Bash tool with description
|
|
@@ -832,7 +832,7 @@ Return ONLY this JSON (no other text):
|
|
|
832
832
|
**Task calls return results directly (no TaskOutput needed).**
|
|
833
833
|
|
|
834
834
|
Before using any worker payload, validate schema:
|
|
835
|
-
Run using the Bash tool with description "Validating worker response...": `
|
|
835
|
+
Run using the Bash tool with description "Validating worker response...": `aether validate-worker-response builder '{worker_json}'`
|
|
836
836
|
If validation fails, treat the worker as failed with blocker `invalid_worker_response`.
|
|
837
837
|
|
|
838
838
|
**As each worker result arrives, IMMEDIATELY display a single completion line — do not wait for other workers:**
|
|
@@ -853,7 +853,7 @@ Where `tool_count` comes from the worker's returned JSON `tool_count` field, and
|
|
|
853
853
|
|
|
854
854
|
After displaying a failed worker, run using the Bash tool with description "Logging failure to midden...":
|
|
855
855
|
```bash
|
|
856
|
-
colony_name=$(
|
|
856
|
+
colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
|
|
857
857
|
[[ -z "$colony_name" ]] && colony_name="unknown"
|
|
858
858
|
phase_num=$(jq -r '.phase.number // "unknown"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "unknown")
|
|
859
859
|
|
|
@@ -871,17 +871,17 @@ cat >> .aether/midden/build-failures.md << EOF
|
|
|
871
871
|
EOF
|
|
872
872
|
|
|
873
873
|
# Write to structured midden for threshold detection (MID-01)
|
|
874
|
-
|
|
874
|
+
aether midden-write "worker_failure" "Builder ${ant_name} failed on task ${task_id}: ${blockers[0]:-$failure_reason}" "builder" 2>/dev/null || true
|
|
875
875
|
|
|
876
876
|
# Capture failure in memory pipeline (observe + pheromone + auto-promotion)
|
|
877
|
-
|
|
877
|
+
aether memory-capture \
|
|
878
878
|
"failure" \
|
|
879
879
|
"Builder ${ant_name} failed on task ${task_id}: ${blockers[0]:-$failure_reason}" \
|
|
880
880
|
"failure" \
|
|
881
881
|
"worker:builder" 2>/dev/null || true
|
|
882
882
|
```
|
|
883
883
|
|
|
884
|
-
**PER WORKER:** Run using the Bash tool with description "Recording {name} completion...": `
|
|
884
|
+
**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"`
|
|
885
885
|
|
|
886
886
|
**Check for total wave failure:**
|
|
887
887
|
|
|
@@ -936,7 +936,7 @@ Awaiting your choice.
|
|
|
936
936
|
```
|
|
937
937
|
|
|
938
938
|
Log escalation as flag:
|
|
939
|
-
Run using the Bash tool with description "Logging escalation...": `
|
|
939
|
+
Run using the Bash tool with description "Logging escalation...": `aether flag-add "blocker" "{task title}" "{failure summary}" "escalation" {phase_number}`
|
|
940
940
|
|
|
941
941
|
If at least one worker succeeded, continue normally to the next wave.
|
|
942
942
|
|
|
@@ -948,7 +948,7 @@ After processing all wave results, check if any midden error category has reache
|
|
|
948
948
|
|
|
949
949
|
Run using the Bash tool with description "Checking midden thresholds...":
|
|
950
950
|
```bash
|
|
951
|
-
midden_result=$(
|
|
951
|
+
midden_result=$(aether midden-recent-failures 50 2>/dev/null || echo '{"count":0,"failures":[]}')
|
|
952
952
|
midden_count=$(echo "$midden_result" | jq '.count // 0')
|
|
953
953
|
|
|
954
954
|
if [[ "$midden_count" -gt 0 ]]; then
|
|
@@ -973,7 +973,7 @@ if [[ "$midden_count" -gt 0 ]]; then
|
|
|
973
973
|
' .aether/data/pheromones.json 2>/dev/null || echo "0")
|
|
974
974
|
|
|
975
975
|
if [[ "$existing" == "0" ]]; then
|
|
976
|
-
|
|
976
|
+
aether pheromone-write REDIRECT \
|
|
977
977
|
"[error-pattern] Category \"$category\" recurring ($count occurrences)" \
|
|
978
978
|
--strength 0.7 \
|
|
979
979
|
--source "auto:error" \
|
|
@@ -1018,7 +1018,7 @@ Repeat Step 5.1-5.2 for each subsequent wave, waiting for previous wave to compl
|
|
|
1018
1018
|
|
|
1019
1019
|
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):
|
|
1020
1020
|
|
|
1021
|
-
Run using the Bash tool with description "Dispatching watcher...": `
|
|
1021
|
+
Run using the Bash tool with description "Dispatching watcher...": `aether spawn-log "Queen" "watcher" "{watcher_name}" "Independent verification"`
|
|
1022
1022
|
|
|
1023
1023
|
**Watcher Worker Prompt (CLEAN OUTPUT):**
|
|
1024
1024
|
```
|
|
@@ -1060,7 +1060,7 @@ Return ONLY this JSON:
|
|
|
1060
1060
|
**Task call returns results directly (no TaskOutput needed).**
|
|
1061
1061
|
|
|
1062
1062
|
Validate watcher payload first:
|
|
1063
|
-
Run using the Bash tool with description "Validating watcher response...": `
|
|
1063
|
+
Run using the Bash tool with description "Validating watcher response...": `aether validate-worker-response watcher '{watcher_json}'`
|
|
1064
1064
|
|
|
1065
1065
|
**Parse the Watcher's validated JSON response:** verification_passed, issues_found, quality_score, recommendation
|
|
1066
1066
|
|
|
@@ -1113,8 +1113,8 @@ For failed verification:
|
|
|
1113
1113
|
|
|
1114
1114
|
3. **Generate Measurer name and dispatch:**
|
|
1115
1115
|
|
|
1116
|
-
Run using the Bash tool with description "Naming measurer...": `
|
|
1117
|
-
Run using the Bash tool with description "Dispatching measurer...": `
|
|
1116
|
+
Run using the Bash tool with description "Naming measurer...": `aether generate-ant-name "measurer"` (store as `{measurer_name}`)
|
|
1117
|
+
Run using the Bash tool with description "Dispatching measurer...": `aether spawn-log "Queen" "measurer" "{measurer_name}" "Performance baseline measurement"`
|
|
1118
1118
|
|
|
1119
1119
|
Display:
|
|
1120
1120
|
```
|
|
@@ -1158,7 +1158,7 @@ For failed verification:
|
|
|
1158
1158
|
|
|
1159
1159
|
**IMPORTANT:** You are strictly read-only. Do not modify any files.
|
|
1160
1160
|
|
|
1161
|
-
Log activity:
|
|
1161
|
+
Log activity: aether activity-log "BENCHMARKING" "{Measurer-Name}" "description"
|
|
1162
1162
|
|
|
1163
1163
|
Return ONLY this JSON (no other text):
|
|
1164
1164
|
{
|
|
@@ -1190,7 +1190,7 @@ For failed verification:
|
|
|
1190
1190
|
Extract from response: `baselines_established`, `bottlenecks_identified`, `recommendations`, `tool_count`
|
|
1191
1191
|
|
|
1192
1192
|
Log completion and update swarm display:
|
|
1193
|
-
Run using the Bash tool with description "Recording measurer completion...": `
|
|
1193
|
+
Run using the Bash tool with description "Recording measurer completion...": `aether spawn-complete "{measurer_name}" "completed" "Baselines established, bottlenecks identified"`
|
|
1194
1194
|
|
|
1195
1195
|
**Display Measurer completion line:**
|
|
1196
1196
|
```
|
|
@@ -1201,17 +1201,17 @@ For failed verification:
|
|
|
1201
1201
|
|
|
1202
1202
|
For each baseline established, run using the Bash tool with description "Logging baseline...":
|
|
1203
1203
|
```bash
|
|
1204
|
-
|
|
1204
|
+
aether midden-write "performance" "Baseline: {baseline.operation} ({baseline.complexity}) at {baseline.file}:{baseline.line}" "measurer"
|
|
1205
1205
|
```
|
|
1206
1206
|
|
|
1207
1207
|
For each bottleneck identified, run using the Bash tool with description "Logging bottleneck...":
|
|
1208
1208
|
```bash
|
|
1209
|
-
|
|
1209
|
+
aether midden-write "performance" "Bottleneck: {bottleneck.description} ({bottleneck.severity}) at {bottleneck.location}" "measurer"
|
|
1210
1210
|
```
|
|
1211
1211
|
|
|
1212
1212
|
For each recommendation, run using the Bash tool with description "Logging recommendation...":
|
|
1213
1213
|
```bash
|
|
1214
|
-
|
|
1214
|
+
aether midden-write "performance" "Recommendation (P{rec.priority}): {rec.change} - {rec.estimated_improvement}" "measurer"
|
|
1215
1215
|
```
|
|
1216
1216
|
|
|
1217
1217
|
8. **Display summary and store for synthesis:**
|
|
@@ -1234,10 +1234,10 @@ For failed verification:
|
|
|
1234
1234
|
**After the Watcher completes, spawn a Chaos Ant to probe the phase work for edge cases and boundary conditions.**
|
|
1235
1235
|
|
|
1236
1236
|
Generate a chaos ant name and dispatch:
|
|
1237
|
-
Run using the Bash tool with description "Naming chaos ant...": `
|
|
1238
|
-
Run using the Bash tool with description "Loading existing flags...": `
|
|
1237
|
+
Run using the Bash tool with description "Naming chaos ant...": `aether generate-ant-name "chaos"` (store as `{chaos_name}`)
|
|
1238
|
+
Run using the Bash tool with description "Loading existing flags...": `aether flag-list --phase {phase_number}`
|
|
1239
1239
|
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".
|
|
1240
|
-
Run using the Bash tool with description "Dispatching chaos ant...": `
|
|
1240
|
+
Run using the Bash tool with description "Dispatching chaos ant...": `aether spawn-log "Queen" "chaos" "{chaos_name}" "Resilience testing of Phase {id} work"`
|
|
1241
1241
|
|
|
1242
1242
|
**Announce the resilience testing wave:**
|
|
1243
1243
|
```
|
|
@@ -1291,13 +1291,13 @@ Return ONLY this JSON:
|
|
|
1291
1291
|
**Flag critical/high findings:**
|
|
1292
1292
|
|
|
1293
1293
|
If any findings have severity `"critical"` or `"high"`:
|
|
1294
|
-
Run using the Bash tool with description "Flagging {finding.title}...": `
|
|
1294
|
+
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}"`
|
|
1295
1295
|
|
|
1296
1296
|
**Log resilience finding to midden (MEM-02):**
|
|
1297
1297
|
|
|
1298
1298
|
For each critical/high finding, run using the Bash tool with description "Logging resilience finding...":
|
|
1299
1299
|
```bash
|
|
1300
|
-
colony_name=$(
|
|
1300
|
+
colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
|
|
1301
1301
|
[[ -z "$colony_name" ]] && colony_name="unknown"
|
|
1302
1302
|
phase_num=$(jq -r '.phase.number // "unknown"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "unknown")
|
|
1303
1303
|
|
|
@@ -1315,10 +1315,10 @@ cat >> .aether/midden/build-failures.md << EOF
|
|
|
1315
1315
|
EOF
|
|
1316
1316
|
|
|
1317
1317
|
# Write to structured midden for threshold detection (MID-01)
|
|
1318
|
-
|
|
1318
|
+
aether midden-write "resilience" "Chaos finding: ${finding.title} (${finding.severity})" "chaos" 2>/dev/null || true
|
|
1319
1319
|
|
|
1320
1320
|
# Capture resilience failure in memory pipeline (observe + pheromone + auto-promotion)
|
|
1321
|
-
|
|
1321
|
+
aether memory-capture \
|
|
1322
1322
|
"failure" \
|
|
1323
1323
|
"Resilience issue found: ${finding.title} (${finding.severity})" \
|
|
1324
1324
|
"failure" \
|
|
@@ -1326,20 +1326,20 @@ bash .aether/aether-utils.sh memory-capture \
|
|
|
1326
1326
|
```
|
|
1327
1327
|
|
|
1328
1328
|
Log chaos ant completion and update swarm display:
|
|
1329
|
-
Run using the Bash tool with description "Recording chaos completion...": `
|
|
1329
|
+
Run using the Bash tool with description "Recording chaos completion...": `aether spawn-complete "{chaos_name}" "completed" "{summary}"`
|
|
1330
1330
|
|
|
1331
1331
|
### Step 5.8: Create Flags for Verification Failures
|
|
1332
1332
|
|
|
1333
1333
|
If the Watcher reported `verification_passed: false` or `recommendation: "fix_required"`:
|
|
1334
1334
|
|
|
1335
1335
|
For each issue in `issues_found`:
|
|
1336
|
-
Run using the Bash tool with description "Flagging {issue_title}...": `
|
|
1336
|
+
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}"`
|
|
1337
1337
|
|
|
1338
1338
|
**Log verification failure to midden (MEM-02):**
|
|
1339
1339
|
|
|
1340
1340
|
After flagging each issue, run using the Bash tool with description "Logging verification failure...":
|
|
1341
1341
|
```bash
|
|
1342
|
-
colony_name=$(
|
|
1342
|
+
colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
|
|
1343
1343
|
[[ -z "$colony_name" ]] && colony_name="unknown"
|
|
1344
1344
|
phase_num=$(jq -r '.phase.number // "unknown"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "unknown")
|
|
1345
1345
|
|
|
@@ -1357,10 +1357,10 @@ cat >> .aether/midden/test-failures.md << EOF
|
|
|
1357
1357
|
EOF
|
|
1358
1358
|
|
|
1359
1359
|
# Write to structured midden for threshold detection (MID-01)
|
|
1360
|
-
|
|
1360
|
+
aether midden-write "verification" "Watcher verification failed: ${issue_title}" "watcher" 2>/dev/null || true
|
|
1361
1361
|
|
|
1362
1362
|
# Capture verification failure in memory pipeline (observe + pheromone + auto-promotion)
|
|
1363
|
-
|
|
1363
|
+
aether memory-capture \
|
|
1364
1364
|
"failure" \
|
|
1365
1365
|
"Verification failed: ${issue_title} - ${issue_description}" \
|
|
1366
1366
|
"failure" \
|
|
@@ -1412,7 +1412,7 @@ Collect all worker outputs and create phase summary:
|
|
|
1412
1412
|
**Graveyard Recording:**
|
|
1413
1413
|
For each worker that returned `status: "failed"`:
|
|
1414
1414
|
For each file in that worker's `files_modified` or `files_created`:
|
|
1415
|
-
Run using the Bash tool with description "Recording failure grave...": `
|
|
1415
|
+
Run using the Bash tool with description "Recording failure grave...": `aether grave-add "{file}" "{ant_name}" "{task_id}" {phase} "{first blocker or summary}" && aether activity-log "GRAVE" "Queen" "Grave marker placed at {file} — {ant_name} failed: {summary}"`
|
|
1416
1416
|
Then display a user-visible confirmation line:
|
|
1417
1417
|
`⚰️ Grave recorded: {file} — {ant_name} failed ({summary})`
|
|
1418
1418
|
|
|
@@ -1591,7 +1591,7 @@ This ensures the handoff always reflects the latest build state, even if the ses
|
|
|
1591
1591
|
|
|
1592
1592
|
Log this build activity to `.aether/CONTEXT.md`:
|
|
1593
1593
|
|
|
1594
|
-
Run using the Bash tool with description "Updating build context...": `
|
|
1594
|
+
Run using the Bash tool with description "Updating build context...": `aether context-update activity "build {phase_id}" "{synthesis.status}" "{files_created_count + files_modified_count}" && aether context-update build-complete "{synthesis.status}" "{synthesis.status == 'completed' ? 'success' : 'failed'}"`
|
|
1595
1595
|
|
|
1596
1596
|
Also update safe-to-clear status:
|
|
1597
1597
|
- If build completed successfully: `context-update safe-to-clear "YES" "Build complete, ready to continue"`
|
|
@@ -1603,14 +1603,14 @@ After build completion (success or failure), check if any observations have met
|
|
|
1603
1603
|
|
|
1604
1604
|
Run using the Bash tool with description "Checking for wisdom promotions...":
|
|
1605
1605
|
```bash
|
|
1606
|
-
proposals=$(
|
|
1606
|
+
proposals=$(aether learning-check-promotion 2>/dev/null || echo '{"proposals":[]}')
|
|
1607
1607
|
proposal_count=$(echo "$proposals" | jq '.proposals | length')
|
|
1608
1608
|
echo "{\"proposal_count\": $proposal_count}"
|
|
1609
1609
|
```
|
|
1610
1610
|
|
|
1611
1611
|
Parse the result. If proposal_count > 0:
|
|
1612
1612
|
- Display: "📚 $proposal_count wisdom proposal(s) ready for review"
|
|
1613
|
-
- Run: `
|
|
1613
|
+
- Run: `aether learning-approve-proposals`
|
|
1614
1614
|
- This presents the one-at-a-time UI for user review
|
|
1615
1615
|
|
|
1616
1616
|
If proposal_count == 0:
|
|
@@ -1629,14 +1629,14 @@ Calculate `elapsed` using `build_started_at_epoch` (epoch integer captured at St
|
|
|
1629
1629
|
|
|
1630
1630
|
```
|
|
1631
1631
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1632
|
-
|
|
1632
|
+
🔨 B U I L D S U M M A R Y
|
|
1633
1633
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1634
|
-
Phase {id}: {name}
|
|
1635
|
-
Pattern: {selected_pattern}
|
|
1634
|
+
📍 Phase {id}: {name}
|
|
1635
|
+
🎲 Pattern: {selected_pattern}
|
|
1636
1636
|
|
|
1637
|
-
Workers: {pass_count} passed {fail_count} failed ({total} total)
|
|
1638
|
-
Tools: {total_tools} calls across all workers
|
|
1639
|
-
Duration: {elapsed}
|
|
1637
|
+
🐜 Workers: {pass_count} passed {fail_count} failed ({total} total)
|
|
1638
|
+
🛠️ Tools: {total_tools} calls across all workers
|
|
1639
|
+
⏱️ Duration: {elapsed}
|
|
1640
1640
|
|
|
1641
1641
|
{if measurer_ran:}
|
|
1642
1642
|
📊 Measurer: {baseline_count} baselines established, {bottleneck_count} bottlenecks identified
|
|
@@ -1666,7 +1666,7 @@ After displaying the BUILD SUMMARY (and optional verbose details), call the Next
|
|
|
1666
1666
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "IDLE")
|
|
1667
1667
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json 2>/dev/null || echo "0")
|
|
1668
1668
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json 2>/dev/null || echo "0")
|
|
1669
|
-
|
|
1669
|
+
aether print-next-up "$state" "$current_phase" "$total_phases"
|
|
1670
1670
|
```
|
|
1671
1671
|
|
|
1672
1672
|
**Routing Note:** The state-based Next Up block above routes based on colony state. If verification failed or blockers exist, review `/ant:flags` before continuing.
|
|
@@ -1680,4 +1680,4 @@ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_pha
|
|
|
1680
1680
|
|
|
1681
1681
|
Update the session tracking file to enable `/ant:resume` after context clear:
|
|
1682
1682
|
|
|
1683
|
-
Run using the Bash tool with description "Saving build session...": `
|
|
1683
|
+
Run using the Bash tool with description "Saving build session...": `aether session-update "/ant:build {phase_id}" "/ant:continue" "Phase {phase_id} build completed: {synthesis.status}"`
|
|
@@ -87,7 +87,7 @@ If proxy is not healthy, log a warning but continue (workers will fall back to d
|
|
|
87
87
|
|
|
88
88
|
### Step 0.5: Load Colony State
|
|
89
89
|
|
|
90
|
-
Run using the Bash tool with description "Loading colony state...": `
|
|
90
|
+
Run using the Bash tool with description "Loading colony state...": `aether load-state`
|
|
91
91
|
|
|
92
92
|
If the command fails (non-zero exit or JSON has ok: false):
|
|
93
93
|
1. Parse error JSON
|
|
@@ -106,7 +106,7 @@ If successful:
|
|
|
106
106
|
```
|
|
107
107
|
(If HANDOFF.md exists, this provides orientation before the build proceeds)
|
|
108
108
|
|
|
109
|
-
After displaying context, run using the Bash tool with description "Releasing colony lock...": `
|
|
109
|
+
After displaying context, run using the Bash tool with description "Releasing colony lock...": `aether unload-state` to release the lock.
|
|
110
110
|
|
|
111
111
|
### Step 1: Validate + Read State
|
|
112
112
|
|
|
@@ -142,7 +142,7 @@ Stop here.
|
|
|
142
142
|
|
|
143
143
|
**Set colony depth (if --depth flag provided):**
|
|
144
144
|
If `cli_depth_override` is set:
|
|
145
|
-
1. Run using the Bash tool with description "Setting colony depth...": `
|
|
145
|
+
1. Run using the Bash tool with description "Setting colony depth...": `aether colony-depth set "$cli_depth_override"`
|
|
146
146
|
2. Parse JSON result - if `.ok` is false:
|
|
147
147
|
- Display: `Error: Invalid depth "$cli_depth_override". Use: light, standard, deep, full`
|
|
148
148
|
- Stop here
|
|
@@ -152,7 +152,7 @@ If `cli_depth_override` is set:
|
|
|
152
152
|
|
|
153
153
|
Run using the Bash tool with description "Reading colony depth...":
|
|
154
154
|
```bash
|
|
155
|
-
depth_result=$(
|
|
155
|
+
depth_result=$(aether colony-depth get 2>/dev/null || echo '{"ok":true,"result":{"depth":"standard","source":"default"}}')
|
|
156
156
|
colony_depth=$(echo "$depth_result" | jq -r '.result.depth // "standard"')
|
|
157
157
|
depth_source=$(echo "$depth_result" | jq -r '.result.source // "default"')
|
|
158
158
|
echo "colony_depth=$colony_depth"
|
|
@@ -201,7 +201,7 @@ Check for unresolved blocker flags on the requested phase:
|
|
|
201
201
|
|
|
202
202
|
Run using the Bash tool with description "Checking for blockers...":
|
|
203
203
|
```bash
|
|
204
|
-
|
|
204
|
+
aether flag-check-blockers {phase_number}
|
|
205
205
|
```
|
|
206
206
|
|
|
207
207
|
Parse the JSON result (`.result.blockers`):
|
|
@@ -210,7 +210,7 @@ Parse the JSON result (`.result.blockers`):
|
|
|
210
210
|
- **If blockers > 0:** Retrieve blocker details:
|
|
211
211
|
Run using the Bash tool with description "Loading blocker details...":
|
|
212
212
|
```bash
|
|
213
|
-
|
|
213
|
+
aether flag-list --type blocker --phase {phase_number}
|
|
214
214
|
```
|
|
215
215
|
Parse `.result.flags` and display an advisory warning:
|
|
216
216
|
```
|
|
@@ -237,7 +237,7 @@ If `events` exceeds 100 entries, keep only the last 100.
|
|
|
237
237
|
|
|
238
238
|
Run using the Bash tool with description "Updating colony state for build...":
|
|
239
239
|
```bash
|
|
240
|
-
|
|
240
|
+
aether state-mutate \
|
|
241
241
|
--argjson phase "$PHASE_NUMBER" \
|
|
242
242
|
--arg phase_name "$PHASE_NAME" \
|
|
243
243
|
--arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
|
@@ -247,7 +247,7 @@ bash .aether/aether-utils.sh state-mutate \
|
|
|
247
247
|
Validate the state file:
|
|
248
248
|
Run using the Bash tool with description "Validating colony state...":
|
|
249
249
|
```bash
|
|
250
|
-
|
|
250
|
+
aether validate-state colony
|
|
251
251
|
```
|
|
252
252
|
|
|
253
253
|
### Step 3: Git Checkpoint
|
|
@@ -275,7 +275,7 @@ Output header:
|
|
|
275
275
|
|
|
276
276
|
```
|
|
277
277
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
278
|
-
|
|
278
|
+
🔨 B U I L D I N G P H A S E {id}
|
|
279
279
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
280
280
|
|
|
281
281
|
📍 Phase {id}: {name}
|
|
@@ -284,7 +284,7 @@ Output header:
|
|
|
284
284
|
|
|
285
285
|
Run using the Bash tool with description "Showing phase progress...":
|
|
286
286
|
```bash
|
|
287
|
-
progress_bar=$(
|
|
287
|
+
progress_bar=$(aether generate-progress-bar "$current_phase" "$total_phases" 20 2>/dev/null || echo "")
|
|
288
288
|
if [[ -n "$progress_bar" ]]; then
|
|
289
289
|
echo "[Phase ${current_phase}/${total_phases}] ${progress_bar}"
|
|
290
290
|
fi
|