#!/usr/bin/env python3
import json
import sys
from pathlib import Path
import numpy as np

if len(sys.argv) != 2:
    print("usage: check_bio_npz_sanity_v1.py path.npz", file=sys.stderr)
    sys.exit(2)

p = Path(sys.argv[1])
if not p.exists() or p.stat().st_size <= 0:
    print(f"[fatal] missing/empty npz: {p}", file=sys.stderr)
    sys.exit(2)

z = np.load(p, allow_pickle=True)
price = z["price"]
input_usd = z["input_usd"]

price_min = float(np.nanmin(price))
price_max = float(np.nanmax(price))
input_sum = float(np.nansum(input_usd))
rows = int(price.size)

print(json.dumps({
    "npz": str(p),
    "rows": rows,
    "price_min": price_min,
    "price_max": price_max,
    "input_usd_sum": input_sum,
}, indent=2))

# Conservative BIO/USDC sanity range for this current paper-live pool.
if rows < 100:
    print("[fatal] too few rows", file=sys.stderr)
    sys.exit(3)

if not (0.001 <= price_min <= price_max <= 1000):
    print("[fatal] absurd price scale", file=sys.stderr)
    sys.exit(4)

if not (1 <= input_sum <= 100_000_000):
    print("[fatal] absurd input_usd_sum", file=sys.stderr)
    sys.exit(5)

print("[ok] sanity pass")
