aether-colony 5.3.3 → 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/commands/archaeology.yaml +3 -3
- package/.aether/commands/build.yaml +45 -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 +11 -11
- 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 +16 -16
- 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 +77 -82
- package/.aether/commands/organize.yaml +5 -5
- package/.aether/commands/patrol.yaml +6 -6
- 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 +7 -7
- 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 +13 -13
- 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 +7 -7
- package/.aether/docs/command-playbooks/build-context.md +11 -11
- package/.aether/docs/command-playbooks/build-full.md +69 -69
- package/.aether/docs/command-playbooks/build-prep.md +9 -9
- 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 +28 -28
- package/.aether/docs/command-playbooks/continue-finalize.md +12 -12
- package/.aether/docs/command-playbooks/continue-full.md +47 -47
- package/.aether/docs/command-playbooks/continue-gates.md +18 -18
- package/.aether/docs/command-playbooks/continue-verify.md +10 -10
- package/.aether/templates/colony-state-template.json +1 -0
- package/.aether/utils/oracle/oracle-stop-hook.sh +896 -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 +8 -8
- 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 +16 -16
- 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 +43 -42
- package/.claude/commands/ant/organize.md +3 -3
- package/.claude/commands/ant/patrol.md +6 -6
- 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 +7 -7
- 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 +13 -13
- 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 +45 -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 +16 -16
- 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 +34 -40
- package/.opencode/commands/ant/organize.md +2 -2
- package/.opencode/commands/ant/patrol.md +6 -6
- 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 +7 -7
- 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/bin/cli.js +118 -3
- package/bin/lib/binary-downloader.js +267 -0
- package/bin/lib/update-transaction.js +19 -0
- package/bin/lib/version-gate.js +179 -0
- package/package.json +1 -1
|
@@ -74,7 +74,7 @@ Update COLONY_STATE.json:
|
|
|
74
74
|
|
|
75
75
|
if [[ "$patterns_count" -eq 0 ]]; then
|
|
76
76
|
# Builder skipped learning output -- fire deterministic fallback
|
|
77
|
-
fallback_result=$(
|
|
77
|
+
fallback_result=$(aether learning-extract-fallback 2>/dev/null || echo '{"learnings":[],"count":0}')
|
|
78
78
|
fallback_count=$(echo "$fallback_result" | jq '.result.count // 0')
|
|
79
79
|
fi
|
|
80
80
|
|
|
@@ -92,7 +92,7 @@ Update COLONY_STATE.json:
|
|
|
92
92
|
|
|
93
93
|
Run using the Bash tool with description "Recording learning observations...":
|
|
94
94
|
```bash
|
|
95
|
-
colony_name=$(
|
|
95
|
+
colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
|
|
96
96
|
[[ -z "$colony_name" ]] && colony_name="unknown"
|
|
97
97
|
|
|
98
98
|
# Get learnings from the current phase
|
|
@@ -101,7 +101,7 @@ Update COLONY_STATE.json:
|
|
|
101
101
|
if [[ -n "$current_phase_learnings" ]]; then
|
|
102
102
|
echo "$current_phase_learnings" | jq -r '.learnings[]?.claim // empty' 2>/dev/null | while read -r claim; do
|
|
103
103
|
if [[ -n "$claim" ]]; then
|
|
104
|
-
|
|
104
|
+
aether memory-capture "learning" "$claim" "pattern" "worker:continue" 2>/dev/null || true
|
|
105
105
|
fi
|
|
106
106
|
done
|
|
107
107
|
echo "Recorded observations for threshold tracking"
|
|
@@ -123,7 +123,7 @@ Update COLONY_STATE.json:
|
|
|
123
123
|
|
|
124
124
|
Run using the Bash tool with description "Creating instinct from pattern...":
|
|
125
125
|
```bash
|
|
126
|
-
|
|
126
|
+
aether instinct-create \
|
|
127
127
|
--trigger "<when this situation arises>" \
|
|
128
128
|
--action "<what worked or should be done>" \
|
|
129
129
|
--confidence <0.7-0.9 based on evidence strength> \
|
|
@@ -147,7 +147,7 @@ Update COLONY_STATE.json:
|
|
|
147
147
|
|
|
148
148
|
Run using the Bash tool with description "Checking midden for error patterns...":
|
|
149
149
|
```bash
|
|
150
|
-
midden_result=$(
|
|
150
|
+
midden_result=$(aether midden-recent-failures 10 2>/dev/null || echo '{"count":0,"failures":[]}')
|
|
151
151
|
midden_count=$(echo "$midden_result" | jq '.count // 0')
|
|
152
152
|
```
|
|
153
153
|
|
|
@@ -155,7 +155,7 @@ Update COLONY_STATE.json:
|
|
|
155
155
|
|
|
156
156
|
Run using the Bash tool with description "Creating instinct from error pattern...":
|
|
157
157
|
```bash
|
|
158
|
-
|
|
158
|
+
aether instinct-create \
|
|
159
159
|
--trigger "<when this error condition arises>" \
|
|
160
160
|
--action "<how to avoid or handle this error>" \
|
|
161
161
|
--confidence 0.8 \
|
|
@@ -173,7 +173,7 @@ Update COLONY_STATE.json:
|
|
|
173
173
|
|
|
174
174
|
Run using the Bash tool with description "Creating instinct from success pattern...":
|
|
175
175
|
```bash
|
|
176
|
-
|
|
176
|
+
aether instinct-create \
|
|
177
177
|
--trigger "<when this type of task arises>" \
|
|
178
178
|
--action "<the approach that worked well>" \
|
|
179
179
|
--confidence 0.7 \ # Base value; increase if observation_count > 1 per formula
|
|
@@ -203,7 +203,7 @@ Update COLONY_STATE.json:
|
|
|
203
203
|
domain=$(echo "$encoded" | base64 -d | jq -r '.domain // "workflow"')
|
|
204
204
|
|
|
205
205
|
# queen-promote-instinct handles dedup internally (skips if already in QUEEN.md)
|
|
206
|
-
result=$(
|
|
206
|
+
result=$(aether queen-promote-instinct \
|
|
207
207
|
"$trigger" "$action" "$confidence" "$domain" 2>/dev/null || echo '{"ok":false}')
|
|
208
208
|
|
|
209
209
|
was_promoted=$(echo "$result" | jq -r '.result.promoted // false' 2>/dev/null || echo "false")
|
|
@@ -260,7 +260,7 @@ Update COLONY_STATE.json:
|
|
|
260
260
|
[[ -n "$repo_domain_tags" ]] && promote_args+=(--domain "$repo_domain_tags")
|
|
261
261
|
|
|
262
262
|
# Call hive-promote which orchestrates abstract + store
|
|
263
|
-
result=$(
|
|
263
|
+
result=$(aether "${promote_args[@]}" 2>/dev/null || echo '{}')
|
|
264
264
|
was_promoted=$(echo "$result" | jq -r '.result.action // "skipped"' 2>/dev/null || echo "skipped")
|
|
265
265
|
|
|
266
266
|
if [[ "$was_promoted" == "promoted" || "$was_promoted" == "merged" ]]; then
|
|
@@ -303,15 +303,15 @@ Write the updated state through targeted `state-mutate` calls. Each call acquire
|
|
|
303
303
|
Run using the Bash tool with description "Advancing colony state...":
|
|
304
304
|
```bash
|
|
305
305
|
# Mark current phase completed
|
|
306
|
-
|
|
306
|
+
aether state-mutate --argjson pid "$current_phase" \
|
|
307
307
|
'.plan.phases |= map(if .id == $pid then .status = "completed" else . end)'
|
|
308
308
|
|
|
309
309
|
# Append learning (if any — skip if no learnings were extracted in Step 2)
|
|
310
|
-
#
|
|
310
|
+
# aether state-mutate --argjson learning "$learning_json" \
|
|
311
311
|
# '.memory.phase_learnings += [$learning]'
|
|
312
312
|
|
|
313
313
|
# Advance to next phase
|
|
314
|
-
|
|
314
|
+
aether state-mutate \
|
|
315
315
|
--argjson pid "$current_phase" \
|
|
316
316
|
--argjson next "$next_phase" \
|
|
317
317
|
--arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
|
@@ -321,12 +321,12 @@ bash .aether/aether-utils.sh state-mutate \
|
|
|
321
321
|
Run using the Bash tool with description "Enforcing memory caps...":
|
|
322
322
|
```bash
|
|
323
323
|
# Cap enforcement — keep arrays bounded
|
|
324
|
-
|
|
324
|
+
aether state-mutate \
|
|
325
325
|
'.memory.phase_learnings = (.memory.phase_learnings[-20:]) | .memory.decisions = (.memory.decisions[-30:]) | .memory.instincts = (.memory.instincts | sort_by(.confidence) | .[-30:]) | .events = (.events[-100:])'
|
|
326
326
|
```
|
|
327
327
|
|
|
328
328
|
Validate the state file:
|
|
329
|
-
Run using the Bash tool with description "Validating colony state...": `
|
|
329
|
+
Run using the Bash tool with description "Validating colony state...": `aether validate-state colony`
|
|
330
330
|
|
|
331
331
|
### Step 2.0.4: Worktree Merge-Back (NON-BLOCKING)
|
|
332
332
|
|
|
@@ -345,7 +345,7 @@ merged_count=0
|
|
|
345
345
|
|
|
346
346
|
for branch in $branches; do
|
|
347
347
|
[[ -z "$branch" ]] && continue
|
|
348
|
-
result=$(
|
|
348
|
+
result=$(aether worktree-merge --branch "$branch" 2>/dev/null || echo '{"ok":false}')
|
|
349
349
|
ok=$(echo "$result" | jq -r '.ok // false')
|
|
350
350
|
if [[ "$ok" == "true" ]]; then
|
|
351
351
|
last_merged_branch="$branch"
|
|
@@ -370,7 +370,7 @@ Run using the Bash tool with description "Checking for pheromone merge-back file
|
|
|
370
370
|
# Check if a branch pheromone export was merged into main
|
|
371
371
|
export_file=".aether/exchange/pheromone-branch-export.json"
|
|
372
372
|
if [[ -f "$export_file" ]]; then
|
|
373
|
-
merge_result=$(
|
|
373
|
+
merge_result=$(aether pheromone-merge-back --export-file "$export_file" 2>/dev/null || echo '{"ok":false}')
|
|
374
374
|
merge_ok=$(echo "$merge_result" | jq -r '.ok // false' 2>/dev/null)
|
|
375
375
|
if [[ "$merge_ok" == "true" ]]; then
|
|
376
376
|
new_count=$(echo "$merge_result" | jq -r '.result.new_signals_written // 0' 2>/dev/null)
|
|
@@ -403,7 +403,7 @@ last_merge_branch="${last_merged_branch:-}"
|
|
|
403
403
|
last_merge_sha="${last_merge_sha:-}"
|
|
404
404
|
|
|
405
405
|
if [[ -n "$last_merge_branch" && -n "$last_merge_sha" ]]; then
|
|
406
|
-
collect_result=$(
|
|
406
|
+
collect_result=$(aether midden-collect \
|
|
407
407
|
--branch "$last_merge_branch" --merge-sha "$last_merge_sha" \
|
|
408
408
|
2>/dev/null || echo '{"ok":false}')
|
|
409
409
|
collect_ok=$(echo "$collect_result" | jq -r '.ok // false' 2>/dev/null)
|
|
@@ -427,7 +427,7 @@ After midden collection (Step 2.0.6), run cross-PR analysis to detect systemic f
|
|
|
427
427
|
|
|
428
428
|
Run using the Bash tool with description "Running cross-PR midden analysis...":
|
|
429
429
|
```bash
|
|
430
|
-
analysis_result=$(
|
|
430
|
+
analysis_result=$(aether midden-cross-pr-analysis --window 14 \
|
|
431
431
|
2>/dev/null || echo '{"ok":false}')
|
|
432
432
|
analysis_ok=$(echo "$analysis_result" | jq -r '.ok // false' 2>/dev/null)
|
|
433
433
|
if [[ "$analysis_ok" == "true" ]]; then
|
|
@@ -459,7 +459,7 @@ After learning extraction completes in Step 2, auto-emit a FEEDBACK signal summa
|
|
|
459
459
|
phase_feedback="Phase $phase_id ($phase_name) completed. Key patterns: {brief summary of 1-3 learnings from Step 2}"
|
|
460
460
|
# Fallback if no learnings: "Phase $phase_id ($phase_name) completed without notable patterns."
|
|
461
461
|
|
|
462
|
-
|
|
462
|
+
aether pheromone-write FEEDBACK "$phase_feedback" \
|
|
463
463
|
--strength 0.6 \
|
|
464
464
|
--source "worker:continue" \
|
|
465
465
|
--reason "Auto-emitted on phase advance: captures what worked and what was learned" \
|
|
@@ -495,7 +495,7 @@ if [[ -n "$decisions" ]]; then
|
|
|
495
495
|
[.signals[] | select(.active == true and (.source == "auto:decision" or .source == "system:decision") and (.content.text | contains($text)))] | length
|
|
496
496
|
' .aether/data/pheromones.json 2>/dev/null || echo "0")
|
|
497
497
|
if [[ "$existing" == "0" ]]; then
|
|
498
|
-
|
|
498
|
+
aether pheromone-write FEEDBACK \
|
|
499
499
|
"[decision] $dec" \
|
|
500
500
|
--strength 0.6 \
|
|
501
501
|
--source "auto:decision" \
|
|
@@ -514,7 +514,7 @@ Strength is 0.6 (auto-emitted = lower than user-emitted). Source is `"auto:decis
|
|
|
514
514
|
Query the actual failure store (`midden.json`) for recurring error categories. Categories with 3+ occurrences indicate persistent issues that should steer workers away from known failure modes.
|
|
515
515
|
|
|
516
516
|
```bash
|
|
517
|
-
midden_result=$(
|
|
517
|
+
midden_result=$(aether midden-recent-failures 50 2>/dev/null || echo '{"count":0,"failures":[]}')
|
|
518
518
|
midden_count=$(echo "$midden_result" | jq '.count // 0')
|
|
519
519
|
|
|
520
520
|
if [[ "$midden_count" -gt 0 ]]; then
|
|
@@ -541,7 +541,7 @@ if [[ "$midden_count" -gt 0 ]]; then
|
|
|
541
541
|
' .aether/data/pheromones.json 2>/dev/null || echo "0")
|
|
542
542
|
|
|
543
543
|
if [[ "$existing" == "0" ]]; then
|
|
544
|
-
|
|
544
|
+
aether pheromone-write REDIRECT \
|
|
545
545
|
"[error-pattern] Category \"$category\" recurring ($count occurrences)" \
|
|
546
546
|
--strength 0.7 \
|
|
547
547
|
--source "auto:error" \
|
|
@@ -550,7 +550,7 @@ if [[ "$midden_count" -gt 0 ]]; then
|
|
|
550
550
|
emit_count=$((emit_count + 1))
|
|
551
551
|
|
|
552
552
|
# Capture as resolution candidate for promotion tracking
|
|
553
|
-
|
|
553
|
+
aether memory-capture \
|
|
554
554
|
"resolution" \
|
|
555
555
|
"Recurring error pattern: $category ($count occurrences)" \
|
|
556
556
|
"pattern" \
|
|
@@ -597,7 +597,7 @@ for encoded in $recurring_criteria; do
|
|
|
597
597
|
' .aether/data/pheromones.json 2>/dev/null || echo "0")
|
|
598
598
|
|
|
599
599
|
if [[ "$existing" == "0" ]]; then
|
|
600
|
-
|
|
600
|
+
aether pheromone-write FEEDBACK \
|
|
601
601
|
"[success-pattern] \"$text\" recurs across phases $phases" \
|
|
602
602
|
--strength 0.6 \
|
|
603
603
|
--source "auto:success" \
|
|
@@ -613,7 +613,7 @@ Strength is 0.6 (auto-emitted). Source is `"auto:success"`. Cap: max 2 success c
|
|
|
613
613
|
|
|
614
614
|
After auto-emission, expire all signals with `expires_at == "phase_end"`. The FEEDBACK from 2.1a uses a 30d TTL and is not affected by this step.
|
|
615
615
|
|
|
616
|
-
Run using the Bash tool with description "Maintaining pheromone memory...": `
|
|
616
|
+
Run using the Bash tool with description "Maintaining pheromone memory...": `aether pheromone-expire --phase-end-only 2>/dev/null && aether eternal-init 2>/dev/null`
|
|
617
617
|
|
|
618
618
|
This is idempotent — runs every time continue fires but only creates the directory/file once.
|
|
619
619
|
|
|
@@ -627,7 +627,7 @@ If `$ARGUMENTS` contains `--deferred`:
|
|
|
627
627
|
```bash
|
|
628
628
|
if [[ "$ARGUMENTS" == *"--deferred"* ]] && [[ -f .aether/data/learning-deferred.json ]]; then
|
|
629
629
|
echo "📦 Reviewing deferred proposals..."
|
|
630
|
-
|
|
630
|
+
aether learning-approve-proposals --deferred ${verbose:+--verbose}
|
|
631
631
|
fi
|
|
632
632
|
```
|
|
633
633
|
|
|
@@ -635,7 +635,7 @@ fi
|
|
|
635
635
|
|
|
636
636
|
1. **Check for proposals:**
|
|
637
637
|
```bash
|
|
638
|
-
proposals=$(
|
|
638
|
+
proposals=$(aether learning-check-promotion 2>/dev/null || echo '{"proposals":[]}')
|
|
639
639
|
proposal_count=$(echo "$proposals" | jq '.proposals | length')
|
|
640
640
|
```
|
|
641
641
|
|
|
@@ -647,7 +647,7 @@ fi
|
|
|
647
647
|
if [[ "$proposal_count" -gt 0 ]]; then
|
|
648
648
|
verbose_flag=""
|
|
649
649
|
[[ "$ARGUMENTS" == *"--verbose"* ]] && verbose_flag="--verbose"
|
|
650
|
-
|
|
650
|
+
aether learning-approve-proposals $verbose_flag
|
|
651
651
|
fi
|
|
652
652
|
# If no proposals, silently skip without notice (per user decision)
|
|
653
653
|
```
|
|
@@ -20,7 +20,7 @@ if [[ -f "$obs_file" ]]; then
|
|
|
20
20
|
colony=$(echo "$encoded" | base64 -d | jq -r '.colonies[0] // "unknown"')
|
|
21
21
|
[[ -z "$content" ]] && continue
|
|
22
22
|
|
|
23
|
-
result=$(
|
|
23
|
+
result=$(aether learning-promote-auto "$wisdom_type" "$content" "$colony" "learning" 2>/dev/null || echo '{}')
|
|
24
24
|
was_promoted=$(echo "$result" | jq -r '.result.promoted // false' 2>/dev/null || echo "false")
|
|
25
25
|
if [[ "$was_promoted" == "true" ]]; then
|
|
26
26
|
promoted_count=$((promoted_count + 1))
|
|
@@ -63,7 +63,7 @@ learnings_count=$(echo "$learnings_json" | jq 'length' 2>/dev/null || echo "0")
|
|
|
63
63
|
if [[ "$learnings_count" -gt 0 ]] && [[ "$learnings_json" != "[]" ]]; then
|
|
64
64
|
prev_phase=$((current_phase - 1))
|
|
65
65
|
queen_error="false"
|
|
66
|
-
result=$(
|
|
66
|
+
result=$(aether queen-write-learnings \
|
|
67
67
|
"$prev_phase" "$phase_name" "$learnings_json" 2>/dev/null || echo '{"ok":false}')
|
|
68
68
|
[[ "$result" == '{"ok":false}' ]] && queen_error="true"
|
|
69
69
|
|
|
@@ -170,7 +170,7 @@ If no `CHANGELOG.md` exists, `changelog-append` creates one automatically.
|
|
|
170
170
|
**Step 2.3.1: Collect plan data**
|
|
171
171
|
|
|
172
172
|
```bash
|
|
173
|
-
|
|
173
|
+
aether changelog-collect-plan-data "{phase_identifier}" "{plan_number}"
|
|
174
174
|
```
|
|
175
175
|
|
|
176
176
|
Parse the returned JSON to extract `files`, `decisions`, `worked`, and `requirements` arrays.
|
|
@@ -186,7 +186,7 @@ If the command fails (e.g., no plan file found), fall back to collecting data ma
|
|
|
186
186
|
**Step 2.3.2: Append changelog entry**
|
|
187
187
|
|
|
188
188
|
```bash
|
|
189
|
-
|
|
189
|
+
aether changelog-append \
|
|
190
190
|
"$(date +%Y-%m-%d)" \
|
|
191
191
|
"{phase_identifier}" \
|
|
192
192
|
"{plan_number}" \
|
|
@@ -227,7 +227,7 @@ Store this as `ai_description` for the commit message.
|
|
|
227
227
|
#### Step 2.4.2: Generate Enhanced Commit Message
|
|
228
228
|
|
|
229
229
|
```bash
|
|
230
|
-
|
|
230
|
+
aether generate-commit-message "contextual" {phase_id} "{phase_name}" "{ai_description}" {plan_number}
|
|
231
231
|
```
|
|
232
232
|
|
|
233
233
|
Parse the returned JSON to extract:
|
|
@@ -342,18 +342,18 @@ After phase advancement is complete, update `.aether/CONTEXT.md`:
|
|
|
342
342
|
|
|
343
343
|
**Log the activity:**
|
|
344
344
|
```bash
|
|
345
|
-
|
|
345
|
+
aether context-update activity "continue" "Phase {prev_id} completed, advanced to {next_id}" "—"
|
|
346
346
|
```
|
|
347
347
|
|
|
348
348
|
**Update the phase:**
|
|
349
349
|
```bash
|
|
350
|
-
|
|
350
|
+
aether context-update update-phase {next_id} "{next_phase_name}" "YES" "Phase advanced, ready to build"
|
|
351
351
|
```
|
|
352
352
|
|
|
353
353
|
**Log any decisions from this session:**
|
|
354
354
|
If any architectural decisions were made during verification, also run:
|
|
355
355
|
```bash
|
|
356
|
-
|
|
356
|
+
aether context-update decision "{decision_description}" "{rationale}" "Queen"
|
|
357
357
|
```
|
|
358
358
|
|
|
359
359
|
### Step 2.7: Project Completion
|
|
@@ -441,10 +441,10 @@ Output:
|
|
|
441
441
|
Update the session tracking file to enable `/ant:resume` after context clear:
|
|
442
442
|
|
|
443
443
|
```bash
|
|
444
|
-
|
|
444
|
+
aether session-update "/ant:continue" "/ant:build {next_id}" "Phase {prev_id} completed, advanced to Phase {next_id}"
|
|
445
445
|
```
|
|
446
446
|
|
|
447
|
-
Run using the Bash tool with description "Saving session state...": `
|
|
447
|
+
Run using the Bash tool with description "Saving session state...": `aether session-update "/ant:continue" "/ant:build {next_id}" "Phase {prev_id} completed, advanced to Phase {next_id}"`
|
|
448
448
|
|
|
449
449
|
### Step 4.5: Housekeeping (Non-Blocking)
|
|
450
450
|
|
|
@@ -452,10 +452,10 @@ Prune stale backups and temp files. This runs automatically — failures never a
|
|
|
452
452
|
|
|
453
453
|
Run using the Bash tool with description "Pruning stale backups...":
|
|
454
454
|
```bash
|
|
455
|
-
|
|
455
|
+
aether backup-prune-global 2>/dev/null || true
|
|
456
456
|
```
|
|
457
457
|
|
|
458
458
|
Run using the Bash tool with description "Cleaning temp files...":
|
|
459
459
|
```bash
|
|
460
|
-
|
|
460
|
+
aether temp-clean 2>/dev/null || true
|
|
461
461
|
```
|