sources.md
176 lines · skills/qiskit/references/sources.md at 5f2bc03
Upstream Sources and Version Provenance
Raw lines 1 to 2Verification Snapshot
Reviewed 2026-10-01 using current official IBM Quantum documentation, tagged Qiskit source, released installed packages, and PyPI metadata. All skill and supporting files were reviewed. Hardware, account setup, and optional application workflows remain illustrative where stated.
PyPI versions observed:
| Distribution | Version | PyPI |
|---|---|---|
| Qiskit SDK | 2.5.2 | qiskit |
| Qiskit IBM Runtime | 0.50.0 | qiskit-ibm-runtime |
| Qiskit Aer | 0.17.2 | qiskit-aer |
| Qiskit Algorithms | 0.4.0 | qiskit-algorithms |
| Qiskit Nature | 0.8.0 | qiskit-nature |
| Qiskit Nature PySCF | 0.4.0 | qiskit-nature-pyscf |
| Qiskit Machine Learning | 0.9.1 | qiskit-machine-learning |
| Qiskit Optimization | 0.7.0 | qiskit-optimization |
The executable core baseline is Qiskit 2.5.2, Runtime 0.50.0, Aer 0.17.2, and Algorithms 0.4.0 on Python 3.13. The table also lists documentation-reviewed optional packages; it does not claim they were all installed together.
Raw lines 3 to 21Canonical Qiskit SDK Sources
- IBM Quantum documentation
- Qiskit quickstart
- Install Qiskit
- Qiskit SDK API reference
- Qiskit SDK release notes
- Qiskit 2.5 release notes
- Qiskit GitHub repository
- Qiskit GitHub releases
Use quantum.cloud.ibm.com/docs for current guides. Old qiskit.org/learn, qiskit.org/ecosystem/..., and legacy documentation URLs can be stale or redirect.
Core User Guides
Raw lines 35 to 36Circuits and quantum information
- Construct circuits
- Circuit library API
- Quantum information API
- QPY serialization API
- OpenQASM 2 API
- OpenQASM 3 API
Migration Sources
- Qiskit 2.0 migration guide
- Qiskit 1.0 feature changes
- Qiskit package-structure migration
- Migrate BackendV1 to BackendV2
- Migrate to V2 Runtime primitives
- Migrate Qiskit Pulse to fractional gates
- Migrate from IBM Quantum Platform Classic
Qiskit 2.0 removed qiskit.pulse, legacy instruction conditions, V1 reference primitive implementations, and several BackendV1-era interfaces. Runtime V1 primitive support was removed earlier. Read both SDK and Runtime migration guides because they version independently.
IBM Quantum Runtime Sources
- Qiskit IBM Runtime repository
- Runtime client release notes
- QiskitRuntimeService API
- Client-side Sampler API
- Client-side Estimator API
- Client-side option models
- Set up IBM Quantum Platform
- Runtime execution modes
- Run jobs in a batch
- Run jobs in a session
- Runtime local testing mode
- Sampler options
- Estimator options
- Error mitigation and suppression
Runtime 0.50 deprecates top-level SamplerV2/EstimatorV2 in favor of the client-side modules above. V2 PUBs, mode=..., and explicit target compilation remain relevant. Options moved to Pydantic options_models in 0.49; use model_dump().
Simulation
The Aer documentation landing page can lag the newest patch label. Use PyPI and GitHub releases for the install pin, then use versioned API behavior from the installed package.
Raw lines 95 to 102Application-Package Documentation
- Qiskit Algorithms 0.4
- Qiskit Nature 0.8
- Qiskit Nature getting started
- Qiskit Machine Learning 0.9
- Qiskit Machine Learning migration guide
- Qiskit Optimization 0.7
- Qiskit Optimization migration guides
Application packages release independently. Check their requirements before changing the core Qiskit pin.
Raw lines 103 to 114Addon Documentation
- Qiskit addon: circuit cutting
- Qiskit addon: sample-based quantum diagonalization
- Qiskit addon: operator backpropagation
- Qiskit addon: multi-product formulas
- Qiskit addon: AQC-Tensor
- IBM guide to Qiskit addons
Addon versions observed on PyPI:
| Distribution | Version |
|---|---|
qiskit-addon-cutting | 0.10.0 |
qiskit-addon-sqd | 0.13.1 |
qiskit-addon-obp | 0.3.0 |
qiskit-addon-mpf | 0.3.0 |
qiskit-addon-aqc-tensor | 0.3.1 |
Executed coverage and discrepancies
The repository suite executes the three script CLIs, package inspection, analytic two-qubit sampling/expectations, fake Manila inspection, multi-register correlations and order, parameter broadcasting, measurement permutations, forced nontrivial observable layout, QPY round trips, and positive-precision synthetic noise. It also executes the Runtime 0.50 client-side Sampler/Estimator on Aer, a deterministic readout-noise model, option finalization, rejected unequal shots/input boxes, tiny VQE against dense diagonalization, and text/Matplotlib/Bloch/histogram exports. A separate isolated Optimization 0.7.0 smoke run executed the corrected two-variable QAOA example and returned [0, 1], objective 1, SUCCESS.
- SamplerPubResult source, 2.5.2 delegates to BitArray source. Runtime confirms the first named register occupies the least-significant bits. Its docstring incorrectly describes left-to-right displayed concatenation.
- StatevectorEstimator API and released implementation: unitary zero-precision results are exact, positive precision adds Gaussian noise, and
stdsstay zero. - Runtime Sampler preparation source rejects input boxes even when twirling is enabled; the current API page documents a weaker restriction. Executed both branches.
- Fractional-gate guide contains a
least_busy(fractional_gates=True)typo. The service API and released signature useuse_fractional_gates. - Optimization 0.7 migration requires its own QAOA/optimizer/result types for
MinimumEigenOptimizer; the corrected example was run separately. - Qiskit Dynamics was archived October 31, 2025 and is no longer maintained; removed its unqualified recommendation as a current pulse replacement.
Statevector.to_bloch()does not exist in 2.5.2. Pauli X/Y/Z expectations give the validated single-qubit Bloch vector.
No cloud credentials were loaded or saved, no account/backend queries authenticated, and no remote jobs (including server dry runs), cancellations, sessions, or batches were executed. Local Aer does not validate IBM scheduling, cost, access, or hardware mitigation. Optional Nature/PySCF, Machine Learning, addons, QASM3 import, TeX, notebook, and backend-map examples are documentation-checked and illustrative.
Raw lines 134 to 147IBM HTTP contract behind the SDK
Use the SDK for request serialization and result decoding. These contracts were reviewed against REST introduction, OpenAPI, and Runtime 0.50 source. They were not authenticated end-to-end tests. A direct unauthenticated Python OpenAPI download returned HTTP 403; the browser research tool could read the schema. HTTP status alone was not used to infer a contract.
The standard public base is https://quantum.cloud.ibm.com/api/v1 for us-east, or https://eu-de.quantum.cloud.ibm.com/api/v1 for eu-de. The instance CRN drives region selection. Runtime 0.50 sends IBM-API-Version: 2026-04-15; some REST page snippets still show an older header. IBM IAM exchanges the API key at POST https://iam.cloud.ibm.com/identity/token using a form body (grant_type=urn:ibm:params:oauth:grant-type:apikey, apikey). Quantum requests use Authorization: Bearer ... and Service-CRN, plus the version header. Let the SDK manage expiry; never log headers.
| SDK behavior | HTTP contract checked in schema/released adapter |
|---|---|
| List and inspect backends | GET /backends returns a devices array; no cursor pagination. GET /backends/{name}/configuration, /properties, /status return backend data. Calibration queries accept calibration_id; properties also use updated_before. Status adapter translates raw state, status, length_queue to operational, status_msg, pending_jobs. |
| Submit a primitive | POST /jobs with SDK-encoded program_id, params, backend and optional session/tags/cost fields; response contains id. New client-side primitives submit Executor programs. Do not handcraft a legacy sampler body for them. |
| Retrieve and decode | GET /jobs/{id} (optional exclude_params) returns job information; GET /jobs/{id}/results returns encoded result text which the SDK decodes using the job's program/semantic role. GET /jobs/{id}/metrics backs usage/metadata. |
| List jobs | GET /jobs uses limit (1–200), offset, backend/program/session/tags/status/time filters. SDK skip maps to offset. The SDK handles paging; this is distinct from cursor-based /workloads. |
| Cancel a job | POST /jobs/{id}/cancel; a remote mutation, never a connectivity test. |
| Batch/session lifecycle | POST /sessions with backend, max_ttl, and mode (batch or dedicated); returns id. GET /sessions/{id} reads state. Context exit closes via PATCH /sessions/{id} with accepting_jobs=false, allowing accepted work to finish. DELETE /sessions/{id}/close cancels queued work and differs from graceful close. |
SDK account discovery may additionally use IBM Cloud IAM, Global Search, Global Catalog, and Resource Controller APIs; this skill delegates that to the released SDK rather than constructing those requests. Instance names and permissions were source-reviewed, not tested against a user account.
Raw lines 148 to 164How to Refresh This Skill
- Query PyPI JSON metadata for every pinned distribution.
- Compare PyPI with GitHub releases and official release notes.
- Read Qiskit major/minor migration and deprecation sections.
- Read Runtime release notes independently.
- Recheck valid channel names, account setup, plan restrictions, and option compatibility.
- Run all bundled scripts in an isolated environment.
- Execute relevant core/application/visualization snippets; mark every unexecuted optional workflow illustrative.
- Update the verification date and version tables.
- Increment
metadata.versioninSKILL.md. - Run
uv run skills-ref validate skills/qiskitand the local security scan.