Skip to content

Commit a713f79

Browse files
committed
Implement 2025/2026 QEC strategic roadmap in v0.5.7 and align all versioning
1 parent 1b69b5c commit a713f79

17 files changed

Lines changed: 1172 additions & 295 deletions

‎CHANGELOG.md‎

480 Bytes
Binary file not shown.

‎CITATION.cff‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ authors:
66
- family-names: Lessard
77
given-names: Guillaume
88
affiliation: iD01t Productions
9-
version: 0.5.6
10-
date-released: 2026-06-28
9+
version: 0.5.7
10+
date-released: 2026-06-29
1111
url: https://www.qector.store
1212
repository-code: https://github.com/GuillaumeLessard/qector-decoder
1313
identifiers:

‎Cargo.lock‎

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "qector_decoder_v3"
3-
version = "0.5.6"
3+
version = "0.5.7"
44
edition = "2021"
55
authors = ["Guillaume Lessard / iD01t Productions <guiliguili2705@gmail.com>"]
66
description = "Source-available Rust QEC decoder core (Union-Find, exact polynomial MWPM/Blossom, Sparse Blossom, BP-OSD) with CPU/CUDA/OpenCL batch decoding and PyO3 bindings"

‎INSTALL.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Installation Guide — QECTOR Decoder v3 (v0.5.6)
1+
# Installation Guide — QECTOR Decoder v3 (v0.5.7)
22

33
The fastest path is a direct PyPI wheel install. Source builds are only needed
44
when you want to develop against the Rust core or target a platform without a
@@ -65,7 +65,7 @@ $env:PYO3_PYTHON = (Resolve-Path .\.venv\Scripts\python.exe).Path
6565
Expected output ending:
6666

6767
```
68-
Installed qector-decoder-v3-0.5.6
68+
Installed qector-decoder-v3-0.5.7
6969
QECTOR OK
7070
```
7171

‎PYPI_README.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# QECTOR Decoder v3
22

3-
**Python and Rust quantum error correction decoder package — v0.5.6**
3+
**Python and Rust quantum error correction decoder package — v0.5.7**
44

55
QECTOR Decoder v3 helps researchers and developers build and benchmark quantum error correction decoder workflows from Python, with native Rust performance paths, GPU acceleration, and artifact-backed reproducible evidence.
66

