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
|
@@ -84,7 +84,7 @@ body_opencode: |
|
|
|
84
84
|
|
|
85
85
|
### Step 1.5: Load State and Show Resumption Context
|
|
86
86
|
|
|
87
|
-
Run using Bash tool: `
|
|
87
|
+
Run using Bash tool: `aether load-state`
|
|
88
88
|
|
|
89
89
|
If successful and goal is not null:
|
|
90
90
|
1. Extract current_phase from state
|
|
@@ -99,7 +99,7 @@ body_opencode: |
|
|
|
99
99
|
- Read .aether/HANDOFF.md for additional context
|
|
100
100
|
- Remove .aether/HANDOFF.md after display (cleanup)
|
|
101
101
|
|
|
102
|
-
Run: `
|
|
102
|
+
Run: `aether unload-state` to release lock.
|
|
103
103
|
|
|
104
104
|
**Error handling:**
|
|
105
105
|
- If E_FILE_NOT_FOUND: "No colony initialized. Run /ant:init first." and stop
|
|
@@ -125,7 +125,7 @@ body_opencode: |
|
|
|
125
125
|
|
|
126
126
|
Run:
|
|
127
127
|
```bash
|
|
128
|
-
survey_check=$(
|
|
128
|
+
survey_check=$(aether survey-verify 2>/dev/null || true)
|
|
129
129
|
survey_docs=$(ls -1 .aether/data/survey/*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
130
130
|
survey_latest=$(ls -t .aether/data/survey/*.md 2>/dev/null | head -1)
|
|
131
131
|
if [[ -n "$survey_latest" ]]; then
|
|
@@ -234,7 +234,7 @@ body_opencode: |
|
|
|
234
234
|
3. **If spawning Probe:**
|
|
235
235
|
|
|
236
236
|
a. Generate Probe name and dispatch:
|
|
237
|
-
Run using the Bash tool with description "Generating Probe name...": `probe_name=$(
|
|
237
|
+
Run using the Bash tool with description "Generating Probe name...": `probe_name=$(aether generate-ant-name --caste "probe") && aether spawn-log --name "Queen" --caste "probe" --id "$probe_name" --description "Coverage improvement: ${coverage_percent}%" && echo "{\"name\":\"$probe_name\"}"`
|
|
238
238
|
|
|
239
239
|
b. Display:
|
|
240
240
|
```
|
|
@@ -264,10 +264,10 @@ body_opencode: |
|
|
|
264
264
|
f. Parse Probe JSON output and log completion:
|
|
265
265
|
Extract: `tests_added`, `coverage.lines`, `coverage.branches`, `coverage.functions`, `edge_cases_discovered`
|
|
266
266
|
|
|
267
|
-
Run using the Bash tool with description "Logging Probe completion...": `
|
|
267
|
+
Run using the Bash tool with description "Logging Probe completion...": `aether spawn-complete --id "$probe_name" --status "completed" --summary "{probe_summary}"`
|
|
268
268
|
|
|
269
269
|
g. Log findings to midden:
|
|
270
|
-
Run using the Bash tool with description "Logging Probe findings to midden...": `
|
|
270
|
+
Run using the Bash tool with description "Logging Probe findings to midden...": `aether midden-write "coverage" "Probe generated tests, coverage: ${coverage_lines}%/${coverage_branches}%/${coverage_functions}%" "probe"`
|
|
271
271
|
|
|
272
272
|
4. **NON-BLOCKING continuation:**
|
|
273
273
|
Display Probe findings summary:
|
|
@@ -416,8 +416,8 @@ body_opencode: |
|
|
|
416
416
|
**CRITICAL:** Do NOT proceed to Step 1.7. Do NOT advance the phase.
|
|
417
417
|
Log the violation:
|
|
418
418
|
```bash
|
|
419
|
-
|
|
420
|
-
|
|
419
|
+
aether activity-log "BLOCKED" "colony" "Spawn gate failed: {task_count} tasks, 0 spawns"
|
|
420
|
+
aether error-flag-pattern "no-spawn-violation" "Prime Worker completed phase without spawning specialists" "critical"
|
|
421
421
|
```
|
|
422
422
|
|
|
423
423
|
**HARD REJECTION - If watcher_count == 0 (no testing separation):**
|
|
@@ -458,7 +458,7 @@ body_opencode: |
|
|
|
458
458
|
Scan all modified/created files for known anti-patterns. This catches recurring bugs before they reach production.
|
|
459
459
|
|
|
460
460
|
```bash
|
|
461
|
-
|
|
461
|
+
aether check-antipattern "{file_path}"
|
|
462
462
|
```
|
|
463
463
|
|
|
464
464
|
Run for each file in `files_created` and `files_modified` from Prime Worker output.
|
|
@@ -567,7 +567,7 @@ body_opencode: |
|
|
|
567
567
|
Run using the Bash tool with description "Establishing test baseline...": `test_output_before=$(npm test 2>&1 || echo "TEST_FAILED") && tests_passing_before=$(echo "$test_output_before" | grep -oE '[0-9]+ passing' | grep -oE '[0-9]+' || echo "0") && echo "Baseline: $tests_passing_before tests passing"`
|
|
568
568
|
|
|
569
569
|
b. **Generate Weaver name and dispatch:**
|
|
570
|
-
Run using the Bash tool with description "Generating Weaver name...": `weaver_name=$(
|
|
570
|
+
Run using the Bash tool with description "Generating Weaver name...": `weaver_name=$(aether generate-ant-name --caste "weaver") && aether spawn-log --name "Queen" --caste "weaver" --id "$weaver_name" --description "Proactive refactoring" && echo "{\"name\":\"$weaver_name\"}"`
|
|
571
571
|
|
|
572
572
|
c. **Display:**
|
|
573
573
|
```
|
|
@@ -613,10 +613,10 @@ body_opencode: |
|
|
|
613
613
|
```
|
|
614
614
|
|
|
615
615
|
g. **Log completion:**
|
|
616
|
-
Run using the Bash tool with description "Logging Weaver completion...": `
|
|
616
|
+
Run using the Bash tool with description "Logging Weaver completion...": `aether spawn-complete --id "$weaver_name" --status "$weaver_status" --summary "Refactoring $weaver_status"`
|
|
617
617
|
|
|
618
618
|
h. **Log to midden:**
|
|
619
|
-
Run using the Bash tool with description "Logging refactoring activity to midden...": `
|
|
619
|
+
Run using the Bash tool with description "Logging refactoring activity to midden...": `aether midden-write "refactoring" "Weaver refactored files, complexity before/after: ${complexity_before}/${complexity_after}" "weaver"`
|
|
620
620
|
|
|
621
621
|
5. **Display completion:**
|
|
622
622
|
```
|
|
@@ -645,7 +645,7 @@ body_opencode: |
|
|
|
645
645
|
**If package.json exists:**
|
|
646
646
|
|
|
647
647
|
1. Generate Gatekeeper name and log spawn:
|
|
648
|
-
Run using the Bash tool with description "Generating Gatekeeper name...": `gatekeeper_name=$(
|
|
648
|
+
Run using the Bash tool with description "Generating Gatekeeper name...": `gatekeeper_name=$(aether generate-ant-name --caste "gatekeeper") && aether spawn-log --name "Queen" --caste "gatekeeper" --id "$gatekeeper_name" --description "Supply chain security audit" && echo "{\"name\":\"$gatekeeper_name\"}"`
|
|
649
649
|
|
|
650
650
|
2. Display:
|
|
651
651
|
```
|
|
@@ -667,7 +667,7 @@ body_opencode: |
|
|
|
667
667
|
5. Parse Gatekeeper JSON output and log completion:
|
|
668
668
|
Extract: `security.critical`, `security.high`, `status`
|
|
669
669
|
|
|
670
|
-
Run using the Bash tool with description "Logging Gatekeeper completion...": `
|
|
670
|
+
Run using the Bash tool with description "Logging Gatekeeper completion...": `aether spawn-complete --id "$gatekeeper_name" --status "completed" --summary "{gatekeeper_summary}"`
|
|
671
671
|
|
|
672
672
|
**Gate Decision Logic:**
|
|
673
673
|
|
|
@@ -695,7 +695,7 @@ body_opencode: |
|
|
|
695
695
|
Security warnings logged to midden for later review.
|
|
696
696
|
Proceeding with caution...
|
|
697
697
|
```
|
|
698
|
-
Run using the Bash tool with description "Logging high-severity warnings...": `
|
|
698
|
+
Run using the Bash tool with description "Logging high-severity warnings...": `aether midden-write "security" "High CVEs found: $high_count" "gatekeeper"`
|
|
699
699
|
Continue to Step 1.9.
|
|
700
700
|
|
|
701
701
|
- **If clean (no critical or high):**
|
|
@@ -709,7 +709,7 @@ body_opencode: |
|
|
|
709
709
|
**Code quality audit -- runs on every `/ant:continue` for consistent coverage.**
|
|
710
710
|
|
|
711
711
|
1. Generate Auditor name and log spawn:
|
|
712
|
-
Run using the Bash tool with description "Generating Auditor name...": `auditor_name=$(
|
|
712
|
+
Run using the Bash tool with description "Generating Auditor name...": `auditor_name=$(aether generate-ant-name --caste "auditor") && aether spawn-log --name "Queen" --caste "auditor" --id "$auditor_name" --description "Code quality audit" && echo "{\"name\":\"$auditor_name\"}"`
|
|
713
713
|
|
|
714
714
|
2. Display:
|
|
715
715
|
```
|
|
@@ -734,7 +734,7 @@ body_opencode: |
|
|
|
734
734
|
6. Parse Auditor JSON output and log completion:
|
|
735
735
|
Extract: `findings.critical`, `findings.high`, `findings.medium`, `findings.low`, `findings.info`, `overall_score`, `dimensions_audited`
|
|
736
736
|
|
|
737
|
-
Run using the Bash tool with description "Logging Auditor completion...": `
|
|
737
|
+
Run using the Bash tool with description "Logging Auditor completion...": `aether spawn-complete --id "$auditor_name" --status "completed" --summary "{auditor_summary}"`
|
|
738
738
|
|
|
739
739
|
**Gate Decision Logic:**
|
|
740
740
|
|
|
@@ -756,7 +756,7 @@ body_opencode: |
|
|
|
756
756
|
|
|
757
757
|
The phase will NOT advance with critical quality issues.
|
|
758
758
|
```
|
|
759
|
-
Run using the Bash tool with description "Logging critical quality block...": `
|
|
759
|
+
Run using the Bash tool with description "Logging critical quality block...": `aether error-flag-pattern "auditor-critical-findings" "$critical_count critical quality issues found" "critical"`
|
|
760
760
|
**CRITICAL:** Do NOT proceed to Step 1.10. Stop here.
|
|
761
761
|
|
|
762
762
|
- **Else if `overall_score < 60`:**
|
|
@@ -774,7 +774,7 @@ body_opencode: |
|
|
|
774
774
|
|
|
775
775
|
The phase will NOT advance with quality score below 60.
|
|
776
776
|
```
|
|
777
|
-
Run using the Bash tool with description "Logging quality score block...": `
|
|
777
|
+
Run using the Bash tool with description "Logging quality score block...": `aether error-flag-pattern "auditor-quality-score" "Score $overall_score below threshold 60" "critical"`
|
|
778
778
|
**CRITICAL:** Do NOT proceed to Step 1.10. Stop here.
|
|
779
779
|
|
|
780
780
|
- **Else if `findings.high > 0`:**
|
|
@@ -787,7 +787,7 @@ body_opencode: |
|
|
|
787
787
|
Quality warnings logged to midden for later review.
|
|
788
788
|
Proceeding with caution...
|
|
789
789
|
```
|
|
790
|
-
Run using the Bash tool with description "Logging high-quality warnings...": `
|
|
790
|
+
Run using the Bash tool with description "Logging high-quality warnings...": `aether midden-write "quality" "High severity issues: $high_count (score: $overall_score)" "auditor"`
|
|
791
791
|
Continue to Step 1.10.
|
|
792
792
|
|
|
793
793
|
- **If clean (score >= 60, no critical):**
|
|
@@ -833,7 +833,7 @@ body_opencode: |
|
|
|
833
833
|
|
|
834
834
|
**CRITICAL:** Do NOT proceed. Log the violation:
|
|
835
835
|
```bash
|
|
836
|
-
|
|
836
|
+
aether error-flag-pattern "fabricated-tdd" "Prime Worker reported TDD metrics without creating test files" "critical"
|
|
837
837
|
```
|
|
838
838
|
|
|
839
839
|
**If tests_added == 0 or test files exist matching claims:**
|
|
@@ -879,7 +879,7 @@ body_opencode: |
|
|
|
879
879
|
|
|
880
880
|
Use AskUserQuestion to get issue details. Log to errors.records:
|
|
881
881
|
```bash
|
|
882
|
-
|
|
882
|
+
aether error-add "runtime" "critical" "{user_description}" {phase}
|
|
883
883
|
```
|
|
884
884
|
|
|
885
885
|
Do NOT proceed to Step 2.
|
|
@@ -915,12 +915,12 @@ body_opencode: |
|
|
|
915
915
|
|
|
916
916
|
First, auto-resolve any flags eligible for resolution now that verification has passed:
|
|
917
917
|
```bash
|
|
918
|
-
|
|
918
|
+
aether flag-auto-resolve "build_pass"
|
|
919
919
|
```
|
|
920
920
|
|
|
921
921
|
Then check for remaining blocking flags:
|
|
922
922
|
```bash
|
|
923
|
-
|
|
923
|
+
aether flag-check-blockers {current_phase}
|
|
924
924
|
```
|
|
925
925
|
|
|
926
926
|
Parse result for `blockers`, `issues`, and `notes` counts.
|
|
@@ -1022,7 +1022,7 @@ body_opencode: |
|
|
|
1022
1022
|
|
|
1023
1023
|
Run using the Bash tool with description "Recording learning observations...":
|
|
1024
1024
|
```bash
|
|
1025
|
-
colony_name=$(
|
|
1025
|
+
colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
|
|
1026
1026
|
[[ -z "$colony_name" ]] && colony_name="unknown"
|
|
1027
1027
|
|
|
1028
1028
|
# Get learnings from the current phase
|
|
@@ -1032,7 +1032,7 @@ body_opencode: |
|
|
|
1032
1032
|
echo "$current_phase_learnings" | jq -r '.learnings[]?.claim // empty' 2>/dev/null | while read -r claim; do
|
|
1033
1033
|
if [[ -n "$claim" ]]; then
|
|
1034
1034
|
# Default wisdom_type to "pattern" (threshold: 3 observations)
|
|
1035
|
-
|
|
1035
|
+
aether memory-capture "learning" "$claim" "pattern" "worker:continue" 2>/dev/null || true
|
|
1036
1036
|
fi
|
|
1037
1037
|
done
|
|
1038
1038
|
echo "Recorded observations for threshold tracking"
|
|
@@ -1108,7 +1108,7 @@ body_opencode: |
|
|
|
1108
1108
|
Write COLONY_STATE.json.
|
|
1109
1109
|
|
|
1110
1110
|
Validate the state file:
|
|
1111
|
-
Run using the Bash tool with description "Validating colony state...": `
|
|
1111
|
+
Run using the Bash tool with description "Validating colony state...": `aether validate-state colony`
|
|
1112
1112
|
|
|
1113
1113
|
### Step 2.1: Auto-Emit Phase Pheromones (SILENT)
|
|
1114
1114
|
|
|
@@ -1126,7 +1126,7 @@ body_opencode: |
|
|
|
1126
1126
|
phase_feedback="Phase $phase_id ($phase_name) completed. Key patterns: {brief summary of 1-3 learnings from Step 2}"
|
|
1127
1127
|
# Fallback if no learnings: "Phase $phase_id ($phase_name) completed without notable patterns."
|
|
1128
1128
|
|
|
1129
|
-
|
|
1129
|
+
aether pheromone-write --type FEEDBACK --content "$phase_feedback" \
|
|
1130
1130
|
--strength 0.6 \
|
|
1131
1131
|
--source "worker:continue" \
|
|
1132
1132
|
--reason "Auto-emitted on phase advance: captures what worked and what was learned" \
|
|
@@ -1146,7 +1146,7 @@ body_opencode: |
|
|
|
1146
1146
|
For each pattern returned by the above query, emit a REDIRECT signal:
|
|
1147
1147
|
|
|
1148
1148
|
```bash
|
|
1149
|
-
|
|
1149
|
+
aether pheromone-write --type REDIRECT --content "$pattern_text" \
|
|
1150
1150
|
--strength 0.7 \
|
|
1151
1151
|
--source "system" \
|
|
1152
1152
|
--reason "Auto-emitted: error pattern recurred across 2+ phases" \
|
|
@@ -1156,7 +1156,7 @@ body_opencode: |
|
|
|
1156
1156
|
Also capture each recurring pattern as a resolution candidate:
|
|
1157
1157
|
|
|
1158
1158
|
```bash
|
|
1159
|
-
|
|
1159
|
+
aether memory-capture \
|
|
1160
1160
|
"resolution" \
|
|
1161
1161
|
"$pattern_text" \
|
|
1162
1162
|
"pattern" \
|
|
@@ -1169,7 +1169,7 @@ body_opencode: |
|
|
|
1169
1169
|
|
|
1170
1170
|
After auto-emission, expire all signals with `expires_at == "phase_end"`:
|
|
1171
1171
|
|
|
1172
|
-
Run using the Bash tool with description "Maintaining pheromone memory...": `
|
|
1172
|
+
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`
|
|
1173
1173
|
|
|
1174
1174
|
### Step 2.1.5: Check for Promotion Proposals
|
|
1175
1175
|
|
|
@@ -1179,7 +1179,7 @@ body_opencode: |
|
|
|
1179
1179
|
|
|
1180
1180
|
1. **Check for proposals:**
|
|
1181
1181
|
```bash
|
|
1182
|
-
proposals=$(
|
|
1182
|
+
proposals=$(aether learning-check-promotion 2>/dev/null || echo '{"proposals":[]}')
|
|
1183
1183
|
proposal_count=$(echo "$proposals" | jq '.proposals | length')
|
|
1184
1184
|
```
|
|
1185
1185
|
|
|
@@ -1189,7 +1189,7 @@ body_opencode: |
|
|
|
1189
1189
|
|
|
1190
1190
|
```bash
|
|
1191
1191
|
if [[ "$proposal_count" -gt 0 ]]; then
|
|
1192
|
-
|
|
1192
|
+
aether learning-approve-proposals
|
|
1193
1193
|
fi
|
|
1194
1194
|
# If no proposals, silently skip without notice
|
|
1195
1195
|
```
|
|
@@ -1258,7 +1258,7 @@ body_opencode: |
|
|
|
1258
1258
|
**Step 2.3.1: Collect plan data**
|
|
1259
1259
|
|
|
1260
1260
|
```bash
|
|
1261
|
-
|
|
1261
|
+
aether changelog-collect-plan-data "{phase_identifier}" "{plan_number}"
|
|
1262
1262
|
```
|
|
1263
1263
|
|
|
1264
1264
|
Parse the returned JSON to extract `files`, `decisions`, `worked`, and `requirements` arrays.
|
|
@@ -1274,7 +1274,7 @@ body_opencode: |
|
|
|
1274
1274
|
**Step 2.3.2: Append changelog entry**
|
|
1275
1275
|
|
|
1276
1276
|
```bash
|
|
1277
|
-
|
|
1277
|
+
aether changelog-append \
|
|
1278
1278
|
"$(date +%Y-%m-%d)" \
|
|
1279
1279
|
"{phase_identifier}" \
|
|
1280
1280
|
"{plan_number}" \
|
|
@@ -1296,7 +1296,7 @@ body_opencode: |
|
|
|
1296
1296
|
|
|
1297
1297
|
1. **Generate the commit message:**
|
|
1298
1298
|
```bash
|
|
1299
|
-
|
|
1299
|
+
aether generate-commit-message --type "milestone" --phase {phase_id} --subject "{phase_name}" "{one_line_summary}"
|
|
1300
1300
|
```
|
|
1301
1301
|
Parse the returned JSON to extract `message` and `files_changed`.
|
|
1302
1302
|
|
|
@@ -1397,18 +1397,18 @@ body_opencode: |
|
|
|
1397
1397
|
|
|
1398
1398
|
**Log the activity:**
|
|
1399
1399
|
```bash
|
|
1400
|
-
|
|
1400
|
+
aether context-update activity "continue" "Phase {prev_id} completed, advanced to {next_id}" "---"
|
|
1401
1401
|
```
|
|
1402
1402
|
|
|
1403
1403
|
**Update the phase:**
|
|
1404
1404
|
```bash
|
|
1405
|
-
|
|
1405
|
+
aether context-update update-phase {next_id} "{next_phase_name}" "YES" "Phase advanced, ready to build"
|
|
1406
1406
|
```
|
|
1407
1407
|
|
|
1408
1408
|
**Log any decisions from this session:**
|
|
1409
1409
|
If any architectural decisions were made during verification, also run:
|
|
1410
1410
|
```bash
|
|
1411
|
-
|
|
1411
|
+
aether context-update decision "{decision_description}" "{rationale}" "Queen"
|
|
1412
1412
|
```
|
|
1413
1413
|
|
|
1414
1414
|
### Step 2.7: Project Completion
|
|
@@ -1480,5 +1480,5 @@ body_opencode: |
|
|
|
1480
1480
|
|
|
1481
1481
|
Update the session tracking file to enable `/ant:resume` after context clear:
|
|
1482
1482
|
|
|
1483
|
-
Run using the Bash tool with description "Saving session state...": `
|
|
1483
|
+
Run using the Bash tool with description "Saving session state...": `aether session-update --command "/ant:continue" --worker "/ant:build {next_id}" --summary "Phase {prev_id} completed, advanced to Phase {next_id}"`
|
|
1484
1484
|
|
|
@@ -22,7 +22,7 @@ body: |
|
|
|
22
22
|
|
|
23
23
|
Run using the Bash tool with description "Checking deliberation budget...":
|
|
24
24
|
```bash
|
|
25
|
-
|
|
25
|
+
aether council-budget-check
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
Parse result. If `allowed` is `false`:
|
|
@@ -38,7 +38,7 @@ body: |
|
|
|
38
38
|
|
|
39
39
|
Run using the Bash tool with description "Opening deliberation...":
|
|
40
40
|
```bash
|
|
41
|
-
|
|
41
|
+
aether council-deliberate --proposal "<proposal>"
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
Capture `deliberation_id` from `result.id`.
|
|
@@ -81,7 +81,7 @@ body: |
|
|
|
81
81
|
|
|
82
82
|
Record the argument:
|
|
83
83
|
```bash
|
|
84
|
-
|
|
84
|
+
aether council-advocate \
|
|
85
85
|
--deliberation-id "<deliberation_id>" \
|
|
86
86
|
--argument "<advocate_argument>"
|
|
87
87
|
```
|
|
@@ -119,7 +119,7 @@ body: |
|
|
|
119
119
|
|
|
120
120
|
Record the argument:
|
|
121
121
|
```bash
|
|
122
|
-
|
|
122
|
+
aether council-challenger \
|
|
123
123
|
--deliberation-id "<deliberation_id>" \
|
|
124
124
|
--argument "<challenger_argument>"
|
|
125
125
|
```
|
|
@@ -162,7 +162,7 @@ body: |
|
|
|
162
162
|
|
|
163
163
|
Record the sage synthesis:
|
|
164
164
|
```bash
|
|
165
|
-
|
|
165
|
+
aether council-sage \
|
|
166
166
|
--deliberation-id "<deliberation_id>" \
|
|
167
167
|
--synthesis "<synthesis>" \
|
|
168
168
|
--recommendation "<recommendation>"
|
|
@@ -504,6 +504,6 @@ body: |
|
|
|
504
504
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
505
505
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
506
506
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
507
|
-
|
|
507
|
+
aether print-next-up
|
|
508
508
|
```
|
|
509
509
|
{{/claude}}
|
|
@@ -16,7 +16,7 @@ body: |
|
|
|
16
16
|
|
|
17
17
|
Run using the Bash tool with description "Scanning colony data for test artifacts...":
|
|
18
18
|
```bash
|
|
19
|
-
|
|
19
|
+
aether data-clean --dry-run
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
Display the output to the user. This shows artifact counts per data file without modifying anything.
|
|
@@ -45,7 +45,7 @@ body: |
|
|
|
45
45
|
|
|
46
46
|
If user confirmed, run using the Bash tool with description "Removing test artifacts...":
|
|
47
47
|
```bash
|
|
48
|
-
|
|
48
|
+
aether data-clean --confirm
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
### Step 4: Summary
|
|
@@ -75,6 +75,6 @@ body: |
|
|
|
75
75
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
76
76
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
77
77
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
78
|
-
|
|
78
|
+
aether print-next-up
|
|
79
79
|
```
|
|
80
80
|
{{/claude}}
|
|
@@ -234,7 +234,7 @@ body: |
|
|
|
234
234
|
Run using the Bash tool with description "Logging dream activity...":
|
|
235
235
|
{{/claude}}
|
|
236
236
|
```bash
|
|
237
|
-
|
|
237
|
+
aether activity-log "DREAM" "Dreamer" "Dream session: {N} observations, {concerns} concerns, {pheromones} pheromone suggestions"
|
|
238
238
|
```
|
|
239
239
|
|
|
240
240
|
{{#claude}}
|
|
@@ -243,7 +243,7 @@ body: |
|
|
|
243
243
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
244
244
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
245
245
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
246
|
-
|
|
246
|
+
aether print-next-up
|
|
247
247
|
```
|
|
248
248
|
|
|
249
249
|
{{/claude}}
|
|
@@ -126,7 +126,7 @@ body_claude: |
|
|
|
126
126
|
|
|
127
127
|
```bash
|
|
128
128
|
# Check for pending proposals
|
|
129
|
-
proposals=$(
|
|
129
|
+
proposals=$(aether learning-check-promotion 2>/dev/null || echo '{"proposals":[]}')
|
|
130
130
|
proposal_count=$(echo "$proposals" | jq '.proposals | length')
|
|
131
131
|
|
|
132
132
|
if [[ "$proposal_count" -gt 0 ]]; then
|
|
@@ -140,7 +140,7 @@ body_claude: |
|
|
|
140
140
|
echo ""
|
|
141
141
|
|
|
142
142
|
# Run approval workflow (blocking)
|
|
143
|
-
|
|
143
|
+
aether learning-approve-proposals
|
|
144
144
|
|
|
145
145
|
echo ""
|
|
146
146
|
echo "Wisdom review complete. Proceeding with entombment..."
|
|
@@ -202,12 +202,12 @@ body_claude: |
|
|
|
202
202
|
```bash
|
|
203
203
|
queen_file=".aether/QUEEN.md"
|
|
204
204
|
if [[ ! -f "$queen_file" ]]; then
|
|
205
|
-
init_result=$(
|
|
205
|
+
init_result=$(aether queen-init 2>/dev/null || echo '{"ok":false}')
|
|
206
206
|
init_ok=$(echo "$init_result" | jq -r '.ok // false')
|
|
207
207
|
if [[ "$init_ok" == "true" ]]; then
|
|
208
208
|
created=$(echo "$init_result" | jq -r '.result.created // false')
|
|
209
209
|
if [[ "$created" == "true" ]]; then
|
|
210
|
-
|
|
210
|
+
aether activity-log "CREATED" "Queen" "Initialized QUEEN.md for wisdom storage"
|
|
211
211
|
fi
|
|
212
212
|
fi
|
|
213
213
|
fi
|
|
@@ -245,7 +245,7 @@ body_claude: |
|
|
|
245
245
|
|
|
246
246
|
Create the chamber:
|
|
247
247
|
```bash
|
|
248
|
-
|
|
248
|
+
aether chamber-create \
|
|
249
249
|
".aether/chambers/$chamber_name" \
|
|
250
250
|
".aether/data/COLONY_STATE.json" \
|
|
251
251
|
"$goal" \
|
|
@@ -295,7 +295,7 @@ body_claude: |
|
|
|
295
295
|
|
|
296
296
|
```bash
|
|
297
297
|
chamber_dir=".aether/chambers/$chamber_name"
|
|
298
|
-
xml_result=$(
|
|
298
|
+
xml_result=$(aether colony-archive-xml --output "$chamber_dir/colony-archive.xml" 2>&1)
|
|
299
299
|
xml_ok=$(echo "$xml_result" | jq -r '.ok // false' 2>/dev/null)
|
|
300
300
|
|
|
301
301
|
if [[ "$xml_ok" != "true" ]]; then
|
|
@@ -323,7 +323,7 @@ body_claude: |
|
|
|
323
323
|
|
|
324
324
|
Run verification:
|
|
325
325
|
```bash
|
|
326
|
-
|
|
326
|
+
aether chamber-verify --path ".aether/chambers/$chamber_name"
|
|
327
327
|
```
|
|
328
328
|
|
|
329
329
|
If verification fails, display error and stop:
|
|
@@ -341,7 +341,7 @@ body_claude: |
|
|
|
341
341
|
|
|
342
342
|
Write colony summary to eternal memory:
|
|
343
343
|
```bash
|
|
344
|
-
|
|
344
|
+
aether eternal-init # idempotent
|
|
345
345
|
eternal_file="$HOME/.aether/eternal/memory.json"
|
|
346
346
|
if [[ -f "$eternal_file" ]]; then
|
|
347
347
|
colony_entry=$(jq -n \
|
|
@@ -679,7 +679,7 @@ body_opencode: |
|
|
|
679
679
|
|
|
680
680
|
Create the chamber:
|
|
681
681
|
```bash
|
|
682
|
-
|
|
682
|
+
aether chamber-create \
|
|
683
683
|
".aether/chambers/{chamber_name}" \
|
|
684
684
|
".aether/data/COLONY_STATE.json" \
|
|
685
685
|
"{goal}" \
|
|
@@ -697,7 +697,7 @@ body_opencode: |
|
|
|
697
697
|
|
|
698
698
|
```bash
|
|
699
699
|
chamber_dir=".aether/chambers/$chamber_name"
|
|
700
|
-
xml_result=$(
|
|
700
|
+
xml_result=$(aether colony-archive-xml --output "$chamber_dir/colony-archive.xml" 2>&1)
|
|
701
701
|
xml_ok=$(echo "$xml_result" | jq -r '.ok // false' 2>/dev/null)
|
|
702
702
|
|
|
703
703
|
if [[ "$xml_ok" != "true" ]]; then
|
|
@@ -733,7 +733,7 @@ body_opencode: |
|
|
|
733
733
|
|
|
734
734
|
Run verification:
|
|
735
735
|
```bash
|
|
736
|
-
|
|
736
|
+
aether chamber-verify --path ".aether/chambers/{chamber_name}"
|
|
737
737
|
```
|
|
738
738
|
|
|
739
739
|
If verification fails, display error and stop:
|
|
@@ -20,7 +20,7 @@ body: |
|
|
|
20
20
|
|
|
21
21
|
Run using the Bash tool with description "Exporting pheromone signals to XML...":
|
|
22
22
|
```bash
|
|
23
|
-
|
|
23
|
+
aether pheromone-export-xml --output "<output_path>"
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
Parse the returned JSON:
|
|
@@ -59,6 +59,6 @@ body: |
|
|
|
59
59
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
60
60
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
61
61
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
62
|
-
|
|
62
|
+
aether print-next-up
|
|
63
63
|
```
|
|
64
64
|
{{/claude}}
|
|
@@ -32,7 +32,7 @@ body: |
|
|
|
32
32
|
{{#claude}}
|
|
33
33
|
{{TOOL_PREFIX "Recording colony feedback..."}}
|
|
34
34
|
```bash
|
|
35
|
-
|
|
35
|
+
aether pheromone-write --type FEEDBACK --content "<content>" --strength 0.7 --reason "User feedback guidance" --ttl <ttl>
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
**Create instinct from feedback:**
|
|
@@ -59,14 +59,14 @@ body: |
|
|
|
59
59
|
|
|
60
60
|
{{TOOL_PREFIX "Updating context document..."}}
|
|
61
61
|
```bash
|
|
62
|
-
|
|
62
|
+
aether context-update --section constraint --key feedback --content "<content>" "user" 2>/dev/null || true
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
### Step 3: Get Active Counts
|
|
66
66
|
|
|
67
67
|
{{TOOL_PREFIX "Counting active signals..."}}
|
|
68
68
|
```bash
|
|
69
|
-
|
|
69
|
+
aether pheromone-count
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
### Step 4: Confirm
|
|
@@ -119,8 +119,8 @@ body: |
|
|
|
119
119
|
|
|
120
120
|
**Write pheromone signal and update context:**
|
|
121
121
|
```bash
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
aether pheromone-write --type FEEDBACK --content "$normalized_args" --strength 0.7 --reason "User feedback guidance" 2>/dev/null || true
|
|
123
|
+
aether context-update --section constraint --key feedback --content "$normalized_args" "user" 2>/dev/null || true
|
|
124
124
|
```
|
|
125
125
|
|
|
126
126
|
### Step 3: Confirm
|
|
@@ -153,6 +153,6 @@ body: |
|
|
|
153
153
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
154
154
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
155
155
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
156
|
-
|
|
156
|
+
aether print-next-up
|
|
157
157
|
```
|
|
158
158
|
{{/claude}}
|
|
@@ -48,7 +48,7 @@ body: |
|
|
|
48
48
|
|
|
49
49
|
{{TOOL_PREFIX "Raising colony flag..."}}
|
|
50
50
|
```bash
|
|
51
|
-
|
|
51
|
+
aether flag-add --severity "{type}" --title "{title}" --description "{description}" --source "manual" --phase {phase_or_null}
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
Parse the result for the flag ID.
|
|
@@ -144,7 +144,7 @@ body: |
|
|
|
144
144
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
145
145
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
146
146
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
147
|
-
|
|
147
|
+
aether print-next-up
|
|
148
148
|
```
|
|
149
149
|
{{/claude}}
|
|
150
150
|
|
|
@@ -32,7 +32,7 @@ body: |
|
|
|
32
32
|
If `--resolve` was provided:
|
|
33
33
|
{{/opencode}}
|
|
34
34
|
```bash
|
|
35
|
-
|
|
35
|
+
aether flag-resolve --id "{flag_id}" --message "{resolution_message}"
|
|
36
36
|
```
|
|
37
37
|
Output:
|
|
38
38
|
```
|
|
@@ -49,7 +49,7 @@ body: |
|
|
|
49
49
|
If `--ack` was provided:
|
|
50
50
|
{{/opencode}}
|
|
51
51
|
```bash
|
|
52
|
-
|
|
52
|
+
aether flag-acknowledge --id "{flag_id}"
|
|
53
53
|
```
|
|
54
54
|
Output:
|
|
55
55
|
```
|
|
@@ -68,7 +68,7 @@ body: |
|
|
|
68
68
|
Run:
|
|
69
69
|
{{/opencode}}
|
|
70
70
|
```bash
|
|
71
|
-
|
|
71
|
+
aether flag-list {options}
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
Parse result for flags array.
|
|
@@ -153,7 +153,7 @@ body: |
|
|
|
153
153
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
154
154
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
155
155
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
156
|
-
|
|
156
|
+
aether print-next-up
|
|
157
157
|
```
|
|
158
158
|
{{/claude}}
|
|
159
159
|
|