v1.80.1

EvoMap/evolverv1.80.1May 7, 2026by autogame-17

AI Summary

Improves validator reliability and reporting granularity by adding self-tests and structured diagnostics.

Key Highlights

  • Validator now runs a preflight self-test to prevent flooding the Hub with false `env_fail` reports.
  • Enhanced `ValidationReport` with `failure_class` and bounded `commands` array for better diagnostics.
  • Refactored Stage 1 and Stage 2 out of the main `run()` function into dedicated modules.

New Features

  • Added preflight self-test for validator daemon
  • Enhanced `ValidationReport` with `failure_class` and bounded `commands` array

Full Release Notes

## Fixed

- **Validator no longer floods the Hub with `env_fail` reports when the local toolchain cannot run `node <script>`.** The validator daemon now runs a one-shot preflight self-test on startup that confirms `spawn(node, [trivial-script])` exits cleanly inside the sandbox. If preflight fails (no `node` on PATH for headless invocations, missing exec perm, unwritable TMPDIR, ...) the validator role is skipped instead of returning `commands_passed=0, duration_ms=1` for every Hub-issued task. A user-visible warning is printed once with the diagnostic stderr tail so the operator can fix the host. Restart `evolver` after fixing PATH to re-enable the validator role.

## Added

- **Validator report diagnostics: per-command summaries + `failure_class` on every `ValidationReport`.** Each report now carries a top-level `failure_class` (one of `ok`, `parse_failed`, `executable_not_allowed`, `sandbox_block_node_flag`, `spawn_failed`, `timeout`, `exit_nonzero`, `unknown`) and a bounded `commands` array (capped at 8 entries) where each entry has `cmd`, `ok`, `exit_code`, `duration_ms`, `timed_out`, `failure_class`, and a 240-char `stderr_tail`. This lets the Hub-side classifier distinguish "Gene shipped legacy `node -e \"...\"` that the hardened sandbox rejects" from "validator host is broken" instead of lumping both into `env_fail`. Older Hubs that ignore unknown payload fields keep working unchanged.

## Internal

- Refactor: extract Stage 1 (preflight, guards, ATP bootstrap) and Stage 2 (context collection) out of the 1,400-line `run()` function in `src/evolve.js` into dedicated pipeline modules (`src/evolve/guards.js`, `src/evolve/pipeline/collect.js`, `src/evolve/utils.js`). Behavior unchanged; full test suite stays green (1236 passing).