Skip to content

Conversation

@codelion
Copy link
Member

Summary

This PR includes the fix from #380 with merge conflicts resolved.

Original PR: #380 by @nhuet

Problem: When using negative metrics (like -inf for failing programs), the visualizer crashes because JSON doesn't support Infinity and NaN values.

Solution: Sanitize -inf, +inf, and NaN values in program metrics before visualization by replacing them with None. Failing programs are now properly shown in the NaN box in the performance tab.

Changes

  • Add sanitize_program_for_visualization() function to replace non-JSON-compliant float values with None
  • Add check_json_float() helper to validate float values
  • Call sanitization when loading programs in load_evolution_data()

Closes #380

🤖 Generated with Claude Code

When the visualizer import data from a checkpoint, this is sent to the
javascript via a response object decoded with `resp.json()` in
`fetchAndRender()` from "main.js".
 This is crashing if it does not respect fully json specs
(and NaN, Infinity are not json valid even though js objects).

This is useful for evolutions based on positive metrics to minimize (like a cost).
In that case, we want to put -metric in combined_score (which will then
be negative).
Thus an evolved program not working should be given a worse score during
evaluation. An easy way to do it is to put -inf (instead of not outputing any
metric, which will be replaced by a 0 by default by the database when
requesting a fitness).
Doing so works well during evolution (ranking the top programs as
expected), but during visualization, it was raising an error when fetching data.
@codelion codelion merged commit f2765b9 into main Jan 28, 2026
3 checks passed
@codelion codelion deleted the merge-pr-380 branch January 28, 2026 03:37
codelion added a commit that referenced this pull request Jan 28, 2026
Add comprehensive tests for recently merged PRs:

- test_llm_config_optional_params.py: Tests for optional temperature/top_p
  parameters (PR #385 - Anthropic model compatibility)

- test_snapshot_artifacts_limit.py: Tests for configurable max_snapshot_artifacts
  (PR #386)

- test_visualization_sanitization.py: Tests for -inf/+inf/NaN sanitization
  in visualization (PR #384)

- test_early_stopping_config.py: Tests for event-based early stopping
  configuration (PR #375)

- test_changes_description.py: Tests for large codebase support via
  changes description (PR #376)

Total tests increased from 264 to 326.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
codelion added a commit that referenced this pull request Jan 28, 2026
* Make max snapshot artifacts limit configurable

Add `database.max_snapshot_artifacts` config option to control how many
program artifacts are included in worker process snapshots. Default
remains 100 for backward compatibility.

- Set to a higher number to include more artifacts in prompts
- Set to `null` (None) for unlimited artifacts (use with caution for
  large populations as this can significantly increase memory usage)

Note: This limit only affects artifacts passed to worker processes,
not the total artifacts stored. All program code is always available
regardless of this setting.

Closes #383

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add tests for recent features

Add comprehensive tests for recently merged PRs:

- test_llm_config_optional_params.py: Tests for optional temperature/top_p
  parameters (PR #385 - Anthropic model compatibility)

- test_snapshot_artifacts_limit.py: Tests for configurable max_snapshot_artifacts
  (PR #386)

- test_visualization_sanitization.py: Tests for -inf/+inf/NaN sanitization
  in visualization (PR #384)

- test_early_stopping_config.py: Tests for event-based early stopping
  configuration (PR #375)

- test_changes_description.py: Tests for large codebase support via
  changes description (PR #376)

Total tests increased from 264 to 326.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add integration tests for example validation

Add comprehensive integration tests that verify:
- Example config files load correctly
- Initial programs have EVOLVE-BLOCK markers
- Evaluators exist and have required functions
- Evaluators can run on initial programs
- Cascade evaluation functions are detected
- Database stores and retrieves programs correctly
- Program evolution tracking works

Tests cover function_minimization, circle_packing, and signal_processing
examples, plus general structure validation for all examples.

Total tests: 346 (was 326)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants