from dataclasses import replace
from pathlib import Path

from psx_signal.config import DataConfig, load_settings
from psx_signal.experiments.baseline_v1 import assess_data_readiness, run_readiness_gate


def test_no_data_blocks_baseline_before_experiment_starts(tmp_path: Path) -> None:
    settings = replace(load_settings(), data=DataConfig(root=str(tmp_path / "data"), inbox=str(tmp_path / "inbox")))
    result = assess_data_readiness(settings)
    assert result.status == "NOT_READY"
    assert result.experiment_started is False
    assert "No normalized equity observations" in result.blockers
    assert "No KSE100 benchmark history" in result.blockers


def test_readiness_gate_writes_only_pretraining_artifacts_when_blocked(tmp_path: Path) -> None:
    settings = replace(load_settings(), data=DataConfig(root=str(tmp_path / "data"), inbox=str(tmp_path / "inbox")))
    output = tmp_path / "reports"
    result = run_readiness_gate(settings, output)
    assert result.status == "NOT_READY"
    assert {path.name for path in output.iterdir()} == {
        "data_readiness.md", "experiment_config.json", "readiness.json", "summary.md",
    }
    assert not list(output.glob("*classification*"))
    assert not list((tmp_path / "data").glob("**/*.joblib"))
