name: evolving-app
description: Deploy an app and then evolve it with a new feature using SDLC
version: 1

vars:
  project_name: "" # Required
  service_name: "api"
  feature_slug: "health-check-v2"

steps:
  # --- Phase 1: Bootstrap (copied from composable-app) ---
  create-project:
    description: Create project with monorepo skeleton
    action: api
    method: POST
    endpoint: /project
    body:
      name: "{{ .vars.project_name }}"
      description: "Evolving App Test"
    outputs:
      - project_id: .data.name
      - domain: .data.domain

  add-service:
    description: Add backend service component
    depends_on: [create-project]
    action: api
    method: POST
    endpoint: "/projects/{{ .outputs.create-project.project_id }}/components"
    body:
      type: service
      name: "{{ .vars.service_name }}"
      template: service
    outputs:
      - service_path: .data.path

  wait-init-pipeline:
    description: Wait for initial build
    depends_on: [add-service]
    action: wait_pipeline
    project_id: "{{ .outputs.create-project.project_id }}"
    max_attempts: 60

  # --- Phase 2: Evolve (Add Feature) ---
  create-feature:
    description: Register new feature in SDLC
    depends_on: [wait-init-pipeline]
    action: api
    method: POST
    endpoint: "/projects/{{ .outputs.create-project.project_id }}/sdlc/features"
    body:
      slug: "{{ .vars.feature_slug }}"
      title: "Add health check V2"

  generate-spec:
    description: Ask Claude to spec the feature
    depends_on: [create-feature]
    action: api
    method: POST
    endpoint: "/projects/{{ .outputs.create-project.project_id }}/builds"
    body:
      prompt: "/spec-feature {{ .vars.feature_slug }}"
      auto_commit: true
      auto_push: true
      git_clone_url: "https://git.threesix.ai/jordan/{{ .outputs.create-project.project_id }}.git"
    outputs:
      - build_id: .data.task_id

  wait-feature-build:
    description: Wait for the spec generation to finish
    depends_on: [generate-spec]
    action: wait_build
    build_id: "{{ .outputs.generate-spec.build_id }}"
    max_attempts: 60
    poll_interval: 5

  check-artifact:
    description: Verify spec artifact was created
    depends_on: [wait-feature-build]
    action: api
    method: GET
    endpoint: "/projects/{{ .outputs.create-project.project_id }}/sdlc/features/{{ .vars.feature_slug }}/artifacts"

teardown:
  - description: Delete project
    action: api
    method: DELETE
    endpoint: "/project/{{ .outputs.create-project.project_id }}"
