2 """Validation: Phase 3 planner-calibration integrated bundle (shared artifact). 4 Packages the selected supported claim, comparison baselines, and all calibrated 5 case records into one stable machine-reviewable bundle for later validation, 6 benchmark, and publication consumers. 9 python benchmarks/density_matrix/planner_calibration/calibration_bundle_validation.py 12 from __future__
import annotations
17 from pathlib
import Path
19 REPO_ROOT = Path(__file__).resolve().parents[3]
20 if str(REPO_ROOT)
not in sys.path:
21 sys.path.insert(0, str(REPO_ROOT))
23 from benchmarks.density_matrix.planner_calibration.bundle
import (
24 PLANNER_CALIBRATION_CALIBRATION_BUNDLE_SCHEMA_VERSION,
25 build_planner_calibration_calibration_bundle_payload,
27 from benchmarks.density_matrix.planner_surface.common
import build_software_metadata
29 SUITE_NAME =
"phase3_planner_calibration_calibration_bundle" 30 ARTIFACT_FILENAME =
"calibration_bundle.json" 31 DEFAULT_OUTPUT_DIR = (
36 /
"planner_calibration" 37 /
"calibration_bundle" 39 ARTIFACT_CORE_FIELDS = (
42 "calibration_bundle_schema_version",
45 "candidate_summaries",
53 "suite_name": SUITE_NAME,
55 if payload[
"summary"][
"supported_claim_cases"] > 0
56 and payload[
"summary"][
"comparison_cases"] > 0
57 and payload[
"summary"][
"counted_calibration_cases"] == payload[
"summary"][
"total_cases"]
59 "calibration_bundle_schema_version": PLANNER_CALIBRATION_CALIBRATION_BUNDLE_SCHEMA_VERSION,
61 "summary": payload[
"summary"],
62 "claim_selection_rule": payload[
"claim_selection_rule"],
63 "selected_candidate": payload[
"selected_candidate"],
64 "comparison_candidate_ids": payload[
"comparison_candidate_ids"],
65 "candidate_summaries": payload[
"candidate_summaries"],
66 "cases": payload[
"cases"],
68 missing = [field
for field
in ARTIFACT_CORE_FIELDS
if field
not in bundle]
71 "Integrated calibration bundle missing required fields: {}".format(
79 output_dir.mkdir(parents=
True, exist_ok=
True)
80 output_path = output_dir / ARTIFACT_FILENAME
81 output_path.write_text(json.dumps(bundle, indent=2, sort_keys=
True) +
"\n")
85 def main(argv: list[str] |
None =
None) -> int:
86 parser = argparse.ArgumentParser(description=__doc__)
90 default=DEFAULT_OUTPUT_DIR,
91 help=
"Directory to write the integrated calibration bundle into.",
96 help=
"Suppress per-case console output.",
98 args = parser.parse_args(argv)
105 "selected_candidate={candidate_id}, cases={total_cases}".format(
106 candidate_id=bundle[
"selected_candidate"][
"candidate_id"],
107 total_cases=bundle[
"summary"][
"total_cases"],
110 print(
"Wrote {}".format(output_path))
112 return 0
if bundle[
"status"] ==
"pass" else 1
115 if __name__ ==
"__main__":
116 raise SystemExit(
main())
def build_planner_calibration_calibration_bundle_payload()
def write_artifact_bundle
def build_artifact_bundle()
def build_software_metadata()