Skip to content

Implement electron-nuclear spin register for MBQC distillation protocol#285

Open
hanakl wants to merge 30 commits intomasterfrom
hana_mbqc_general
Open

Implement electron-nuclear spin register for MBQC distillation protocol#285
hanakl wants to merge 30 commits intomasterfrom
hana_mbqc_general

Conversation

@hanakl
Copy link
Copy Markdown
Contributor

@hanakl hanakl commented Oct 7, 2025

For issue #204

@codecov
Copy link
Copy Markdown

codecov Bot commented Oct 7, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 69.36%. Comparing base (2d40bb7) to head (feac4b0).

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #285   +/-   ##
=======================================
  Coverage   69.36%   69.36%           
=======================================
  Files          57       57           
  Lines        2357     2357           
=======================================
  Hits         1635     1635           
  Misses        722      722           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Oct 7, 2025

Benchmark Result

Judge result

Benchmark Report for /home/runner/work/QuantumSavory.jl/QuantumSavory.jl

Job Properties

  • Time of benchmarks:
  • Target: 7 Oct 2025 - 03:12
  • Baseline: 7 Oct 2025 - 03:14
  • Package commits:
  • Julia commits:
  • Target: f2b3dbd
  • Baseline: f2b3dbd
  • Julia command flags:
  • Target: None
  • Baseline: None
  • Environment variables:
  • Target: None
  • Baseline: None

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Brackets display tolerances for the benchmark estimates. Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio
["tagquery", "messagebuffer", "querydelete"] 0.90 (5%) ✅ 1.00 (1%)
["tagquery", "register", "queryall"] 0.98 (5%) 0.95 (1%) ✅

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["quantumstates", "observable"]
  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Target

