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
|
@@ -306,7 +306,7 @@ body_claude: |
|
|
|
306
306
|
|
|
307
307
|
Run using the Bash tool with description "Logging excavation activity...":
|
|
308
308
|
```bash
|
|
309
|
-
|
|
309
|
+
aether activity-log "ARCHAEOLOGY" "Archaeologist" "Excavated {target}: {total_commits} commits, {author_count} authors, {findings_count} findings, {tech_debt_count} debt markers"
|
|
310
310
|
```
|
|
311
311
|
|
|
312
312
|
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
@@ -314,7 +314,7 @@ body_claude: |
|
|
|
314
314
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
315
315
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
316
316
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
317
|
-
|
|
317
|
+
aether print-next-up
|
|
318
318
|
```
|
|
319
319
|
|
|
320
320
|
## Investigation Guidelines
|
|
@@ -635,7 +635,7 @@ body_opencode: |
|
|
|
635
635
|
### Step 8: Log Activity
|
|
636
636
|
|
|
637
637
|
```bash
|
|
638
|
-
|
|
638
|
+
aether activity-log "ARCHAEOLOGY" "Archaeologist" "Excavated {target}: {total_commits} commits, {author_count} authors, {findings_count} findings, {tech_debt_count} debt markers"
|
|
639
639
|
```
|
|
640
640
|
|
|
641
641
|
## Investigation Guidelines
|
|
@@ -70,7 +70,7 @@ body_opencode: |
|
|
|
70
70
|
|
|
71
71
|
### Step 0.5: Load Colony State
|
|
72
72
|
|
|
73
|
-
Run using Bash tool: `
|
|
73
|
+
Run using Bash tool: `aether load-state`
|
|
74
74
|
|
|
75
75
|
If the command fails (non-zero exit or JSON has ok: false):
|
|
76
76
|
1. Parse error JSON
|
|
@@ -88,7 +88,7 @@ body_opencode: |
|
|
|
88
88
|
```
|
|
89
89
|
(If HANDOFF.md exists, this provides orientation before the build proceeds)
|
|
90
90
|
|
|
91
|
-
After displaying context, run: `
|
|
91
|
+
After displaying context, run: `aether unload-state` to release the lock.
|
|
92
92
|
|
|
93
93
|
### Step 1: Validate + Read State
|
|
94
94
|
|
|
@@ -121,7 +121,7 @@ body_opencode: |
|
|
|
121
121
|
|
|
122
122
|
**Set colony depth (if --depth flag provided):**
|
|
123
123
|
If `cli_depth_override` is set:
|
|
124
|
-
1. Run using Bash tool: `
|
|
124
|
+
1. Run using Bash tool: `aether colony-depth set "$cli_depth_override"`
|
|
125
125
|
2. Parse JSON result - if `.ok` is false:
|
|
126
126
|
- Display: `Error: Invalid depth "$cli_depth_override". Use: light, standard, deep, full`
|
|
127
127
|
- Stop here
|
|
@@ -150,7 +150,7 @@ body_opencode: |
|
|
|
150
150
|
Check for unresolved blocker flags on the requested phase:
|
|
151
151
|
|
|
152
152
|
```bash
|
|
153
|
-
|
|
153
|
+
aether flag-check-blockers {phase_number}
|
|
154
154
|
```
|
|
155
155
|
|
|
156
156
|
Parse the JSON result (`.result.blockers`):
|
|
@@ -158,7 +158,7 @@ body_opencode: |
|
|
|
158
158
|
- **If blockers == 0:** Display nothing (or optionally a brief `No active blockers for Phase {id}.` line). Proceed to Step 2.
|
|
159
159
|
- **If blockers > 0:** Retrieve blocker details:
|
|
160
160
|
```bash
|
|
161
|
-
|
|
161
|
+
aether flag-list --type blocker --json --phase {phase_number}
|
|
162
162
|
```
|
|
163
163
|
Parse `.result.flags` and display an advisory warning:
|
|
164
164
|
```
|
|
@@ -219,7 +219,7 @@ body_opencode: |
|
|
|
219
219
|
|
|
220
220
|
Run using the Bash tool with description "Showing phase progress...":
|
|
221
221
|
```bash
|
|
222
|
-
progress_bar=$(
|
|
222
|
+
progress_bar=$(aether generate-progress-bar "$current_phase" "$total_phases" 20 2>/dev/null || echo "")
|
|
223
223
|
if [[ -n "$progress_bar" ]]; then
|
|
224
224
|
echo "[Phase ${current_phase}/${total_phases}] ${progress_bar}"
|
|
225
225
|
fi
|
|
@@ -246,7 +246,7 @@ body_opencode: |
|
|
|
246
246
|
Check if territory survey exists and load relevant documents:
|
|
247
247
|
|
|
248
248
|
```bash
|
|
249
|
-
|
|
249
|
+
aether survey-load "{phase_name}" 2>/dev/null
|
|
250
250
|
```
|
|
251
251
|
|
|
252
252
|
**Parse the JSON response:**
|
|
@@ -292,7 +292,7 @@ body_opencode: |
|
|
|
292
292
|
Call `queen-read` to extract eternal wisdom for worker priming:
|
|
293
293
|
|
|
294
294
|
```bash
|
|
295
|
-
|
|
295
|
+
aether queen-read 2>/dev/null
|
|
296
296
|
```
|
|
297
297
|
|
|
298
298
|
**Parse the JSON response:**
|
|
@@ -327,7 +327,7 @@ body_opencode: |
|
|
|
327
327
|
Call `pheromone-read` to extract active colony signals for worker priming:
|
|
328
328
|
|
|
329
329
|
```bash
|
|
330
|
-
|
|
330
|
+
aether pheromone-read 2>/dev/null
|
|
331
331
|
```
|
|
332
332
|
|
|
333
333
|
**Parse the JSON response:**
|
|
@@ -381,8 +381,8 @@ body_opencode: |
|
|
|
381
381
|
|
|
382
382
|
Generate archaeologist name and log:
|
|
383
383
|
```bash
|
|
384
|
-
|
|
385
|
-
|
|
384
|
+
aether generate-ant-name --caste "archaeologist"
|
|
385
|
+
aether spawn-log --name "Queen" --caste "scout" --id "{archaeologist_name}" --description "Pre-build archaeology scan"
|
|
386
386
|
```
|
|
387
387
|
|
|
388
388
|
Display:
|
|
@@ -407,7 +407,7 @@ body_opencode: |
|
|
|
407
407
|
4. Run: git blame "{file_path}" | head -40 for authorship
|
|
408
408
|
5. Note TODO/FIXME/HACK markers
|
|
409
409
|
|
|
410
|
-
Log activity:
|
|
410
|
+
Log activity: aether activity-log "READ" "{Ant-Name}" "description"
|
|
411
411
|
|
|
412
412
|
Report (plain text):
|
|
413
413
|
- WHY key code sections exist (from commits)
|
|
@@ -421,7 +421,7 @@ body_opencode: |
|
|
|
421
421
|
|
|
422
422
|
Log completion:
|
|
423
423
|
```bash
|
|
424
|
-
|
|
424
|
+
aether spawn-complete --id "{archaeologist_name}" --status "completed" --summary "Pre-build archaeology scan"
|
|
425
425
|
```
|
|
426
426
|
|
|
427
427
|
3. **Store and display findings:**
|
|
@@ -472,9 +472,9 @@ body_opencode: |
|
|
|
472
472
|
|
|
473
473
|
3. **Generate ant names for each worker:**
|
|
474
474
|
```bash
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
475
|
+
aether generate-ant-name --caste "builder"
|
|
476
|
+
aether generate-ant-name --caste "watcher"
|
|
477
|
+
aether generate-ant-name --caste "chaos"
|
|
478
478
|
```
|
|
479
479
|
|
|
480
480
|
Display spawn plan with caste emojis:
|
|
@@ -553,12 +553,12 @@ body_opencode: |
|
|
|
553
553
|
|
|
554
554
|
**First, mark build start in context:**
|
|
555
555
|
```bash
|
|
556
|
-
|
|
556
|
+
aether context-update build-start {phase_id} {wave_1_worker_count} {wave_1_task_count}
|
|
557
557
|
```
|
|
558
558
|
|
|
559
559
|
Before dispatching each worker, refresh colony context so new pheromones/memory are visible:
|
|
560
560
|
```bash
|
|
561
|
-
prime_result=$(
|
|
561
|
+
prime_result=$(aether colony-prime --compact 2>/dev/null)
|
|
562
562
|
```
|
|
563
563
|
Update `prompt_section` from `prime_result.result.prompt_section`.
|
|
564
564
|
|
|
@@ -566,8 +566,8 @@ body_opencode: |
|
|
|
566
566
|
|
|
567
567
|
Log each spawn and update swarm display:
|
|
568
568
|
```bash
|
|
569
|
-
|
|
570
|
-
|
|
569
|
+
aether spawn-log --name "Queen" --caste "builder" --id "{ant_name}" --description "{task_description}"
|
|
570
|
+
aether context-update worker-spawn "{ant_name}" "builder" "{task_description}"
|
|
571
571
|
```
|
|
572
572
|
|
|
573
573
|
**Builder Worker Prompt (CLEAN OUTPUT):**
|
|
@@ -587,13 +587,13 @@ body_opencode: |
|
|
|
587
587
|
Work:
|
|
588
588
|
1. Read .aether/workers.md for Builder discipline
|
|
589
589
|
2. Implement task, write tests
|
|
590
|
-
3. Log activity:
|
|
590
|
+
3. Log activity: aether activity-log "ACTION" "{Ant-Name}" "description"
|
|
591
591
|
|
|
592
592
|
Spawn sub-workers ONLY if 3x complexity:
|
|
593
|
-
- Check:
|
|
594
|
-
- Generate name:
|
|
593
|
+
- Check: aether spawn-can-spawn {depth} --enforce
|
|
594
|
+
- Generate name: aether generate-ant-name --caste "builder"
|
|
595
595
|
- Announce: "🐜 Spawning {child_name} for {reason}"
|
|
596
|
-
- Log:
|
|
596
|
+
- Log: aether spawn-log --name "{Ant-Name}" --caste "builder" --id "{child_name}" --description "{task}"
|
|
597
597
|
|
|
598
598
|
Count your total tool calls (Read + Grep + Edit + Bash + Write) and report as tool_count.
|
|
599
599
|
|
|
@@ -676,7 +676,7 @@ body_opencode: |
|
|
|
676
676
|
|
|
677
677
|
Before using any worker payload, validate schema:
|
|
678
678
|
```bash
|
|
679
|
-
|
|
679
|
+
aether validate-worker-response builder '{worker_json}'
|
|
680
680
|
```
|
|
681
681
|
If validation fails, treat the worker as failed with blocker `invalid_worker_response`.
|
|
682
682
|
|
|
@@ -696,8 +696,8 @@ body_opencode: |
|
|
|
696
696
|
|
|
697
697
|
Log and update swarm display:
|
|
698
698
|
```bash
|
|
699
|
-
|
|
700
|
-
|
|
699
|
+
aether spawn-complete --id "{ant_name}" --status "completed" --summary "{summary}"
|
|
700
|
+
aether context-update worker-complete "{ant_name}" "completed"
|
|
701
701
|
```
|
|
702
702
|
|
|
703
703
|
**Check for total wave failure:**
|
|
@@ -754,7 +754,7 @@ body_opencode: |
|
|
|
754
754
|
|
|
755
755
|
Log escalation as flag:
|
|
756
756
|
```bash
|
|
757
|
-
|
|
757
|
+
aether flag-add --severity "blocker" --title "{task title}" --description "{failure summary}" --source "escalation" --phase {phase_number}
|
|
758
758
|
```
|
|
759
759
|
|
|
760
760
|
If at least one worker succeeded, continue normally to the next wave.
|
|
@@ -784,7 +784,7 @@ body_opencode: |
|
|
|
784
784
|
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):
|
|
785
785
|
|
|
786
786
|
```bash
|
|
787
|
-
|
|
787
|
+
aether spawn-log --name "Queen" --caste "watcher" --id "{watcher_name}" --description "Independent verification"
|
|
788
788
|
```
|
|
789
789
|
|
|
790
790
|
**Watcher Worker Prompt (CLEAN OUTPUT):**
|
|
@@ -804,7 +804,7 @@ body_opencode: |
|
|
|
804
804
|
4. Check success criteria: {list}
|
|
805
805
|
|
|
806
806
|
Spawn sub-workers if needed:
|
|
807
|
-
- Log:
|
|
807
|
+
- Log: aether spawn-log --name "{Watcher-Name}" --caste "watcher" --id "{child}" --description "{task}"
|
|
808
808
|
- Announce: "🐜 Spawning {child} to investigate {issue}"
|
|
809
809
|
|
|
810
810
|
Count your total tool calls (Read + Grep + Edit + Bash + Write) and report as tool_count.
|
|
@@ -819,7 +819,7 @@ body_opencode: |
|
|
|
819
819
|
|
|
820
820
|
Validate watcher payload first:
|
|
821
821
|
```bash
|
|
822
|
-
|
|
822
|
+
aether validate-worker-response watcher '{watcher_json}'
|
|
823
823
|
```
|
|
824
824
|
|
|
825
825
|
**Parse the Watcher's validated JSON response:** verification_passed, issues_found, quality_score, recommendation
|
|
@@ -844,13 +844,13 @@ body_opencode: |
|
|
|
844
844
|
|
|
845
845
|
Generate a chaos ant name and log the spawn:
|
|
846
846
|
```bash
|
|
847
|
-
|
|
848
|
-
|
|
847
|
+
aether generate-ant-name --caste "chaos"
|
|
848
|
+
aether spawn-log --name "Queen" --caste "chaos" --id "{chaos_name}" --description "Resilience testing of Phase {id} work"
|
|
849
849
|
```
|
|
850
850
|
|
|
851
851
|
**Retrieve existing flags for this phase** (to avoid duplicate findings):
|
|
852
852
|
```bash
|
|
853
|
-
|
|
853
|
+
aether flag-list --phase {phase_number}
|
|
854
854
|
```
|
|
855
855
|
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".
|
|
856
856
|
|
|
@@ -901,17 +901,17 @@ body_opencode: |
|
|
|
901
901
|
If any findings have severity `"critical"` or `"high"`:
|
|
902
902
|
```bash
|
|
903
903
|
# Create a blocker flag for each critical/high chaos finding
|
|
904
|
-
|
|
904
|
+
aether flag-add --severity "blocker" --title "{finding.title}" --description "{finding.description}" --source "chaos-testing" --phase {phase_number}
|
|
905
905
|
```
|
|
906
906
|
|
|
907
907
|
Log the flag:
|
|
908
908
|
```bash
|
|
909
|
-
|
|
909
|
+
aether activity-log "FLAG" "Chaos" "Created blocker: {finding.title}"
|
|
910
910
|
```
|
|
911
911
|
|
|
912
912
|
Log chaos ant completion and update swarm display:
|
|
913
913
|
```bash
|
|
914
|
-
|
|
914
|
+
aether spawn-complete --id "{chaos_name}" --status "completed" --summary "{summary}"
|
|
915
915
|
```
|
|
916
916
|
|
|
917
917
|
### Step 5.8: Create Flags for Verification Failures
|
|
@@ -921,12 +921,12 @@ body_opencode: |
|
|
|
921
921
|
For each issue in `issues_found`:
|
|
922
922
|
```bash
|
|
923
923
|
# Create a blocker flag for each verification failure
|
|
924
|
-
|
|
924
|
+
aether flag-add --severity "blocker" --title "{issue_title}" --description "{issue_description}" --source "verification" --phase {phase_number}
|
|
925
925
|
```
|
|
926
926
|
|
|
927
927
|
Log the flag creation:
|
|
928
928
|
```bash
|
|
929
|
-
|
|
929
|
+
aether activity-log "FLAG" "Watcher" "Created blocker: {issue_title}"
|
|
930
930
|
```
|
|
931
931
|
|
|
932
932
|
This ensures verification failures are persisted as blockers that survive context resets. Chaos Ant findings are flagged in Step 5.7.
|
|
@@ -1005,11 +1005,11 @@ body_opencode: |
|
|
|
1005
1005
|
For each worker that returned `status: "failed"`:
|
|
1006
1006
|
For each file in that worker's `files_modified` or `files_created`:
|
|
1007
1007
|
```bash
|
|
1008
|
-
|
|
1008
|
+
aether grave-add "{file}" "{ant_name}" "{task_id}" {phase} "{first blocker or summary}"
|
|
1009
1009
|
```
|
|
1010
1010
|
Log the grave marker:
|
|
1011
1011
|
```bash
|
|
1012
|
-
|
|
1012
|
+
aether activity-log "GRAVE" "Queen" "Grave marker placed at {file} — {ant_name} failed: {summary}"
|
|
1013
1013
|
```
|
|
1014
1014
|
|
|
1015
1015
|
**Error Handoff Update:**
|
|
@@ -1184,12 +1184,12 @@ body_opencode: |
|
|
|
1184
1184
|
Log this build activity to `.aether/CONTEXT.md`:
|
|
1185
1185
|
|
|
1186
1186
|
```bash
|
|
1187
|
-
|
|
1187
|
+
aether context-update activity "build {phase_id}" "{synthesis.status}" "{files_created_count + files_modified_count}"
|
|
1188
1188
|
```
|
|
1189
1189
|
|
|
1190
1190
|
Mark build as complete in context:
|
|
1191
1191
|
```bash
|
|
1192
|
-
|
|
1192
|
+
aether context-update build-complete "{synthesis.status}" "{synthesis.status == 'completed' ? 'success' : 'failed'}"
|
|
1193
1193
|
```
|
|
1194
1194
|
|
|
1195
1195
|
Also update safe-to-clear status:
|
|
@@ -1236,7 +1236,7 @@ body_opencode: |
|
|
|
1236
1236
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "IDLE")
|
|
1237
1237
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json 2>/dev/null || echo "0")
|
|
1238
1238
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json 2>/dev/null || echo "0")
|
|
1239
|
-
|
|
1239
|
+
aether print-next-up
|
|
1240
1240
|
```
|
|
1241
1241
|
|
|
1242
1242
|
**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.
|
|
@@ -1251,6 +1251,6 @@ body_opencode: |
|
|
|
1251
1251
|
Update the session tracking file to enable `/ant:resume` after context clear:
|
|
1252
1252
|
|
|
1253
1253
|
```bash
|
|
1254
|
-
|
|
1254
|
+
aether session-update --command "/ant:build {phase_id}" --worker "/ant:continue" --summary "Phase {phase_id} build completed: {synthesis.status}"
|
|
1255
1255
|
```
|
|
1256
1256
|
|
|
@@ -292,12 +292,12 @@ body_claude: |
|
|
|
292
292
|
|
|
293
293
|
```bash
|
|
294
294
|
# For each scenario where status == "finding" AND severity is "CRITICAL" or "HIGH":
|
|
295
|
-
|
|
295
|
+
aether flag-add --severity "blocker" --title "{scenario.title}" --description "{scenario.description}" --source "chaos-standalone" --phase {current_phase_number}
|
|
296
296
|
```
|
|
297
297
|
|
|
298
298
|
Log each flag creation by running using the Bash tool with description "Logging chaos flag...":
|
|
299
299
|
```bash
|
|
300
|
-
|
|
300
|
+
aether activity-log "FLAG" "Chaos Ant" "Created blocker: {scenario.title}"
|
|
301
301
|
```
|
|
302
302
|
|
|
303
303
|
The `{current_phase_number}` comes from the colony state loaded in Step 1 (`.aether/data/COLONY_STATE.json` field `current_phase`).
|
|
@@ -308,7 +308,7 @@ body_claude: |
|
|
|
308
308
|
|
|
309
309
|
Run using the Bash tool with description "Logging chaos activity...":
|
|
310
310
|
```bash
|
|
311
|
-
|
|
311
|
+
aether activity-log "CHAOS" "Chaos Ant" "Resilience test on {target}: {findings_count} finding(s) ({critical} critical, {high} high, {medium} medium, {low} low), {resilient_count} resilient"
|
|
312
312
|
```
|
|
313
313
|
|
|
314
314
|
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
@@ -316,7 +316,7 @@ body_claude: |
|
|
|
316
316
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
317
317
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
318
318
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
319
|
-
|
|
319
|
+
aether print-next-up
|
|
320
320
|
```
|
|
321
321
|
|
|
322
322
|
## Investigation Guidelines
|
|
@@ -620,12 +620,12 @@ body_opencode: |
|
|
|
620
620
|
|
|
621
621
|
```bash
|
|
622
622
|
# For each scenario where status == "finding" AND severity is "CRITICAL" or "HIGH":
|
|
623
|
-
|
|
623
|
+
aether flag-add --severity "blocker" --title "{scenario.title}" --description "{scenario.description}" --source "chaos-standalone" --phase {current_phase_number}
|
|
624
624
|
```
|
|
625
625
|
|
|
626
626
|
Log each flag creation:
|
|
627
627
|
```bash
|
|
628
|
-
|
|
628
|
+
aether activity-log "FLAG" "Chaos Ant" "Created blocker: {scenario.title}"
|
|
629
629
|
```
|
|
630
630
|
|
|
631
631
|
The `{current_phase_number}` comes from the colony state loaded in Step 1 (`.aether/data/COLONY_STATE.json` field `current_phase`).
|
|
@@ -635,7 +635,7 @@ body_opencode: |
|
|
|
635
635
|
### Step 7: Log Activity
|
|
636
636
|
|
|
637
637
|
```bash
|
|
638
|
-
|
|
638
|
+
aether activity-log "CHAOS" "Chaos Ant" "Resilience test on {target}: {findings_count} finding(s) ({critical} critical, {high} high, {medium} medium, {low} low), {resilient_count} resilient"
|
|
639
639
|
```
|
|
640
640
|
|
|
641
641
|
## Investigation Guidelines
|
|
@@ -106,14 +106,14 @@ body_claude: |
|
|
|
106
106
|
SURVEY_START=$(date +%s)
|
|
107
107
|
|
|
108
108
|
# Check for stale survey files
|
|
109
|
-
stale_check=$(
|
|
109
|
+
stale_check=$(aether session-verify-fresh --command survey "" "$SURVEY_START")
|
|
110
110
|
has_stale=$(echo "$stale_check" | jq -r '.stale | length')
|
|
111
111
|
has_fresh=$(echo "$stale_check" | jq -r '.fresh | length')
|
|
112
112
|
|
|
113
113
|
if [[ "$has_stale" -gt 0 ]] || [[ "$has_fresh" -gt 0 ]]; then
|
|
114
114
|
# Found existing survey files
|
|
115
115
|
if [[ "$force_resurvey" == "true" ]]; then
|
|
116
|
-
|
|
116
|
+
aether session-clear --command survey
|
|
117
117
|
echo "Cleared existing survey files for fresh territory mapping"
|
|
118
118
|
else
|
|
119
119
|
echo "Found existing territory survey. Use --force-resurvey to remap."
|
|
@@ -124,15 +124,15 @@ body_claude: |
|
|
|
124
124
|
|
|
125
125
|
Generate unique names for the 4 Surveyor Ants (each name must be captured separately):
|
|
126
126
|
```bash
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
127
|
+
aether generate-ant-name --caste "surveyor"
|
|
128
|
+
aether generate-ant-name --caste "surveyor"
|
|
129
|
+
aether generate-ant-name --caste "surveyor"
|
|
130
|
+
aether generate-ant-name --caste "surveyor"
|
|
131
131
|
```
|
|
132
132
|
|
|
133
133
|
Log the dispatches (consolidated - fire-and-forget logging):
|
|
134
134
|
```bash
|
|
135
|
-
|
|
135
|
+
aether spawn-log --name "Queen" --caste "surveyor" --id "{provisions_name}" --description "Mapping provisions and trails" && aether spawn-log --name "Queen" --caste "surveyor" --id "{nest_name}" --description "Mapping nest structure" && aether spawn-log --name "Queen" --caste "surveyor" --id "{disciplines_name}" --description "Mapping disciplines and sentinels" && aether spawn-log --name "Queen" --caste "surveyor" --id "{pathogens_name}" --description "Identifying pathogens"
|
|
136
136
|
```
|
|
137
137
|
|
|
138
138
|
**Spawn 4 Surveyor Ants in parallel using the Task tool:**
|
|
@@ -176,7 +176,7 @@ body_claude: |
|
|
|
176
176
|
|
|
177
177
|
Verify that all survey files were created after the session start:
|
|
178
178
|
```bash
|
|
179
|
-
verify_result=$(
|
|
179
|
+
verify_result=$(aether session-verify-fresh --command survey "" "$SURVEY_START")
|
|
180
180
|
fresh_count=$(echo "$verify_result" | jq -r '.fresh | length')
|
|
181
181
|
|
|
182
182
|
if [[ "$fresh_count" -lt 7 ]]; then
|
|
@@ -252,7 +252,7 @@ body_claude: |
|
|
|
252
252
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
253
253
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
254
254
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
255
|
-
|
|
255
|
+
aether print-next-up
|
|
256
256
|
```
|
|
257
257
|
|
|
258
258
|
body_opencode: |
|
|
@@ -323,18 +323,18 @@ body_opencode: |
|
|
|
323
323
|
|
|
324
324
|
Generate unique names for the 4 Surveyor Ants and log their dispatch:
|
|
325
325
|
```bash
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
326
|
+
aether generate-ant-name --caste "surveyor"
|
|
327
|
+
aether generate-ant-name --caste "surveyor"
|
|
328
|
+
aether generate-ant-name --caste "surveyor"
|
|
329
|
+
aether generate-ant-name --caste "surveyor"
|
|
330
330
|
```
|
|
331
331
|
|
|
332
332
|
Log the dispatch:
|
|
333
333
|
```bash
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
334
|
+
aether spawn-log --name "Queen" --caste "surveyor" --id "{provisions_name}" --description "Mapping provisions and trails"
|
|
335
|
+
aether spawn-log --name "Queen" --caste "surveyor" --id "{nest_name}" --description "Mapping nest structure"
|
|
336
|
+
aether spawn-log --name "Queen" --caste "surveyor" --id "{disciplines_name}" --description "Mapping disciplines and sentinels"
|
|
337
|
+
aether spawn-log --name "Queen" --caste "surveyor" --id "{pathogens_name}" --description "Identifying pathogens"
|
|
338
338
|
```
|
|
339
339
|
|
|
340
340
|
**Spawn 4 Surveyor Ants in parallel using the Task tool:**
|