Skip to content

evo v0.69.0

Choose a tag to compare

@ntholm86 ntholm86 released this 16 Apr 15:23

Added

  • Configurable fitness — define custom metrics with regex extraction in .evo.yaml. Each metric key gets a direction (higher or lower) and feeds into the Pareto gate with the same statistical rigor as built-in metrics.
  • Goal fieldgoal: in .evo.yaml injects a high-level objective into ANALYZE and PROPOSE prompts, steering the LLM toward feature implementation rather than generic weakness-finding.
  • feature_development strategy — new built-in strategy with feature, test_addition, and bug_fix categories. Focuses ANALYZE on missing functionality and implementation tasks instead of test gaps.
  • Category.FEATURE — new proposal category for implementing new functionality. Passes through the enforcement gate automatically (only test_addition is restricted to test files).
  • Dynamic Pareto keysget_pareto_keys() unions built-in metric sets with custom keys from config. The DECIDE phase evaluates user-defined metrics with Welch's t-test + Holm-Bonferroni, same as standard metrics.
  • Fitness floor for custom metrics — when only custom metrics are configured (no standard test suite), passing commands floor the fitness score at tier_high so the DECIDE phase has signal to work with.
  • Custom metric values in prompts — ANALYZE and PROPOSE now render custom metric values alongside standard metrics, giving the LLM full visibility into what it's optimizing.

Changed

  • Strategy-aware propose phase_format_metrics_hint() no longer hardcodes "Prefer test_addition" when the strategy supports feature development. Coverage-safe guard only activates when test_addition is in the strategy's categories.
  • Strategy-aware analyze phase — coverage gap injection is conditional on strategy; feature-focused strategies skip the coverage lens to avoid drowning out the goal signal.
  • Default proposal category from strategy_parse_proposal() defaults to the strategy's first category instead of hardcoded test_addition. LLM failure fallback follows the same rule.