#!/usr/bin/env python3
"""Run real success/failure checks and store reproducible verification evidence."""
import json
import subprocess
import sys
from pathlib import Path

ROOT = Path(__file__).resolve().parent
valid = subprocess.run([sys.executable, str(ROOT / "analyze.py"), str(ROOT / "campaigns.csv"), "--output", str(ROOT / "output.json")], capture_output=True, text=True)
bad = subprocess.run([sys.executable, str(ROOT / "analyze.py"), str(ROOT / "invalid-campaigns.csv")], capture_output=True, text=True)
assert valid.returncode == 0, valid.stderr
result = json.loads((ROOT / "output.json").read_text())
assert result["periods"]["baseline"]["spend_eur"] == 6000
assert result["periods"]["comparison"]["revenue_eur"] == 34880
assert result["periods"]["comparison"]["conversions"] == 436
assert bad.returncode == 2, "Invalid input must fail with exit code 2"
rejection = json.loads(bad.stderr)
assert any("revenue_eur" in error for error in rejection["validation"]["errors"])
assert any("impressions >= clicks" in error for error in rejection["validation"]["errors"])
(ROOT / "invalid-output.json").write_text(json.dumps(rejection, indent=2) + "\n")
evidence = {"status": "passed", "checks_passed": 7, "checks": ["valid input exits 0", "baseline spend equals EUR 6000", "comparison revenue equals EUR 34880", "comparison conversions equal 436", "invalid input exits 2", "negative revenue rejected", "clicks exceeding impressions rejected"], "valid_exit_code": valid.returncode, "invalid_exit_code": bad.returncode, "execution": "Actual offline Python execution; no model or platform calls"}
(ROOT / "verification.json").write_text(json.dumps(evidence, indent=2) + "\n")
print(json.dumps(evidence, indent=2))
