Acceptance criteria for proposed GEPA candidates.
Reflective mutations use a pluggable acceptance criterion. Merge proposals are intentionally accepted with the official merge rule: the merged program's subsample score sum must be at least the better parent sum. That rule is not user-overridable in the Python engine and is kept separate here as well.
Summary
Types
@type criterion() :: :strict_improvement | :improvement_or_equal | module() | struct() | (GEPA.CandidateProposal.t(), GEPA.State.t() | nil -> boolean())
Callbacks
@callback should_accept(GEPA.CandidateProposal.t(), GEPA.State.t() | nil) :: boolean()
Functions
@spec should_accept?( GEPA.CandidateProposal.t(), criterion() | nil, GEPA.State.t() | nil ) :: boolean()