eb62143006
The top execute_code failure shapes in production (state.db mining) are sandbox-contract confusions, not logic bugs: importing tools that aren't in the sandbox from hermes_tools (23x in one window, incl. importing the built-in helpers json_parse/shell_quote/retry), importing third-party packages absent from the sandbox interpreter (matplotlib 6x), and indexing tool-result dicts as strings. The stderr traceback alone sends models into re-diagnosis loops. Failed scripts (exit != 0) now carry one actionable 'hint' field: - unavailable hermes_tools import -> lists the tools that ARE importable in this session + points to normal tool calls otherwise; - built-in helper import -> 'no import needed, call it directly'; - ModuleNotFoundError -> 'sandbox has stdlib only; use terminal() with the project venv for third-party packages'; - string-indexing errors -> 'tool functions return dicts, do not json.loads them'. Bounded 4KB stderr scan, first match wins, never raises; successful scripts and unknown failures are untouched.