2 """Validation: Phase 3 planner-candidate audit surface. 4 Emits one auditable candidate surface for the current noisy planner by showing 5 that each supported planner candidate can build representative continuity, 6 microcase, and structured descriptor sets on the frozen Phase 3 workload 10 python benchmarks/density_matrix/planner_calibration/planner_candidate_audit_validation.py 13 from __future__
import annotations
18 from pathlib
import Path
20 REPO_ROOT = Path(__file__).resolve().parents[3]
21 if str(REPO_ROOT)
not in sys.path:
22 sys.path.insert(0, str(REPO_ROOT))
24 from benchmarks.density_matrix.planner_calibration.common
import (
25 PLANNER_CANDIDATE_SCHEMA_VERSION,
26 build_planner_candidates,
28 from benchmarks.density_matrix.planner_surface.common
import (
29 build_phase2_continuity_vqe,
30 build_software_metadata,
32 from benchmarks.density_matrix.planner_surface.workloads
import (
33 iter_microcase_descriptor_sets,
34 iter_structured_descriptor_sets,
36 from squander.partitioning.noisy_planner
import build_phase3_continuity_partition_descriptor_set
38 SUITE_NAME =
"phase3_planner_calibration_candidate_audit" 39 ARTIFACT_FILENAME =
"planner_candidate_audit_bundle.json" 40 DEFAULT_OUTPUT_DIR = (
45 /
"planner_calibration" 46 /
"planner_candidate_audit" 48 ARTIFACT_CORE_FIELDS = (
51 "candidate_schema_version",
56 REQUIRED_CASE_KINDS = (
"continuity",
"microcase",
"structured_family")
60 payload = descriptor_set.to_dict()
62 "case_kind": case_kind,
63 "workload_id": payload[
"workload_id"],
64 "qbit_num": payload[
"qbit_num"],
65 "max_partition_qubits": payload[
"max_partition_qubits"],
66 "partition_count": payload[
"partition_count"],
67 "descriptor_member_count": payload[
"descriptor_member_count"],
68 "max_partition_span": payload[
"max_partition_span"],
69 "partition_member_counts": payload[
"partition_member_counts"],
70 "family_name": metadata.get(
"family_name"),
71 "noise_pattern": metadata.get(
"noise_pattern"),
72 "source_type": payload[
"source_type"],
81 workload_id=f
"phase2_xxz_hea_q{qbit_num}_continuity",
82 max_partition_qubits=candidate.max_partition_qubits,
86 {
"topology": topology},
92 metadata, descriptor_set = next(
95 max_partition_qubits=candidate.max_partition_qubits
103 metadata, descriptor_set = next(
106 max_partition_qubits=candidate.max_partition_qubits
114 representative_cases = [
119 supported_case_kinds = [case[
"case_kind"]
for case
in representative_cases]
120 representative_workload_ids = [case[
"workload_id"]
for case
in representative_cases]
121 candidate_payload = candidate.to_dict()
124 "supported_case_kinds": supported_case_kinds,
125 "representative_workload_ids": representative_workload_ids,
126 "representative_cases": representative_cases,
127 "candidate_surface_pass": (
128 candidate_payload[
"schema_version"] == PLANNER_CANDIDATE_SCHEMA_VERSION
129 and supported_case_kinds == list(REQUIRED_CASE_KINDS)
130 and len(set(representative_workload_ids)) == len(REQUIRED_CASE_KINDS)
132 case[
"max_partition_qubits"] == candidate.max_partition_qubits
133 for case
in representative_cases
135 and all(case[
"partition_count"] > 0
for case
in representative_cases)
145 candidate_ids = [case[
"candidate_id"]
for case
in cases]
146 candidate_passes = sum(case[
"candidate_surface_pass"]
for case
in cases)
148 "suite_name": SUITE_NAME,
150 if candidate_passes == len(cases)
and len(set(candidate_ids)) == len(candidate_ids)
152 "candidate_schema_version": PLANNER_CANDIDATE_SCHEMA_VERSION,
155 "total_candidates": len(cases),
156 "candidate_passes": candidate_passes,
157 "candidate_ids": candidate_ids,
158 "planner_families": sorted({case[
"planner_family"]
for case
in cases}),
159 "max_partition_qubits_values": [
160 case[
"max_partition_qubits"]
for case
in cases
162 "representative_case_kinds": list(REQUIRED_CASE_KINDS),
166 missing = [field
for field
in ARTIFACT_CORE_FIELDS
if field
not in bundle]
169 "Planner-candidate audit bundle missing required fields: {}".format(
177 output_dir.mkdir(parents=
True, exist_ok=
True)
178 output_path = output_dir / ARTIFACT_FILENAME
179 output_path.write_text(json.dumps(bundle, indent=2, sort_keys=
True) +
"\n")
183 def main(argv: list[str] |
None =
None) -> int:
184 parser = argparse.ArgumentParser(description=__doc__)
188 default=DEFAULT_OUTPUT_DIR,
189 help=
"Directory to write the planner-candidate audit bundle into.",
194 help=
"Suppress per-case console output.",
196 args = parser.parse_args(argv)
205 "{candidate_id}: max_partition_qubits={max_partition_qubits}, cases={supported_case_kinds}".format(
209 print(
"Wrote {}".format(output_path))
211 return 0
if bundle[
"status"] ==
"pass" else 1
214 if __name__ ==
"__main__":
215 raise SystemExit(
main())
def build_phase2_continuity_vqe
def write_artifact_bundle
def build_artifact_bundle
def iter_structured_descriptor_sets
def build_phase3_continuity_partition_descriptor_set
def build_software_metadata()
def _representative_continuity_case(candidate)
def _candidate_case(candidate)
def build_planner_candidates
def _representative_structured_case(candidate)
def iter_microcase_descriptor_sets
def _representative_microcase(candidate)