You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
get_artifacts returns small bytes artifacts as {'__bytes__': ...} dicts #536
ProgramDatabase.get_artifacts() returns small bytes artifacts (under the 32KB disk threshold) as {'__bytes__': '<base64>'} dicts instead of bytes, so evaluators that return binary artifacts get the encoded dict back and it ends up in prompts as-is.
Large artifacts written to disk already come back as bytes, so the return type currently depends on the artifact's size.
Cause
store_artifacts encodes with json.dumps(..., default=self._artifact_serializer) (openevolve/database.py:2633), but get_artifacts decodes with a plain json.loads (openevolve/database.py:2663) and never uses the matching _artifact_deserializer, which is otherwise unused.
Fix
A minimal fix with a regression test is in the linked PR.
I found this with patchwork, an automated code-audit tool I run, and verified the reproduction test in an isolated sandbox. If tool-assisted reports aren't welcome here, let me know and I won't send more.
Activity
codelion commentedon Oct 23, 2026
I will look in to the PR.
You might want to rename your tool, given that I created a similar one with exactly the same name - https://github.com/patched-codes/patchwork