2 """Validation: exact-regime workflow baseline. 4 Builds the phase-level workflow-scale gate from the canonical exact-regime 5 workflow matrix while keeping the dedicated optimization trace out of scope 6 until the trace-anchor layer. 8 The resulting bundle is intentionally a thin validation-evidence layer: 9 - it freezes the mandatory 4 / 6 / 8 / 10 workflow inventory, 10 - it validates stable workflow case identity and parameter-set coverage, 11 - it preserves exactness, backend attribution, and unsupported-free completion, 12 - and it makes incomplete or partial workflow evidence fail explicitly. 15 python benchmarks/density_matrix/validation_evidence/workflow_baseline_validation.py 18 from __future__
import annotations
23 from collections
import Counter, defaultdict
24 from pathlib
import Path
26 REPO_ROOT = Path(__file__).resolve().parents[3]
27 if str(REPO_ROOT)
not in sys.path:
28 sys.path.insert(0, str(REPO_ROOT))
30 from benchmarks.density_matrix.workflow_evidence.exact_density_vqe_validation
import (
33 EXACT_REGIME_PARAMETER_SET_COUNT,
34 EXACT_REGIME_WORKFLOW_QUBITS,
35 build_software_metadata,
36 build_exact_regime_threshold_metadata,
37 build_exact_regime_workflow_bundle,
38 run_exact_regime_workflow_matrix,
40 from benchmarks.density_matrix.noise_support.required_local_noise_micro_validation
import (
41 REQUIRED_LOCAL_NOISE_MODELS,
43 from benchmarks.density_matrix.noise_support.support_tiers
import (
44 SUPPORT_TIER_VOCABULARY,
45 build_support_tier_summary,
48 SUITE_NAME =
"workflow_baseline_validation" 49 ARTIFACT_FILENAME =
"workflow_baseline_bundle.json" 50 DEFAULT_OUTPUT_DIR = (
51 REPO_ROOT /
"benchmarks" /
"density_matrix" /
"artifacts" /
"validation_evidence" 53 ARTIFACT_CORE_FIELDS = (
68 *, qubit_sizes=EXACT_REGIME_WORKFLOW_QUBITS, parameter_set_count=EXACT_REGIME_PARAMETER_SET_COUNT
70 parameter_set_ids = [f
"set_{idx:02d}" for idx
in range(parameter_set_count)]
71 mandatory_case_names = [
72 f
"exact_regime_{qbit_num}q_{parameter_set_id}" 73 for qbit_num
in qubit_sizes
74 for parameter_set_id
in parameter_set_ids
77 "mandatory_workflow_qubits": list(qubit_sizes),
78 "fixed_parameter_sets_per_size": parameter_set_count,
79 "mandatory_parameter_set_ids": parameter_set_ids,
80 "mandatory_case_names": mandatory_case_names,
81 "required_gate_families": [
"U3",
"CNOT"],
82 "required_local_noise_models": list(REQUIRED_LOCAL_NOISE_MODELS),
83 "support_tier_vocabulary": list(SUPPORT_TIER_VOCABULARY),
84 "required_bundle_sources": [
"exact_regime_workflow"],
85 "required_pass_rate": 1.0,
98 "absolute_energy_error",
100 "density_valid_pass",
103 "bridge_supported_pass",
106 "counts_toward_mandatory_baseline",
108 missing_fields = [field
for field
in required_fields
if field
not in case]
111 "Workflow-baseline case is missing required fields: {}".format(
112 ", ".join(missing_fields)
120 qubit_sizes=EXACT_REGIME_WORKFLOW_QUBITS,
121 parameter_set_count: int = EXACT_REGIME_PARAMETER_SET_COUNT,
123 observed_case_names = [case[
"case_name"]
for case
in cases]
124 case_name_counts = Counter(observed_case_names)
125 duplicate_case_names = sorted(
126 case_name
for case_name, count
in case_name_counts.items()
if count > 1
129 expected_parameter_set_ids = [f
"set_{idx:02d}" for idx
in range(parameter_set_count)]
130 expected_case_names = {
131 f
"exact_regime_{qbit_num}q_{parameter_set_id}" 132 for qbit_num
in qubit_sizes
133 for parameter_set_id
in expected_parameter_set_ids
135 observed_case_name_set = set(observed_case_names)
136 missing_mandatory_case_names = sorted(expected_case_names - observed_case_name_set)
137 unexpected_case_names = sorted(observed_case_name_set - expected_case_names)
139 parameter_sets_per_qbit = defaultdict(list)
141 parameter_sets_per_qbit[case[
"qbit_num"]].append(case[
"parameter_set_id"])
143 missing_parameter_set_ids_by_qbit = {}
144 duplicate_parameter_set_ids_by_qbit = {}
146 for qbit_num
in qubit_sizes:
147 observed_ids = parameter_sets_per_qbit.get(qbit_num, [])
148 counts = Counter(observed_ids)
149 duplicate_ids = sorted(
151 for parameter_set_id, count
in counts.items()
154 missing_ids = sorted(set(expected_parameter_set_ids) - set(observed_ids))
155 duplicate_parameter_set_ids_by_qbit[str(qbit_num)] = duplicate_ids
156 missing_parameter_set_ids_by_qbit[str(qbit_num)] = missing_ids
157 cases_per_qbit[str(qbit_num)] = len(observed_ids)
159 stable_case_ids_present = (
160 not missing_mandatory_case_names
161 and not duplicate_case_names
162 and not unexpected_case_names
163 and len(observed_case_names) == len(expected_case_names)
165 stable_parameter_set_ids_present = all(
166 not missing_parameter_set_ids_by_qbit[str(qbit_num)]
167 and not duplicate_parameter_set_ids_by_qbit[str(qbit_num)]
168 for qbit_num
in qubit_sizes
172 "observed_case_names": observed_case_names,
173 "missing_mandatory_case_names": missing_mandatory_case_names,
174 "duplicate_case_names": duplicate_case_names,
175 "unexpected_case_names": unexpected_case_names,
176 "stable_case_ids_present": stable_case_ids_present,
177 "cases_per_qbit": cases_per_qbit,
178 "missing_parameter_set_ids_by_qbit": missing_parameter_set_ids_by_qbit,
179 "duplicate_parameter_set_ids_by_qbit": duplicate_parameter_set_ids_by_qbit,
180 "stable_parameter_set_ids_present": stable_parameter_set_ids_present,
185 exact_regime_workflow_bundle,
188 qubit_sizes=EXACT_REGIME_WORKFLOW_QUBITS,
189 parameter_set_count: int = EXACT_REGIME_PARAMETER_SET_COUNT,
191 cases = [dict(case)
for case
in workflow_results]
197 cases, qubit_sizes=qubit_sizes, parameter_set_count=parameter_set_count
199 total_cases = len(cases)
200 passed_cases = sum(case[
"status"] ==
"pass" for case
in cases)
201 unsupported_cases = sum(case[
"status"] ==
"unsupported" for case
in cases)
202 required_pass_rate = support_tier_summary[
"required_pass_rate"]
203 bridge_supported_cases = sum(
204 case.get(
"bridge_supported_pass",
False)
for case
in cases
206 documented_10q_anchor_required = 10
in qubit_sizes
207 documented_10q_anchor_present = any(case[
"qbit_num"] == 10
for case
in cases)
208 all_cases_required = all(case[
"support_tier"] ==
"required" for case
in cases)
209 all_cases_mandatory = all(
210 case[
"counts_toward_mandatory_baseline"]
for case
in cases
212 workflow_baseline_completed =
bool(
213 exact_regime_workflow_bundle[
"status"] ==
"pass" 214 and case_identity[
"stable_case_ids_present"]
215 and case_identity[
"stable_parameter_set_ids_present"]
216 and all_cases_required
217 and all_cases_mandatory
218 and support_tier_summary[
"mandatory_baseline_completed"]
219 and unsupported_cases == 0
220 and bridge_supported_cases == total_cases
222 not documented_10q_anchor_required
or documented_10q_anchor_present
227 "suite_name": SUITE_NAME,
228 "status":
"pass" if workflow_baseline_completed
else "fail",
229 "backend": PRIMARY_BACKEND,
230 "reference_backend": REFERENCE_BACKEND,
232 qubit_sizes=qubit_sizes, parameter_set_count=parameter_set_count
235 qubit_sizes=qubit_sizes, parameter_set_count=parameter_set_count
239 "total_cases": total_cases,
240 "passed_cases": passed_cases,
241 "failed_cases": total_cases - passed_cases,
242 "unsupported_cases": unsupported_cases,
243 "unsupported_status_cases": unsupported_cases,
244 "bridge_supported_cases": bridge_supported_cases,
245 "required_cases": support_tier_summary[
"required_cases"],
246 "required_passed_cases": support_tier_summary[
"required_passed_cases"],
247 "required_pass_rate": required_pass_rate,
248 "mandatory_baseline_case_count": support_tier_summary[
249 "mandatory_baseline_case_count" 251 "mandatory_baseline_passed_cases": support_tier_summary[
252 "mandatory_baseline_passed_cases" 254 "mandatory_baseline_completed": support_tier_summary[
255 "mandatory_baseline_completed" 257 "optional_cases_count_toward_mandatory_baseline": support_tier_summary[
258 "optional_cases_count_toward_mandatory_baseline" 260 "required_workflow_qubits": list(qubit_sizes),
261 "fixed_parameter_sets_per_size": parameter_set_count,
262 "documented_10q_anchor_required": documented_10q_anchor_required,
263 "documented_10q_anchor_present": documented_10q_anchor_present,
265 "all_cases_required": all_cases_required,
266 "all_cases_count_toward_mandatory_baseline": all_cases_mandatory,
267 "workflow_baseline_completed": workflow_baseline_completed,
269 "required_artifacts": {
270 "exact_regime_workflow_reference": {
271 "suite_name": exact_regime_workflow_bundle[
"suite_name"],
272 "status": exact_regime_workflow_bundle[
"status"],
273 "summary": exact_regime_workflow_bundle[
"summary"],
283 missing_fields = [field
for field
in ARTIFACT_CORE_FIELDS
if field
not in bundle]
286 "Workflow-baseline bundle is missing required fields: {}".format(
287 ", ".join(missing_fields)
294 output_path.parent.mkdir(parents=
True, exist_ok=
True)
295 output_path.write_text(
296 json.dumps(bundle, indent=2, sort_keys=
True) +
"\n", encoding=
"utf-8" 302 qubit_sizes=EXACT_REGIME_WORKFLOW_QUBITS,
303 parameter_set_count: int = EXACT_REGIME_PARAMETER_SET_COUNT,
307 qubit_sizes=qubit_sizes, parameter_set_count=parameter_set_count
311 qubit_sizes=qubit_sizes,
312 parameter_set_count=parameter_set_count,
316 exact_regime_workflow_bundle,
318 qubit_sizes=qubit_sizes,
319 parameter_set_count=parameter_set_count,
323 "{} [{}] required cases={}/{} stable_case_ids={} stable_parameter_sets={}".format(
324 bundle[
"suite_name"],
326 bundle[
"summary"][
"required_passed_cases"],
327 bundle[
"summary"][
"required_cases"],
328 bundle[
"summary"][
"stable_case_ids_present"],
329 bundle[
"summary"][
"stable_parameter_set_ids_present"],
332 return exact_regime_workflow_bundle, bundle
336 parser = argparse.ArgumentParser(description=__doc__)
340 default=DEFAULT_OUTPUT_DIR,
341 help=
"Directory for the workflow-baseline JSON artifact bundle.",
344 "--parameter-set-count",
346 default=EXACT_REGIME_PARAMETER_SET_COUNT,
347 help=
"Number of fixed parameter vectors per qubit size.",
353 default=list(EXACT_REGIME_WORKFLOW_QUBITS),
354 help=
"Workflow qubit sizes to include.",
359 help=
"Suppress progress output.",
361 return parser.parse_args()
367 qubit_sizes=tuple(args.qubit_sizes),
368 parameter_set_count=args.parameter_set_count,
369 verbose=
not args.quiet,
371 output_path = args.output_dir / ARTIFACT_FILENAME
374 "Wrote {} with status {} ({}/{})".format(
377 bundle[
"summary"][
"required_passed_cases"],
378 bundle[
"summary"][
"required_cases"],
381 if bundle[
"status"] !=
"pass":
385 if __name__ ==
"__main__":
def build_case_identity_summary
def build_artifact_bundle
def build_requirement_metadata(qubit_sizes=EXACT_REGIME_WORKFLOW_QUBITS, parameter_set_count=EXACT_REGIME_PARAMETER_SET_COUNT)
def validate_artifact_bundle(bundle)
def build_support_tier_summary(cases)
def run_exact_regime_workflow_matrix
def build_exact_regime_workflow_bundle
def write_artifact_bundle
def validate_case_payload(case)
def build_software_metadata()
def build_exact_regime_threshold_metadata