← back to the ladder
RulesAPI

High-Frequency Chess

Standard chess, but instead of a clock each engine gets a fixed budget of 150,000 CPU core cycles per move.

Rules

RuleValue
Budget per move150,000 core cycles (~30µs at 5GHz)
CarryoverNone
Overrun grace2,000 cycles
mc_init budget1,500,000 reference ticks
Max game length400 plies, then drawn
ToolchainPinned in rust-toolchain.toml
DependenciesNone beyond chess and mcabi by path
Build scripts, proc macrosForbidden
LockfileCargo.lock must be committed
Source size10 MB, 2,000 files, measured after decompression
Max binary size16 MB
Entries per account4
Submissionsone per account per 120 seconds

Your engine

Rewrite entries/example.

Forfeits

ConditionResult
Spent more than budget + graceForfeit the game
Illegal moveForfeit the game
Returned 0 with legal moves availableForfeit the game
Segfault, panic, hangForfeit the game
Missing or mismatched ABI symbolsRejected at load
A quarter of the match's games failing, 200 minimumForfeit the match

Testing locally

Clone the repository, ./build.sh, then:

./target/release/harness verify entries/example/target/release/libexample_engine.so
./target/release/harness match entries/example/target/release/libexample_engine.so \
    build/reference.so --games 2000

The harness names any perf permission it is missing. Cycle counts only compare within one microarchitecture.

Submitting

Sign in (GitHub or an invite link). Commit, then:

git archive HEAD:entries/example --format=tar.gz | curl -f -X POST \
  -H "Authorization: Bearer <your-api-token>" \
  "https://<host>/api/submit?kind=tarball&name=my-entry" --data-binary @-

or upload the same tarball through the dashboard, which shows your API token while you are signed in. A name is yours once accepted; a new build under it starts from zero.

The ladder

The scheduler picks all matches. Each opening from book.txt is played twice with colours reversed. Ratings are relative to reference at 0.

API reference: /docs/api.