"""Process identity captured at import so health proves in-memory code, not disk."""

from __future__ import annotations

import os
import subprocess
from pathlib import Path

_ROOT = Path(__file__).resolve().parents[2]
_SHA_FILE = ".deployed_git_sha"


def _valid_sha(value: str) -> str:
    text = value.strip()
    return text if len(text) == 40 and all(c in "0123456789abcdef" for c in text.lower()) else ""


def read_git_sha(root: Path | None = None) -> str:
    cwd = root or _ROOT
    from_env = _valid_sha(os.environ.get("P2HS_GIT_SHA", ""))
    if from_env:
        return from_env
    marker = cwd / _SHA_FILE
    if marker.is_file():
        from_file = _valid_sha(marker.read_text(encoding="utf-8"))
        if from_file:
            return from_file
    try:
        return _valid_sha(
            subprocess.check_output(
                ["git", "rev-parse", "HEAD"],
                cwd=cwd,
                timeout=2,
                stderr=subprocess.DEVNULL,
                text=True,
            )
        )
    except (OSError, subprocess.SubprocessError):
        return ""


PROCESS_GIT_SHA = read_git_sha()
