#!/usr/bin/env python3 from __future__ import annotations import argparse,json,sys from pathlib import Path from pnp_lab.integration_probe import probe_v110_source from pnp_lab.rebase_v110 import RebaseGateError p=argparse.ArgumentParser(description="Fail-closed v1.11 integration probe for exact signed-off v1.10 source") p.add_argument("source",type=Path,help="exact pnp-autonomous-lab-v1.10.zip or Git checkout at signed-off commit") p.add_argument("--out",type=Path) a=p.parse_args() try: report=probe_v110_source(a.source).to_dict() except Exception as exc: report={"accepted_base":False,"ready_for_exact_rebase":False,"can_stamp_v111_release":False,"error":f"{type(exc).__name__}: {exc}"} text=json.dumps(report,indent=2,sort_keys=True)+"\n" if a.out:a.out.parent.mkdir(parents=True,exist_ok=True);a.out.write_text(text,encoding="utf-8") print(text,end="") sys.exit(0 if report.get("ready_for_exact_rebase") else 2)