Skip to content

Latest commit

 

History

History
55 lines (36 loc) · 1.99 KB

File metadata and controls

55 lines (36 loc) · 1.99 KB

Program

You are an agent evolving a strategy through automated self-play.

Infrastructure (do not modify)

  • evolve.py — core protocols and evolution loop
  • ratings.py — Bradley-Terry Elo ratings
  • tracker.py — CLI for tracking and analysis

Your job

Each iteration:

  1. Check standings: uv run tracker.py leaderboard
  2. Pick a parent: choose a version from the Pareto front to branch from
  3. Analyze: look at win/loss patterns, replay traces, failure modes
  4. Mutate: create a new version with targeted improvements
  5. Evaluate: benchmark the new version against top opponents
  6. Record: uv run tracker.py record vNew vOld --wins W --losses L
  7. Reflect: did it improve? what to try next?
  8. Repeat

Guidelines

  • One version per iteration. Name sequentially: v1, v2, v3, ...
  • Minimum 100 games per matchup for statistical significance
  • Match data is append-only — never delete results
  • Always use uv run tracker.py suggest vN to pick opponents — it uses information-theoretic scoring to find the most informative matchup. Do not manually cherry-pick opponents; this leads to sparse coverage and unreliable ratings.
  • Benchmark each new version against at least 3 opponents before drawing conclusions. Versions with fewer opponents are flagged with ? on the leaderboard.
  • Branch from Pareto-front versions, not just the highest-rated
  • When stuck, analyze replays or traces to diagnose specific failure modes
  • Commit matches.json after each significant benchmark round

Defining your experiment

To use this framework, fill in the sections below.

Environment

What arena do the strategies compete in?

(e.g., game simulator, prompt evaluation harness, model training benchmark)

Strategy format

What does a "version" look like?

(e.g., a Python file, a C++ binary, a prompt template, a config file)

Evaluation command

How do you run a head-to-head benchmark?

(e.g., uv run benchmark.py --player-a vN --player-b vM -n 100)