aether-colony 3.1.17 → 5.1.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 +5354 -0
- package/.aether/agents-claude/aether-ambassador.md +265 -0
- package/.aether/agents-claude/aether-archaeologist.md +327 -0
- package/.aether/agents-claude/aether-architect.md +236 -0
- package/.aether/agents-claude/aether-auditor.md +271 -0
- package/.aether/agents-claude/aether-builder.md +224 -0
- package/.aether/agents-claude/aether-chaos.md +269 -0
- package/.aether/agents-claude/aether-chronicler.md +305 -0
- package/.aether/agents-claude/aether-gatekeeper.md +330 -0
- package/.aether/agents-claude/aether-includer.md +374 -0
- package/.aether/agents-claude/aether-keeper.md +272 -0
- package/.aether/agents-claude/aether-measurer.md +322 -0
- package/.aether/agents-claude/aether-oracle.md +237 -0
- package/.aether/agents-claude/aether-probe.md +211 -0
- package/.aether/agents-claude/aether-queen.md +330 -0
- package/.aether/agents-claude/aether-route-setter.md +178 -0
- package/.aether/agents-claude/aether-sage.md +418 -0
- package/.aether/agents-claude/aether-scout.md +179 -0
- package/.aether/agents-claude/aether-surveyor-disciplines.md +417 -0
- package/.aether/agents-claude/aether-surveyor-nest.md +355 -0
- package/.aether/agents-claude/aether-surveyor-pathogens.md +289 -0
- package/.aether/agents-claude/aether-surveyor-provisions.md +360 -0
- package/.aether/agents-claude/aether-tracker.md +270 -0
- package/.aether/agents-claude/aether-watcher.md +280 -0
- package/.aether/agents-claude/aether-weaver.md +248 -0
- package/.aether/commands/archaeology.yaml +653 -0
- package/.aether/commands/build.yaml +1221 -0
- package/.aether/commands/chaos.yaml +653 -0
- package/.aether/commands/colonize.yaml +438 -0
- package/.aether/commands/continue.yaml +1484 -0
- package/.aether/commands/council.yaml +304 -0
- package/.aether/commands/data-clean.yaml +80 -0
- package/.aether/commands/dream.yaml +275 -0
- package/.aether/commands/entomb.yaml +863 -0
- package/.aether/commands/export-signals.yaml +64 -0
- package/.aether/commands/feedback.yaml +158 -0
- package/.aether/commands/flag.yaml +160 -0
- package/.aether/commands/flags.yaml +177 -0
- package/.aether/commands/focus.yaml +112 -0
- package/.aether/commands/help.yaml +167 -0
- package/.aether/commands/history.yaml +137 -0
- package/.aether/commands/import-signals.yaml +79 -0
- package/.aether/commands/init.yaml +469 -0
- package/.aether/commands/insert-phase.yaml +98 -0
- package/.aether/commands/interpret.yaml +285 -0
- package/.aether/commands/lay-eggs.yaml +224 -0
- package/.aether/commands/maturity.yaml +122 -0
- package/.aether/commands/memory-details.yaml +74 -0
- package/.aether/commands/migrate-state.yaml +174 -0
- package/.aether/commands/oracle.yaml +1224 -0
- package/.aether/commands/organize.yaml +446 -0
- package/.aether/commands/patrol.yaml +621 -0
- package/.aether/commands/pause-colony.yaml +424 -0
- package/.aether/commands/phase.yaml +124 -0
- package/.aether/commands/pheromones.yaml +153 -0
- package/.aether/commands/plan.yaml +1313 -0
- package/.aether/commands/preferences.yaml +63 -0
- package/.aether/commands/redirect.yaml +123 -0
- package/.aether/commands/resume-colony.yaml +373 -0
- package/.aether/commands/resume.yaml +398 -0
- package/.aether/commands/run.yaml +193 -0
- package/.aether/commands/seal.yaml +1205 -0
- package/.aether/commands/skill-create.yaml +337 -0
- package/.aether/commands/status.yaml +364 -0
- package/.aether/commands/swarm.yaml +352 -0
- package/.aether/commands/tunnels.yaml +814 -0
- package/.aether/commands/update.yaml +131 -0
- package/.aether/commands/verify-castes.yaml +159 -0
- package/.aether/commands/watch.yaml +454 -0
- package/.aether/docs/INCIDENT_TEMPLATE.md +32 -0
- package/.aether/docs/QUEEN-SYSTEM.md +211 -0
- package/.aether/docs/README.md +98 -0
- package/.aether/docs/caste-system.md +48 -0
- package/.aether/docs/command-playbooks/README.md +23 -0
- package/.aether/docs/command-playbooks/build-complete.md +349 -0
- package/.aether/docs/command-playbooks/build-context.md +282 -0
- package/.aether/docs/command-playbooks/build-full.md +1682 -0
- package/.aether/docs/command-playbooks/build-prep.md +283 -0
- package/.aether/docs/command-playbooks/build-verify.md +405 -0
- package/.aether/docs/command-playbooks/build-wave.md +749 -0
- package/.aether/docs/command-playbooks/continue-advance.md +524 -0
- package/.aether/docs/command-playbooks/continue-finalize.md +447 -0
- package/.aether/docs/command-playbooks/continue-full.md +1724 -0
- package/.aether/docs/command-playbooks/continue-gates.md +686 -0
- package/.aether/docs/command-playbooks/continue-verify.md +406 -0
- package/.aether/docs/context-continuity.md +84 -0
- package/{runtime → .aether/docs/disciplines}/DISCIPLINES.md +13 -11
- package/.aether/docs/error-codes.md +268 -0
- package/.aether/docs/known-issues.md +94 -0
- package/{runtime → .aether}/docs/pheromones.md +86 -6
- package/.aether/docs/plans/pheromone-display-plan.md +257 -0
- package/.aether/docs/queen-commands.md +98 -0
- package/.aether/docs/source-of-truth-map.md +132 -0
- package/.aether/docs/xml-utilities.md +47 -0
- package/{runtime → .aether}/exchange/pheromone-xml.sh +2 -1
- package/{runtime → .aether}/exchange/registry-xml.sh +7 -3
- package/{runtime → .aether}/exchange/wisdom-xml.sh +11 -4
- package/.aether/rules/aether-colony.md +144 -0
- package/.aether/schemas/example-prompt-builder.xml +234 -0
- package/.aether/scripts/incident-test-add.sh +47 -0
- package/.aether/scripts/weekly-audit.sh +79 -0
- package/.aether/skills/.index.json +649 -0
- package/.aether/skills/colony/.manifest.json +16 -0
- package/.aether/skills/colony/build-discipline/SKILL.md +78 -0
- package/.aether/skills/colony/colony-interaction/SKILL.md +56 -0
- package/.aether/skills/colony/colony-lifecycle/SKILL.md +77 -0
- package/.aether/skills/colony/colony-visuals/SKILL.md +112 -0
- package/.aether/skills/colony/context-management/SKILL.md +80 -0
- package/.aether/skills/colony/error-presentation/SKILL.md +99 -0
- package/.aether/skills/colony/pheromone-protocol/SKILL.md +79 -0
- package/.aether/skills/colony/pheromone-visibility/SKILL.md +81 -0
- package/.aether/skills/colony/state-safety/SKILL.md +84 -0
- package/.aether/skills/colony/worker-priming/SKILL.md +82 -0
- package/.aether/skills/domain/.manifest.json +24 -0
- package/.aether/skills/domain/README.md +33 -0
- package/.aether/skills/domain/django/SKILL.md +49 -0
- package/.aether/skills/domain/docker/SKILL.md +52 -0
- package/.aether/skills/domain/golang/SKILL.md +52 -0
- package/.aether/skills/domain/graphql/SKILL.md +51 -0
- package/.aether/skills/domain/html-css/SKILL.md +48 -0
- package/.aether/skills/domain/nextjs/SKILL.md +45 -0
- package/.aether/skills/domain/nodejs/SKILL.md +53 -0
- package/.aether/skills/domain/postgresql/SKILL.md +53 -0
- package/.aether/skills/domain/prisma/SKILL.md +59 -0
- package/.aether/skills/domain/python/SKILL.md +50 -0
- package/.aether/skills/domain/rails/SKILL.md +52 -0
- package/.aether/skills/domain/react/SKILL.md +45 -0
- package/.aether/skills/domain/rest-api/SKILL.md +58 -0
- package/.aether/skills/domain/svelte/SKILL.md +47 -0
- package/.aether/skills/domain/tailwind/SKILL.md +45 -0
- package/.aether/skills/domain/testing/SKILL.md +53 -0
- package/.aether/skills/domain/typescript/SKILL.md +58 -0
- package/.aether/skills/domain/vue/SKILL.md +49 -0
- package/.aether/templates/QUEEN.md.template +61 -0
- package/.aether/templates/colony-state-reset.jq.template +23 -0
- package/.aether/templates/colony-state.template.json +39 -0
- package/.aether/templates/constraints.template.json +9 -0
- package/.aether/templates/crowned-anthill.template.md +36 -0
- package/.aether/templates/handoff-build-error.template.md +30 -0
- package/.aether/templates/handoff-build-success.template.md +39 -0
- package/.aether/templates/handoff.template.md +40 -0
- package/.aether/templates/learning-observations.template.json +6 -0
- package/.aether/templates/midden.template.json +13 -0
- package/.aether/templates/pheromones.template.json +6 -0
- package/.aether/templates/session.template.json +9 -0
- package/{runtime → .aether}/utils/atomic-write.sh +68 -22
- package/{runtime → .aether}/utils/chamber-compare.sh +23 -10
- package/.aether/utils/chamber-utils.sh +440 -0
- package/.aether/utils/emoji-audit.sh +166 -0
- package/{runtime → .aether}/utils/error-handler.sh +34 -8
- package/.aether/utils/file-lock.sh +313 -0
- package/.aether/utils/flag.sh +267 -0
- package/.aether/utils/hive.sh +572 -0
- package/.aether/utils/learning.sh +1928 -0
- package/.aether/utils/midden.sh +342 -0
- package/.aether/utils/oracle/oracle.md +168 -0
- package/.aether/utils/oracle/oracle.sh +1023 -0
- package/.aether/utils/pheromone.sh +2029 -0
- package/.aether/utils/queen.sh +1698 -0
- package/.aether/utils/scan.sh +860 -0
- package/.aether/utils/semantic-cli.sh +415 -0
- package/.aether/utils/session.sh +552 -0
- package/.aether/utils/skills.sh +509 -0
- package/.aether/utils/spawn-tree.sh +260 -0
- package/.aether/utils/spawn.sh +260 -0
- package/.aether/utils/state-api.sh +199 -0
- package/{runtime → .aether}/utils/state-loader.sh +8 -6
- package/.aether/utils/suggest.sh +611 -0
- package/{runtime → .aether}/utils/swarm-display.sh +10 -1
- package/.aether/utils/swarm.sh +1004 -0
- package/{runtime → .aether}/utils/watch-spawn-tree.sh +11 -2
- package/{runtime → .aether}/utils/xml-compose.sh +9 -3
- package/.aether/utils/xml-convert.sh +277 -0
- package/{runtime → .aether}/utils/xml-core.sh +5 -9
- package/.aether/utils/xml-query.sh +201 -0
- package/.aether/utils/xml-utils.sh +110 -0
- package/{runtime → .aether}/workers.md +97 -81
- package/.claude/agents/ant/aether-ambassador.md +265 -0
- package/.claude/agents/ant/aether-archaeologist.md +327 -0
- package/.claude/agents/ant/aether-architect.md +236 -0
- package/.claude/agents/ant/aether-auditor.md +271 -0
- package/.claude/agents/ant/aether-builder.md +224 -0
- package/.claude/agents/ant/aether-chaos.md +269 -0
- package/.claude/agents/ant/aether-chronicler.md +305 -0
- package/.claude/agents/ant/aether-gatekeeper.md +330 -0
- package/.claude/agents/ant/aether-includer.md +374 -0
- package/.claude/agents/ant/aether-keeper.md +272 -0
- package/.claude/agents/ant/aether-measurer.md +322 -0
- package/.claude/agents/ant/aether-oracle.md +237 -0
- package/.claude/agents/ant/aether-probe.md +211 -0
- package/.claude/agents/ant/aether-queen.md +330 -0
- package/.claude/agents/ant/aether-route-setter.md +178 -0
- package/.claude/agents/ant/aether-sage.md +418 -0
- package/.claude/agents/ant/aether-scout.md +179 -0
- package/.claude/agents/ant/aether-surveyor-disciplines.md +417 -0
- package/.claude/agents/ant/aether-surveyor-nest.md +355 -0
- package/.claude/agents/ant/aether-surveyor-pathogens.md +289 -0
- package/.claude/agents/ant/aether-surveyor-provisions.md +360 -0
- package/.claude/agents/ant/aether-tracker.md +270 -0
- package/.claude/agents/ant/aether-watcher.md +280 -0
- package/.claude/agents/ant/aether-weaver.md +248 -0
- package/.claude/commands/ant/archaeology.md +16 -14
- package/.claude/commands/ant/build.md +43 -1028
- package/.claude/commands/ant/chaos.md +19 -23
- package/.claude/commands/ant/colonize.md +52 -31
- package/.claude/commands/ant/continue.md +40 -1016
- package/.claude/commands/ant/council.md +21 -18
- package/.claude/commands/ant/data-clean.md +81 -0
- package/.claude/commands/ant/dream.md +27 -15
- package/.claude/commands/ant/entomb.md +317 -225
- package/.claude/commands/ant/export-signals.md +57 -0
- package/.claude/commands/ant/feedback.md +48 -26
- package/.claude/commands/ant/flag.md +30 -10
- package/.claude/commands/ant/flags.md +34 -12
- package/.claude/commands/ant/focus.md +45 -19
- package/.claude/commands/ant/help.md +50 -8
- package/.claude/commands/ant/history.md +13 -0
- package/.claude/commands/ant/import-signals.md +71 -0
- package/.claude/commands/ant/init.md +345 -194
- package/.claude/commands/ant/insert-phase.md +101 -0
- package/.claude/commands/ant/interpret.md +26 -4
- package/.claude/commands/ant/lay-eggs.md +184 -127
- package/.claude/commands/ant/maturity.md +32 -11
- package/.claude/commands/ant/memory-details.md +77 -0
- package/.claude/commands/ant/migrate-state.md +20 -2
- package/.claude/commands/ant/oracle.md +337 -74
- package/.claude/commands/ant/organize.md +39 -25
- package/.claude/commands/ant/patrol.md +620 -0
- package/.claude/commands/ant/pause-colony.md +23 -27
- package/.claude/commands/ant/phase.md +40 -42
- package/.claude/commands/ant/pheromones.md +156 -0
- package/.claude/commands/ant/plan.md +185 -51
- package/.claude/commands/ant/preferences.md +65 -0
- package/.claude/commands/ant/redirect.md +45 -30
- package/.claude/commands/ant/resume-colony.md +51 -27
- package/.claude/commands/ant/resume.md +314 -94
- package/.claude/commands/ant/run.md +195 -0
- package/.claude/commands/ant/seal.md +650 -221
- package/.claude/commands/ant/skill-create.md +286 -0
- package/.claude/commands/ant/status.md +196 -31
- package/.claude/commands/ant/swarm.md +16 -46
- package/.claude/commands/ant/tunnels.md +280 -105
- package/.claude/commands/ant/update.md +73 -89
- package/.claude/commands/ant/verify-castes.md +100 -42
- package/.claude/commands/ant/watch.md +14 -12
- package/.opencode/agents/aether-ambassador.md +63 -20
- package/.opencode/agents/aether-archaeologist.md +29 -12
- package/.opencode/agents/aether-architect.md +103 -36
- package/.opencode/agents/aether-auditor.md +51 -18
- package/.opencode/agents/aether-builder.md +70 -20
- package/.opencode/agents/aether-chaos.md +29 -12
- package/.opencode/agents/aether-chronicler.md +60 -18
- package/.opencode/agents/aether-gatekeeper.md +27 -18
- package/.opencode/agents/aether-includer.md +27 -18
- package/.opencode/agents/aether-keeper.md +89 -18
- package/.opencode/agents/aether-measurer.md +27 -18
- package/.opencode/agents/aether-oracle.md +137 -0
- package/.opencode/agents/aether-probe.md +60 -18
- package/.opencode/agents/aether-queen.md +172 -24
- package/.opencode/agents/aether-route-setter.md +57 -12
- package/.opencode/agents/aether-sage.md +26 -18
- package/.opencode/agents/aether-scout.md +28 -20
- package/.opencode/agents/aether-surveyor-disciplines.md +59 -2
- package/.opencode/agents/aether-surveyor-nest.md +59 -2
- package/.opencode/agents/aether-surveyor-pathogens.md +57 -2
- package/.opencode/agents/aether-surveyor-provisions.md +59 -2
- package/.opencode/agents/aether-tracker.md +64 -18
- package/.opencode/agents/aether-watcher.md +66 -19
- package/.opencode/agents/aether-weaver.md +61 -18
- package/.opencode/commands/ant/archaeology.md +7 -14
- package/.opencode/commands/ant/build.md +437 -257
- package/.opencode/commands/ant/chaos.md +7 -24
- package/.opencode/commands/ant/colonize.md +8 -17
- package/.opencode/commands/ant/continue.md +661 -142
- package/.opencode/commands/ant/council.md +11 -22
- package/.opencode/commands/ant/data-clean.md +77 -0
- package/.opencode/commands/ant/dream.md +15 -17
- package/.opencode/commands/ant/entomb.md +133 -62
- package/.opencode/commands/ant/export-signals.md +54 -0
- package/.opencode/commands/ant/feedback.md +24 -5
- package/.opencode/commands/ant/flag.md +16 -4
- package/.opencode/commands/ant/flags.md +24 -10
- package/.opencode/commands/ant/focus.md +22 -5
- package/.opencode/commands/ant/help.md +41 -8
- package/.opencode/commands/ant/history.md +9 -0
- package/.opencode/commands/ant/import-signals.md +68 -0
- package/.opencode/commands/ant/init.md +374 -167
- package/.opencode/commands/ant/insert-phase.md +107 -0
- package/.opencode/commands/ant/interpret.md +16 -0
- package/.opencode/commands/ant/lay-eggs.md +184 -112
- package/.opencode/commands/ant/maturity.md +18 -2
- package/.opencode/commands/ant/memory-details.md +83 -0
- package/.opencode/commands/ant/migrate-state.md +12 -0
- package/.opencode/commands/ant/oracle.md +322 -67
- package/.opencode/commands/ant/organize.md +18 -16
- package/.opencode/commands/ant/patrol.md +626 -0
- package/.opencode/commands/ant/pause-colony.md +12 -29
- package/.opencode/commands/ant/phase.md +30 -40
- package/.opencode/commands/ant/pheromones.md +162 -0
- package/.opencode/commands/ant/plan.md +184 -56
- package/.opencode/commands/ant/preferences.md +71 -0
- package/.opencode/commands/ant/redirect.md +22 -5
- package/.opencode/commands/ant/resume-colony.md +38 -27
- package/.opencode/commands/ant/resume.md +385 -0
- package/.opencode/commands/ant/run.md +201 -0
- package/.opencode/commands/ant/seal.md +259 -45
- package/.opencode/commands/ant/skill-create.md +63 -0
- package/.opencode/commands/ant/status.md +135 -31
- package/.opencode/commands/ant/swarm.md +3 -345
- package/.opencode/commands/ant/tunnels.md +152 -9
- package/.opencode/commands/ant/update.md +70 -91
- package/.opencode/commands/ant/verify-castes.md +96 -42
- package/.opencode/commands/ant/watch.md +7 -0
- package/CHANGELOG.md +356 -0
- package/README.md +203 -573
- package/bin/cli.js +455 -527
- package/bin/generate-commands.js +186 -0
- package/bin/generate-commands.sh +127 -88
- package/bin/lib/init.js +13 -3
- package/bin/lib/spawn-logger.js +0 -15
- package/bin/lib/update-transaction.js +392 -140
- package/bin/npx-install.js +178 -0
- package/bin/sync-to-runtime.sh +5 -137
- package/bin/validate-package.sh +166 -0
- package/package.json +14 -7
- package/.opencode/agents/aether-guardian.md +0 -107
- package/.opencode/agents/workers.md +0 -1034
- package/bin/lib/model-profiles.js +0 -445
- package/bin/lib/model-verify.js +0 -288
- package/bin/lib/proxy-health.js +0 -253
- package/bin/lib/telemetry.js +0 -441
- package/runtime/CONTEXT.md +0 -160
- package/runtime/QUEEN_ANT_ARCHITECTURE.md +0 -402
- package/runtime/aether-utils.sh +0 -3879
- package/runtime/data/signatures.json +0 -41
- package/runtime/docs/AETHER-2.0-IMPLEMENTATION-PLAN.md +0 -1343
- package/runtime/docs/AETHER-PHEROMONE-SYSTEM-MASTER-SPEC.md +0 -2642
- package/runtime/docs/PHEROMONE-INJECTION.md +0 -240
- package/runtime/docs/PHEROMONE-INTEGRATION.md +0 -192
- package/runtime/docs/PHEROMONE-SYSTEM-DESIGN.md +0 -426
- package/runtime/docs/README.md +0 -94
- package/runtime/docs/VISUAL-OUTPUT-SPEC.md +0 -219
- package/runtime/docs/biological-reference.md +0 -272
- package/runtime/docs/codebase-review.md +0 -399
- package/runtime/docs/command-sync.md +0 -164
- package/runtime/docs/constraints.md +0 -116
- package/runtime/docs/implementation-learnings.md +0 -89
- package/runtime/docs/known-issues.md +0 -217
- package/runtime/docs/namespace.md +0 -148
- package/runtime/docs/pathogen-schema-example.json +0 -36
- package/runtime/docs/pathogen-schema.md +0 -111
- package/runtime/docs/planning-discipline.md +0 -159
- package/runtime/docs/progressive-disclosure.md +0 -184
- package/runtime/lib/queen-utils.sh +0 -729
- package/runtime/model-profiles.yaml +0 -100
- package/runtime/planning.md +0 -159
- package/runtime/recover.sh +0 -136
- package/runtime/templates/QUEEN.md.template +0 -79
- package/runtime/utils/chamber-utils.sh +0 -285
- package/runtime/utils/file-lock.sh +0 -122
- package/runtime/utils/spawn-tree.sh +0 -428
- package/runtime/utils/spawn-with-model.sh +0 -56
- package/runtime/utils/xml-utils.sh +0 -2196
- package/runtime/workers-new-castes.md +0 -516
- /package/{runtime → .aether/docs/disciplines}/coding-standards.md +0 -0
- /package/{runtime → .aether/docs/disciplines}/debugging.md +0 -0
- /package/{runtime → .aether/docs/disciplines}/learning.md +0 -0
- /package/{runtime → .aether/docs/disciplines}/tdd.md +0 -0
- /package/{runtime → .aether/docs/disciplines}/verification-loop.md +0 -0
- /package/{runtime → .aether/docs/disciplines}/verification.md +0 -0
- /package/{runtime → .aether}/schemas/aether-types.xsd +0 -0
- /package/{runtime → .aether}/schemas/colony-registry.xsd +0 -0
- /package/{runtime → .aether}/schemas/pheromone.xsd +0 -0
- /package/{runtime → .aether}/schemas/prompt.xsd +0 -0
- /package/{runtime → .aether}/schemas/queen-wisdom.xsd +0 -0
- /package/{runtime → .aether}/schemas/worker-priming.xsd +0 -0
- /package/{runtime → .aether}/utils/colorize-log.sh +0 -0
- /package/{runtime → .aether}/utils/queen-to-md.xsl +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<!-- Template: crowned-anthill | Version: 2.0 -->
|
|
2
|
+
<!-- Instructions: Fill all {{PLACEHOLDER}} values with real colony data. Remove this comment block before writing to .aether/CROWNED-ANTHILL.md -->
|
|
3
|
+
|
|
4
|
+
# Crowned Anthill — {{GOAL}}
|
|
5
|
+
|
|
6
|
+
**Sealed:** {{SEAL_DATE}}
|
|
7
|
+
**Milestone:** Crowned Anthill
|
|
8
|
+
**Version:** {{VERSION}}
|
|
9
|
+
|
|
10
|
+
## The Achievement
|
|
11
|
+
|
|
12
|
+
This colony set out to accomplish something real — and it did. Every phase pushed the anthill higher. Now it stands crowned.
|
|
13
|
+
|
|
14
|
+
## Colony Stats
|
|
15
|
+
- Total Phases: {{TOTAL_PHASES}}
|
|
16
|
+
- Phases Completed: {{PHASES_COMPLETED}} of {{TOTAL_PHASES}}
|
|
17
|
+
- Colony Age: {{COLONY_AGE_DAYS}} days of focused work
|
|
18
|
+
- Wisdom Promoted: {{PROMOTIONS_MADE}} entries carried forward
|
|
19
|
+
|
|
20
|
+
## Phase Recap
|
|
21
|
+
|
|
22
|
+
Every phase below is a chapter in the story of this anthill's rise:
|
|
23
|
+
|
|
24
|
+
{{PHASE_RECAP}}
|
|
25
|
+
|
|
26
|
+
## Pheromone Legacy
|
|
27
|
+
|
|
28
|
+
The colony's hard-won wisdom doesn't stop here. {{PROMOTIONS_MADE}} validated learnings and instincts have been promoted to QUEEN.md — a living record that will guide future colonies before they take their first steps.
|
|
29
|
+
|
|
30
|
+
What this colony learned, the next colony inherits.
|
|
31
|
+
|
|
32
|
+
## The Work
|
|
33
|
+
|
|
34
|
+
{{GOAL}}
|
|
35
|
+
|
|
36
|
+
The anthill stands crowned. The work endures.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!-- Template: handoff-build-error | Version: 1.0 -->
|
|
2
|
+
<!-- Instructions: Fill all {{PLACEHOLDER}} values with real colony data. Remove this comment block before writing to .aether/HANDOFF.md -->
|
|
3
|
+
|
|
4
|
+
# Colony Session — Build Errors
|
|
5
|
+
|
|
6
|
+
## Build Status: ISSUES DETECTED
|
|
7
|
+
|
|
8
|
+
**Phase:** {{PHASE_NUMBER}} — {{PHASE_NAME}}
|
|
9
|
+
**Status:** Build completed with failures
|
|
10
|
+
**Updated:** {{BUILD_TIMESTAMP}}
|
|
11
|
+
|
|
12
|
+
## Failed Workers
|
|
13
|
+
|
|
14
|
+
{{FAILED_WORKERS}}
|
|
15
|
+
|
|
16
|
+
## Grave Markers Placed
|
|
17
|
+
|
|
18
|
+
{{GRAVE_MARKERS}}
|
|
19
|
+
|
|
20
|
+
## Recovery Options
|
|
21
|
+
|
|
22
|
+
1. Review failures: Check `.aether/data/activity.log`
|
|
23
|
+
2. Fix and retry: `/ant:build {{PHASE_NUMBER}}`
|
|
24
|
+
3. Swarm fix: `/ant:swarm` for auto-repair
|
|
25
|
+
4. Manual fix: Address issues, then `/ant:continue`
|
|
26
|
+
|
|
27
|
+
## Session Note
|
|
28
|
+
|
|
29
|
+
Build completed but workers failed. Grave markers placed.
|
|
30
|
+
Review failures before advancing.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!-- Template: handoff-build-success | Version: 1.0 -->
|
|
2
|
+
<!-- Instructions: Fill all {{PLACEHOLDER}} values with real colony data. Remove this comment block before writing to .aether/HANDOFF.md -->
|
|
3
|
+
|
|
4
|
+
# Colony Session — Build Complete
|
|
5
|
+
|
|
6
|
+
## Quick Resume
|
|
7
|
+
|
|
8
|
+
Run `/ant:continue` to advance phase, or `/ant:resume-colony` to restore full context.
|
|
9
|
+
|
|
10
|
+
## State at Build Completion
|
|
11
|
+
|
|
12
|
+
- Goal: "{{GOAL}}"
|
|
13
|
+
- Phase: {{PHASE_NUMBER}} — {{PHASE_NAME}}
|
|
14
|
+
- Build Status: {{BUILD_STATUS}}
|
|
15
|
+
- Updated: {{BUILD_TIMESTAMP}}
|
|
16
|
+
|
|
17
|
+
## Build Summary
|
|
18
|
+
|
|
19
|
+
{{BUILD_SUMMARY}}
|
|
20
|
+
|
|
21
|
+
## Tasks
|
|
22
|
+
|
|
23
|
+
- Completed: {{TASKS_COMPLETED}}
|
|
24
|
+
- Failed: {{TASKS_FAILED}}
|
|
25
|
+
|
|
26
|
+
## Files Changed
|
|
27
|
+
|
|
28
|
+
- Created: {{FILES_CREATED}} files
|
|
29
|
+
- Modified: {{FILES_MODIFIED}} files
|
|
30
|
+
|
|
31
|
+
## Next Steps
|
|
32
|
+
|
|
33
|
+
- If verification passed: `/ant:continue` to advance to next phase
|
|
34
|
+
- If issues found: `/ant:flags` to review blockers
|
|
35
|
+
- To pause: `/ant:pause-colony`
|
|
36
|
+
|
|
37
|
+
## Session Note
|
|
38
|
+
|
|
39
|
+
{{SESSION_NOTE}}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<!-- Template: handoff | Version: 2.0 -->
|
|
2
|
+
<!-- Instructions: Fill all {{PLACEHOLDER}} values with real colony data. Remove this comment block before writing to .aether/HANDOFF.md -->
|
|
3
|
+
|
|
4
|
+
# Colony Session — {{CHAMBER_NAME}}
|
|
5
|
+
|
|
6
|
+
## A Colony's Rest
|
|
7
|
+
|
|
8
|
+
This colony has been entombed. Its work is complete, its story told.
|
|
9
|
+
What began with a goal has ended with a chamber — a place of quiet preservation.
|
|
10
|
+
|
|
11
|
+
**Chamber:** .aether/chambers/{{CHAMBER_NAME}}/
|
|
12
|
+
|
|
13
|
+
## Colony Summary
|
|
14
|
+
|
|
15
|
+
- Goal: "{{GOAL}}"
|
|
16
|
+
- Phases: {{PHASES_COMPLETED}} completed of {{TOTAL_PHASES}}
|
|
17
|
+
- Milestone reached: {{MILESTONE}}
|
|
18
|
+
- Entombed at: {{ENTOMB_TIMESTAMP}}
|
|
19
|
+
|
|
20
|
+
## Chamber Contents
|
|
21
|
+
|
|
22
|
+
Everything the colony built and learned rests here now:
|
|
23
|
+
|
|
24
|
+
- colony-state.json — Full colony state
|
|
25
|
+
- manifest.json — Archive metadata
|
|
26
|
+
- CROWNED-ANTHILL.md — Seal ceremony record
|
|
27
|
+
- pheromones.json — Pheromone signals
|
|
28
|
+
- activity.log — Colony activity history
|
|
29
|
+
- spawn-tree.txt — Worker spawn records
|
|
30
|
+
- dreams/ — Dream journal (if existed)
|
|
31
|
+
|
|
32
|
+
## Session Note
|
|
33
|
+
|
|
34
|
+
The active colony has been reset. The chambers hold what was.
|
|
35
|
+
The learnings have been carried forward to QUEEN.md — the next colony won't start from nothing.
|
|
36
|
+
|
|
37
|
+
When you are ready to begin again:
|
|
38
|
+
|
|
39
|
+
To start anew: /ant:lay-eggs "<new goal>"
|
|
40
|
+
To revisit what came before: /ant:tunnels
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_template": "midden",
|
|
3
|
+
"_version": "1.0",
|
|
4
|
+
"_instructions": "Write to .aether/data/midden/midden.json. No substitution needed. Remove underscore-prefixed keys.",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"signals": [],
|
|
7
|
+
"spawn_metrics": {
|
|
8
|
+
"total_spawned": 0,
|
|
9
|
+
"completed": 0,
|
|
10
|
+
"failed": 0,
|
|
11
|
+
"efficiency_pct": 0
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_template": "session",
|
|
3
|
+
"_version": "1.0",
|
|
4
|
+
"_instructions": "Write to .aether/data/session.json. Replace __SESSION_ID__, __GOAL__, __TIMESTAMP__. Remove underscore-prefixed keys.",
|
|
5
|
+
"session_id": "__SESSION_ID__",
|
|
6
|
+
"colony_goal": "__GOAL__",
|
|
7
|
+
"started_at": "__TIMESTAMP__",
|
|
8
|
+
"last_activity": "__TIMESTAMP__"
|
|
9
|
+
}
|
|
@@ -25,11 +25,13 @@ if [ ! -f "$_AETHER_UTILS_DIR/file-lock.sh" ]; then
|
|
|
25
25
|
fi
|
|
26
26
|
source "$_AETHER_UTILS_DIR/file-lock.sh"
|
|
27
27
|
|
|
28
|
-
# Aether root detection - use git root
|
|
29
|
-
if
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
# Aether root detection - respect existing AETHER_ROOT, or use git root, or use current directory
|
|
29
|
+
if [[ -z "${AETHER_ROOT:-}" ]]; then
|
|
30
|
+
if git rev-parse --show-toplevel >/dev/null 2>&1; then
|
|
31
|
+
AETHER_ROOT="$(git rev-parse --show-toplevel)"
|
|
32
|
+
else
|
|
33
|
+
AETHER_ROOT="$(pwd)"
|
|
34
|
+
fi
|
|
33
35
|
fi
|
|
34
36
|
|
|
35
37
|
TEMP_DIR="$AETHER_ROOT/.aether/temp"
|
|
@@ -41,9 +43,44 @@ mkdir -p "$TEMP_DIR" "$BACKUP_DIR"
|
|
|
41
43
|
# Number of backups to keep
|
|
42
44
|
MAX_BACKUPS=3
|
|
43
45
|
|
|
46
|
+
# Safety stats file for tracking data safety events (best-effort, never fails operations)
|
|
47
|
+
SAFETY_STATS_FILE="${AETHER_ROOT}/.aether/data/safety-stats.json"
|
|
48
|
+
|
|
49
|
+
# Increment a safety stats counter (best-effort, never fails the calling operation)
|
|
50
|
+
# Arguments: counter_name (e.g., "stale_locks_cleaned", "json_validation_rejects")
|
|
51
|
+
_safety_stats_increment() {
|
|
52
|
+
local counter_name="$1"
|
|
53
|
+
local stats_file="$SAFETY_STATS_FILE"
|
|
54
|
+
local now_iso
|
|
55
|
+
now_iso=$(date -u +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || echo "unknown")
|
|
56
|
+
|
|
57
|
+
# Ensure data directory exists
|
|
58
|
+
mkdir -p "$(dirname "$stats_file")" 2>/dev/null || return 0
|
|
59
|
+
|
|
60
|
+
# Initialize if missing
|
|
61
|
+
if [[ ! -f "$stats_file" ]]; then
|
|
62
|
+
printf '{"stale_locks_cleaned":0,"json_validation_rejects":0,"last_updated":"%s"}\n' "$now_iso" > "$stats_file" 2>/dev/null || return 0
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
# Increment counter (best-effort, don't fail on jq errors)
|
|
66
|
+
local updated
|
|
67
|
+
updated=$(jq --arg key "$counter_name" --arg ts "$now_iso" '
|
|
68
|
+
.[$key] = ((.[$key] // 0) + 1) |
|
|
69
|
+
.last_updated = $ts
|
|
70
|
+
' "$stats_file" 2>/dev/null) || return 0
|
|
71
|
+
|
|
72
|
+
if [[ -n "$updated" ]]; then
|
|
73
|
+
printf '%s\n' "$updated" > "$stats_file" 2>/dev/null || return 0
|
|
74
|
+
fi
|
|
75
|
+
}
|
|
76
|
+
|
|
44
77
|
# Atomic write: write content to file via temporary file
|
|
45
78
|
# Arguments: target_file, content
|
|
46
79
|
# Returns: 0 on success, 1 on failure
|
|
80
|
+
# NOTE: atomic_write does NOT interact with file locks. Lock management
|
|
81
|
+
# (acquire_lock/release_lock) is the CALLER's responsibility. If you need
|
|
82
|
+
# exclusive access, acquire the lock before calling atomic_write, and release
|
|
83
|
+
# it after (including on error paths).
|
|
47
84
|
atomic_write() {
|
|
48
85
|
local target_file="$1"
|
|
49
86
|
local content="$2"
|
|
@@ -53,10 +90,10 @@ atomic_write() {
|
|
|
53
90
|
mkdir -p "$target_dir"
|
|
54
91
|
|
|
55
92
|
# Create unique temp file
|
|
56
|
-
local temp_file="${TEMP_DIR}/$(basename "$target_file").$$.$(date +%s
|
|
93
|
+
local temp_file="${TEMP_DIR}/$(basename "$target_file").$$.$( date +%s )_${RANDOM}.tmp"
|
|
57
94
|
|
|
58
95
|
# Write content to temp file
|
|
59
|
-
if !
|
|
96
|
+
if ! printf '%s\n' "$content" > "$temp_file"; then
|
|
60
97
|
echo "Failed to write to temp file: $temp_file"
|
|
61
98
|
rm -f "$temp_file"
|
|
62
99
|
return 1
|
|
@@ -67,11 +104,12 @@ atomic_write() {
|
|
|
67
104
|
create_backup "$target_file"
|
|
68
105
|
fi
|
|
69
106
|
|
|
70
|
-
# Validate JSON if it's a JSON file
|
|
107
|
+
# Validate JSON if it's a JSON file (lock management is caller's responsibility)
|
|
71
108
|
if [[ "$target_file" == *.json ]]; then
|
|
72
|
-
if !
|
|
109
|
+
if ! jq empty "$temp_file" 2>/dev/null; then
|
|
73
110
|
echo "Invalid JSON in temp file: $temp_file"
|
|
74
111
|
rm -f "$temp_file"
|
|
112
|
+
_safety_stats_increment "json_validation_rejects" 2>/dev/null || true
|
|
75
113
|
return 1
|
|
76
114
|
fi
|
|
77
115
|
fi
|
|
@@ -108,7 +146,7 @@ atomic_write_from_file() {
|
|
|
108
146
|
mkdir -p "$target_dir"
|
|
109
147
|
|
|
110
148
|
# Create unique temp file
|
|
111
|
-
local temp_file="${TEMP_DIR}/$(basename "$target_file").$$.$(date +%s
|
|
149
|
+
local temp_file="${TEMP_DIR}/$(basename "$target_file").$$.$( date +%s )_${RANDOM}.tmp"
|
|
112
150
|
|
|
113
151
|
# Copy source to temp
|
|
114
152
|
if ! cp "$source_file" "$temp_file"; then
|
|
@@ -117,20 +155,21 @@ atomic_write_from_file() {
|
|
|
117
155
|
return 1
|
|
118
156
|
fi
|
|
119
157
|
|
|
120
|
-
#
|
|
158
|
+
# Create backup BEFORE validation (mirrors atomic_write ordering — LOCK-03)
|
|
159
|
+
if [ -f "$target_file" ]; then
|
|
160
|
+
create_backup "$target_file"
|
|
161
|
+
fi
|
|
162
|
+
|
|
163
|
+
# Validate JSON if it's a JSON file (lock management is caller's responsibility)
|
|
121
164
|
if [[ "$target_file" == *.json ]]; then
|
|
122
|
-
if !
|
|
165
|
+
if ! jq empty "$temp_file" 2>/dev/null; then
|
|
123
166
|
echo "Invalid JSON in temp file: $temp_file"
|
|
124
167
|
rm -f "$temp_file"
|
|
168
|
+
_safety_stats_increment "json_validation_rejects" 2>/dev/null || true
|
|
125
169
|
return 1
|
|
126
170
|
fi
|
|
127
171
|
fi
|
|
128
172
|
|
|
129
|
-
# Create backup if target exists
|
|
130
|
-
if [ -f "$target_file" ]; then
|
|
131
|
-
create_backup "$target_file"
|
|
132
|
-
fi
|
|
133
|
-
|
|
134
173
|
# Atomic rename
|
|
135
174
|
if ! mv "$temp_file" "$target_file"; then
|
|
136
175
|
echo "Failed to rename temp file to target: $target_file"
|
|
@@ -166,10 +205,17 @@ create_backup() {
|
|
|
166
205
|
# Arguments: base_name
|
|
167
206
|
rotate_backups() {
|
|
168
207
|
local base_name="$1"
|
|
169
|
-
local backups=$(ls -t "${BACKUP_DIR}/${base_name}".*.backup 2>/dev/null | wc -l)
|
|
170
208
|
|
|
171
|
-
|
|
172
|
-
|
|
209
|
+
# Use find with -print0 for safe handling of paths with spaces
|
|
210
|
+
local backup_count
|
|
211
|
+
backup_count=$(find "$BACKUP_DIR" -maxdepth 1 -name "${base_name}.*.backup" -type f 2>/dev/null | wc -l | tr -d ' ')
|
|
212
|
+
|
|
213
|
+
if [ "$backup_count" -gt "$MAX_BACKUPS" ]; then
|
|
214
|
+
# Delete oldest backups beyond MAX_BACKUPS using find for space-safe handling
|
|
215
|
+
find "$BACKUP_DIR" -maxdepth 1 -name "${base_name}.*.backup" -type f -print0 2>/dev/null \
|
|
216
|
+
| xargs -0 ls -t 2>/dev/null \
|
|
217
|
+
| tail -n +$((MAX_BACKUPS + 1)) \
|
|
218
|
+
| while IFS= read -r file; do rm -f "$file" 2>/dev/null || true; done
|
|
173
219
|
fi
|
|
174
220
|
}
|
|
175
221
|
|
|
@@ -209,9 +255,9 @@ list_backups() {
|
|
|
209
255
|
|
|
210
256
|
# Cleanup temp files older than 1 hour
|
|
211
257
|
cleanup_temp_files() {
|
|
212
|
-
find "$TEMP_DIR" -name "*.tmp" -
|
|
258
|
+
find "$TEMP_DIR" -name "*.tmp" -mmin +60 -delete 2>/dev/null || true
|
|
213
259
|
}
|
|
214
260
|
|
|
215
261
|
# Export functions
|
|
216
262
|
export -f atomic_write atomic_write_from_file create_backup rotate_backups
|
|
217
|
-
export -f restore_backup list_backups cleanup_temp_files
|
|
263
|
+
export -f restore_backup list_backups cleanup_temp_files _safety_stats_increment
|
|
@@ -7,13 +7,26 @@ set -euo pipefail
|
|
|
7
7
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
8
|
CHAMBERS_DIR="${CHAMBERS_DIR:-.aether/chambers}"
|
|
9
9
|
|
|
10
|
+
# Source error-handler.sh for E_* constants and enhanced json_err
|
|
11
|
+
[[ -f "$SCRIPT_DIR/error-handler.sh" ]] && source "$SCRIPT_DIR/error-handler.sh"
|
|
12
|
+
|
|
13
|
+
# Fallback E_* constants (no-ops when error-handler.sh is already loaded)
|
|
14
|
+
: "${E_UNKNOWN:=E_UNKNOWN}"
|
|
15
|
+
: "${E_FILE_NOT_FOUND:=E_FILE_NOT_FOUND}"
|
|
16
|
+
: "${E_VALIDATION_FAILED:=E_VALIDATION_FAILED}"
|
|
17
|
+
|
|
10
18
|
# JSON output helpers
|
|
11
19
|
json_ok() { printf '{"ok":true,"result":%s}\n' "$1"; }
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
20
|
+
|
|
21
|
+
# Guard: yield to error-handler.sh's enhanced json_err when already loaded
|
|
22
|
+
if ! type json_err &>/dev/null; then
|
|
23
|
+
json_err() {
|
|
24
|
+
local code="${1:-E_UNKNOWN}"
|
|
25
|
+
local message="${2:-An unknown error occurred}"
|
|
26
|
+
printf '{"ok":false,"error":{"code":"%s","message":"%s"}}\n' "$code" "$message" >&2
|
|
27
|
+
exit 1
|
|
28
|
+
}
|
|
29
|
+
fi
|
|
17
30
|
|
|
18
31
|
# Load chamber manifest
|
|
19
32
|
load_chamber() {
|
|
@@ -21,7 +34,7 @@ load_chamber() {
|
|
|
21
34
|
local manifest_file="$CHAMBERS_DIR/$chamber_name/manifest.json"
|
|
22
35
|
|
|
23
36
|
if [[ ! -f "$manifest_file" ]]; then
|
|
24
|
-
json_err "Chamber not found: $chamber_name"
|
|
37
|
+
json_err "$E_FILE_NOT_FOUND" "Chamber not found: $chamber_name. Try: check the chamber name with /ant:tunnels."
|
|
25
38
|
fi
|
|
26
39
|
|
|
27
40
|
cat "$manifest_file"
|
|
@@ -41,7 +54,7 @@ EOF
|
|
|
41
54
|
compare)
|
|
42
55
|
chamber_a="${1:-}"
|
|
43
56
|
chamber_b="${2:-}"
|
|
44
|
-
[[ -z "$chamber_a" || -z "$chamber_b" ]] && json_err "
|
|
57
|
+
[[ -z "$chamber_a" || -z "$chamber_b" ]] && json_err "$E_VALIDATION_FAILED" "Missing arguments. Try: compare <chamber_a> <chamber_b>."
|
|
45
58
|
|
|
46
59
|
# Load both manifests
|
|
47
60
|
manifest_a=$(load_chamber "$chamber_a")
|
|
@@ -93,7 +106,7 @@ EOF
|
|
|
93
106
|
diff)
|
|
94
107
|
chamber_a="${1:-}"
|
|
95
108
|
chamber_b="${2:-}"
|
|
96
|
-
[[ -z "$chamber_a" || -z "$chamber_b" ]] && json_err "
|
|
109
|
+
[[ -z "$chamber_a" || -z "$chamber_b" ]] && json_err "$E_VALIDATION_FAILED" "Missing arguments. Try: diff <chamber_a> <chamber_b>."
|
|
97
110
|
|
|
98
111
|
manifest_a=$(load_chamber "$chamber_a")
|
|
99
112
|
manifest_b=$(load_chamber "$chamber_b")
|
|
@@ -138,7 +151,7 @@ EOF
|
|
|
138
151
|
stats)
|
|
139
152
|
chamber_a="${1:-}"
|
|
140
153
|
chamber_b="${2:-}"
|
|
141
|
-
[[ -z "$chamber_a" || -z "$chamber_b" ]] && json_err "
|
|
154
|
+
[[ -z "$chamber_a" || -z "$chamber_b" ]] && json_err "$E_VALIDATION_FAILED" "Missing arguments. Try: stats <chamber_a> <chamber_b>."
|
|
142
155
|
|
|
143
156
|
manifest_a=$(load_chamber "$chamber_a")
|
|
144
157
|
manifest_b=$(load_chamber "$chamber_b")
|
|
@@ -175,6 +188,6 @@ EOF
|
|
|
175
188
|
;;
|
|
176
189
|
|
|
177
190
|
*)
|
|
178
|
-
json_err "Unknown command: $cmd.
|
|
191
|
+
json_err "$E_VALIDATION_FAILED" "Unknown command: $cmd. Try: compare, diff, or stats."
|
|
179
192
|
;;
|
|
180
193
|
esac
|