Suites

This page covers suite configuration — directory layout, suite.yaml fields, and how suites reference your policies. For running tests, see Runner.

Suite Directory Structure

my-test-suite/
├── suite.yaml                    # Suite configuration
└── cases/
    ├── github-delete-tests.yaml  # Test cases grouped by policy
    ├── credential-tests.yaml
    └── response-redaction.yaml

Suite Configuration

Full annotated suite.yaml:

version: "v1"
bundle_id: "my-policies"
description: "Tests for production policy set"

providers:
  openai:
    api_key: "${OPENAI_API_KEY}"
  anthropic:
    api_key: "${ANTHROPIC_API_KEY}"

policies:
  cel_request_rules: "../cel_request_rules.yaml"
  ai_request_rules: "../ai_request_rules.yaml"
  cel_response_rules: "../cel_response_rules.yaml"
  ai_response_rules: "../ai_response_rules.yaml"

acceptance:
  min_match_rate: 1.0
  strict_policy_match: true

execution:
  timeout_ms: 30000
  retries: 2
  retry_delay_ms: 1000
  rate_limits:
    openai:
      requests_per_minute: 60
    anthropic:
      requests_per_minute: 30

engines:
  cel:
    enabled: true
  ai:
    enabled: true
    model_matrix:
      - provider: openai
        model: gpt-5.1
        enabled: true
      - provider: anthropic
        model: claude-sonnet-4-5-20250929
        enabled: true

Configuration Fields

FieldRequiredDescription
versionYesSchema version ("v1")
bundle_idYesUnique identifier for this test suite
descriptionNoHuman-readable description
providersYesAI provider credentials
policiesYesPaths to policy files (relative to suite directory)
acceptance.min_match_rateNoMinimum pass rate, 0.0-1.0 (default: 1.0)
acceptance.strict_policy_matchNoWhether unexpected policy triggers fail (default: true)
execution.timeout_msNoPer-test timeout in milliseconds (default: 30000)
execution.retriesNoNumber of retries for failed AI evaluations (default: 2)
execution.retry_delay_msNoDelay between retries (default: 1000)
execution.rate_limitsNoPer-provider rate limiting
engines.cel.enabledNoEnable CEL testing (default: true)
engines.ai.enabledNoEnable AI testing (default: true)
engines.ai.model_matrixNoModels to test against