"""tests/regression/finish_task_callback_fail_closed/conftest.py

task-2694+1 NORMAL_CALLBACK_REGISTRATION_ENFORCEMENT MT-7 integration 회귀.

tests/conftest.py 가 /home/jay/workspace 를 sys.path 에 먼저 삽입한 뒤
무관한 import 사슬에서 dispatch / utils 패키지가 live workspace 본으로
캐싱될 수 있다. 본 conftest 는 worktree 본을 강제 로드하기 위해
- sys.path[0] 를 worktree root 로 보장
- dispatch / utils 패키지가 live workspace 본으로 캐싱돼 있으면 제거
한다.
"""

from __future__ import annotations

import sys
from pathlib import Path

_WORKTREE_ROOT = Path(__file__).resolve().parents[3]


def _ensure_worktree_first() -> None:
    root = str(_WORKTREE_ROOT)
    if root in sys.path:
        sys.path.remove(root)
    sys.path.insert(0, root)


def _evict_if_not_worktree(modname: str) -> None:
    cached = sys.modules.get(modname)
    if cached is None:
        return
    f = getattr(cached, "__file__", None) or ""
    p = getattr(cached, "__path__", None)
    if str(_WORKTREE_ROOT) in f:
        return
    if p and any(str(_WORKTREE_ROOT) in entry for entry in p):
        return
    sys.modules.pop(modname, None)


_ensure_worktree_first()
for _mod in (
    "utils",
    "utils.normal_callback_registration_validator",
    "utils.callback_registration_marker",
    "dispatch",
    "dispatch.normal_fallback_callback_helper",
):
    _evict_if_not_worktree(_mod)
