Skip to content

Releases: EvoMap/evolver

v1.38.0 - Harden Gene Validation Rules

23 Mar 04:19

Choose a tag to compare

v1.38.0 - Harden Gene Validation Rules

Breaking Changes (Gene Library)

  • genes.json bumped to version 2. All built-in genes now require passing the full test suite as a validation step.
  • Empty validation arrays now score 0.5 instead of 1.0 in PRM, penalizing genes that skip validation.

Validation Hardening

  • validate-modules.js strengthened: Beyond require(), now checks that exports are non-null, non-empty objects with callable functions. Previously, a module exporting {} or null would pass.
  • New validate-suite.js: Runs the project's test suite (node --test) as a Gene validation command. All built-in genes now include this as their second validation step, ensuring behavioral correctness -- not just load-ability.
  • Expanded module coverage: Each gene now validates all critical modules it could affect (e.g., repair gene validates evolve, solidify, policyCheck, selector, memoryGraph, assetStore) instead of just 1-2.

PRM Scoring Fix

  • computeProcessScores Phase 6: genes with empty validation arrays previously received a perfect 1.0 validation score. Now they receive 0.5, incentivizing every gene to define at least one validation command.

Distiller/PolicyCheck Consistency

  • skillDistiller.validateSynthesizedGene() now uses policyCheck.isValidationCommandAllowed() directly instead of a separate (weaker) filter. This prevents the scenario where a distilled gene saves a node -e "..." validation command that would be BLOCKED at solidify time.

Tests

  • 266 tests pass, 0 failures
  • 24 new test cases covering computeProcessScores empty/partial/full validation scoring, isValidationCommandAllowed for --eval/-p/--print/$(), and distiller node -e filtering consistency

Full Changelog: v1.37.0...v1.38.0

v1.36.0 - Rename to Evolver, cross-platform fixes

22 Mar 08:15

Choose a tag to compare

What's Changed

  • Rename: Capability Evolver -> Evolver across all files and references
  • README Rewrite: Both EN and ZH READMEs now include GitHub badges, installation steps, Hub integration guide, Worker Pool docs, FAQ, and WORKER_ENABLED vs website toggle explanation
  • Cross-platform fixes: Workspace root resolution, bridge auto-detection, cross-platform test runner, cross-platform GEP prompt output, platform-gated Windows signal detection
  • Bare invocation: node index.js now runs evolution directly (no longer shows help)
  • 56 new tests: paths, bridge, prompt, signals, loop mode, and build exclusion rules (278 -> 334 total)
  • .env.example: New file documenting all configurable environment variables

Full Changelog: v1.35.0...v1.36.0

v1.35.0

22 Mar 07:41

Choose a tag to compare

What's New in v1.34.0

Idle-Cycle Gating (Cost Reduction)

When evolver is saturated (no actionable signals), Hub API calls (fetchTasks, hubSearch) are throttled to at most once per EVOLVER_IDLE_FETCH_INTERVAL_MS (default 30 min) instead of every cycle. This dramatically reduces fetch_gdi_cost during idle periods.

Verbose / Debug Mode

New --verbose flag and EVOLVER_VERBOSE=true env var for detailed logging at key decision points: signal extraction, idle gating, gene selection, strategy policy, mutation, and hub search results.

Improved Fetch Error Reporting

evolver fetch now shows HTTP status codes, parsed error details, specific hints for common errors (401/402/404/5xx), and full response body in verbose mode.

