v1.88.3
EvoMap/evolverv1.88.3Jun 6, 2026by autogame-17
AI Summary
Addresses a critical bug where a 'do-nothing' gene was dominating selection by incorrectly tallying inert outcomes as successes. Also fixes self-evolution validation commands that were failing in user projects.
Key Highlights
- Gene selection no longer self-reinforces inert outcomes; zero-work cycles are tallied as 'inert'.
- The selector now bans genes after a streak of inert outcomes, forcing mutation.
- Self-evolution validation commands skip execution if the script does not exist in the repoRoot.
- Fixes a regression where validation failures were incorrectly tanking gene pass rates.
Full Release Notes
## [1.88.3] - 2026-06-06 ### Fixed - **Gene selection no longer self-reinforces a do-nothing gene (#562).** A `stable_no_error` outcome (no error before/after, no parseable EvolutionEvent — i.e. the cycle did nothing measurable) was tallied as a Bayesian "success" (score 0.6). Combined with the selector's drift only diversifying when >1 gene matches a signal, a sole-matching auto-gene was re-selected every `--loop` cycle, climbed edge confidence p → ~1.0, and was never banned (the failure-streak ban never trips on "successes") — dominating selection ~99.7% of the time while producing zero artifacts (reproduced against the published 1.88.2 binary). `aggregateEdges` now tallies these zero-work outcomes as `inert`, apart from real successes, so they build no confidence and do not count toward attempts; `getMemoryAdvice` bans a gene after `GENE_INERT_BAN_STREAK` (default 8, env `EVOLVER_GENE_INERT_BAN_STREAK`) consecutive inert outcomes with no real success on a signal, so the selector falls through to mutation (null → fresh gene) and diversity is restored. Consecutive-trailing (reset by any real success/failure), so a gene that ever does real work is never punished for idle cycles. - **Self-evolution validation commands no longer fail a cycle in user projects (#562).** Seed genes (e.g. `gene_gep_repair_from_errors`) ship validation commands that target evolver's own tree (`node scripts/validate-modules.js ./src/gep/...`). When evolver runs in a user's project, `repoRoot` is that project and the script is absent, so the command could only fail with "Cannot find module" — wrongly tanking the gene's `validation_pass_rate` on an environment mismatch. `runValidationsOnce` now skips a `node <script>` validation command whose (relative) script does not exist in `repoRoot`, excluding it from the pass/fail tally instead of failing the cycle; a clear `[Solidify] Skipping validation command (script not in repoRoot)` line replaces the confusing module-not-found error. Commands whose script is present run unchanged.