# QPU Predictive Simulator Frozen Protocol

## Scope

- protocol id: `qpu-predictive-simulator-v1-2026-05-28`
- frozen at: 2026-05-28
- purpose: QPU predictive simulator를 사후분석이 아니라 out-of-sample 검증으로 전환한다.
- important: validation QPU 결과를 본 뒤에는 아래 config를 바꾸지 않는다.

## Frozen Training Set

| job id | role |
| --- | --- |
| `d8a6rmop0eas73dpfntg` | post-hoc/training set |
| `d8a6tq9789is73945510` | post-hoc/training set |
| `d8a6tvdg7okc73epghh0` | post-hoc/training set |
| `d8aprj2vnmpc73bqvnag` | post-hoc/training set |

## Frozen Models

| model | role |
| --- | --- |
| `ideal_statevector` | evaluate on every selector case |
| `fixed_final_noise` | evaluate on every selector case |
| `mean_readout_only` | evaluate on every selector case |
| `hardware_error_proxy` | evaluate on every selector case |

## Frozen Config

| field | value |
| --- | ---: |
| `fixed_channel_probability` | `0.08` |
| `fixed_readout_error` | `0.04` |
| `hardware_gate_error_scale` | `2.0` |
| `hardware_max_uniform_mix` | `0.8` |
| `hardware_readout_scale` | `1.0` |
| `channel` | `depolarizing` |

## Primary Metrics

| metric | interpretation |
| --- | --- |
| `mean_total_variation_distance` | QPU counts distribution calibration |
| `mean_absolute_expected_cut_error` | QPU Max-Cut expected value calibration |
| `mean_absolute_success_probability_error` | optimal bitstring probability calibration |
| `expected_cut_winner_accuracy` | within-job selector winner prediction |

## Decision Rules

- Do not change frozen_config after seeing validation QPU results.
- Report distribution calibration and selector-winner prediction separately.
- Primary distribution metric is mean_total_variation_distance.
- Primary scalar-observable metrics are mean_absolute_expected_cut_error and mean_absolute_success_probability_error.
- Winner prediction is secondary until it improves out-of-sample.

## Planned Validation Jobs

| backend | graph | depth | shots | selectors |
| --- | --- | ---: | ---: | --- |
| ibm_kingston | square | 2 | 2048 | robust, noisy_expected, optimizer |
| ibm_marrakesh | square | 2 | 2048 | robust, noisy_expected, optimizer |

## Validation Commands

```bash
python examples/ra_qaoa_qpu_run.py --graph square --backend ibm_kingston --depth 2 --shots 2048 --grid 4
python examples/ra_qaoa_qpu_run.py --graph square --backend ibm_marrakesh --depth 2 --shots 2048 --grid 4
python examples/ra_qaoa_qpu_backend_compare.py
python examples/ra_qaoa_qpu_metadata_table.py
python examples/qpu_predictive_simulator_out_of_sample.py
```
