Configuration Schema Reference

December 22, 2025 ยท View on GitHub

Complete field-by-field reference for problem configuration files.

Problem Configuration (config.yaml)

Located at: problems/<problem_name>/config.yaml

Required Fields

FieldTypeDescriptionExample
namestringUnique problem identifier (must match directory name)file_backup
entry_filestringEntry point file namemain.py
checkpointsobjectCheckpoint definitions (see below){checkpoint_1: ...}

Optional Fields

FieldTypeDefaultDescriptionExample
versioninteger1Problem schema version1
descriptionstring""Human-readable description"CLI backup scheduler"
categorystringnullProblem categorydata-processing
difficultystringnullDifficulty levelEasy, Medium, Hard
authorstringnullProblem author"Jane Doe"
timeoutinteger30Default timeout in seconds60
tagsarray[]Searchable tags[cli, json, parsing]
static_assetsobject{}Static file mappingsSee below
test_dependenciesarray[]Additional pytest packages[pyyaml, requests]
markersobject{}Custom pytest markersSee below

Checkpoint Configuration

Each checkpoint is defined under checkpoints:

checkpoints:
  checkpoint_1:
    version: 1                    # Required: Increment when tests change
    order: 1                      # Required: Execution order (1-based)
    state: Core Tests             # Optional: Development state

  checkpoint_2:
    version: 1
    order: 2
    state: Core Tests
    timeout: 60                   # Optional: Override default timeout
    include_prior_tests: true     # Optional: Run prior checkpoint tests

Checkpoint Fields

FieldTypeRequiredDefaultDescription
versionintegerYes-Test version (increment on changes)
orderintegerYes-Execution order (1-based)
statestringNonullDevelopment state label
timeoutintegerNoFrom problemTimeout for all tests
include_prior_testsbooleanNotrueInclude prior checkpoint tests

Static Assets

Maps directories from problem root to be available during tests.

static_assets:
  files:
    path: static_assets/files     # Mount problems/my_problem/static_assets/files
  reference_db:
    path: data/reference.db       # Mount a specific file

Static assets are accessible via environment variables:

  • SCBENCH_ASSETS_DIR: Path to assets directory
  • SCBENCH_ASSET_{NAME}: Path to specific asset

Test Dependencies

Additional packages installed for pytest execution:

test_dependencies:
  - pyyaml        # For YAML parsing in tests
  - requests      # For HTTP requests in tests
  - deepdiff      # For flexible comparisons

Default packages always available:

  • pytest
  • pytest-json-ctrf
  • pytest-json-report
  • pytest-timeout
  • jsonschema
  • deepdiff

Custom Markers

Define custom pytest markers with GroupType mapping:

markers:
  slow:
    description: slow-running tests
    group: FUNCTIONALITY

  integration:
    description: integration tests
    group: FUNCTIONALITY

  critical:
    description: critical path tests
    group: CORE

Marker Fields

FieldTypeRequiredDescription
descriptionstringYesMarker description for pytest
groupstringYesGroupType: CORE, FUNCTIONALITY, ERROR, REGRESSION

Complete Example

Minimal Configuration

version: 1
name: hello_world
entry_file: hello.py
timeout: 10

checkpoints:
  checkpoint_1:
    version: 1
    order: 1
    state: Core Tests

Full Configuration

version: 1
name: etl_pipeline
description: |
  CLI tool for ETL (Extract, Transform, Load) data pipelines.
  Supports JSON, CSV, and YAML formats.

category: data-processing
difficulty: Medium
author: Jane Doe
entry_file: etl.py
timeout: 30

tags:
  - cli
  - etl
  - json
  - csv
  - data-transformation

static_assets:
  sample_data:
    path: data/samples
  schemas:
    path: data/schemas

test_dependencies:
  - pyyaml
  - pandas

markers:
  slow:
    description: slow tests (>10s)
    group: FUNCTIONALITY
  integration:
    description: integration tests
    group: FUNCTIONALITY

checkpoints:
  checkpoint_1:
    version: 1
    order: 1
    state: Core Tests

  checkpoint_2:
    version: 2
    order: 2
    state: Core Tests
    timeout: 60
    include_prior_tests: true

  checkpoint_3:
    version: 1
    order: 3
    state: Full Tests
    timeout: 120
    include_prior_tests: true

Checkpoint States

StateDescription
DraftWork in progress, tests incomplete
Core TestsCore tests written and passing
Full TestsAll tests written (core, functionality, error)
VerifiedTests validated with reference solution

GroupType Reference

GroupTypeMarkerPurpose
CORE(none)Essential functionality - must pass
FUNCTIONALITY@pytest.mark.functionalityAdvanced features - nice to have
ERROR@pytest.mark.errorError handling - edge cases
REGRESSION@pytest.mark.regressionPrior checkpoint tests

Validation Rules

Problem Name

  • Must match directory name exactly
  • Use snake_case
  • No spaces or special characters (except underscore)

Entry File

  • Must include file extension (.py)
  • Agents create this file

Checkpoint Names

  • Must follow pattern: checkpoint_N (N = 1, 2, 3, ...)
  • Order must be unique and sequential

Timeouts

  • Measured in seconds
  • Must be positive integers
  • Applied per test, not total

Common Mistakes

MistakeFix
name doesn't match directoryEnsure exact match
Missing entry_file extensionAdd .py suffix
Duplicate order valuesMake orders unique
Invalid group in markersUse: CORE, FUNCTIONALITY, ERROR, REGRESSION
Missing version in checkpointAdd version: 1

Next Steps