Thanks for your interest in contributing to the Algorithm Discovery Engine.
Requires Python >= 3.10 and uv, plus a JDK (>= 17), a C++17 compiler, and the Rust toolchain for the non-Python tiers.
git clone https://github.com/dsk-dev-ai/algorithm-discovery-engine.git
cd algorithm-discovery-engine
uv sync --group dev --group docsRun the full check suite before submitting:
python engine/runner.py check # generated vectors in sync w/ the catalog
python engine/runner.py build # all four language tiers compile
python engine/runner.py test # catalog tests pass in all four languages
python engine/runner.py discover # synthesizer smoke pass (CI-friendly)
uv run ruff check src tests
uv run mypy -p algo_discovery -p ads -p synth -p gui
uv run python -m gui --selftest
uv run mkdocs build --strict# Java
cd languages/java && javac -d out $(find src -name '*.java') && java -cp out ads.TestRunner
# C++
cd languages/cpp && g++ -std=c++17 -O2 -I include tests/test_runner.cpp -o build/runner && ./build/runner
# Rust
cd languages/rust && cargo test --quiet- Branch from
main:feat/my-featureorfix/my-bug. - For a new problem: add vectors to
catalog/problems.json, implement the solution in every language tier (src/ads/,languages/java/,languages/cpp/,languages/rust/), and regenerate vectors withpython engine/gen_tests.py. - Add/keep unit tests: Python in
tests/; Java/C++/Rust are covered by the generated catalog runners in eachlanguages/*/. - For a new discovery target: add an entry to
catalog/discovery_targets.json(curated I/O examples,returnstype,arg_types, and an oracle + fuzz generator insrc/synth/corpus.py), then verify withpython -m synth discover --smokeand add tests intests/test_synth.py. - Run the quality gates above.
- Document behavior changes in the README.
- Commit with a Conventional Commit message and open a PR.
-
python engine/runner.py checkpasses -
python engine/runner.py testpasses (all tiers) -
python engine/runner.py discoverpasses (synthesizer smoke) -
ruff checkandmypy(strict) pass - Tests added/updated and passing
- README updated if behavior changed