6. Check and compare
Check a climber before it costs anything, and race climbers on one problem.
Check it first
hillclimb climber check # this folder's climber
hillclimb climber check run.yaml # every entry of a run spec
hillclimb climber check --climber mine.py --problem circle-packing --smokeclimber check loads every module the climber names, then replays every recorded search in the
folder through it, with no coding agent and no verifier. It reports each rule broken: a climber
that never starts on an empty history, two fresh copies that disagree, a choice that would change
after a resume, a candidate or operator that does not exist, or a write it should not make.
--smoke then runs a short search with the scripted dummy agent. It exits 1 on any problem.
Start from a preset
hillclimb climber list # presets, your own climbers, the building blocks
hillclimb climber show greedy # a preset as a block to paste
hillclimb climber new mine --from greedy # copy greedy's source into climbers/mine.py
hillclimb run circle-packing --climber climbers/mine.pyRace climbers on one problem
Repeat --climber and one run holds one search per climber on the same problem, each tagged so
they can be compared afterwards:
hillclimb run circle-packing --budget 30m --climber greedy --climber openevolve
hillclimb watch # the searches side by side
hillclimb experiment report <run-id> # the climbers comparedSearches in one run share live memory, so pass --no-learning for a fair race. For repeats
across problems with a noise floor and a control, run an experiment: see
Run an experiment.
What makes two runs comparable
A climber's identity is its block plus the bytes of every file it uses. Each search keeps a copy
of its climber, and hillclimb resume runs that copy, so editing your files never changes a search
that has started. Two searches are comparable when their identities match.