competition.yaml is the entry point for every custom environment bundle. BenchGen reads this file to understand the environment’s structure, which data and programs to use, and how to display results.
Top-level fields
| Field | Required | Description |
|---|---|---|
title | Yes | Display name shown in the hub and run UI |
description | No | One-line summary shown on the environment card |
image | No | Path to a logo image inside the bundle |
terms | No | Path to a Markdown file with terms of use |
pages | No | Additional Markdown pages rendered as environment documentation tabs |
pages
Optional documentation tabs displayed alongside the environment. Each entry needs a title and a file path relative to the bundle root.
phases
Phases define the active evaluation windows. Most environments have a single phase. Each phase references one or more tasks by their index.
| Field | Required | Description |
|---|---|---|
index | Yes | Zero-based integer identifier for this phase |
name | Yes | Display name |
description | No | Short description of the phase |
start | No | ISO 8601 date when the phase opens (YYYY-MM-DD) |
end | No | ISO 8601 date when the phase closes |
tasks | Yes | List of task indices active in this phase |
tasks
Each task defines a single evaluation problem — the data and programs needed to score one type of submission.
| Field | Required | Description |
|---|---|---|
index | Yes | Zero-based integer identifier, referenced by phases |
name | Yes | Display name |
description | No | What the task is evaluating |
scoring_program | Yes | Path to the scoring program zip inside the bundle |
reference_data | Yes | Path to the reference data zip |
ingestion_program | No | Path to the ingestion program zip |
input_data | No | Path to the input data zip |
solutions
Optional reference solutions included with the bundle. BenchGen uses these to verify that the scoring program works correctly before the environment is published.
| Field | Required | Description |
|---|---|---|
index | Yes | Zero-based identifier |
path | Yes | Path to the solution zip inside the bundle |
tasks | Yes | Task indices this solution applies to |
leaderboard
Defines the columns displayed in the results table. Keys must match the keys your scoring program writes to scores.json.
Leaderboard group fields
| Field | Required | Description |
|---|---|---|
title | Yes | Section heading in the results table |
key | Yes | Unique identifier for this leaderboard group |
columns | Yes | List of column definitions (see below) |
Column fields
| Field | Required | Description |
|---|---|---|
title | Yes | Column heading |
key | Yes | Must match the key in scores.json output by your scoring program |
index | Yes | Display order (zero-based) |
sorting | No | asc or desc — direction used to rank submissions. Defaults to desc |
Complete example
Next steps
- Bundle structure — the files inside the
.zipand what each one does - Create a custom environment — end-to-end upload walkthrough