Julia Version 1.11.7
Commit f2b3dbda30a (2025-09-08 12:10 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.3 LTS
 uname: Linux 6.11.0-1018-azure #18~24.04.1-Ubuntu SMP Sat Jun 28 04:46:03 UTC 2025 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 4115 s 0 s 246 s 2623 s 0 s
 #2 0 MHz 4780 s 0 s 248 s 1974 s 0 s
 #3 0 MHz 4194 s 0 s 215 s 2591 s 0 s
 #4 0 MHz 4546 s 0 s 253 s 2190 s 0 s
 Memory: 15.620681762695312 GB (13282.23046875 MB free)
 Uptime: 702.58 sec
 Load Avg: 1.1 2.49 1.79
 WORD_SIZE: 64
 LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.11.7
Commit f2b3dbda30a (2025-09-08 12:10 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.3 LTS
 uname: Linux 6.11.0-1018-azure #18~24.04.1-Ubuntu SMP Sat Jun 28 04:46:03 UTC 2025 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 4524 s 0 s 264 s 3146 s 0 s
 #2 0 MHz 5244 s 0 s 276 s 2432 s 0 s
 #3 0 MHz 4214 s 0 s 217 s 3520 s 0 s
 #4 0 MHz 4564 s 0 s 254 s 3121 s 0 s
 Memory: 15.620681762695312 GB (13110.39453125 MB free)
 Uptime: 797.75 sec
 Load Avg: 1.02 2.08 1.71
 WORD_SIZE: 64
 LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Target result

Benchmark Report for /home/runner/work/QuantumSavory.jl/QuantumSavory.jl

Job Properties

  • Time of benchmark: 7 Oct 2025 - 03:12
  • Package commit: 5f814bd
  • Julia commit: f2b3dbd
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["quantumstates", "observable", "quantumoptics"] 701.000 ns (5%) 2.28 KiB (1%) 17
["register", "creation_and_initialization", "from_tests"] 200.193 μs (5%) 973.89 KiB (1%) 2574
["tagquery", "messagebuffer", "query"] 360.707 ns (5%) 64 bytes (1%) 2
["tagquery", "messagebuffer", "querydelete"] 771.000 ns (5%) 96 bytes (1%) 3
["tagquery", "misc", "from_tests"] 8.188 μs (5%) 15.25 KiB (1%) 185
["tagquery", "register", "query"] 3.901 s (5%) 2.440 s 604.79 MiB (1%) 5025645
["tagquery", "register", "queryall"] 4.112 s (5%) 2.517 s 1.50 GiB (1%) 4024144

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["quantumstates", "observable"]
  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Julia Version 1.11.7
Commit f2b3dbda30a (2025-09-08 12:10 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.3 LTS
 uname: Linux 6.11.0-1018-azure #18~24.04.1-Ubuntu SMP Sat Jun 28 04:46:03 UTC 2025 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 4115 s 0 s 246 s 2623 s 0 s
 #2 0 MHz 4780 s 0 s 248 s 1974 s 0 s
 #3 0 MHz 4194 s 0 s 215 s 2591 s 0 s
 #4 0 MHz 4546 s 0 s 253 s 2190 s 0 s
 Memory: 15.620681762695312 GB (13282.23046875 MB free)
 Uptime: 702.58 sec
 Load Avg: 1.1 2.49 1.79
 WORD_SIZE: 64
 LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline result

Benchmark Report for /home/runner/work/QuantumSavory.jl/QuantumSavory.jl

Job Properties

  • Time of benchmark: 7 Oct 2025 - 03:14
  • Package commit: 2d40bb7
  • Julia commit: f2b3dbd
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["quantumstates", "observable", "quantumoptics"] 711.000 ns (5%) 2.28 KiB (1%) 17
["register", "creation_and_initialization", "from_tests"] 197.188 μs (5%) 973.89 KiB (1%) 2574
["tagquery", "messagebuffer", "query"] 359.541 ns (5%) 64 bytes (1%) 2
["tagquery", "messagebuffer", "querydelete"] 852.000 ns (5%) 96 bytes (1%) 3
["tagquery", "misc", "from_tests"] 8.182 μs (5%) 15.25 KiB (1%) 185
["tagquery", "register", "query"] 3.755 s (5%) 2.313 s 607.23 MiB (1%) 5045645
["tagquery", "register", "queryall"] 4.179 s (5%) 2.450 s 1.58 GiB (1%) 4234144

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["quantumstates", "observable"]
  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Julia Version 1.11.7
Commit f2b3dbda30a (2025-09-08 12:10 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.3 LTS
 uname: Linux 6.11.0-1018-azure #18~24.04.1-Ubuntu SMP Sat Jun 28 04:46:03 UTC 2025 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 4524 s 0 s 264 s 3146 s 0 s
 #2 0 MHz 5244 s 0 s 276 s 2432 s 0 s
 #3 0 MHz 4214 s 0 s 217 s 3520 s 0 s
 #4 0 MHz 4564 s 0 s 254 s 3121 s 0 s
 Memory: 15.620681762695312 GB (13110.39453125 MB free)
 Uptime: 797.75 sec
 Load Avg: 1.02 2.08 1.71
 WORD_SIZE: 64
 LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Runtime information

Runtime Info
BLAS #threads 2
BLAS.vendor() lbt
Sys.CPU_THREADS 4

lscpu output:

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 48 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Vendor ID: AuthenticAMD
Model name: AMD EPYC 7763 64-Core Processor
CPU family: 25
Model: 1
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
Stepping: 1
BogoMIPS: 4890.84
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves user_shstk clzero xsaveerptr rdpru arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload umip vaes vpclmulqdq rdpid fsrm
Virtualization: AMD-V
Hypervisor vendor: Microsoft
Virtualization type: full
L1d cache: 64 KiB (2 instances)
L1i cache: 64 KiB (2 instances)
L2 cache: 1 MiB (2 instances)
L3 cache: 32 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-3
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Vulnerable: Safe RET, no microcode
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2: Mitigation; Retpolines; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected

Cpu Property Value
Brand AMD EPYC 7763 64-Core Processor
Vendor :AMD
Architecture :Unknown
Model Family: 0xaf, Model: 0x01, Stepping: 0x01, Type: 0x00
Cores 16 physical cores, 16 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 512, 32768) kbytes
64 byte cache line size
Address Size 48 bits virtual, 48 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC runs at constant rate (invariant from clock frequency)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft

Comment thread examples/purificationMBQC/electron_nuclear_spin_register.jl Outdated
Comment thread examples/purificationMBQC/electron_nuclear_spin_register.jl Outdated
Comment thread examples/purificationMBQC/electron_nuclear_spin_register.jl Outdated
Comment thread examples/purificationMBQC/electron_nuclear_spin_register.jl Outdated
Comment thread examples/purificationMBQC/electron_nuclear_spin_register.jl Outdated
Comment thread examples/purificationMBQC/electron_nuclear_spin_register.jl Outdated
Comment thread examples/purificationMBQC/paper_implementation.jl Outdated
@hanakl
Copy link
Copy Markdown
Contributor Author

hanakl commented Mar 3, 2026

Comments from Stefan:

  • docstring/readme: - not specific to 4, 2, 2

  • orders for long range entanglements vs. graph state generation vs. resource state converting is somewhat arbitrary (there might be some hardware constraints)
    print -> log in the example

  • noisy_pair_func - make issue

  • test: purification check - failure rate
    input fidelity: perfect pair -> perfect pair, noisy pair -> success rate, noisy pair -> theoretical fidelity
    export

  • $ in docstring

  • **resource state in the example - delete or move

  • update doc page to include the new protocols

  • https://github.com/QuantumSavory/QuantumSavory.jl/blob/master/test/test_examples.jl: add new example manually

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 3, 2026

Benchmark Results (Julia v1)

Time benchmarks
master ded09b0... master / ded09b0...
onchange/dual_messagebuffer_any/writers_2_waiters_1 1.22 ± 0.07 ms 1.12 ± 0.023 ms 1.09 ± 0.067
onchange/dual_messagebuffer_any/writers_4_waiters_1 2.4 ± 0.082 ms 2.2 ± 0.063 ms 1.09 ± 0.049
onchange/dual_messagebuffer_any/writers_4_waiters_4 2.6 ± 0.14 ms 2.45 ± 0.08 ms 1.06 ± 0.067
onchange/dual_messagebuffer_any/writers_8_waiters_4 5.26 ± 0.42 ms 5.01 ± 0.3 ms 1.05 ± 0.11
onchange/sharded_registers/pairs_1 0.496 ± 0.08 ms 0.465 ± 0.08 ms 1.07 ± 0.25
onchange/sharded_registers/pairs_16 8.29 ± 0.16 ms 7.57 ± 0.19 ms 1.1 ± 0.035
onchange/sharded_registers/pairs_32 17.2 ± 0.63 ms 15.9 ± 0.33 ms 1.08 ± 0.046
onchange/sharded_registers/pairs_4 1.99 ± 0.053 ms 1.83 ± 0.037 ms 1.09 ± 0.036
onchange/shared_messagebuffer_channel/writers_1_waiters_1 0.73 ± 0.018 ms 0.93 ± 0.016 ms 0.785 ± 0.023
onchange/shared_messagebuffer_channel/writers_1_waiters_8 0.592 ± 0.023 ms 0.668 ± 0.018 ms 0.885 ± 0.041
onchange/shared_messagebuffer_channel/writers_4_waiters_4 2.29 ± 0.32 ms 2.66 ± 0.31 ms 0.862 ± 0.16
onchange/shared_messagebuffer_channel/writers_8_waiters_1 6.04 ± 0.6 ms 7.43 ± 0.57 ms 0.813 ± 0.1
onchange/shared_messagebuffer_direct/writers_16_waiters_2 5.75 ± 1 ms 4.27 ± 0.83 ms 1.35 ± 0.35
onchange/shared_messagebuffer_direct/writers_1_waiters_1 0.324 ± 0.049 ms 0.304 ± 0.047 ms 1.06 ± 0.23
onchange/shared_messagebuffer_direct/writers_1_waiters_8 0.326 ± 0.067 ms 0.321 ± 0.066 ms 1.02 ± 0.3
onchange/shared_messagebuffer_direct/writers_2_waiters_16 0.785 ± 0.18 ms 0.763 ± 0.17 ms 1.03 ± 0.33
onchange/shared_messagebuffer_direct/writers_4_waiters_4 1.11 ± 0.19 ms 1.05 ± 0.19 ms 1.06 ± 0.27
onchange/shared_messagebuffer_direct/writers_8_waiters_1 2.34 ± 0.35 ms 2.17 ± 0.35 ms 1.08 ± 0.24
onchange/shared_register/writers_16_waiters_2 7.55 ± 1.4 ms 7 ± 1.4 ms 1.08 ± 0.29
onchange/shared_register/writers_1_waiters_1 0.5 ± 0.078 ms 0.465 ± 0.085 ms 1.07 ± 0.26
onchange/shared_register/writers_1_waiters_8 0.528 ± 0.11 ms 0.511 ± 0.11 ms 1.03 ± 0.31
onchange/shared_register/writers_2_waiters_16 1.36 ± 0.35 ms 1.32 ± 0.34 ms 1.03 ± 0.37
onchange/shared_register/writers_4_waiters_4 1.87 ± 0.4 ms 1.73 ± 0.37 ms 1.08 ± 0.33
onchange/shared_register/writers_8_waiters_1 4.03 ± 0.61 ms 3.69 ± 0.73 ms 1.09 ± 0.27
onchange/shared_regref/writers_1_waiters_1 0.502 ± 0.078 ms 0.461 ± 0.088 ms 1.09 ± 0.27
onchange/shared_regref/writers_1_waiters_8 0.529 ± 0.11 ms 0.512 ± 0.11 ms 1.03 ± 0.31
onchange/shared_regref/writers_4_waiters_4 1.83 ± 0.38 ms 1.74 ± 0.37 ms 1.05 ± 0.31
onchange/shared_regref/writers_8_waiters_1 3.99 ± 0.63 ms 3.64 ± 0.7 ms 1.1 ± 0.27
quantumstates/observable/quantumoptics 0.891 ± 0.34 μs 0.921 ± 0.36 μs 0.967 ± 0.53
querywait/messagebuffer_channel/writers_1_waiters_1 0.878 ± 0.018 ms 1.03 ± 0.017 ms 0.848 ± 0.022
querywait/messagebuffer_channel/writers_1_waiters_8 2 ± 0.09 ms 2.14 ± 0.078 ms 0.936 ± 0.054
querywait/messagebuffer_channel/writers_4_waiters_4 5.87 ± 0.63 ms 6.4 ± 0.6 ms 0.917 ± 0.13
querywait/messagebuffer_channel/writers_8_waiters_1 7.12 ± 0.66 ms 8.27 ± 0.61 ms 0.86 ± 0.1
querywait/messagebuffer_direct/writers_1_waiters_1 0.412 ± 0.051 ms 0.349 ± 0.054 ms 1.18 ± 0.23
querywait/messagebuffer_direct/writers_1_waiters_8 1.43 ± 0.24 ms 1.32 ± 0.24 ms 1.08 ± 0.27
querywait/messagebuffer_direct/writers_4_waiters_4 3.63 ± 0.52 ms 3.25 ± 0.56 ms 1.11 ± 0.25
querywait/messagebuffer_direct/writers_8_waiters_1 3.19 ± 0.38 ms 2.6 ± 0.38 ms 1.23 ± 0.23
querywait/register_query_wait/writers_1_waiters_1 0.377 ± 0.058 ms 0.342 ± 0.051 ms 1.1 ± 0.24
querywait/register_query_wait/writers_1_waiters_8 1.2 ± 0.23 ms 1.16 ± 0.24 ms 1.04 ± 0.3
querywait/register_query_wait/writers_4_waiters_4 2.93 ± 0.55 ms 2.78 ± 0.55 ms 1.06 ± 0.29
querywait/register_query_wait/writers_8_waiters_1 2.66 ± 0.41 ms 2.52 ± 0.39 ms 1.06 ± 0.23
querywait/register_querydelete_wait/writers_1_waiters_1 0.347 ± 0.052 ms 0.339 ± 0.051 ms 1.02 ± 0.22
querywait/register_querydelete_wait/writers_1_waiters_8 1.18 ± 0.24 ms 1.14 ± 0.23 ms 1.04 ± 0.3
querywait/register_querydelete_wait/writers_4_waiters_4 2.92 ± 0.55 ms 2.75 ± 0.56 ms 1.06 ± 0.29
querywait/register_querydelete_wait/writers_8_waiters_1 2.61 ± 0.4 ms 2.47 ± 0.4 ms 1.06 ± 0.23
register/creation_and_initialization/from_tests 0.238 ± 0.017 ms 0.252 ± 0.017 ms 0.947 ± 0.094
semaphore/api/lock_direct 1.47 ± 0.12 μs 1.22 ± 0.11 μs 1.2 ± 0.15
semaphore/api/onchange_register 1.53 ± 0.12 μs 1.28 ± 0.12 μs 1.2 ± 0.15
semaphore/api/onchange_regref 1.57 ± 0.12 μs 1.29 ± 0.11 μs 1.22 ± 0.14
semaphore/broadcast_direct/waiters_1_rounds_1 27.7 ± 5.8 μs 30.6 ± 3.1 μs 0.902 ± 0.21
semaphore/broadcast_direct/waiters_1_rounds_4 0.0751 ± 0.011 ms 0.0779 ± 0.011 ms 0.964 ± 0.2
semaphore/broadcast_direct/waiters_256_rounds_1 0.0497 ± 0.0094 s 0.0496 ± 0.0088 s 1 ± 0.26
semaphore/broadcast_direct/waiters_64_rounds_1 3.4 ± 0.13 ms 3.37 ± 0.11 ms 1.01 ± 0.051
semaphore/broadcast_direct/waiters_64_rounds_4 13.6 ± 0.47 ms 13.4 ± 0.59 ms 1.01 ± 0.056
semaphore/broadcast_direct/waiters_8_rounds_1 0.155 ± 0.035 ms 0.15 ± 0.032 ms 1.04 ± 0.32
semaphore/broadcast_direct/waiters_8_rounds_4 0.495 ± 0.11 ms 0.481 ± 0.11 ms 1.03 ± 0.32
semaphore/broadcast_register/waiters_1_rounds_1 28.4 ± 2 μs 30.4 ± 3.3 μs 0.935 ± 0.12
semaphore/broadcast_register/waiters_1_rounds_4 0.0751 ± 0.011 ms 0.0777 ± 0.012 ms 0.967 ± 0.21
semaphore/broadcast_register/waiters_256_rounds_1 0.0499 ± 0.0097 s 0.0496 ± 0.0093 s 1 ± 0.27
semaphore/broadcast_register/waiters_64_rounds_1 3.39 ± 0.12 ms 3.38 ± 0.11 ms 1 ± 0.047
semaphore/broadcast_register/waiters_64_rounds_4 13.7 ± 3.1 ms 13.5 ± 0.46 ms 1.02 ± 0.23
semaphore/broadcast_register/waiters_8_rounds_1 0.162 ± 0.035 ms 0.157 ± 0.033 ms 1.03 ± 0.31
semaphore/broadcast_register/waiters_8_rounds_4 0.505 ± 0.11 ms 0.483 ± 0.11 ms 1.04 ± 0.33
semaphore/broadcast_regref/waiters_1_rounds_1 27.1 ± 0.96 μs 29.7 ± 2.5 μs 0.913 ± 0.084
semaphore/broadcast_regref/waiters_256_rounds_1 0.0546 ± 0.0069 s 0.0554 ± 0.0075 s 0.985 ± 0.18
semaphore/broadcast_regref/waiters_64_rounds_1 3.36 ± 0.12 ms 3.37 ± 0.11 ms 0.996 ± 0.048
semaphore/broadcast_regref/waiters_8_rounds_1 0.14 ± 0.032 ms 0.141 ± 0.032 ms 0.991 ± 0.32
tagquery/messagebuffer/query 0.791 ± 0.011 μs 0.901 ± 0.02 μs 0.878 ± 0.023
tagquery/messagebuffer/query_high_arity 0.331 ± 0.011 μs 0.761 ± 0.02 μs 0.435 ± 0.018
tagquery/messagebuffer/query_high_arity_predicate 8.95 ± 0.91 μs 9.43 ± 1.1 μs 0.949 ± 0.14
tagquery/messagebuffer/query_miss 0.12 ± 0.01 μs 0.121 ± 0.01 μs 0.992 ± 0.12
tagquery/messagebuffer/query_tag_dispatch 1.51 ± 0.011 μs 1.96 ± 0.03 μs 0.771 ± 0.013
tagquery/messagebuffer/querydelete 0.46 ± 0.12 μs 0.421 ± 0.12 μs 1.09 ± 0.42
tagquery/messagebuffer/querydelete_back 0.561 ± 0.2 μs 0.521 ± 0.15 μs 1.08 ± 0.49
tagquery/messagebuffer/querydelete_front 0.35 ± 0.14 μs 0.27 ± 0.031 μs 1.3 ± 0.54
tagquery/messagebuffer/querydelete_miss 0.601 ± 0.2 μs 0.331 ± 0.059 μs 1.82 ± 0.69
tagquery/misc/from_tests 10 ± 4 μs 9.5 ± 3.9 μs 1.06 ± 0.61
tagquery/register/query 3.77 ± 0.027 s 3.71 ± 0.021 s 1.02 ± 0.0093
tagquery/register/query_assigned 0.861 ± 0.011 μs 0.862 ± 0.029 μs 0.999 ± 0.036
tagquery/register/query_exact_fifo 0.421 ± 0.021 μs 0.551 ± 0.02 μs 0.764 ± 0.047
tagquery/register/query_exact_filo 2.05 ± 0.03 μs 2.51 ± 0.03 μs 0.817 ± 0.015
tagquery/register/query_locked 0.972 ± 0.011 μs 0.471 ± 0.029 μs 2.06 ± 0.13
tagquery/register/query_miss 2.2 ± 0.03 μs 1.97 ± 0.03 μs 1.12 ± 0.023
tagquery/register/query_predicate 1.3 ± 0.05 μs 1.38 ± 0.04 μs 0.942 ± 0.045
tagquery/register/query_tag_dispatch 2.09 ± 0.03 μs 2.11 ± 0.04 μs 0.991 ± 0.024
tagquery/register/query_unassigned 1.3 ± 0.02 μs 1.31 ± 0.02 μs 0.992 ± 0.021
tagquery/register/queryall 4.09 ± 0.057 s 3.77 ± 0.00075 s 1.08 ± 0.015
tagquery/register/queryall_fifo 3.06 ± 0.31 μs 3.27 ± 1.8 μs 0.936 ± 0.53
tagquery/register/queryall_filo 3.07 ± 0.31 μs 3.1 ± 0.28 μs 0.99 ± 0.13
tagquery/register/queryall_tag_dispatch 2.12 ± 0.16 μs 2.13 ± 0.12 μs 0.995 ± 0.094
tagquery/register_high_arity/query_exact 0.3 ± 0.021 μs 0.3 ± 0.03 μs 1 ± 0.12
tagquery/register_high_arity/query_predicate 1.83 ± 0.05 μs 1.72 ± 0.07 μs 1.06 ± 0.052
tagquery/register_high_arity/queryall 0.331 ± 0.03 μs 0.331 ± 0.031 μs 1 ± 0.13
tagquery/register_mutating/querydelete_register 0.901 ± 0.16 μs 1.32 ± 0.17 μs 0.682 ± 0.15
tagquery/register_mutating/querydelete_regref_fifo 0.891 ± 0.15 μs 1.28 ± 0.16 μs 0.695 ± 0.15
tagquery/register_mutating/querydelete_regref_filo 1.09 ± 0.15 μs 1.16 ± 0.14 μs 0.939 ± 0.17
tagquery/register_mutating/untag_by_id 0.131 ± 0.011 μs 0.13 ± 0.011 μs 1.01 ± 0.12
tagquery/register_ref/query_fifo 0.491 ± 0.021 μs 0.841 ± 0.021 μs 0.584 ± 0.029
tagquery/register_ref/query_filo 0.661 ± 0.02 μs 0.832 ± 0.02 μs 0.794 ± 0.031
tagquery/register_ref/query_tag_dispatch 0.321 ± 0.02 μs 0.321 ± 0.029 μs 1 ± 0.11
tagquery/register_ref/queryall_fifo 0.801 ± 0.11 μs 0.961 ± 0.089 μs 0.834 ± 0.14
tagquery/register_ref/queryall_filo 0.681 ± 0.08 μs 0.691 ± 0.12 μs 0.986 ± 0.21
time_to_load 15.7 ± 0.079 s 16 ± 0.55 s 0.981 ± 0.034
Memory benchmarks
master ded09b0... master / ded09b0...
onchange/dual_messagebuffer_any/writers_2_waiters_1 10 k allocs: 0.485 MB 10 k allocs: 0.485 MB 1
onchange/dual_messagebuffer_any/writers_4_waiters_1 19.9 k allocs: 0.96 MB 19.9 k allocs: 0.96 MB 1
onchange/dual_messagebuffer_any/writers_4_waiters_4 25.2 k allocs: 1.2 MB 25.2 k allocs: 1.2 MB 1
onchange/dual_messagebuffer_any/writers_8_waiters_4 0.0537 M allocs: 2.45 MB 0.0537 M allocs: 2.45 MB 1
onchange/sharded_registers/pairs_1 4.05 k allocs: 0.199 MB 4.05 k allocs: 0.199 MB 1
onchange/sharded_registers/pairs_16 0.0724 M allocs: 3.35 MB 0.0724 M allocs: 3.35 MB 1
onchange/sharded_registers/pairs_32 0.149 M allocs: 6.76 MB 0.149 M allocs: 6.76 MB 1
onchange/sharded_registers/pairs_4 16.4 k allocs: 0.809 MB 16.4 k allocs: 0.809 MB 1
onchange/shared_messagebuffer_channel/writers_1_waiters_1 4.49 k allocs: 0.215 MB 4.49 k allocs: 0.215 MB 1
onchange/shared_messagebuffer_channel/writers_1_waiters_8 5.33 k allocs: 0.253 MB 5.33 k allocs: 0.253 MB 1
onchange/shared_messagebuffer_channel/writers_4_waiters_4 19.1 k allocs: 0.905 MB 19.1 k allocs: 0.905 MB 1
onchange/shared_messagebuffer_channel/writers_8_waiters_1 0.0373 M allocs: 1.7 MB 0.0373 M allocs: 1.7 MB 1
onchange/shared_messagebuffer_direct/writers_16_waiters_2 0.0427 M allocs: 1.89 MB 0.0427 M allocs: 1.89 MB 1
onchange/shared_messagebuffer_direct/writers_1_waiters_1 2.36 k allocs: 0.112 MB 2.36 k allocs: 0.112 MB 1
onchange/shared_messagebuffer_direct/writers_1_waiters_8 3.2 k allocs: 0.152 MB 3.2 k allocs: 0.152 MB 1
onchange/shared_messagebuffer_direct/writers_2_waiters_16 8.24 k allocs: 0.444 MB 8.24 k allocs: 0.444 MB 1
onchange/shared_messagebuffer_direct/writers_4_waiters_4 10.8 k allocs: 0.504 MB 10.8 k allocs: 0.504 MB 1
onchange/shared_messagebuffer_direct/writers_8_waiters_1 18.7 k allocs: 0.874 MB 18.7 k allocs: 0.874 MB 1
onchange/shared_register/writers_16_waiters_2 0.0747 M allocs: 3.43 MB 0.0747 M allocs: 3.43 MB 1
onchange/shared_register/writers_1_waiters_1 4.05 k allocs: 0.199 MB 4.05 k allocs: 0.199 MB 1
onchange/shared_register/writers_1_waiters_8 5.7 k allocs: 0.275 MB 5.7 k allocs: 0.275 MB 1
onchange/shared_register/writers_2_waiters_16 15.1 k allocs: 0.861 MB 15.1 k allocs: 0.861 MB 1
onchange/shared_register/writers_4_waiters_4 19 k allocs: 0.919 MB 19 k allocs: 0.919 MB 1
onchange/shared_register/writers_8_waiters_1 0.0333 M allocs: 1.63 MB 0.0333 M allocs: 1.63 MB 1
onchange/shared_regref/writers_1_waiters_1 4.05 k allocs: 0.199 MB 4.05 k allocs: 0.199 MB 1
onchange/shared_regref/writers_1_waiters_8 5.7 k allocs: 0.275 MB 5.7 k allocs: 0.275 MB 0.999
onchange/shared_regref/writers_4_waiters_4 19 k allocs: 0.919 MB 19 k allocs: 0.919 MB 1
onchange/shared_regref/writers_8_waiters_1 0.0333 M allocs: 1.63 MB 0.0333 M allocs: 1.63 MB 1
quantumstates/observable/quantumoptics 22 allocs: 2.44 kB 22 allocs: 2.44 kB 1
querywait/messagebuffer_channel/writers_1_waiters_1 4.92 k allocs: 0.231 MB 4.92 k allocs: 0.231 MB 1
querywait/messagebuffer_channel/writers_1_waiters_8 15.6 k allocs: 0.734 MB 15.6 k allocs: 0.734 MB 1
querywait/messagebuffer_channel/writers_4_waiters_4 0.0419 M allocs: 1.89 MB 0.0419 M allocs: 1.89 MB 1
querywait/messagebuffer_channel/writers_8_waiters_1 0.0418 M allocs: 1.85 MB 0.0418 M allocs: 1.85 MB 1
querywait/messagebuffer_direct/writers_1_waiters_1 2.79 k allocs: 0.128 MB 2.79 k allocs: 0.128 MB 1
querywait/messagebuffer_direct/writers_1_waiters_8 13.4 k allocs: 0.633 MB 13.4 k allocs: 0.633 MB 1
querywait/messagebuffer_direct/writers_4_waiters_4 0.0324 M allocs: 1.47 MB 0.0324 M allocs: 1.47 MB 1
querywait/messagebuffer_direct/writers_8_waiters_1 22.8 k allocs: 1.02 MB 22.8 k allocs: 1.02 MB 1
querywait/register_query_wait/writers_1_waiters_1 2.56 k allocs: 0.137 MB 2.56 k allocs: 0.137 MB 1
querywait/register_query_wait/writers_1_waiters_8 12.1 k allocs: 0.607 MB 12.1 k allocs: 0.607 MB 1
querywait/register_query_wait/writers_4_waiters_4 27.8 k allocs: 1.42 MB 27.8 k allocs: 1.42 MB 1
querywait/register_query_wait/writers_8_waiters_1 20.4 k allocs: 1.09 MB 20.4 k allocs: 1.09 MB 1
querywait/register_querydelete_wait/writers_1_waiters_1 2.5 k allocs: 0.131 MB 2.5 k allocs: 0.131 MB 1
querywait/register_querydelete_wait/writers_1_waiters_8 12 k allocs: 0.602 MB 12 k allocs: 0.602 MB 1
querywait/register_querydelete_wait/writers_4_waiters_4 27.5 k allocs: 1.4 MB 27.5 k allocs: 1.4 MB 1
querywait/register_querydelete_wait/writers_8_waiters_1 19.8 k allocs: 1.04 MB 19.8 k allocs: 1.04 MB 1
register/creation_and_initialization/from_tests 2.67 k allocs: 0.945 MB 2.68 k allocs: 0.946 MB 1
semaphore/api/lock_direct 15 allocs: 0.875 kB 15 allocs: 0.875 kB 1
semaphore/api/onchange_register 15 allocs: 0.875 kB 15 allocs: 0.875 kB 1
semaphore/api/onchange_regref 15 allocs: 0.875 kB 15 allocs: 0.875 kB 1
semaphore/broadcast_direct/waiters_1_rounds_1 0.144 k allocs: 7.58 kB 0.144 k allocs: 7.58 kB 1
semaphore/broadcast_direct/waiters_1_rounds_4 0.521 k allocs: 26.9 kB 0.521 k allocs: 26.9 kB 1
semaphore/broadcast_direct/waiters_256_rounds_1 0.495 M allocs: 0.0331 GB 0.495 M allocs: 0.0331 GB 1
semaphore/broadcast_direct/waiters_64_rounds_1 0.0365 M allocs: 2.36 MB 0.0365 M allocs: 2.36 MB 1
semaphore/broadcast_direct/waiters_64_rounds_4 0.146 M allocs: 9.67 MB 0.146 M allocs: 9.67 MB 1
semaphore/broadcast_direct/waiters_8_rounds_1 1.36 k allocs: 0.0686 MB 1.36 k allocs: 0.0675 MB 1.02
semaphore/broadcast_direct/waiters_8_rounds_4 5.31 k allocs: 0.261 MB 5.31 k allocs: 0.261 MB 1
semaphore/broadcast_register/waiters_1_rounds_1 0.147 k allocs: 7.7 kB 0.147 k allocs: 7.7 kB 1
semaphore/broadcast_register/waiters_1_rounds_4 0.531 k allocs: 27.4 kB 0.531 k allocs: 27.4 kB 1
semaphore/broadcast_register/waiters_256_rounds_1 0.495 M allocs: 0.0331 GB 0.495 M allocs: 0.0331 GB 1
semaphore/broadcast_register/waiters_64_rounds_1 0.0365 M allocs: 2.36 MB 0.0365 M allocs: 2.36 MB 1
semaphore/broadcast_register/waiters_64_rounds_4 0.146 M allocs: 9.67 MB 0.146 M allocs: 9.67 MB 1
semaphore/broadcast_register/waiters_8_rounds_1 1.36 k allocs: 0.0687 MB 1.36 k allocs: 0.0679 MB 1.01
semaphore/broadcast_register/waiters_8_rounds_4 5.32 k allocs: 0.261 MB 5.32 k allocs: 0.262 MB 0.999
semaphore/broadcast_regref/waiters_1_rounds_1 0.147 k allocs: 7.7 kB 0.147 k allocs: 7.7 kB 1
semaphore/broadcast_regref/waiters_256_rounds_1 0.495 M allocs: 0.0331 GB 0.495 M allocs: 0.0331 GB 1
semaphore/broadcast_regref/waiters_64_rounds_1 0.0365 M allocs: 2.36 MB 0.0365 M allocs: 2.36 MB 1
semaphore/broadcast_regref/waiters_8_rounds_1 1.36 k allocs: 0.0687 MB 1.36 k allocs: 0.0687 MB 1
tagquery/messagebuffer/query 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
tagquery/messagebuffer/query_high_arity 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
tagquery/messagebuffer/query_high_arity_predicate 0.393 k allocs: 6.22 kB 0.393 k allocs: 6.22 kB 1
tagquery/messagebuffer/query_miss 0 allocs: 0 B 0 allocs: 0 B
tagquery/messagebuffer/query_tag_dispatch 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
tagquery/messagebuffer/querydelete 1 allocs: 32 B 1 allocs: 32 B 1
tagquery/messagebuffer/querydelete_back 1 allocs: 32 B 1 allocs: 32 B 1
tagquery/messagebuffer/querydelete_front 1 allocs: 32 B 1 allocs: 32 B 1
tagquery/messagebuffer/querydelete_miss 0 allocs: 0 B 0 allocs: 0 B
tagquery/misc/from_tests 0.187 k allocs: 13.1 kB 0.187 k allocs: 13.1 kB 1
tagquery/register/query 4.92 M allocs: 0.623 GB 4.88 M allocs: 0.618 GB 1.01
tagquery/register/query_assigned 3 allocs: 0.281 kB 3 allocs: 0.281 kB 1
tagquery/register/query_exact_fifo 2 allocs: 0.266 kB 2 allocs: 0.266 kB 1
tagquery/register/query_exact_filo 2 allocs: 0.266 kB 2 allocs: 0.266 kB 1
tagquery/register/query_locked 3 allocs: 0.281 kB 3 allocs: 0.281 kB 1
tagquery/register/query_miss 1 allocs: 0.109 kB 1 allocs: 0.109 kB 1
tagquery/register/query_predicate 14 allocs: 0.578 kB 14 allocs: 0.578 kB 1
tagquery/register/query_tag_dispatch 2 allocs: 0.266 kB 2 allocs: 0.266 kB 1
tagquery/register/query_unassigned 3 allocs: 0.281 kB 3 allocs: 0.281 kB 1
tagquery/register/queryall 4.83 M allocs: 0.96 GB 4.2 M allocs: 0.835 GB 1.15
tagquery/register/queryall_fifo 6 allocs: 6.8 kB 6 allocs: 6.8 kB 1
tagquery/register/queryall_filo 6 allocs: 6.8 kB 6 allocs: 6.8 kB 1
tagquery/register/queryall_tag_dispatch 3 allocs: 0.625 kB 3 allocs: 0.625 kB 1
tagquery/register_high_arity/query_exact 2 allocs: 0.266 kB 2 allocs: 0.266 kB 1
tagquery/register_high_arity/query_predicate 21 allocs: 0.75 kB 21 allocs: 0.75 kB 1
tagquery/register_high_arity/queryall 3 allocs: 0.625 kB 3 allocs: 0.625 kB 1
tagquery/register_mutating/querydelete_register 2 allocs: 0.266 kB 2 allocs: 0.266 kB 1
tagquery/register_mutating/querydelete_regref_fifo 2 allocs: 0.266 kB 2 allocs: 0.266 kB 1
tagquery/register_mutating/querydelete_regref_filo 2 allocs: 0.266 kB 2 allocs: 0.266 kB 1
tagquery/register_mutating/untag_by_id 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
tagquery/register_ref/query_fifo 3 allocs: 0.375 kB 3 allocs: 0.375 kB 1
tagquery/register_ref/query_filo 3 allocs: 0.375 kB 3 allocs: 0.375 kB 1
tagquery/register_ref/query_tag_dispatch 3 allocs: 0.375 kB 3 allocs: 0.375 kB 1
tagquery/register_ref/queryall_fifo 4 allocs: 0.734 kB 4 allocs: 0.734 kB 1
tagquery/register_ref/queryall_filo 4 allocs: 0.734 kB 4 allocs: 0.734 kB 1
time_to_load 0.149 k allocs: 11.1 kB 0.154 k allocs: 11.4 kB 0.979

Comment thread examples/purificationMBQC/full_purification_example.jl
Comment thread examples/purificationMBQC/full_purification_example.jl Outdated
Comment thread examples/purificationMBQC/full_purification_example.jl Outdated
Comment thread examples/purificationMBQC/full_purification_example.jl Outdated
Comment thread examples/purificationMBQC/full_purification_example.jl Outdated
Comment thread examples/purificationMBQC/full_purification_example.jl
Comment thread examples/purificationMBQC/full_purification_example.jl Outdated
Comment thread examples/purificationMBQC/full_purification_example.jl
Comment thread examples/purificationMBQC/full_purification_example.jl Outdated
Comment thread examples/purificationMBQC/full_purification_example.jl Outdated
Comment thread examples/purificationMBQC/full_purification_example.jl Outdated
Copy link
Copy Markdown
Member

@Krastanov Krastanov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some small requests for more inline docs

Could you post the log output of full_purification_example.jl before you merge, just so we see what it looks like

@hanakl
Copy link
Copy Markdown
Contributor Author

hanakl commented Mar 20, 2026

Output:

[ Info: Checking perfect Bell pairs (initial fidelity = 1): purification must always succeed with output fidelity 1
[ Info: Trial 1:
[ Info:   Purified pair 1: fidelity=1.0
[ Info:   Purified pair 2: fidelity=1.0
[ Info: Trial 2:
[ Info:   Purified pair 1: fidelity=1.0
[ Info:   Purified pair 2: fidelity=1.0
[ Info: Trial 3:
[ Info:   Purified pair 1: fidelity=1.0
[ Info:   Purified pair 2: fidelity=1.0
[ Info: Trial 4:
[ Info:   Purified pair 1: fidelity=1.0
[ Info:   Purified pair 2: fidelity=1.0
[ Info: Trial 5:
[ Info:   Purified pair 1: fidelity=1.0
[ Info:   Purified pair 2: fidelity=1.0
[ Info: Noisy Bell pairs sweep: launching 100 simulations per fidelity value
[ Info: Starting trials for input fidelity F=0.7
[ Info:   F=0.7 results: acceptance theory=0.3472, empirical=0.38 ± 0.1904 (4σ), avg output fidelity=0.7581
[ Info: Starting trials for input fidelity F=0.8
[ Info:   F=0.8 results: acceptance theory=0.4669, empirical=0.48 ± 0.1996 (4σ), avg output fidelity=0.904
[ Info: Starting trials for input fidelity F=0.9
[ Info:   F=0.9 results: acceptance theory=0.6731, empirical=0.69 ± 0.1876 (4σ), avg output fidelity=0.9803
[ Info: Starting trials for input fidelity F=0.95
[ Info:   F=0.95 results: acceptance theory=0.8191, empirical=0.82 ± 0.154 (4σ), avg output fidelity=0.9956

Copy link
Copy Markdown
Member

@Krastanov Krastanov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a few minor changes:

  • tests merge conflict
  • make a plotting example that just imports full_purification_example and makes two plots -- of success probability vs input F and of output F vs input F
  • the example should take just a minute
  • both examples should be tested, even if they are repetitive
  • do not export the content of the MBQC module, export only the module name itself

Copy link
Copy Markdown
Member

@Krastanov Krastanov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

some test failures, but otherwise it looks good

#at the top of runtests.jl do
ENV["QS_TESTRUN"] = "true"

# in example file do
samples = get(ENV, "QS_TESTRUN")=="true" ? many : few

@hanakl hanakl added the Skip-Changelog label for control of CI: skips the changelog check label Apr 22, 2026
@Krastanov-agent
Copy link
Copy Markdown
Contributor

I traced the current JET failure. The ResumableFunctions stack frames point at the generated MBQCPurificationTracker_FSMI, but the source location is the @resumable method in src/ProtocolZoo/mbqc.jl, especially lines 468-471:

msg_data = querydelete!(mb, PurifierBellMeasurementResults, ❓, ❓, ❓)
local_measurements_XX = local_tag.tag[3]
local_measurements_ZZ = local_tag.tag[4]
_, (_, remote_node, remote_measurements_XX, remote_measurements_ZZ) = msg_data

The JET report is convert(::Type{Tag}, ::Nothing) / Tag(data::Nothing). I think that is caused by the combination of querydelete! returning Union{Nothing, NamedTuple{(:src, :tag), ...}} and the nested destructuring of msg_data.tag::Tag. The preceding query(mb, ...) does not narrow the result of the later querydelete! call, and the delete query is broader than the query that found the remote message. After @resumable lowers this, the destructuring appears to create a Tag-typed temporary/iterator that is initialized with nothing, so JET reports the macro-generated function rather than this line.

Suggested fix: make the delete query match the checked message and avoid destructuring the Tag iterator, e.g.

msg_data = querydelete!(mb, PurifierBellMeasurementResults, remote_chief_idx, ❓, ❓)
isnothing(msg_data) && continue  # or @assert !isnothing(msg_data)
remote_measurements_XX = msg_data.tag[3]
remote_measurements_ZZ = msg_data.tag[4]

That should remove the Tag(::Nothing) path JET sees, and it is also more precise than deleting any PurifierBellMeasurementResults message from the buffer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Skip-Changelog label for control of CI: skips the changelog check

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants