name: aeries-2-simulation description: "Aeries Phase 2: The Spark of Life. Extracts Agent Simulation logic into a dedicated service." version: 1 vars: project_id: "" # Required - ID from genesis run feature_slug: "extract-simulation" steps: # --- Step 1: Mitosis (Extraction) --- create-simulation-svc: description: "Scaffold new Simulation Service" action: api method: POST endpoint: "/projects/{{ .vars.project_id }}/components" body: { type: worker, name: "simulation-svc" } extract-logic: description: "Agent moves Agent Logic from Core to Simulation Service" action: api method: POST endpoint: "/projects/{{ .vars.project_id }}/builds" body: prompt: "/extract-service core-api/internal/domain/agent_logic simulation-svc --pattern strangler" auto_commit: true auto_push: true git_clone_url: "https://git.threesix.ai/jordan/{{ .vars.project_id }}.git" outputs: - build_id: .data.task_id wait-extraction: description: Wait for extraction to complete depends_on: [extract-logic] action: wait_build build_id: "{{ .outputs.extract-logic.build_id }}" max_attempts: 120 poll_interval: 5 wait-deploy: action: wait_pipeline project_id: "{{ .vars.project_id }}" # --- Verification: Parity --- verify-parity: description: "Ensure Core API still returns Agent data (now proxied)" depends_on: [wait-deploy] action: shell command: | DOMAIN=$(curl -s "$RDEV_API_URL/projects/{{ .vars.project_id }}" -H "X-API-Key: $RDEV_API_KEY" | jq -r .domain) # Assuming we have an agent from Genesis ID=$(curl -s "https://$DOMAIN/api/agents" | jq -r '.[0].id') RESP=$(curl -s "https://$DOMAIN/api/agents/$ID") if [[ -n "$ID" && "$ID" != "null" ]] && echo "$RESP" | grep -q "$ID"; then echo "Parity Verified: Proxied request succeeded" exit 0 else echo "Failure: Request failed after extraction" exit 1 fi