# Sleipnir per-project config for ratatoskr.
#
# Copy to .sleipnir/config.yaml (gitignored) and adjust per-checkout.
# User-global config lives at ~/.config/sleipnir/config.yaml.
#
# Schema verified against:
#   src/sleipnir/cli.py:505-528           (issue_tracker instantiation)
#   src/sleipnir/orchestrator.py:367-368  (stages.plan + stages.verifier)
#   src/sleipnir/jobs.py:9                (VALID_PHASES)
#   tests/conftest.py:10-32               (gold-standard config shape)

stages:
  plan:
    provider: claude_code_oneshot
    model: claude-sonnet-4-6
  verifier:
    provider: openai_compat
    model: glm-5.1
  implement:
    provider: claude_code_oneshot
    model: claude-sonnet-4-6
  review:
    provider: claude_code_oneshot
    model: claude-opus-4-7

providers:
  openai_compat:
    base_url: https://api.z.ai/api/coding/paas/v4
    api_key_env: Z_AI_API_KEY
    timeout_seconds: 3000
  claude_code_oneshot:
    timeout_seconds: 900
  # Plug in the issue tracker once ratatoskr is registered with Gitea:
  # ratatoskr_issues:
  #   repo: /home/lkraven/development/ratatoskr

# sandbox_provider: docker
# issue_tracker: ratatoskr_issues
agent_runtime: claude_code

passthrough_env:
  - Z_AI_API_KEY
  - GITEA_TOKEN
  - ANTHROPIC_API_KEY
  - TASK_BOARD_URL

concurrency: 1
max_rounds: 3

dispatch:
  dependency_aware: true             # INV-029: hold dependents at intake
                                     # when their `dependencies:` frontmatter
                                     # block points at issues that are open /
                                     # closed-but-not-on-main / orphaned-without-merge.
