- Replace polling-based command completion with sentinel event detection in
persistent shell (eliminates I/O polling, immediate completion signaling)
- Add SSH PTY allocation (-tt) and safe UTF-8 decoding (errors=replace)
- Add retry with exponential backoff for transient instance creation failures
- Support eval_challenges list and eval_exclude_modules for flexible eval filtering
- Stream eval samples via log_eval_sample() for real-time HTML viewer
- Add tmux hint for interactive challenge shells
- Add capability verification stress test for pwn-dojo infrastructure
- Fix atroposlib dependency to resolve from git (not local path)
- Merge _init_persistent_shell + _start_persistent_shell into single method
- Move execute() dispatcher and cleanup() into PersistentShellMixin
so LocalEnvironment and SSHEnvironment inherit them
- Remove broad except Exception wrappers from _execute_oneshot in both backends
- Replace try/except with os.path.exists checks in local _read_temp_files
and _cleanup_temp_files
- Remove redundant bash -c from SSH oneshot (SSH already runs in a shell)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>