Skip to content

Validate Qiskit oracle skip gates against supported conversion behavior #37

@bachase

Description

@bachase

Problem or motivation

tests/python/utils_qiskit.py has a hand-maintained _SKIP_GATES set for annotations, noise operations, and gates that the Qiskit oracle intentionally ignores or does not support. There is no focused test that checks this skip list against the converter behavior.

That makes it easy for _SKIP_GATES to grow stale: a gate could become supported without leaving the skip list, or a newly handled gate could fail to round-trip through the converter and Clifft without being caught directly.

Proposed solution

Add a focused Python test around the Qiskit oracle helper.

Suggested shape:

  • Enumerate a small explicit list of supported representative Stim/Clifft gates that should not be skipped by utils_qiskit.stim_to_qiskit / related helpers.
  • Assert that each non-skipped representative converts through the Qiskit helper and produces a circuit that Clifft accepts.
  • Keep _SKIP_GATES as an explicit allow-list for annotations/noise/unsupported cases, but test that it does not accidentally include gates covered by the supported representative list.
  • Make failures actionable, e.g. name the gate that should be supported but was skipped or failed conversion.

Suggested acceptance criteria:

  • Add a test under tests/python/ that exercises _SKIP_GATES and supported conversion behavior.
  • The test covers the existing supported-gate families used by the Qiskit oracle, without trying to exhaustively fuzz every parameterization.
  • The test passes with uv run pytest tests/python/ -v.

Alternatives considered

An exhaustive test over every possible Qiskit/Stim gate spelling would be brittle and much larger than needed. A representative supported-gate list plus the existing oracle tests should be enough to catch stale skip-list mistakes while keeping this approachable as a first issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions