Docs
Submit a task
This page is a docs-oriented guide to packaging and submitting an InfraBench task. Source of truth for the same material: CONTRIBUTING.md.
Task layout
my-task/
├── task.toml # environment type, resources, timeout, metadata
├── instruction.md # natural-language brief for the agent
├── environment/
│ └── Dockerfile # docker tasks
│ # or setup.sh + bootstrap.sh for vm / vm-cluster
├── solution/
│ └── solve.sh # reference solution (optional, used by oracle agents)
└── tests/
└── test.sh # verifier — writes reward to /logs/verifier/
Start from tasks/hello-world, then mirror a paper task at your target layer.
Verifier contract
Emit either a scalar reward:
echo 1.0 > /logs/verifier/reward.txt
or structured JSON with partial credit:
{
"reward": 0.0,
"checks": [
{"name": "service health", "passed": true, "scored": false},
{"name": "root cause fixed", "passed": false, "scored": true}
]
}
scored: true— checks that measure meaningful repair progress (contribute to partial score).scored: false— diagnostics / anti-bypass / reachability (affect pass/fail, do not inflate partials).
task.toml templates
Docker
[task]
name = "myorg/my-task"
[metadata]
difficulty = "easy" # easy | medium | hard
category = "infrastructure"
[environment]
type = "docker"
cpus = 2
memory_mb = 4096
[agent]
timeout_sec = 300
Single-node VM
[task]
name = "myorg/my-vm-task"
[environment]
type = "vm"
base_image = "ubuntu-24.04"
cpus = 2
memory_mb = 4096
storage_mb = 20480
[agent]
timeout_sec = 300
VM tasks use environment/setup.sh (cached package install) and optional bootstrap.sh (per-trial) instead of a Dockerfile.
VM cluster
[task]
name = "myorg/my-cluster-task"
[environment]
type = "vm-cluster"
network = "192.168.100.0/24"
[[environment.nodes]]
name = "primary"
cpus = 2
memory_mb = 4096
storage_mb = 20480
[[environment.nodes]]
name = "worker"
cpus = 2
memory_mb = 4096
storage_mb = 20480
[agent]
timeout_sec = 600
The agent SSHes into the first node (primary). Nodes resolve each other by hostname.
What makes a strong task
- Real ops, not toy puzzles — incident response, deployment, or repair an SRE would recognize.
- Layered stack — situate the failure in L1 → L4 when possible.
- Honest verifiers — prefer multi-check
reward.json; resist reward hacking. - Clear instructions — state goal and constraints without leaking the root cause unless that is the scenario.
- Reproducible environment — pin packages / images; document BM Cluster profiles or base images if needed.
Submission checklist
- Directory matches the layout above
-
instruction.mdis self-contained - Verifier writes
/logs/verifier/reward.txtorreward.json -
task.tomldeclarestype, resources, and[metadata].difficulty - Reference
solution/solve.shworks under the intended environment (when you have runner access) - Open a PR against XuanmiaoG/InfraBench with a short description: layer, backend, what is being tested
Runtime note
You do not need a public InfraBench runner to submit a task package. Reference solutions may be validated later by maintainers with Syscraft access. Do not invent install steps for a runner that is not released yet.
Source: CONTRIBUTING.md · Docs home · Submit a task. Task layout, task.toml templates, verifier contract, and PR checklist.