fe2e1c16c6
Add spawn-per-call execution model to BaseEnvironment: - ProcessHandle protocol for backend abstraction - Shell snapshot creation (bash -l once, capture env to file) - Command wrapping template (source snapshot + cd + eval + pwd tracking) - Unified _wait_for_process with interrupt/timeout handling - CWD tracking via cwdfile read after process exit Migrate LocalEnvironment to unified model: - Remove PersistentShellMixin inheritance - Implement _run_bash (Popen + process group kill) - Remove fence markers, oneshot method, shell noise cleanup - Session snapshot captures env vars, functions, aliases New test capabilities validated: - CWD persists across execute() calls (was 37% manual cd prefix) - stdin_data piping works - Exit codes preserved through wrapper - Single quotes survive eval escaping - Snapshot fallback works when creation fails 42/42 tests passing on local backend. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>