#!/usr/bin/env python3
"""Standalone Stewardship Tempo reference recomputation (Python stdlib only)."""
import argparse, json, math
from pathlib import Path

def evaluate(A,B,tau):
    if A<=0 or B<=0 or tau<=0: raise ValueError("positive inputs required")
    optimum=math.sqrt(A/B); floor=2*math.sqrt(A*B); cost=A/tau+B*tau; u=tau/optimum
    return {"at_optimum":math.isclose(tau,optimum,rel_tol=1e-12,abs_tol=1e-15),"cadence_cost":f"{cost:.12f}","haste_neglect_tax":f"{math.cosh(math.log(u)):.12f}","normalized_cost":f"{cost/floor:.12f}","optimal_cadence":f"{optimum:.12f}","tempo_floor":f"{floor:.12f}"}
def main():
    p=argparse.ArgumentParser(); p.add_argument("--inputs",type=Path,required=True); p.add_argument("--output",type=Path,required=True); a=p.parse_args(); i=json.loads(a.inputs.read_text())
    out={"module_id":"tempo","publication_doi":i["publication_binding"]["doi"],"results":[{"case_id":c["case_id"],**evaluate(float(c["haste_cost"]),float(c["neglect_cost"]),float(c["cadence"]))} for c in i["cases"]],"schema_version":"VRS-RECOMPUTE-1","scope":"deterministic runtime-kernel reproduction of the stated tempo formulas; not empirical calibration"}
    a.output.write_text(json.dumps(out,indent=2,sort_keys=True)+"\n"); print(json.dumps({"status":"PASS","output":str(a.output)},sort_keys=True)); return 0
if __name__ == "__main__": raise SystemExit(main())
