Skip to content

Experiment YAML

An experiment file fixes the variants, repetitions and parallelism for a suite so a comparison can be re-run exactly. harnesslab run <experiment.yaml> accepts it wherever a suite is accepted; a file with a suite: key and no tasks: key is treated as an experiment.

# suites/demo/experiments/baseline.yaml
name: baseline-comparison                 # required; the experiment's name in the database
suite: ../suite.yaml                      # required; a path relative to this file or a bundled name
description: Compare the reference fake agent against a no-op control.
repetitions: 3                            # default 1
parallelism: 2                            # default 1; runs executing concurrently
tasks: [fix-month-boundary]               # optional subset of the suite's task ids
keep_worktrees: false                     # keep every run's worktree for inspection
plugins: []                               # python modules to import first
variants:
  - id: fake-reference
    runner: fake
    behavior: solve
  - id: fake-noop
    runner: fake
    behavior: noop
Field Default Meaning
name required Experiment name. --name overrides it.
suite required Suite path or bundled name.
description none Free text.
repetitions 1 Runs per task × variant cell. --repetitions overrides.
parallelism 1 Concurrent runs. --parallelism overrides.
tasks all Task ids to run. --tasks overrides.
keep_worktrees false --keep-worktrees sets it.
plugins [] Imported together with the suite's plugins and --plugin values.
variants [] Same schema as suite variants; take precedence over suite variants with the same id.

Variant resolution for --variants a,b: experiment variants, then suite variants, then the built-ins. With no --variants, the experiment's variants run; if it has none, the suite's; if neither has any, fake-reference runs.

Bundle paths in harness: are resolved relative to the experiment file.