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
|
@@ -31,7 +31,7 @@ Extract: `goal`, `state`, `current_phase`, `plan.phases`, `errors`, `memory`, `e
|
|
|
31
31
|
|
|
32
32
|
### Step 1.5: Load State and Show Resumption Context
|
|
33
33
|
|
|
34
|
-
Run using the Bash tool with description "Loading colony state...": `
|
|
34
|
+
Run using the Bash tool with description "Loading colony state...": `aether load-state`
|
|
35
35
|
|
|
36
36
|
If successful and goal is not null:
|
|
37
37
|
1. Extract current_phase from state
|
|
@@ -46,7 +46,7 @@ If .aether/HANDOFF.md exists (detected in load-state output):
|
|
|
46
46
|
- Read .aether/HANDOFF.md for additional context
|
|
47
47
|
- Remove .aether/HANDOFF.md after display (cleanup)
|
|
48
48
|
|
|
49
|
-
Run using the Bash tool with description "Releasing colony lock...": `
|
|
49
|
+
Run using the Bash tool with description "Releasing colony lock...": `aether unload-state` to release lock.
|
|
50
50
|
|
|
51
51
|
**Error handling:**
|
|
52
52
|
- If E_FILE_NOT_FOUND: "No colony initialized. Run /ant:init first." and stop
|
|
@@ -147,7 +147,7 @@ Continue to Phase 5: Secrets Scan.
|
|
|
147
147
|
3. **If spawning Probe:**
|
|
148
148
|
|
|
149
149
|
a. Generate Probe name and dispatch:
|
|
150
|
-
Run using the Bash tool with description "Generating Probe name...": `probe_name=$(
|
|
150
|
+
Run using the Bash tool with description "Generating Probe name...": `probe_name=$(aether generate-ant-name "probe" | jq -r '.result') && aether spawn-log "Queen" "probe" "$probe_name" "Coverage improvement: ${coverage_percent}%" && echo "{\"name\":\"$probe_name\"}"`
|
|
151
151
|
|
|
152
152
|
|
|
153
153
|
c. Display: `🧪🐜 Probe {probe_name} spawning — Coverage at {coverage_percent}%, generating tests for uncovered paths...`
|
|
@@ -208,13 +208,13 @@ Continue to Phase 5: Secrets Scan.
|
|
|
208
208
|
f. Parse Probe JSON output and log completion:
|
|
209
209
|
Extract: `tests_added`, `coverage.lines`, `coverage.branches`, `coverage.functions`, `edge_cases_discovered`, `mutation_score`
|
|
210
210
|
|
|
211
|
-
Run using the Bash tool with description "Logging Probe completion...": `
|
|
211
|
+
Run using the Bash tool with description "Logging Probe completion...": `aether spawn-complete "$probe_name" "completed" "{\"tests_added\":${#tests_added[@]},\"coverage\":{\"lines\":${coverage_lines},\"branches\":${coverage_branches},\"functions\":${coverage_functions}}}"`
|
|
212
212
|
|
|
213
213
|
g. Log findings to midden:
|
|
214
|
-
Run using the Bash tool with description "Logging Probe findings to midden...": `
|
|
214
|
+
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"`
|
|
215
215
|
|
|
216
216
|
If edge cases found:
|
|
217
|
-
Run using the Bash tool with description "Logging edge cases to midden...": `
|
|
217
|
+
Run using the Bash tool with description "Logging edge cases to midden...": `aether midden-write "edge_cases" "Found ${#edge_cases_discovered[@]} edge cases" "probe"`
|
|
218
218
|
|
|
219
219
|
4. **NON-BLOCKING continuation:**
|
|
220
220
|
Display Probe findings summary:
|
|
@@ -351,8 +351,8 @@ The phase will NOT advance until spawning occurs.
|
|
|
351
351
|
**CRITICAL:** Do NOT proceed to Step 1.7. Do NOT advance the phase.
|
|
352
352
|
Log the violation:
|
|
353
353
|
```bash
|
|
354
|
-
|
|
355
|
-
|
|
354
|
+
aether activity-log "BLOCKED" "colony" "Spawn gate failed: {task_count} tasks, 0 spawns"
|
|
355
|
+
aether error-flag-pattern "no-spawn-violation" "Prime Worker completed phase without spawning specialists" "critical"
|
|
356
356
|
```
|
|
357
357
|
|
|
358
358
|
**HARD REJECTION - If watcher_count == 0 (no testing separation):**
|
|
@@ -392,7 +392,7 @@ Continue to Step 1.7.
|
|
|
392
392
|
|
|
393
393
|
Scan all modified/created files for known anti-patterns. This catches recurring bugs before they reach production.
|
|
394
394
|
|
|
395
|
-
For each file, run using the Bash tool with description "Scanning for anti-patterns...": `
|
|
395
|
+
For each file, run using the Bash tool with description "Scanning for anti-patterns...": `aether check-antipattern "{file_path}"`
|
|
396
396
|
|
|
397
397
|
Run for each file in `files_created` and `files_modified` from Prime Worker output.
|
|
398
398
|
|
|
@@ -503,7 +503,7 @@ If no CRITICAL issues, continue to Step 1.7.1.
|
|
|
503
503
|
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"`
|
|
504
504
|
|
|
505
505
|
b. **Generate Weaver name and dispatch:**
|
|
506
|
-
Run using the Bash tool with description "Generating Weaver name...": `weaver_name=$(
|
|
506
|
+
Run using the Bash tool with description "Generating Weaver name...": `weaver_name=$(aether generate-ant-name "weaver" | jq -r '.result') && aether spawn-log "Queen" "weaver" "$weaver_name" "Proactive refactoring" && echo "{\"name\":\"$weaver_name\"}"`
|
|
507
507
|
|
|
508
508
|
|
|
509
509
|
d. **Display:** `🔄🐜 Weaver {weaver_name} spawning — Refactoring complex code...`
|
|
@@ -585,11 +585,11 @@ If no CRITICAL issues, continue to Step 1.7.1.
|
|
|
585
585
|
```
|
|
586
586
|
|
|
587
587
|
g. **Log completion:**
|
|
588
|
-
Run using the Bash tool with description "Logging Weaver completion...": `
|
|
588
|
+
Run using the Bash tool with description "Logging Weaver completion...": `aether spawn-complete "$weaver_name" "$weaver_status" "Refactoring $weaver_status"`
|
|
589
589
|
|
|
590
590
|
|
|
591
591
|
i. **Log to midden:**
|
|
592
|
-
Run using the Bash tool with description "Logging refactoring activity to midden...": `
|
|
592
|
+
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"`
|
|
593
593
|
|
|
594
594
|
5. **Display completion:**
|
|
595
595
|
```
|
|
@@ -618,7 +618,7 @@ Continue to Step 1.9.
|
|
|
618
618
|
**If package.json exists:**
|
|
619
619
|
|
|
620
620
|
1. Generate Gatekeeper name and log spawn:
|
|
621
|
-
Run using the Bash tool with description "Generating Gatekeeper name...": `gatekeeper_name=$(
|
|
621
|
+
Run using the Bash tool with description "Generating Gatekeeper name...": `gatekeeper_name=$(aether generate-ant-name "gatekeeper" | jq -r '.result') && aether spawn-log "Queen" "gatekeeper" "$gatekeeper_name" "Supply chain security audit" && echo "{\"name\":\"$gatekeeper_name\"}"`
|
|
622
622
|
|
|
623
623
|
2. Display: `📦🐜 Gatekeeper {name} spawning — Scanning dependencies for CVEs and license compliance...`
|
|
624
624
|
|
|
@@ -663,7 +663,7 @@ Provide JSON output matching this schema:
|
|
|
663
663
|
5. Parse Gatekeeper JSON output and log completion:
|
|
664
664
|
Extract: `security.critical`, `security.high`, `status`
|
|
665
665
|
|
|
666
|
-
Run using the Bash tool with description "Logging Gatekeeper completion...": `
|
|
666
|
+
Run using the Bash tool with description "Logging Gatekeeper completion...": `aether spawn-complete "$gatekeeper_name" "completed" "{\"security\":{\"critical\":$critical_count,\"high\":$high_count}}"`
|
|
667
667
|
|
|
668
668
|
**Gate Decision Logic:**
|
|
669
669
|
|
|
@@ -693,7 +693,7 @@ The phase will NOT advance with critical CVEs.
|
|
|
693
693
|
Security warnings logged to midden for later review.
|
|
694
694
|
Proceeding with caution...
|
|
695
695
|
```
|
|
696
|
-
Run using the Bash tool with description "Logging high-severity warnings...": `
|
|
696
|
+
Run using the Bash tool with description "Logging high-severity warnings...": `aether midden-write "security" "High CVEs found: $high_count" "gatekeeper"`
|
|
697
697
|
Continue to Step 1.9.
|
|
698
698
|
|
|
699
699
|
- **If clean (no critical or high):**
|
|
@@ -707,7 +707,7 @@ Continue to Step 1.9.
|
|
|
707
707
|
**Code quality audit — runs on every `/ant:continue` for consistent coverage.**
|
|
708
708
|
|
|
709
709
|
1. Generate Auditor name and log spawn:
|
|
710
|
-
Run using the Bash tool with description "Generating Auditor name...": `auditor_name=$(
|
|
710
|
+
Run using the Bash tool with description "Generating Auditor name...": `auditor_name=$(aether generate-ant-name "auditor" | jq -r '.result') && aether spawn-log "Queen" "auditor" "$auditor_name" "Code quality audit" && echo "{\"name\":\"$auditor_name\"}"`
|
|
711
711
|
|
|
712
712
|
2. Display: `👥🐜 Auditor {name} spawning — Reviewing code with multi-lens analysis...`
|
|
713
713
|
|
|
@@ -764,7 +764,7 @@ Provide JSON output matching this schema:
|
|
|
764
764
|
6. Parse Auditor JSON output and log completion:
|
|
765
765
|
Extract: `findings.critical`, `findings.high`, `findings.medium`, `findings.low`, `findings.info`, `overall_score`, `dimensions_audited`
|
|
766
766
|
|
|
767
|
-
Run using the Bash tool with description "Logging Auditor completion...": `
|
|
767
|
+
Run using the Bash tool with description "Logging Auditor completion...": `aether spawn-complete "$auditor_name" "completed" "{\"findings\":{\"critical\":$critical_count,\"high\":$high_count,\"medium\":$medium_count,\"low\":$low_count,\"info\":$info_count},\"score\":$overall_score}"`
|
|
768
768
|
|
|
769
769
|
**Gate Decision Logic:**
|
|
770
770
|
|
|
@@ -788,7 +788,7 @@ Critical Findings:
|
|
|
788
788
|
|
|
789
789
|
The phase will NOT advance with critical quality issues.
|
|
790
790
|
```
|
|
791
|
-
Run using the Bash tool with description "Logging critical quality block...": `
|
|
791
|
+
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"`
|
|
792
792
|
**CRITICAL:** Do NOT proceed to Step 1.10. Stop here.
|
|
793
793
|
|
|
794
794
|
- **Else if `overall_score < 60`:**
|
|
@@ -809,7 +809,7 @@ Code quality score below threshold: {overall_score}/100 (threshold: 60)
|
|
|
809
809
|
|
|
810
810
|
The phase will NOT advance with quality score below 60.
|
|
811
811
|
```
|
|
812
|
-
Run using the Bash tool with description "Logging quality score block...": `
|
|
812
|
+
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"`
|
|
813
813
|
**CRITICAL:** Do NOT proceed to Step 1.10. Stop here.
|
|
814
814
|
|
|
815
815
|
- **Else if `findings.high > 0`:**
|
|
@@ -822,7 +822,7 @@ Run using the Bash tool with description "Logging quality score block...": `bash
|
|
|
822
822
|
Quality warnings logged to midden for later review.
|
|
823
823
|
Proceeding with caution...
|
|
824
824
|
```
|
|
825
|
-
Run using the Bash tool with description "Logging high-quality warnings...": `
|
|
825
|
+
Run using the Bash tool with description "Logging high-quality warnings...": `aether midden-write "quality" "High severity issues: $high_count (score: $overall_score)" "auditor"`
|
|
826
826
|
Continue to Step 1.10.
|
|
827
827
|
|
|
828
828
|
- **If clean (score >= 60, no critical):**
|
|
@@ -865,7 +865,7 @@ The phase will NOT advance with fabricated metrics.
|
|
|
865
865
|
|
|
866
866
|
**CRITICAL:** Do NOT proceed. Log the violation:
|
|
867
867
|
```bash
|
|
868
|
-
|
|
868
|
+
aether error-flag-pattern "fabricated-tdd" "Prime Worker reported TDD metrics without creating test files" "critical"
|
|
869
869
|
```
|
|
870
870
|
|
|
871
871
|
**If tests_added == 0 or test files exist matching claims:**
|
|
@@ -911,7 +911,7 @@ Please describe the issues so they can be addressed:
|
|
|
911
911
|
|
|
912
912
|
Use AskUserQuestion to get issue details. Log to errors.records:
|
|
913
913
|
```bash
|
|
914
|
-
|
|
914
|
+
aether error-add "runtime" "critical" "{user_description}" {phase}
|
|
915
915
|
```
|
|
916
916
|
|
|
917
917
|
Do NOT proceed to Step 2.
|
|
@@ -946,10 +946,10 @@ Continue to Step 1.12.
|
|
|
946
946
|
**The Iron Law:** No phase advancement with unresolved blockers.
|
|
947
947
|
|
|
948
948
|
First, auto-resolve any flags eligible for resolution now that verification has passed:
|
|
949
|
-
Run using the Bash tool with description "Auto-resolving flags...": `
|
|
949
|
+
Run using the Bash tool with description "Auto-resolving flags...": `aether flag-auto-resolve "build_pass"`
|
|
950
950
|
|
|
951
951
|
Then check for remaining blocking flags:
|
|
952
|
-
Run using the Bash tool with description "Checking for blockers...": `
|
|
952
|
+
Run using the Bash tool with description "Checking for blockers...": `aether flag-check-blockers {current_phase}`
|
|
953
953
|
|
|
954
954
|
Parse result for `blockers`, `issues`, and `notes` counts.
|
|
955
955
|
|
|
@@ -1056,7 +1056,7 @@ Update COLONY_STATE.json:
|
|
|
1056
1056
|
if [[ -n "$current_phase_learnings" ]]; then
|
|
1057
1057
|
echo "$current_phase_learnings" | jq -r '.learnings[]?.claim // empty' 2>/dev/null | while read -r claim; do
|
|
1058
1058
|
if [[ -n "$claim" ]]; then
|
|
1059
|
-
|
|
1059
|
+
aether memory-capture "learning" "$claim" "pattern" "worker:continue"
|
|
1060
1060
|
fi
|
|
1061
1061
|
done
|
|
1062
1062
|
echo "Recorded observations for threshold tracking"
|
|
@@ -1140,7 +1140,7 @@ Update COLONY_STATE.json:
|
|
|
1140
1140
|
Write COLONY_STATE.json.
|
|
1141
1141
|
|
|
1142
1142
|
Validate the state file:
|
|
1143
|
-
Run using the Bash tool with description "Validating colony state...": `
|
|
1143
|
+
Run using the Bash tool with description "Validating colony state...": `aether validate-state colony`
|
|
1144
1144
|
|
|
1145
1145
|
### Step 2.1: Auto-Emit Phase Pheromones (SILENT)
|
|
1146
1146
|
|
|
@@ -1160,7 +1160,7 @@ After learning extraction completes in Step 2, auto-emit a FEEDBACK signal summa
|
|
|
1160
1160
|
phase_feedback="Phase $phase_id ($phase_name) completed. Key patterns: {brief summary of 1-3 learnings from Step 2}"
|
|
1161
1161
|
# Fallback if no learnings: "Phase $phase_id ($phase_name) completed without notable patterns."
|
|
1162
1162
|
|
|
1163
|
-
|
|
1163
|
+
aether pheromone-write FEEDBACK "$phase_feedback" \
|
|
1164
1164
|
--strength 0.6 \
|
|
1165
1165
|
--source "worker:continue" \
|
|
1166
1166
|
--reason "Auto-emitted on phase advance: captures what worked and what was learned" \
|
|
@@ -1196,7 +1196,7 @@ if [[ -n "$decisions" ]]; then
|
|
|
1196
1196
|
[.signals[] | select(.active == true and (.source == "auto:decision" or .source == "system:decision") and (.content.text | contains($text)))] | length
|
|
1197
1197
|
' .aether/data/pheromones.json 2>/dev/null || echo "0")
|
|
1198
1198
|
if [[ "$existing" == "0" ]]; then
|
|
1199
|
-
|
|
1199
|
+
aether pheromone-write FEEDBACK \
|
|
1200
1200
|
"[decision] $dec" \
|
|
1201
1201
|
--strength 0.6 \
|
|
1202
1202
|
--source "auto:decision" \
|
|
@@ -1215,7 +1215,7 @@ Strength is 0.6 (auto-emitted = lower than user-emitted). Source is `"auto:decis
|
|
|
1215
1215
|
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.
|
|
1216
1216
|
|
|
1217
1217
|
```bash
|
|
1218
|
-
midden_result=$(
|
|
1218
|
+
midden_result=$(aether midden-recent-failures 50 2>/dev/null || echo '{"count":0,"failures":[]}')
|
|
1219
1219
|
midden_count=$(echo "$midden_result" | jq '.count // 0')
|
|
1220
1220
|
|
|
1221
1221
|
if [[ "$midden_count" -gt 0 ]]; then
|
|
@@ -1242,7 +1242,7 @@ if [[ "$midden_count" -gt 0 ]]; then
|
|
|
1242
1242
|
' .aether/data/pheromones.json 2>/dev/null || echo "0")
|
|
1243
1243
|
|
|
1244
1244
|
if [[ "$existing" == "0" ]]; then
|
|
1245
|
-
|
|
1245
|
+
aether pheromone-write REDIRECT \
|
|
1246
1246
|
"[error-pattern] Category \"$category\" recurring ($count occurrences)" \
|
|
1247
1247
|
--strength 0.7 \
|
|
1248
1248
|
--source "auto:error" \
|
|
@@ -1251,7 +1251,7 @@ if [[ "$midden_count" -gt 0 ]]; then
|
|
|
1251
1251
|
emit_count=$((emit_count + 1))
|
|
1252
1252
|
|
|
1253
1253
|
# Capture as resolution candidate for promotion tracking
|
|
1254
|
-
|
|
1254
|
+
aether memory-capture \
|
|
1255
1255
|
"resolution" \
|
|
1256
1256
|
"Recurring error pattern: $category ($count occurrences)" \
|
|
1257
1257
|
"pattern" \
|
|
@@ -1298,7 +1298,7 @@ for encoded in $recurring_criteria; do
|
|
|
1298
1298
|
' .aether/data/pheromones.json 2>/dev/null || echo "0")
|
|
1299
1299
|
|
|
1300
1300
|
if [[ "$existing" == "0" ]]; then
|
|
1301
|
-
|
|
1301
|
+
aether pheromone-write FEEDBACK \
|
|
1302
1302
|
"[success-pattern] \"$text\" recurs across phases $phases" \
|
|
1303
1303
|
--strength 0.6 \
|
|
1304
1304
|
--source "auto:success" \
|
|
@@ -1314,7 +1314,7 @@ Strength is 0.6 (auto-emitted). Source is `"auto:success"`. Cap: max 2 success c
|
|
|
1314
1314
|
|
|
1315
1315
|
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.
|
|
1316
1316
|
|
|
1317
|
-
Run using the Bash tool with description "Maintaining pheromone memory...": `
|
|
1317
|
+
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`
|
|
1318
1318
|
|
|
1319
1319
|
This is idempotent — runs every time continue fires but only creates the directory/file once.
|
|
1320
1320
|
|
|
@@ -1328,7 +1328,7 @@ If `$ARGUMENTS` contains `--deferred`:
|
|
|
1328
1328
|
```bash
|
|
1329
1329
|
if [[ "$ARGUMENTS" == *"--deferred"* ]] && [[ -f .aether/data/learning-deferred.json ]]; then
|
|
1330
1330
|
echo "📦 Reviewing deferred proposals..."
|
|
1331
|
-
|
|
1331
|
+
aether learning-approve-proposals --deferred ${verbose:+--verbose}
|
|
1332
1332
|
fi
|
|
1333
1333
|
```
|
|
1334
1334
|
|
|
@@ -1336,7 +1336,7 @@ fi
|
|
|
1336
1336
|
|
|
1337
1337
|
1. **Check for proposals:**
|
|
1338
1338
|
```bash
|
|
1339
|
-
proposals=$(
|
|
1339
|
+
proposals=$(aether learning-check-promotion 2>/dev/null || echo '{"proposals":[]}')
|
|
1340
1340
|
proposal_count=$(echo "$proposals" | jq '.proposals | length')
|
|
1341
1341
|
```
|
|
1342
1342
|
|
|
@@ -1348,7 +1348,7 @@ fi
|
|
|
1348
1348
|
if [[ "$proposal_count" -gt 0 ]]; then
|
|
1349
1349
|
verbose_flag=""
|
|
1350
1350
|
[[ "$ARGUMENTS" == *"--verbose"* ]] && verbose_flag="--verbose"
|
|
1351
|
-
|
|
1351
|
+
aether learning-approve-proposals $verbose_flag
|
|
1352
1352
|
fi
|
|
1353
1353
|
# If no proposals, silently skip without notice (per user decision)
|
|
1354
1354
|
```
|
|
@@ -1388,7 +1388,7 @@ if [[ -f "$obs_file" ]]; then
|
|
|
1388
1388
|
colony=$(echo "$encoded" | base64 -d | jq -r '.colonies[0] // "unknown"')
|
|
1389
1389
|
[[ -z "$content" ]] && continue
|
|
1390
1390
|
|
|
1391
|
-
result=$(
|
|
1391
|
+
result=$(aether learning-promote-auto "$wisdom_type" "$content" "$colony" "learning" 2>/dev/null || echo '{}')
|
|
1392
1392
|
was_promoted=$(echo "$result" | jq -r '.result.promoted // false' 2>/dev/null || echo "false")
|
|
1393
1393
|
if [[ "$was_promoted" == "true" ]]; then
|
|
1394
1394
|
promoted_count=$((promoted_count + 1))
|
|
@@ -1452,7 +1452,7 @@ If no `CHANGELOG.md` exists, `changelog-append` creates one automatically.
|
|
|
1452
1452
|
**Step 2.3.1: Collect plan data**
|
|
1453
1453
|
|
|
1454
1454
|
```bash
|
|
1455
|
-
|
|
1455
|
+
aether changelog-collect-plan-data "{phase_identifier}" "{plan_number}"
|
|
1456
1456
|
```
|
|
1457
1457
|
|
|
1458
1458
|
Parse the returned JSON to extract `files`, `decisions`, `worked`, and `requirements` arrays.
|
|
@@ -1468,7 +1468,7 @@ If the command fails (e.g., no plan file found), fall back to collecting data ma
|
|
|
1468
1468
|
**Step 2.3.2: Append changelog entry**
|
|
1469
1469
|
|
|
1470
1470
|
```bash
|
|
1471
|
-
|
|
1471
|
+
aether changelog-append \
|
|
1472
1472
|
"$(date +%Y-%m-%d)" \
|
|
1473
1473
|
"{phase_identifier}" \
|
|
1474
1474
|
"{plan_number}" \
|
|
@@ -1509,7 +1509,7 @@ Store this as `ai_description` for the commit message.
|
|
|
1509
1509
|
#### Step 2.4.2: Generate Enhanced Commit Message
|
|
1510
1510
|
|
|
1511
1511
|
```bash
|
|
1512
|
-
|
|
1512
|
+
aether generate-commit-message "contextual" {phase_id} "{phase_name}" "{ai_description}" {plan_number}
|
|
1513
1513
|
```
|
|
1514
1514
|
|
|
1515
1515
|
Parse the returned JSON to extract:
|
|
@@ -1624,18 +1624,18 @@ After phase advancement is complete, update `.aether/CONTEXT.md`:
|
|
|
1624
1624
|
|
|
1625
1625
|
**Log the activity:**
|
|
1626
1626
|
```bash
|
|
1627
|
-
|
|
1627
|
+
aether context-update activity "continue" "Phase {prev_id} completed, advanced to {next_id}" "—"
|
|
1628
1628
|
```
|
|
1629
1629
|
|
|
1630
1630
|
**Update the phase:**
|
|
1631
1631
|
```bash
|
|
1632
|
-
|
|
1632
|
+
aether context-update update-phase {next_id} "{next_phase_name}" "YES" "Phase advanced, ready to build"
|
|
1633
1633
|
```
|
|
1634
1634
|
|
|
1635
1635
|
**Log any decisions from this session:**
|
|
1636
1636
|
If any architectural decisions were made during verification, also run:
|
|
1637
1637
|
```bash
|
|
1638
|
-
|
|
1638
|
+
aether context-update decision "{decision_description}" "{rationale}" "Queen"
|
|
1639
1639
|
```
|
|
1640
1640
|
|
|
1641
1641
|
### Step 2.7: Project Completion
|
|
@@ -1676,7 +1676,7 @@ Output:
|
|
|
1676
1676
|
|
|
1677
1677
|
```
|
|
1678
1678
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1679
|
-
|
|
1679
|
+
➡️ P H A S E A D V A N C E M E N T
|
|
1680
1680
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1681
1681
|
|
|
1682
1682
|
✅ Phase {prev_id}: {prev_name} -- COMPLETED
|
|
@@ -1719,7 +1719,21 @@ Output:
|
|
|
1719
1719
|
Update the session tracking file to enable `/ant:resume` after context clear:
|
|
1720
1720
|
|
|
1721
1721
|
```bash
|
|
1722
|
-
|
|
1722
|
+
aether session-update "/ant:continue" "/ant:build {next_id}" "Phase {prev_id} completed, advanced to Phase {next_id}"
|
|
1723
1723
|
```
|
|
1724
1724
|
|
|
1725
|
-
Run using the Bash tool with description "Saving session state...": `
|
|
1725
|
+
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}"`
|
|
1726
|
+
|
|
1727
|
+
### Step 4.5: Housekeeping (Non-Blocking)
|
|
1728
|
+
|
|
1729
|
+
Prune stale backups and temp files. This runs automatically — failures never affect phase advancement.
|
|
1730
|
+
|
|
1731
|
+
Run using the Bash tool with description "Pruning stale backups...":
|
|
1732
|
+
```bash
|
|
1733
|
+
aether backup-prune-global 2>/dev/null || true
|
|
1734
|
+
```
|
|
1735
|
+
|
|
1736
|
+
Run using the Bash tool with description "Cleaning temp files...":
|
|
1737
|
+
```bash
|
|
1738
|
+
aether temp-clean 2>/dev/null || true
|
|
1739
|
+
```
|
|
@@ -32,8 +32,8 @@ The phase will NOT advance until spawning occurs.
|
|
|
32
32
|
**CRITICAL:** Do NOT proceed to Step 1.7. Do NOT advance the phase.
|
|
33
33
|
Log the violation:
|
|
34
34
|
```bash
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
aether activity-log "BLOCKED" "colony" "Spawn gate failed: {task_count} tasks, 0 spawns"
|
|
36
|
+
aether error-flag-pattern "no-spawn-violation" "Prime Worker completed phase without spawning specialists" "critical"
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
**HARD REJECTION - If watcher_count == 0 (no testing separation):**
|
|
@@ -73,7 +73,7 @@ Continue to Step 1.7.
|
|
|
73
73
|
|
|
74
74
|
Scan all modified/created files for known anti-patterns. This catches recurring bugs before they reach production.
|
|
75
75
|
|
|
76
|
-
For each file, run using the Bash tool with description "Scanning for anti-patterns...": `
|
|
76
|
+
For each file, run using the Bash tool with description "Scanning for anti-patterns...": `aether check-antipattern "{file_path}"`
|
|
77
77
|
|
|
78
78
|
Run for each file in `files_created` and `files_modified` from Prime Worker output.
|
|
79
79
|
|
|
@@ -184,7 +184,7 @@ If no CRITICAL issues, continue to Step 1.7.1.
|
|
|
184
184
|
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"`
|
|
185
185
|
|
|
186
186
|
b. **Generate Weaver name and dispatch:**
|
|
187
|
-
Run using the Bash tool with description "Generating Weaver name...": `weaver_name=$(
|
|
187
|
+
Run using the Bash tool with description "Generating Weaver name...": `weaver_name=$(aether generate-ant-name "weaver" | jq -r '.result') && aether spawn-log "Queen" "weaver" "$weaver_name" "Proactive refactoring" && echo "{\"name\":\"$weaver_name\"}"`
|
|
188
188
|
|
|
189
189
|
c. **Display:**
|
|
190
190
|
```
|
|
@@ -269,10 +269,10 @@ If no CRITICAL issues, continue to Step 1.7.1.
|
|
|
269
269
|
```
|
|
270
270
|
|
|
271
271
|
g. **Log completion:**
|
|
272
|
-
Run using the Bash tool with description "Logging Weaver completion...": `
|
|
272
|
+
Run using the Bash tool with description "Logging Weaver completion...": `aether spawn-complete "$weaver_name" "$weaver_status" "Refactoring $weaver_status"`
|
|
273
273
|
|
|
274
274
|
h. **Log to midden:**
|
|
275
|
-
Run using the Bash tool with description "Logging refactoring activity to midden...": `
|
|
275
|
+
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"`
|
|
276
276
|
|
|
277
277
|
5. **Display completion:**
|
|
278
278
|
```
|
|
@@ -301,7 +301,7 @@ Continue to Step 1.9.
|
|
|
301
301
|
**If package.json exists:**
|
|
302
302
|
|
|
303
303
|
1. Generate Gatekeeper name and log spawn:
|
|
304
|
-
Run using the Bash tool with description "Generating Gatekeeper name...": `gatekeeper_name=$(
|
|
304
|
+
Run using the Bash tool with description "Generating Gatekeeper name...": `gatekeeper_name=$(aether generate-ant-name "gatekeeper" | jq -r '.result') && aether spawn-log "Queen" "gatekeeper" "$gatekeeper_name" "Supply chain security audit" && echo "{\"name\":\"$gatekeeper_name\"}"`
|
|
305
305
|
|
|
306
306
|
2. Display:
|
|
307
307
|
```
|
|
@@ -350,7 +350,7 @@ Provide JSON output matching this schema:
|
|
|
350
350
|
5. Parse Gatekeeper JSON output and log completion:
|
|
351
351
|
Extract: `security.critical`, `security.high`, `status`
|
|
352
352
|
|
|
353
|
-
Run using the Bash tool with description "Logging Gatekeeper completion...": `
|
|
353
|
+
Run using the Bash tool with description "Logging Gatekeeper completion...": `aether spawn-complete "$gatekeeper_name" "completed" "{\"security\":{\"critical\":$critical_count,\"high\":$high_count}}"`
|
|
354
354
|
|
|
355
355
|
**Gate Decision Logic:**
|
|
356
356
|
|
|
@@ -380,7 +380,7 @@ The phase will NOT advance with critical CVEs.
|
|
|
380
380
|
Security warnings logged to midden for later review.
|
|
381
381
|
Proceeding with caution...
|
|
382
382
|
```
|
|
383
|
-
Run using the Bash tool with description "Logging high-severity warnings...": `
|
|
383
|
+
Run using the Bash tool with description "Logging high-severity warnings...": `aether midden-write "security" "High CVEs found: $high_count" "gatekeeper"`
|
|
384
384
|
Continue to Step 1.9.
|
|
385
385
|
|
|
386
386
|
- **If clean (no critical or high):**
|
|
@@ -394,7 +394,7 @@ Continue to Step 1.9.
|
|
|
394
394
|
**Code quality audit — runs on every `/ant:continue` for consistent coverage.**
|
|
395
395
|
|
|
396
396
|
1. Generate Auditor name and log spawn:
|
|
397
|
-
Run using the Bash tool with description "Generating Auditor name...": `auditor_name=$(
|
|
397
|
+
Run using the Bash tool with description "Generating Auditor name...": `auditor_name=$(aether generate-ant-name "auditor" | jq -r '.result') && aether spawn-log "Queen" "auditor" "$auditor_name" "Code quality audit" && echo "{\"name\":\"$auditor_name\"}"`
|
|
398
398
|
|
|
399
399
|
2. Display:
|
|
400
400
|
```
|
|
@@ -455,7 +455,7 @@ Provide JSON output matching this schema:
|
|
|
455
455
|
6. Parse Auditor JSON output and log completion:
|
|
456
456
|
Extract: `findings.critical`, `findings.high`, `findings.medium`, `findings.low`, `findings.info`, `overall_score`, `dimensions_audited`
|
|
457
457
|
|
|
458
|
-
Run using the Bash tool with description "Logging Auditor completion...": `
|
|
458
|
+
Run using the Bash tool with description "Logging Auditor completion...": `aether spawn-complete "$auditor_name" "completed" "{\"findings\":{\"critical\":$critical_count,\"high\":$high_count,\"medium\":$medium_count,\"low\":$low_count,\"info\":$info_count},\"score\":$overall_score}"`
|
|
459
459
|
|
|
460
460
|
**Gate Decision Logic:**
|
|
461
461
|
|
|
@@ -479,7 +479,7 @@ Critical Findings:
|
|
|
479
479
|
|
|
480
480
|
The phase will NOT advance with critical quality issues.
|
|
481
481
|
```
|
|
482
|
-
Run using the Bash tool with description "Logging critical quality block...": `
|
|
482
|
+
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"`
|
|
483
483
|
**CRITICAL:** Do NOT proceed to Step 1.10. Stop here.
|
|
484
484
|
|
|
485
485
|
- **Else if `overall_score < 60`:**
|
|
@@ -500,7 +500,7 @@ Code quality score below threshold: {overall_score}/100 (threshold: 60)
|
|
|
500
500
|
|
|
501
501
|
The phase will NOT advance with quality score below 60.
|
|
502
502
|
```
|
|
503
|
-
Run using the Bash tool with description "Logging quality score block...": `
|
|
503
|
+
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"`
|
|
504
504
|
**CRITICAL:** Do NOT proceed to Step 1.10. Stop here.
|
|
505
505
|
|
|
506
506
|
- **Else if `findings.high > 0`:**
|
|
@@ -513,7 +513,7 @@ Run using the Bash tool with description "Logging quality score block...": `bash
|
|
|
513
513
|
Quality warnings logged to midden for later review.
|
|
514
514
|
Proceeding with caution...
|
|
515
515
|
```
|
|
516
|
-
Run using the Bash tool with description "Logging high-quality warnings...": `
|
|
516
|
+
Run using the Bash tool with description "Logging high-quality warnings...": `aether midden-write "quality" "High severity issues: $high_count (score: $overall_score)" "auditor"`
|
|
517
517
|
Continue to Step 1.10.
|
|
518
518
|
|
|
519
519
|
- **If clean (score >= 60, no critical):**
|
|
@@ -556,7 +556,7 @@ The phase will NOT advance with fabricated metrics.
|
|
|
556
556
|
|
|
557
557
|
**CRITICAL:** Do NOT proceed. Log the violation:
|
|
558
558
|
```bash
|
|
559
|
-
|
|
559
|
+
aether error-flag-pattern "fabricated-tdd" "Prime Worker reported TDD metrics without creating test files" "critical"
|
|
560
560
|
```
|
|
561
561
|
|
|
562
562
|
**If tests_added == 0 or test files exist matching claims:**
|
|
@@ -602,7 +602,7 @@ Please describe the issues so they can be addressed:
|
|
|
602
602
|
|
|
603
603
|
Use AskUserQuestion to get issue details. Log to errors.records:
|
|
604
604
|
```bash
|
|
605
|
-
|
|
605
|
+
aether error-add "runtime" "critical" "{user_description}" {phase}
|
|
606
606
|
```
|
|
607
607
|
|
|
608
608
|
Do NOT proceed to Step 2.
|
|
@@ -637,10 +637,10 @@ Continue to Step 1.12.
|
|
|
637
637
|
**The Iron Law:** No phase advancement with unresolved blockers.
|
|
638
638
|
|
|
639
639
|
First, auto-resolve any flags eligible for resolution now that verification has passed:
|
|
640
|
-
Run using the Bash tool with description "Auto-resolving flags...": `
|
|
640
|
+
Run using the Bash tool with description "Auto-resolving flags...": `aether flag-auto-resolve "build_pass"`
|
|
641
641
|
|
|
642
642
|
Then check for remaining blocking flags:
|
|
643
|
-
Run using the Bash tool with description "Checking for blockers...": `
|
|
643
|
+
Run using the Bash tool with description "Checking for blockers...": `aether flag-check-blockers {current_phase}`
|
|
644
644
|
|
|
645
645
|
Parse result for `blockers`, `issues`, and `notes` counts.
|
|
646
646
|
|
|
@@ -31,7 +31,7 @@ Extract: `goal`, `state`, `current_phase`, `plan.phases`, `errors`, `memory`, `e
|
|
|
31
31
|
|
|
32
32
|
### Step 1.5: Load State and Show Resumption Context
|
|
33
33
|
|
|
34
|
-
Run using the Bash tool with description "Loading colony state...": `
|
|
34
|
+
Run using the Bash tool with description "Loading colony state...": `aether load-state`
|
|
35
35
|
|
|
36
36
|
If successful and goal is not null:
|
|
37
37
|
1. Extract current_phase from state
|
|
@@ -46,7 +46,7 @@ If .aether/HANDOFF.md exists (detected in load-state output):
|
|
|
46
46
|
- Read .aether/HANDOFF.md for additional context
|
|
47
47
|
- Remove .aether/HANDOFF.md after display (cleanup)
|
|
48
48
|
|
|
49
|
-
Run using the Bash tool with description "Releasing colony lock...": `
|
|
49
|
+
Run using the Bash tool with description "Releasing colony lock...": `aether unload-state` to release lock.
|
|
50
50
|
|
|
51
51
|
**Error handling:**
|
|
52
52
|
- If E_FILE_NOT_FOUND: "No colony initialized. Run /ant:init first." and stop
|
|
@@ -72,7 +72,7 @@ If `state != "EXECUTING"`:
|
|
|
72
72
|
|
|
73
73
|
Run using the Bash tool with description "Checking survey context...":
|
|
74
74
|
```bash
|
|
75
|
-
survey_check=$(
|
|
75
|
+
survey_check=$(aether survey-verify 2>/dev/null || true)
|
|
76
76
|
survey_docs=$(ls -1 .aether/data/survey/*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
77
77
|
survey_latest=$(ls -t .aether/data/survey/*.md 2>/dev/null | head -1)
|
|
78
78
|
if [[ -n "$survey_latest" ]]; then
|
|
@@ -176,7 +176,7 @@ Continue to Phase 5: Secrets Scan.
|
|
|
176
176
|
3. **If spawning Probe:**
|
|
177
177
|
|
|
178
178
|
a. Generate Probe name and dispatch:
|
|
179
|
-
Run using the Bash tool with description "Generating Probe name...": `probe_name=$(
|
|
179
|
+
Run using the Bash tool with description "Generating Probe name...": `probe_name=$(aether generate-ant-name "probe" | jq -r '.result') && aether spawn-log "Queen" "probe" "$probe_name" "Coverage improvement: ${coverage_percent}%" && echo "{\"name\":\"$probe_name\"}"`
|
|
180
180
|
|
|
181
181
|
b. Display:
|
|
182
182
|
```
|
|
@@ -240,13 +240,13 @@ Continue to Phase 5: Secrets Scan.
|
|
|
240
240
|
f. Parse Probe JSON output and log completion:
|
|
241
241
|
Extract: `tests_added`, `coverage.lines`, `coverage.branches`, `coverage.functions`, `edge_cases_discovered`, `mutation_score`
|
|
242
242
|
|
|
243
|
-
Run using the Bash tool with description "Logging Probe completion...": `
|
|
243
|
+
Run using the Bash tool with description "Logging Probe completion...": `aether spawn-complete "$probe_name" "completed" "{\"tests_added\":${#tests_added[@]},\"coverage\":{\"lines\":${coverage_lines},\"branches\":${coverage_branches},\"functions\":${coverage_functions}}}"`
|
|
244
244
|
|
|
245
245
|
g. Log findings to midden:
|
|
246
|
-
Run using the Bash tool with description "Logging Probe findings to midden...": `
|
|
246
|
+
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"`
|
|
247
247
|
|
|
248
248
|
If edge cases found:
|
|
249
|
-
Run using the Bash tool with description "Logging edge cases to midden...": `
|
|
249
|
+
Run using the Bash tool with description "Logging edge cases to midden...": `aether midden-write "edge_cases" "Found ${#edge_cases_discovered[@]} edge cases" "probe"`
|
|
250
250
|
|
|
251
251
|
4. **NON-BLOCKING continuation:**
|
|
252
252
|
Display Probe findings summary:
|
|
@@ -363,7 +363,7 @@ Cross-reference worker claims against reality. This step catches fabricated succ
|
|
|
363
363
|
3. Run verification:
|
|
364
364
|
Run using the Bash tool with description "Verifying worker claims...":
|
|
365
365
|
```bash
|
|
366
|
-
|
|
366
|
+
aether verify-claims ".aether/data/last-build-claims.json" "<watcher_json_or_path>" "<test_exit_code>"
|
|
367
367
|
```
|
|
368
368
|
|
|
369
369
|
For the watcher JSON: use the Watcher output from the most recent build (if available in COLONY_STATE.json events or build synthesis). If no Watcher output is available, pass `'{"verification_passed":true}'` as default (conservative -- only test exit code mismatch can trigger).
|
|
@@ -386,7 +386,7 @@ Cross-reference worker claims against reality. This step catches fabricated succ
|
|
|
386
386
|
Log a flag for each mismatch:
|
|
387
387
|
Run using the Bash tool with description "Flagging verification mismatch...":
|
|
388
388
|
```bash
|
|
389
|
-
|
|
389
|
+
aether flag-create "Verification mismatch: <summary>" --type blocker
|
|
390
390
|
```
|
|
391
391
|
|
|
392
392
|
**Auto-retry once** (locked decision):
|
|
@@ -422,7 +422,7 @@ last_merge_branch="${last_merged_branch:-}"
|
|
|
422
422
|
last_merge_sha="${last_merge_sha:-}"
|
|
423
423
|
|
|
424
424
|
if [[ -n "$last_merge_branch" && -n "$last_merge_sha" ]]; then
|
|
425
|
-
collect_result=$(
|
|
425
|
+
collect_result=$(aether midden-collect \
|
|
426
426
|
--branch "$last_merge_branch" --merge-sha "$last_merge_sha" \
|
|
427
427
|
2>/dev/null || echo '{"ok":false}')
|
|
428
428
|
collect_ok=$(echo "$collect_result" | jq -r '.ok // false' 2>/dev/null)
|