GEPA
Reflective mutation over execution feedback, with Pareto-frontier candidate selection.
# GEPA — faithful port of the reference implementation's defaults (github.com/gepa-ai/gepa).
# Sections mirror the six core components; only the components GEPA tunes appear here.
seed: 0 # EngineConfig.seed default (the Pareto sampler's RNG)
general:
max_iterations: 100
# GEPA is not a diff method: the reflection LM returns a complete drop-in replacement, extracted
# from the ``` block by GEPA's own outer-fence extractor (proposer.py). Naming it here keeps the
# run's recorded config honest instead of inheriting the framework's diff default.
mutation_approach: reflective_rewrite
inner_retry_times: 1 # upstream proposes once per iteration; a failed proposal is
# logged and the loop moves on (GEPAEngine.run exception path)
population: # GepaCandidatePool
acceptance_criterion: strict_improvement # StrictImprovementAcceptance (EngineConfig default);
# "improvement_or_equal" allows lateral moves
selection_policy: # ParetoCandidateSelector
frontier_type: hybrid # EngineConfig.frontier_type default — instance keys UNION
# objective keys. Also: instance | objective | cartesian.
proposer: # ReflectionConfig (gepa.lm.LM sends no sampling params, so the
temperature: 1.0 # provider default applies — 1.0 for the OpenAI-compatible APIs)
retries: 3 # LM(num_retries=3)
# NOT exposed, because each is structurally inert on galapagos's single-artifact candidate:
# merge / max_merge_invocations — system-aware merge needs two candidates that changed DIFFERENT
# components of a common ancestor (upstream default: disabled).
# module_selector — round-robin over one component.
# reflection_minibatch_size — single-instance mode pins it to 1 (upstream does the same).
# max_metric_calls — galapagos's only stop condition is general.max_iterations.
# num_parallel_proposals / parallel — the galapagos loop is strictly sequential by design.