Benchmarks Quickstart

July 4, 2026 ยท View on GitHub

This is the keyless path: no provider account, no model API key, and no network calls. It runs the deterministic VendingBench baseline, verifies the artifact bundle, scores it, then runs a two-competitor suite.

The commands below write to /tmp so a source checkout stays clean.

Run One Benchmark

LEMON_STORE_PATH=/tmp/lemon-docs-store mix lemon.sim.vending_bench --preset ci --offline-strategy baseline --sim-id vb_ci_baseline_docs --artifact-dir /tmp/lemon-vb-ci-baseline-docs --deterministic-artifacts

Trimmed output from this run:

Offline artifacts written to /tmp/lemon-vb-ci-baseline-docs
usage: 0 in / 0 out, \$0.00 (0 actors)

The ci preset is a seven-day run with a 25-turn driver limit. The offline strategies currently accepted by the task are baseline and pressure.

Inspect The Bundle

find /tmp/lemon-vb-ci-baseline-docs -maxdepth 2 -type f | sort

Trimmed output:

/tmp/lemon-vb-ci-baseline-docs/actions.jsonl
/tmp/lemon-vb-ci-baseline-docs/commands.jsonl
/tmp/lemon-vb-ci-baseline-docs/config.json
/tmp/lemon-vb-ci-baseline-docs/events.jsonl
/tmp/lemon-vb-ci-baseline-docs/facts.jsonl
/tmp/lemon-vb-ci-baseline-docs/final_world.json
/tmp/lemon-vb-ci-baseline-docs/hashes.json
/tmp/lemon-vb-ci-baseline-docs/manifest.json
/tmp/lemon-vb-ci-baseline-docs/replay.html
/tmp/lemon-vb-ci-baseline-docs/scorecard.json
/tmp/lemon-vb-ci-baseline-docs/usage.json

Verify And Score

LEMON_STORE_PATH=/tmp/lemon-docs-store mix lemon.sim.verify /tmp/lemon-vb-ci-baseline-docs
Verified vending_bench run
Status: complete
LEMON_STORE_PATH=/tmp/lemon-docs-store mix lemon.sim.score /tmp/lemon-vb-ci-baseline-docs

Trimmed output:

{
  "status": "complete",
  "day_number": 7,
  "units_sold": 183,
  "cash_on_hand": 583.35,
  "cash_in_machine": 63.75,
  "inventory_value_wholesale": 127.95,
  "active_failure_mode_count": 0,
  "score_modes": {
    "lemon_operational_score": 376.4,
    "money_balance": 583.35,
    "v1_net_worth": 775.05
  }
}

verify checks the manifest, hashes, required files, and the registered VendingBench scorecard recomputed from final_world.json. score runs verify first, then prints scorecard.json.

Run A Suite

LEMON_STORE_PATH=/tmp/lemon-docs-store mix lemon.sim.suite --scenario vending_bench --preset ci --seeds 7,8 --offline baseline,pressure --out /tmp/lemon-vb-suite-docs

Output:

# LemonSim Suite Leaderboard

Scenario: `vending_bench`
Preset: `ci`
Seeds: 2
Metric: `score_modes.v1_net_worth` (maximize)

All included runs are manifest hash and scorecard verified.

| Rank | Competitor | Mean score_modes.v1_net_worth (maximize) | Per-seed values | Tokens | Cost |
|---:|---|---:|---|---:|---:|
| 1 | baseline | 766.52 | 7: 782.4, 8: 750.65 | 0 | \$0.0000 |
| 2 | pressure | 704.31 | 7: 709.26, 8: 699.36 | 0 | \$0.0000 |

The suite writes suite.json, leaderboard.md, and one verified run bundle per competitor and seed under runs/.

Cross-Suite Ratings

LEMON_STORE_PATH=/tmp/lemon-docs-store mix lemon.sim.ratings --suites /tmp/lemon-vb-suite-docs --out /tmp/lemon-vb-ratings-docs

Output:

# LemonSim Ratings Leaderboard

Suites: 1
Algorithm: Bradley-Terry MLE with one pseudo draw per active pair.

| Rank | Competitor | Rating | Comparisons | W-L-D | Suites |
|---:|---|---:|---:|---:|---:|
| 1 | baseline | 1639.79 | 2 | 2-0-0 | 1 |
| 2 | pressure | 1360.21 | 2 | 0-2-0 | 1 |