Skip to content

pecos-neo silently discards injected non-Clifford noise gates when no rotation executor is configured #437

Description

@ciaranra

When a noise channel injects a non-Clifford gate and the runner has no rotation executor, the gate is dropped without any diagnostic.

// exp/pecos-neo/src/runner.rs:2312-2318
// Non-Clifford gates: delegate to rotation executor
other => {
    if let Some(executor) = self.rotation_executor {
        executor(sim, GateId::from(other), gate.angles.as_slice(), qubits);
    }
    // If no rotation executor, silently skip (noise channel injected
    // a gate the simulator cant handle).
}

The most direct way to hit this is coherent idle dephasing: IdleChannel in coherent mode
emits RZ(angle), so a runner built without rotation support drops every coherent dephasing
event. The configured noise model reports itself as coherent, the run succeeds, and the
results contain no coherent contribution at all.

Impact: results are quieter than the configured noise model, with no signal that anything was
discarded. A user cannot distinguish "coherent dephasing had little effect" from "coherent
dephasing was never applied".

Suggested direction: fail loudly at configuration time when a noise model can emit gates the
selected simulator cannot execute, or at minimum surface a diagnostic on the first discarded
gate. The comment already acknowledges the situation is anomalous; the code should not treat
it as routine.

Related: #436 covers an unconditional version of the same class of problem in the importance
runner.

Found while reviewing after-2q idle noise in exp/pecos-neo; not addressed there because it
is independent of that change.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingrustPull requests that update rust codeseverity:highBroken functionality or loud failure in a supported path

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions