#!/usr/bin/env python3
"""Standalone Afforestation reference recomputation (Python stdlib only).

Afforestation Stewardship Theorem: n* = (2*a*sigma/(3*delta_mu))^3, barrier = 4*(a*sigma)^3/(27*delta_mu^2),
seeding efficiency e = C*(3*delta_mu/(2*a*sigma))^3, and e(sigma/2) = 8*e.
"""
import argparse, json
from pathlib import Path

def plan(sigma, delta_mu, a=1.0, c=1.0):
    if sigma <= 0 or delta_mu <= 0 or a <= 0 or c <= 0:
        raise ValueError("sigma, delta_mu, shape_factor and establishment_constant must be > 0")
    e = c * (3 * delta_mu / (2 * a * sigma)) ** 3
    return {"barrier_height": f"{4 * (a * sigma) ** 3 / (27 * delta_mu ** 2):.9f}", "critical_nucleus_n_star": f"{(2 * a * sigma / (3 * delta_mu)) ** 3:.9f}", "efficiency_if_edge_hostility_halved": f"{8 * e:.9f}", "seeding_efficiency": f"{e:.9f}"}

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":"afforestation","publication_doi":i["publication_binding"]["doi"],"results":[{"case_id":c["case_id"],**plan(float(c["sigma"]),float(c["delta_mu"]),float(c.get("shape_factor",1.0)),float(c.get("establishment_constant",1.0)))} for c in i["cases"]],"schema_version":"VRS-RECOMPUTE-1","scope":"deterministic runtime-kernel reproduction; not empirical calibration or proof of Python-Lean code equivalence"}
    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())