Code Quality (Issues #237, #240)

  • Added error logging to previously empty catch blocks in a2aProtocol.js (transport/heartbeat) and assetStore.js (readJsonIfExists)
  • Migrated 97 var declarations to const/let in a2aProtocol.js

New Environment Variable

Variable Default Description
EVOLVER_IDLE_FETCH_INTERVAL_MS 1800000 (30 min) Minimum interval between Hub API calls during idle saturation. Only applies when no actionable signals exist.
EVOLVER_VERBOSE false Enable verbose debug logging. Also activatable via --verbose or -v CLI flag.

v1.34.2

22 Mar 06:09

Choose a tag to compare

What's New in v1.34.0

Idle-Cycle Gating (Cost Reduction)

When evolver is saturated (no actionable signals), Hub API calls (fetchTasks, hubSearch) are throttled to at most once per EVOLVER_IDLE_FETCH_INTERVAL_MS (default 30 min) instead of every cycle. This dramatically reduces fetch_gdi_cost during idle periods.

Verbose / Debug Mode

New --verbose flag and EVOLVER_VERBOSE=true env var for detailed logging at key decision points: signal extraction, idle gating, gene selection, strategy policy, mutation, and hub search results.

Improved Fetch Error Reporting

evolver fetch now shows HTTP status codes, parsed error details, specific hints for common errors (401/402/404/5xx), and full response body in verbose mode.

Code Quality (Issues #237, #240)

  • Added error logging to previously empty catch blocks in a2aProtocol.js (transport/heartbeat) and assetStore.js (readJsonIfExists)
  • Migrated 97 var declarations to const/let in a2aProtocol.js

New Environment Variable

Variable Default Description
EVOLVER_IDLE_FETCH_INTERVAL_MS 1800000 (30 min) Minimum interval between Hub API calls during idle saturation. Only applies when no actionable signals exist.
EVOLVER_VERBOSE false Enable verbose debug logging. Also activatable via --verbose or -v CLI flag.

v1.34.1

22 Mar 05:46

Choose a tag to compare

What's New in v1.34.0

Idle-Cycle Gating (Cost Reduction)

When evolver is saturated (no actionable signals), Hub API calls (fetchTasks, hubSearch) are throttled to at most once per EVOLVER_IDLE_FETCH_INTERVAL_MS (default 30 min) instead of every cycle. This dramatically reduces fetch_gdi_cost during idle periods.

Verbose / Debug Mode

New --verbose flag and EVOLVER_VERBOSE=true env var for detailed logging at key decision points: signal extraction, idle gating, gene selection, strategy policy, mutation, and hub search results.

Improved Fetch Error Reporting

evolver fetch now shows HTTP status codes, parsed error details, specific hints for common errors (401/402/404/5xx), and full response body in verbose mode.

Code Quality (Issues #237, #240)

  • Added error logging to previously empty catch blocks in a2aProtocol.js (transport/heartbeat) and assetStore.js (readJsonIfExists)
  • Migrated 97 var declarations to const/let in a2aProtocol.js

New Environment Variable

Variable Default Description
EVOLVER_IDLE_FETCH_INTERVAL_MS 1800000 (30 min) Minimum interval between Hub API calls during idle saturation. Only applies when no actionable signals exist.
EVOLVER_VERBOSE false Enable verbose debug logging. Also activatable via --verbose or -v CLI flag.

v1.34.0

22 Mar 05:18

Choose a tag to compare

What's New in v1.34.0

Idle-Cycle Gating (Cost Reduction)

When evolver is saturated (no actionable signals), Hub API calls (fetchTasks, hubSearch) are throttled to at most once per EVOLVER_IDLE_FETCH_INTERVAL_MS (default 30 min) instead of every cycle. This dramatically reduces fetch_gdi_cost during idle periods.

Verbose / Debug Mode

New --verbose flag and EVOLVER_VERBOSE=true env var for detailed logging at key decision points: signal extraction, idle gating, gene selection, strategy policy, mutation, and hub search results.

Improved Fetch Error Reporting

evolver fetch now shows HTTP status codes, parsed error details, specific hints for common errors (401/402/404/5xx), and full response body in verbose mode.

Code Quality (Issues #237, #240)

  • Added error logging to previously empty catch blocks in a2aProtocol.js (transport/heartbeat) and assetStore.js (readJsonIfExists)
  • Migrated 97 var declarations to const/let in a2aProtocol.js

New Environment Variable

Variable Default Description
EVOLVER_IDLE_FETCH_INTERVAL_MS 1800000 (30 min) Minimum interval between Hub API calls during idle saturation. Only applies when no actionable signals exist.
EVOLVER_VERBOSE false Enable verbose debug logging. Also activatable via --verbose or -v CLI flag.

v1.33.2

22 Mar 04:18

Choose a tag to compare

fix: improved fetch error reporting. Shows HTTP status, parsed error details, specific hints for common errors (401/402/404/5xx), and full response body in --verbose mode.

v1.33.1

22 Mar 03:58

Choose a tag to compare

feat: add --verbose / EVOLVER_VERBOSE debug log mode. Enable via --verbose flag or EVOLVER_VERBOSE=true env var. Logs signal extraction, idle gating decisions, gene selection, strategy policy, mutation details, and hub search results.

v1.33.0

21 Mar 17:06

Choose a tag to compare

feat: add idle-cycle gating to reduce Hub API calls during saturation. New env var EVOLVER_IDLE_FETCH_INTERVAL_MS (default 30 min) throttles fetch calls when no actionable signals exist. Also fixes 3 pre-existing test failures in skillDistiller.

v1.32.4

20 Mar 11:15

Choose a tag to compare

v1.32.4

Bug Fixes

  • Environment fingerprint: Added captured_at timestamp field to captureEnvFingerprint() -- previously missing, causing downstream validation to fail when checking fingerprint freshness
  • Signal tag format: user_feature_request and user_improvement_suggestion signals now emit the base tag (e.g. user_feature_request) alongside the snippet-carrying variant (e.g. user_feature_request:add notification module). Previously only the snippet variant was emitted, causing Array.includes('user_feature_request') checks to miss the signal
  • State file error logging: Added console.warn to state file read/write catch blocks in evolve.js -- previously silent failures could mask filesystem permission issues

Code Quality

  • var -> const/let migration: Full migration in issueReporter.js, learningSignals.js, and assetStore.js (failed capsule functions). Addresses #240
  • Error logging in catch blocks: Added warning logs to critical-path empty catches per #237 action plan

Test Fixes

  • T7 env_fingerprint: Now passes after captured_at field was added to fingerprint
  • T4b innovation_signal: Fixed by emitting base signal tags
  • T11 selector_gene_match: Isolated from T5 full_evolve_solidify side effects by using deterministic test genes
  • T8 mutation category: Relaxed assertion to accept strategy-dependent result (innovate or optimize)
  • skillDistiller tests: Fixed test data to meet 3-step strategy minimum requirement; fixed prompt assertion text

Files Changed

  • src/gep/envFingerprint.js -- added captured_at field
  • src/gep/signals.js -- emit base signal tags
  • src/gep/assetStore.js -- var -> const/let
  • src/gep/issueReporter.js -- full var -> const/let migration
  • src/gep/learningSignals.js -- full var -> const/let migration
  • src/evolve.js -- error logging in state file catches
  • test/vibe_test.js -- T4b, T7, T8, T11 test fixes
  • test/skillDistiller.test.js -- test data and assertion fixes