@@ -248,6 +248,7 @@ LookupTableDecoder is the fastest single-shot decoder on rep d=5 (precomputed ta
248248

249249
| Version | Date | Key change |
250250
|---|---|---|
251+
| **0.5.7** | 2026-06-29 | Advanced strategic QEC decoders: Fusion/Sparse Blossom, EBP, Restart Belief, KAT/QCT, Astra GNN, GPU pipelines |
251252
| **0.5.6** | 2026-06-28 | `stim_compat` doc fix: `stim_circuit_to_check_matrix` documented as parallel impl, not alias |
252253
| 0.5.5 | 2026-06-28 | `PredecodedDecoder.batch_decode()` wheel sync; PYTHONPATH guard; 775 tests pass |
253254
| 0.5.4 | 2026-06-27 | `NeuralPredecoder.train()` clear error on numpy>=2.0; 125/125 validation |

‎README.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[![GitHub stars](https://img.shields.io/github/stars/GuillaumeLessard/qector-decoder.svg)](https://github.com/GuillaumeLessard/qector-decoder/stargazers)
77
[![GitHub last commit](https://img.shields.io/github/last-commit/GuillaumeLessard/qector-decoder)](https://github.com/GuillaumeLessard/qector-decoder/commits/main)
88

9-
Source-available Rust/Python QEC decoder package — v0.5.6
9+
Source-available Rust/Python QEC decoder package — v0.5.7
1010

1111
PyMatching-compatible MWPM validation, belief-matching accuracy mode, BP-OSD for LDPC/qLDPC, CPU/GPU batch decoding, Stim/Sinter integration, and artifact-backed benchmark evidence.
1212

@@ -216,6 +216,7 @@ Full artifact: `benchmark_results/results_v053_retest.json`
216216

217217
| Version | Date | Key change |
218218
|---|---|---|
219+
| 0.5.7 | 2026-06-29 | Advanced strategic QEC decoders: Fusion/Sparse Blossom, EBP, Restart Belief, KAT/QCT, Astra GNN, GPU pipelines |
219220
| 0.5.6 | 2026-06-28 | `stim_compat` doc fix: `stim_circuit_to_check_matrix` is parallel impl, not alias |
220221
| 0.5.5 | 2026-06-28 | `PredecodedDecoder.batch_decode()` wheel fix; PYTHONPATH guard; 775 tests pass |
221222
| 0.5.4 | 2026-06-27 | `NeuralPredecoder.train()` clear error on numpy>=2.0; 125/125 validation |

‎RELEASE_NOTES.md‎

1.27 KB
Binary file not shown.

‎codemeta.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"@context":"https://doi.org/10.5063/schema/codemeta-2.0","@type":"SoftwareSourceCode","name":"QECTOR Decoder v3","version":"0.5.6","description":"Source-available Rust and Python quantum error correction decoder package for QEC research, PyMatching-compatible validation, belief-matching, BP-OSD and qLDPC workflows, CPU/GPU batch decoding, and reproducible benchmark evidence.","codeRepository":"https://github.com/GuillaumeLessard/qector-decoder","url":"https://www.qector.store","downloadUrl":"https://pypi.org/project/qector-decoder-v3/","identifier":"https://doi.org/10.5281/zenodo.20825980","license":"https://www.qector.store/license.html","programmingLanguage":["Python","Rust"],"runtimePlatform":["CPython 3.9","CPython 3.10","CPython 3.11","CPython 3.12","CPython 3.13","Linux x86_64","Windows x64","macOS arm64"],"keywords":["quantum error correction","QEC","quantum computing","quantum decoder","MWPM","PyMatching","Stim","Sinter","LDPC","qLDPC","BP-OSD","belief matching","union find decoder","surface code","Rust","Python","PyO3","maturin","QECTOR"],"author":{"@type":"Person","givenName":"Guillaume","familyName":"Lessard","affiliation":"iD01t Productions"},"publisher":{"@type":"Organization","name":"iD01t Productions"}}
1+
{"@context":"https://doi.org/10.5063/schema/codemeta-2.0","@type":"SoftwareSourceCode","name":"QECTOR Decoder v3","version":"0.5.7","description":"Source-available Rust and Python quantum error correction decoder package for QEC research, PyMatching-compatible validation, belief-matching, BP-OSD and qLDPC workflows, CPU/GPU batch decoding, and reproducible benchmark evidence.","codeRepository":"https://github.com/GuillaumeLessard/qector-decoder","url":"https://www.qector.store","downloadUrl":"https://pypi.org/project/qector-decoder-v3/","identifier":"https://doi.org/10.5281/zenodo.20825980","license":"https://www.qector.store/license.html","programmingLanguage":["Python","Rust"],"runtimePlatform":["CPython 3.9","CPython 3.10","CPython 3.11","CPython 3.12","CPython 3.13","Linux x86_64","Windows x64","macOS arm64"],"keywords":["quantum error correction","QEC","quantum computing","quantum decoder","MWPM","PyMatching","Stim","Sinter","LDPC","qLDPC","BP-OSD","belief matching","union find decoder","surface code","Rust","Python","PyO3","maturin","QECTOR"],"author":{"@type":"Person","givenName":"Guillaume","familyName":"Lessard","affiliation":"iD01t Productions"},"publisher":{"@type":"Organization","name":"iD01t Productions"}}

‎docs/API_STABILITY.md‎

Lines changed: 84 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
1-
# QECTOR API Stability Guide
1+
# QECTOR API Stability Guide — v0.5.7
22

3-
QECTOR Decoder v3 is a source-available research and commercial-evaluation platform. This file separates the APIs that are intended to be stable for normal local use from experimental surfaces that require extra caution.
3+
QECTOR Decoder v3 is a source-available research and commercial-evaluation platform.
4+
This file separates the APIs that are stable for normal local use from experimental
5+
surfaces that require extra caution.
46

57
## Stability levels
68

79
| Level | Meaning | Examples |
810
|---|---|---|
9-
| Stable local API | Expected to remain usable across compatible `0.5.x` releases, with bug-fix-level changes only | Core Python decoders, code generators, local source build, benchmark artifact format basics |
11+
| Stable local API | Expected to remain usable across compatible `0.5.x` releases with bug-fix-level changes only | Core Python decoders, code generators, local source build, benchmark artifact format |
1012
| Supported but workload-sensitive | Supported, but claims must be regenerated for the local code family, hardware, batch size, and dependency set | Stim/PyMatching comparisons, BP-OSD/LDPC experiments, CPU/GPU batch workflows |
11-
| Experimental / preview | Available for research, demos, or partner review, but not a compatibility promise | REST service, gRPC, MCP, metrics, hybrid/GNN paths, hosted API, OEM embedding |
12-
| Internal implementation detail | May change without notice | Rust module internals, fallback heuristics, private helper functions, benchmark script internals not documented here |
13+
| Experimental / preview | Available for research, demos, or partner review but not a compatibility promise | REST service, gRPC, MCP, metrics, hybrid/GNN paths, hosted API, OEM embedding |
14+
| Internal implementation detail | May change without notice | Rust module internals, fallback heuristics, private helper functions |
1315

1416
## Stable local Python APIs
1517

@@ -25,6 +27,8 @@ from qector_decoder_v3 import (
2527
BpOsdDecoder,
2628
CPUBatchDecoder,
2729
BatchDecoder,
30+
LookupTableDecoder,
31+
PredecodedDecoder, # v0.5.5+ — constructor: (check_to_qubits, n_qubits, backend)
2832
generate_ring_code_checks,
2933
generate_repetition_code_checks,
3034
generate_surface_code_checks,
@@ -35,22 +39,68 @@ Expected input/output model:
3539

3640
```text
3741
check_to_qubits: list[list[int]] or compatible Python sequence
38-
n_qubits: optional integer when not inferable
39-
syndrome: one-dimensional NumPy-compatible uint8/int/bool vector
40-
correction: NumPy-compatible binary vector of length n_qubits
42+
n_qubits: optional integer when not inferable
43+
syndrome: one-dimensional NumPy-compatible uint8/int/bool vector
44+
correction: NumPy-compatible binary vector of length n_qubits
4145
```
4246

43-
The core correctness contract for a syndrome-faithful decoder is:
47+
The core correctness contract for a syndrome-faithful decoder:
4448

4549
```text
46-
H · correction == syndrome (mod 2)
50+
H · correction == syndrome (mod 2)
4751
```
4852

49-
Use `docs/CORRECTNESS_AUDIT.md` for the exact decoder-by-decoder claim boundary.
53+
See `docs/CORRECTNESS_AUDIT.md` for the decoder-by-decoder claim boundary.
54+
55+
## Stable stim_compat entry points (v0.5.7 clarification)
56+
57+
`stim_compat` exposes two parallel entry points. As of v0.5.7 they are correctly
58+
documented as **parallel implementations**, not a Python alias:
59+
60+
| Function | Accepts | Notes |
61+
|---|---|---|
62+
| `from_stim_detector_error_model` | `DetectorErrorModel` or `str` | Core entry point |
63+
| `stim_circuit_to_check_matrix` | `DetectorErrorModel`, `str`, or `stim.Circuit` | Superset — converts `stim.Circuit` via `.detector_error_model(decompose_errors=True)` internally |
64+
65+
Both return `(check_to_qubits, n_qubits)` and produce identical results for
66+
`DetectorErrorModel` input. The prior erroneous `# alias` comment has been
67+
corrected in v0.5.7.
68+
69+
```python
70+
from qector_decoder_v3.stim_compat import (
71+
from_stim_detector_error_model, # accepts DetectorErrorModel or str
72+
stim_circuit_to_check_matrix, # superset: also accepts stim.Circuit
73+
to_stim_decoder,
74+
stim_decoder_from_dem,
75+
)
76+
```
77+
78+
## Stable sinter_compat entry points
79+
80+
```python
81+
from qector_decoder_v3.sinter_compat import (
82+
QectorSinterDecoder, # primary Sinter-compatible decoder wrapper
83+
QectorDecoderWrapper, # backward-compat alias for QectorSinterDecoder
84+
qector_sinter_decoders, # returns dict of named sinter.Decoder instances
85+
)
86+
87+
# standalone single-syndrome decode (v0.5.3+, no Sinter required)
88+
dec = QectorSinterDecoder("blossom")
89+
obs = dec.decode(syndrome, dem=dem)
90+
```
91+
92+
## Stable single-shot additions (v0.5.3+)
93+
94+
| API | Added in | Notes |
95+
|---|---|---|
96+
| `BatchDecoder.decode(syndrome)` | v0.5.3 | 1-row batch wrapper, matches dtype/shape contract of all other decoders |
97+
| `BeliefMatching(H, p=...)` | v0.5.3 | Raw numpy check matrix constructor with uniform prior |
98+
| `QectorSinterDecoder.decode(syndrome, dem)` | v0.5.3 | Standalone decode, DEM cached on first call |
5099

51100
## Supported but workload-sensitive APIs
52101

53-
These APIs are valid, but their performance and scientific claims depend strongly on local context:
102+
These APIs are valid but their performance and scientific claims depend on local
103+
context:
54104

55105
```text
56106
BeliefMatching
@@ -72,9 +122,22 @@ Regenerate benchmark artifacts on the target workload and target hardware.
72122
Record git commit, OS, Python, Rust, dependencies, seeds, batch size, and raw JSON/CSV outputs.
73123
```
74124

125+
## NeuralPredecoder limitation (v0.5.4+)
126+
127+
`NeuralPredecoder.train()` raises a clear `RuntimeError` on numpy>=2.0. This is a
128+
known Rust binding issue; `predict()` and `decode()` are unaffected. To train a
129+
model, use an environment with `numpy<2.0` installed until the binding is updated.
130+
131+
## OpenCL false-negative (documented v0.5.5)
132+
133+
`OpenCLBatchDecoder.is_available()` returns `False` on the AMD OCL SDK Light legacy
134+
runtime even though `OpenCL.dll` loads. Root cause: the `ocl` crate's
135+
`Device::list()` fails silently on that runtime. A ctypes-based fallback is
136+
scheduled for a future release.
137+
75138
## Experimental / preview surfaces
76139

77-
The following are not enterprise-stable APIs in the public `0.5.x` release:
140+
Not enterprise-stable in the public `0.5.x` release:
78141

79142
```text
80143
REST service
@@ -88,32 +151,26 @@ hosted API
88151
OEM / embedded integration
89152
```
90153

91-
These surfaces are useful for demos, research, and partner evaluation, but they require a deployment review before customer-facing use. See:
92-
93-
```text
94-
docs/SERVICE_API_SCHEMA.md
95-
docs/SECURITY_DEPLOYMENT.md
96-
COMMERCIAL.md
97-
```
154+
See `docs/SERVICE_API_SCHEMA.md`, `docs/SECURITY_DEPLOYMENT.md`, `COMMERCIAL.md`.
98155

99156
## Versioning policy for 0.5.x
100157

101-
During the `0.5.x` line:
102-
103158
```text
104-
Patch releases may fix decoder behavior, docs, build issues, or benchmark scripts.
105-
Public local Python classes should not be renamed without a compatibility note.
106-
Experimental service surfaces may change schema or behavior.
159+
Patch releases may fix decoder behaviour, docs, build issues, or benchmark scripts.
160+
Public local Python classes will not be renamed without a compatibility note.
161+
Experimental service surfaces may change schema or behaviour.
107162
Benchmark numbers may be replaced only with regenerated artifacts and clear environment metadata.
108-
Commercial rights remain governed by LICENSE and COMMERCIAL.md, not by API availability.
163+
Commercial rights remain governed by LICENSE and COMMERCIAL.md.
109164
```
110165

111166
## Safe public wording
112167

113168
Safe:
114169

115170
```text
116-
QECTOR exposes a stable local Python API for source-built decoder experiments and reproducible benchmark workflows.
171+
QECTOR exposes a stable local Python API for source-built decoder experiments
172+
and reproducible benchmark workflows. PyPI wheels are available for CPython 3.9–3.13
173+
on Linux x86_64, Windows x64, and macOS arm64.
117174
```
118175

119176
Unsafe:

0 commit comments

Comments
 (0)