97ecc7136e
Opt-in isolated worktree so parallel implementers don't stomp the shared tree, hydrated to config parity so a worker differs from the primary only in LLM provider. - Worktrees seam (interface) behind SessionManager; GitWorktrees shells git via ProcessBuilder (non-zero exit -> WorktreeException), FakeWorktrees for tests. No live git in unit tests. - acquire() 5-arg overload provisions add -> overlayParity -> spawn(cwd=wt) -> register, unwinding the worktree on any failure before registration. 4-arg overload and shared-tree behavior unchanged (backward compatible). - release() removes the checkout but never deletes the branch (it holds the worker's commits + PR, CB-302). - overlayParity copies local config (.mcp.json, settings.local.json, .env/ .envrc) into the worktree; tracked ones get --skip-worktree so a worker can never stage the parity overlay. - WorkerSession gains nullable worktree/branch; BridgedConfig.Worker gains parityOverlay (default list) + top-level worktreeRoot. - bridge_spawn / POST /workers gain an optional worktree(+ticket) arg; the worker view includes worktree/branch only when non-null. Verify fixes on the delegated impl: strip trailing dashes in slug() (^-+|-+$, was ^-+|^-+$); make FakeWorktrees.add a pure fn of the branch (nonce already unique); MCP worktreeRequest treats blank/"false" string as no-worktree, matching the REST builder. 162 tests, 0 failures.