SHOT VALIDATOR

Automatically detect and discard corrupted quantum measurements in real time

HOW SHOT VALIDATION WORKS

1. REDUNDANT COPIES

Each stabilizer measurement is repeated f times per round. Identical copies should produce identical results.

2. AGREEMENT CHECK

If all f copies agree on every stabilizer in every round, the shot is clean. Any disagreement flags corruption.

3. GATE OR DISCARD

Agreeing shots pass through. Disagreeing shots are blocked. Result: lower error rate on surviving shots.

INTERACTIVE SIMULATION

1K8K
4 stabilizers × 4 rounds × 3 copies = 48 measurements/shot

HEADLINE RESULT: d=7, r=8, f=3

0.788%

Raw error rate

0.000%

Gated error rate

5.0%

Shots survived

63 → 0

Errors eliminated

The hardest QEC configuration: distance-7 repetition code, 8 syndrome rounds, 3 copies. All 63 logical errors landed in the 95% of shots flagged as corrupted. The 5% that passed had zero errors.

HARDWARE VALIDATION

IBM Fez, Feb 11, 2026 (job d66dmb0qbmes739e285g). 27 QEC configurations, 8,000 shots each.

27

Configs tested

216K

Total shots

74%

Mean error reduction

6/9

100% error capture

IBM Fez

Production QPU

AGREEMENT RATE HEATMAP

Fraction of shots where all 3 syndrome copies agree (f=3). Green (>80%) → yellow (40-80%) → red (<40%).

r = 1r = 4r = 8
d = 392.9%78.8%68.5%
d = 577.4%55.9%22.3%
d = 762.2%6.8%5.0%

Agreement drops with increasing distance and rounds — more stabilizers means more opportunity for disagreement. The d=7, r=8 cell (5.0%) is the hardest config.

FULL RESULTS — ALL CONFIGS WITH f > 1

f = 3 — 3 SYNDROME COPIES (STRONGEST FILTERING)

ConfigRaw LERGated LERAgree %ErrorsCapturedVerdict
d3, r=10.075%0.027%92.9%667%WIN
d3, r=40.038%0.032%78.8%333%WIN
d3, r=80.325%0.000%68.5%26100%WIN
d5, r=10.025%0.000%77.4%2100%WIN
d5, r=40.000%0.000%55.9%0clean
d5, r=80.050%0.056%22.3%475%CHECK
d7, r=10.025%0.000%62.2%2100%WIN
d7, r=40.325%0.000%6.8%26100%WIN
d7, r=80.788%0.000%5.0%63100%KILLER

f = 2 — 2 SYNDROME COPIES

ConfigRaw LERGated LERAgree %ErrorsCapturedVerdict
d3, r=10.000%0.000%97.2%0clean
d3, r=40.013%0.000%92.3%1100%WIN
d3, r=80.000%0.000%87.0%0clean
d5, r=10.000%0.000%94.8%0clean
d5, r=40.000%0.000%81.6%0clean
d5, r=80.000%0.000%67.8%0clean
d7, r=10.000%0.000%89.3%0clean
d7, r=40.000%0.000%65.0%0clean
d7, r=80.000%0.000%36.7%0KILLER

Raw LER = logical error rate without gating. Gated LER = error rate after discarding disagreeing shots. Captured = fraction of total errors found in blocked shots.

ERROR CAPTURE — WHERE DO ERRORS END UP?

d7, r=8, f=363 errors → all 63 in blocked shots (100%)
0
63 errors in 95% of shots (blocked)
d7, r=4, f=326 errors → all 26 in blocked shots (100%)
0
26 errors in 93% of shots
d3, r=8, f=326 errors → all 26 in blocked shots (100%)
0 errors in 68.5% of shots (clean)
26 errors
d5, r=1, f=32 errors → both in blocked shots (100%)
0 errors in 77.4% of shots (clean)
2 errors
Allowed (clean shots)
Blocked (errors concentrated here)

KEY FINDING

Across 27 hardware configurations on IBM Fez, shot quality gating eliminated 100% of logical errors in 6 out of 9 error-producing configs. Mean error reduction: 74.2%. The hardest config (d=7, r=8, f=3) had all 63 logical errors concentrated in the 95% of shots flagged as corrupted — zero errors in the 5% that passed.

SDK INTEGRATION

from qubitboost_sdk import ShotValidator, ValidationLayout

# Define your QEC layout
layout = ValidationLayout.for_repetition_code(
    distance=7, fan_out=3, n_rounds=8
)

# Create validator
validator = ShotValidator(layout, enabled=True)

# Score a batch of shots (bitstrings from hardware)
result = validator.weight_memory(memory, observable_fn=parity)

print(f"Agreement rate: {result.agreement_rate:.1%}")
print(f"Raw error rate: {result.expectation_raw:.4f}")
print(f"Gated error rate: {result.expectation_agree:.4f}")
print(f"Delta (corruption signal): {result.delta:.4f}")
print(f"Effective shots: {result.effective_shots}/{result.raw_shots}")

ShotValidator integrates with ExecutionMonitor for real-time event streaming and automated abort policies.

GUARANTEES

  • No circuit modifications — works on standard QEC outputs
  • Transparent: both raw and gated estimates always returned
  • Worst case: all shots pass (no data lost, no errors introduced)
  • Enabled/disabled toggle — passthrough mode for A/B comparison
  • Bias-aware: gated estimate is conditional, not claimed as unbiased

FAQ

Why do agreement rates drop with higher distance?

Higher distance means more stabilizers, and each must agree across all copies and rounds. A single disagreement anywhere flags the entire shot. This is by design — stricter filtering catches more corruption.

Is the gated estimate biased?

Yes. The gated (postselected) estimate is a conditional estimator, not an unbiased estimate of the raw expectation. If agreement probability correlates with the observable value, they will differ. The SDK always returns both estimates and the delta so the caller can make an informed decision.

What happens when agreement rate is very low (e.g. 5%)?

Most shots are discarded, but the surviving ones are error-free (in 6/9 cases). The low agreement rate itself is a corruption signal — it triggers the ExecutionMonitor's abort policy, recommending you stop the job and wait for hardware recalibration.