Skip to content

Commit 91023dc

Browse files
committed
Publish JumpStar engine and CCERL benchmark
0 parents  commit 91023dc

76 files changed

Lines changed: 40121 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
8+
jobs:
9+
build-and-test:
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Check out repository
14+
uses: actions/checkout@v4
15+
16+
- name: Configure
17+
run: cmake -S . -B build -DCCZERO_USE_ACCELERATE=OFF
18+
19+
- name: Build
20+
run: cmake --build build --parallel
21+
22+
- name: Test
23+
run: ctest --test-dir build --output-on-failure

.gitignore

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
build/
2+
build-cmake/
3+
api/native/
4+
public/
5+
.venv*/
6+
.DS_Store
7+
__pycache__/
8+
.pytest_cache/
9+
*.pyc
10+
*.jsonl
11+
*.jsonl.gz
12+
!tests/fixtures/*.jsonl
13+
!benchmarks/ccerl-v1/positions/*.jsonl
14+
*.manifest.json
15+
*.npz
16+
*.pt
17+
*.ts
18+
*.ccpv
19+
*.ccpolicy
20+
*.tmp
21+
results.tsv
22+
run.log
23+
autoresearch*.log
24+
25+
# Local training/evaluation runs can be very large. This public repo keeps only
26+
# curated benchmark summaries under experiments/public_benchmark.
27+
experiments/*
28+
!experiments/public_benchmark/
29+
experiments/public_benchmark/*
30+
!experiments/public_benchmark/ladder_v2_latest_champions_s64/
31+
!experiments/public_benchmark/champion_match_iter063_vs_iter060_s768_c24_v2/
32+
!experiments/public_benchmark/open_source_v2/
33+
.vercel

CMakeLists.txt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
cmake_minimum_required(VERSION 3.20)
2+
project(jumpstar_chinese_checkers_engine VERSION 0.1.0 LANGUAGES CXX)
3+
4+
set(CMAKE_CXX_STANDARD 20)
5+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
6+
set(CMAKE_CXX_EXTENSIONS OFF)
7+
8+
add_library(cczero_core src/cczero.cpp src/model.cpp src/mcts.cpp src/cli_utils.cpp)
9+
target_include_directories(cczero_core PUBLIC include)
10+
target_compile_definitions(cczero_core PUBLIC $<$<CONFIG:Release>:CCZERO_RELEASE_BUILD>)
11+
12+
add_executable(cczero src/main.cpp src/cli_main.cpp)
13+
target_link_libraries(cczero PRIVATE cczero_core)
14+
option(CCZERO_USE_ACCELERATE "Use Apple Accelerate for neural inference when available" ON)
15+
if(APPLE AND CCZERO_USE_ACCELERATE)
16+
target_compile_definitions(cczero_core PUBLIC CCZERO_USE_ACCELERATE ACCELERATE_NEW_LAPACK)
17+
target_link_libraries(cczero_core PUBLIC "-framework Accelerate")
18+
endif()
19+
20+
enable_testing()
21+
add_executable(cczero_tests tests/core_tests.cpp)
22+
target_link_libraries(cczero_tests PRIVATE cczero_core)
23+
add_test(NAME cczero_tests COMMAND cczero_tests)

CMakePresets.json

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
{
2+
"version": 3,
3+
"configurePresets": [
4+
{
5+
"name": "debug",
6+
"displayName": "Debug",
7+
"generator": "Unix Makefiles",
8+
"binaryDir": "${sourceDir}/build/cmake-debug",
9+
"cacheVariables": {
10+
"CMAKE_BUILD_TYPE": "Debug",
11+
"CCZERO_USE_ACCELERATE": "ON"
12+
}
13+
},
14+
{
15+
"name": "release",
16+
"displayName": "Release",
17+
"generator": "Unix Makefiles",
18+
"binaryDir": "${sourceDir}/build/cmake-release",
19+
"cacheVariables": {
20+
"CMAKE_BUILD_TYPE": "Release",
21+
"CCZERO_USE_ACCELERATE": "ON"
22+
}
23+
},
24+
{
25+
"name": "release-native",
26+
"displayName": "Release Native",
27+
"generator": "Unix Makefiles",
28+
"binaryDir": "${sourceDir}/build/cmake-release-native",
29+
"cacheVariables": {
30+
"CMAKE_BUILD_TYPE": "Release",
31+
"CCZERO_USE_ACCELERATE": "ON",
32+
"CMAKE_CXX_FLAGS_RELEASE": "-O3 -DNDEBUG -DCCZERO_NATIVE_BUILD -mcpu=native -flto"
33+
}
34+
}
35+
],
36+
"buildPresets": [
37+
{
38+
"name": "debug",
39+
"configurePreset": "debug"
40+
},
41+
{
42+
"name": "release",
43+
"configurePreset": "release"
44+
},
45+
{
46+
"name": "release-native",
47+
"configurePreset": "release-native"
48+
}
49+
],
50+
"testPresets": [
51+
{
52+
"name": "debug",
53+
"configurePreset": "debug",
54+
"output": {
55+
"outputOnFailure": true
56+
}
57+
},
58+
{
59+
"name": "release",
60+
"configurePreset": "release",
61+
"output": {
62+
"outputOnFailure": true
63+
}
64+
},
65+
{
66+
"name": "release-native",
67+
"configurePreset": "release-native",
68+
"output": {
69+
"outputOnFailure": true
70+
}
71+
}
72+
]
73+
}

Makefile

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
CXX ?= c++
2+
UNAME_S := $(shell uname -s)
3+
ACCELERATE ?= 1
4+
ACCELERATE_CXXFLAGS :=
5+
ACCELERATE_LDLIBS :=
6+
ifeq ($(UNAME_S),Darwin)
7+
ifeq ($(ACCELERATE),1)
8+
ACCELERATE_CXXFLAGS := -DCCZERO_USE_ACCELERATE -DACCELERATE_NEW_LAPACK
9+
ACCELERATE_LDLIBS := -framework Accelerate
10+
endif
11+
endif
12+
CXXFLAGS ?= -std=c++20 -O2 -Wall -Wextra -Wpedantic -Iinclude $(ACCELERATE_CXXFLAGS)
13+
RELEASE_CXXFLAGS ?= -std=c++20 -O3 -mcpu=native -flto -DNDEBUG -DCCZERO_RELEASE_BUILD -DCCZERO_NATIVE_BUILD -Wall -Wextra -Wpedantic -Iinclude $(ACCELERATE_CXXFLAGS)
14+
LDLIBS ?= $(ACCELERATE_LDLIBS)
15+
BUILD_DIR := build
16+
17+
.PHONY: all release benchmark-efficiency test check clean
18+
19+
all: $(BUILD_DIR)/cczero $(BUILD_DIR)/cczero_tests
20+
21+
release:
22+
$(MAKE) clean
23+
$(MAKE) all CXXFLAGS="$(RELEASE_CXXFLAGS)"
24+
25+
benchmark-efficiency: $(BUILD_DIR)/cczero
26+
tools/benchmark_efficiency.py --engine ./$(BUILD_DIR)/cczero
27+
28+
$(BUILD_DIR):
29+
mkdir -p $(BUILD_DIR)
30+
31+
$(BUILD_DIR)/cczero.o: src/cczero.cpp include/cczero/cczero.h | $(BUILD_DIR)
32+
$(CXX) $(CXXFLAGS) -c src/cczero.cpp -o $@
33+
34+
$(BUILD_DIR)/model.o: src/model.cpp include/cczero/model.h include/cczero/cczero.h | $(BUILD_DIR)
35+
$(CXX) $(CXXFLAGS) -c src/model.cpp -o $@
36+
37+
$(BUILD_DIR)/mcts.o: src/mcts.cpp include/cczero/mcts.h include/cczero/model.h include/cczero/cczero.h | $(BUILD_DIR)
38+
$(CXX) $(CXXFLAGS) -c src/mcts.cpp -o $@
39+
40+
$(BUILD_DIR)/cli_utils.o: src/cli_utils.cpp include/cczero/cli_utils.h include/cczero/cczero.h include/cczero/mcts.h include/cczero/model.h | $(BUILD_DIR)
41+
$(CXX) $(CXXFLAGS) -c src/cli_utils.cpp -o $@
42+
43+
$(BUILD_DIR)/main.o: src/main.cpp include/cczero/cczero.h include/cczero/cli.h include/cczero/cli_utils.h include/cczero/model.h include/cczero/mcts.h | $(BUILD_DIR)
44+
$(CXX) $(CXXFLAGS) -c src/main.cpp -o $@
45+
46+
$(BUILD_DIR)/cli_main.o: src/cli_main.cpp include/cczero/cli.h | $(BUILD_DIR)
47+
$(CXX) $(CXXFLAGS) -c src/cli_main.cpp -o $@
48+
49+
$(BUILD_DIR)/core_tests.o: tests/core_tests.cpp include/cczero/cczero.h include/cczero/model.h include/cczero/mcts.h | $(BUILD_DIR)
50+
$(CXX) $(CXXFLAGS) -c tests/core_tests.cpp -o $@
51+
52+
$(BUILD_DIR)/cczero: $(BUILD_DIR)/cczero.o $(BUILD_DIR)/model.o $(BUILD_DIR)/mcts.o $(BUILD_DIR)/cli_utils.o $(BUILD_DIR)/main.o $(BUILD_DIR)/cli_main.o
53+
$(CXX) $(CXXFLAGS) $^ -o $@ $(LDLIBS)
54+
55+
$(BUILD_DIR)/cczero_tests: $(BUILD_DIR)/cczero.o $(BUILD_DIR)/model.o $(BUILD_DIR)/mcts.o $(BUILD_DIR)/cli_utils.o $(BUILD_DIR)/core_tests.o
56+
$(CXX) $(CXXFLAGS) $^ -o $@ $(LDLIBS)
57+
58+
test: $(BUILD_DIR)/cczero_tests
59+
./$(BUILD_DIR)/cczero_tests
60+
61+
check:
62+
$(MAKE) clean
63+
$(MAKE) all
64+
./$(BUILD_DIR)/cczero_tests
65+
tools/check_all.py --skip-build
66+
67+
clean:
68+
rm -rf $(BUILD_DIR)

README.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# JumpStar Chinese Checkers Engine
2+
3+
This is the public engine and benchmark repository for JumpStar, a
4+
self-play-trained Chinese Checkers AI. As of the public launch on **2026-05-23**,
5+
`JumpStar_60` is, to the best of this project's public evidence, the strongest
6+
openly documented Chinese Checkers AI engine under the `CCERL-2P10-v2`
7+
benchmark. That claim is benchmark-scoped: stronger private engines may exist,
8+
and CCERL is designed so public challengers can test the result.
9+
10+
This repository intentionally contains only the public research surface:
11+
12+
- the dependency-light C++20 CCZero engine core
13+
- tests and JSON schemas
14+
- the CCERL benchmark rules, protocol, positions, and baseline definitions
15+
- public leaderboard and direct-match evidence
16+
- a small benchmark runner/tool subset
17+
18+
It does not contain the hosted website, Vercel deployment code, private training
19+
automation, or internal experiment workspaces.
20+
21+
## Build
22+
23+
```sh
24+
cmake -S . -B build -DCCZERO_USE_ACCELERATE=OFF
25+
cmake --build build --parallel
26+
ctest --test-dir build --output-on-failure
27+
```
28+
29+
On macOS, the Makefile also supports:
30+
31+
```sh
32+
make release
33+
make test
34+
```
35+
36+
## Start Here
37+
38+
- [docs/benchmark/README.md](docs/benchmark/README.md): benchmark documentation.
39+
- [docs/benchmark/CCERL_LEADERBOARD.md](docs/benchmark/CCERL_LEADERBOARD.md):
40+
current public leaderboard snapshot.
41+
- [docs/benchmark/CCERL-2P10-v2.md](docs/benchmark/CCERL-2P10-v2.md):
42+
current ruleset.
43+
- [docs/benchmark/CCP_PROTOCOL.md](docs/benchmark/CCP_PROTOCOL.md):
44+
stdin/stdout protocol for external engines.
45+
- [benchmarks/ccerl-v1/positions/official_elo_v2.jsonl](benchmarks/ccerl-v1/positions/official_elo_v2.jsonl):
46+
frozen v2 position schedule.
47+
- [experiments/public_benchmark/ladder_v2_latest_champions_s64/elo.json](experiments/public_benchmark/ladder_v2_latest_champions_s64/elo.json):
48+
public Elo summary.
49+
- [experiments/public_benchmark/champion_match_iter063_vs_iter060_s768_c24_v2/champion_match.md](experiments/public_benchmark/champion_match_iter063_vs_iter060_s768_c24_v2/champion_match.md):
50+
direct champion-defense match summary.
51+
52+
## Quick Commands
53+
54+
Print the benchmark manifest:
55+
56+
```sh
57+
python3 tools/ccbench.py manifest
58+
```
59+
60+
Run a tiny native ladder sample after building `build/cczero`:
61+
62+
```sh
63+
python3 tools/ccbench.py baseline-ladder-native \
64+
--engine build/cczero \
65+
--positions benchmarks/ccerl-v1/positions/official_elo_v2.jsonl \
66+
--out-dir build/public_ladder_smoke \
67+
--label random \
68+
--label greedy \
69+
--limit 2 \
70+
--simulations 8 \
71+
--workers 1 \
72+
--force
73+
```
74+
75+
External engines can implement CCP and be run through:
76+
77+
```sh
78+
python3 tools/ccbench.py referee-ccp --help
79+
```
80+
81+
## Model Artifacts
82+
83+
The public repository records exact model labels, paths, sizes, and hashes used
84+
for the benchmark. The `.ccpv` model files themselves are not stored in Git
85+
history. If model downloads are published, they should be attached as GitHub
86+
Release assets and restored to the paths documented in
87+
[benchmarks/ccerl-v1/baseline_pack/MODEL_NOTES.md](benchmarks/ccerl-v1/baseline_pack/MODEL_NOTES.md).
88+
89+
## License
90+
91+
No open-source license has been selected yet. Until a license is added, this
92+
source is public for inspection and reproducibility but is not broadly licensed
93+
for reuse or redistribution.
94+

0 commit comments

Comments
 (0)