Repository navigation
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Unchanged local AlphaEvolve evaluators can still require
alpha_evolve.models, even when execution uses OpenEvolve. Add five dependency-free evaluation envelopes, finite-score lookup, and explicit scoped import helpers underopenevolve.compat.alpha_evolve. The walkthrough CLI gains--local-model-types; its default import behavior is unchanged.load_evaluator(path, function_name)imports a trusted Python file using temporary local aliases, supports decorators during import, and removes the file-module registration afterwards so cloudpickle can transport the callable by value to fresh OE workers. It reads current source bytes rather than potentially stale timestamp/size-based bytecode. The raw candidate-based callable can use the existing evaluator adapter or local experiment facade.local_imports()is an explicit process-global, main-thread-only context for single-threaded entrypoints. It refuses any already-loadedalpha_evolvenamespace and removes only its own entries on exit, including on import failure or interruption. It does not install packages, modify import paths, look up credentials, or create clients. Unknown SDK submodules cannot fall back to a cloud installation inside the context.The five models are dataclass envelopes with attribute access and no-argument
model_dump(), not Pydantic replacements; metric validation stays in the existing adapter.get_scorereads mapping/object envelopes, preserves finite zero/negative scores, and returns-inffor absent or invalid values. No base dependencies or default OE contracts change.Validation:
program.py/evaluate.pythrough the public CLI with--local-model-types, each seed-only and with one scripted proposal through OE's real controller/worker. The cloud SDK source was absent from the worker module path and imports were explicitly blocked. Source hashes stayed unchanged, temporary aliases were removed, and guarded socket/HTTP/credential lookup attempts were zero.34cd919193945c6dc81053f9af594031b54f41a8, and verified that local alias activation refuses to replace that imported SDK.Continues #468 without closing it. This supplies local evaluator types/import routing, not the full SDK, original upstream entrypoint compatibility, complete archive queries, cloud controller methods, or a managed-service run. Trusted evaluator/import code still executes with the process's privileges; this adds no sandbox. Relative/sibling imports and external import-time side effects are not managed. The local experiment facade's existing budget/concurrency/best-only limitations remain unchanged. No real model or managed-service requests were made during validation.