Skip to content

Prepare DWave v0.7.1 for QUBOTools 0.15 - #51

Merged
bernalde merged 2 commits into
mainfrom
fix/issue-44-qubotools-compat
Jun 25, 2026
Merged

Prepare DWave v0.7.1 for QUBOTools 0.15#51
bernalde merged 2 commits into
mainfrom
fix/issue-44-qubotools-compat

Conversation

@bernalde

@bernalde bernalde commented Jun 25, 2026

Copy link
Copy Markdown
Member

Summary

  • Prepare DWave v0.7.1 for the current JuliaQUBO release wave.
  • Widen QUBOTools compat from 0.13 to 0.13, 0.14, 0.15.
  • Normalize QUBODrivers compat from 0.6.1 to 0.6.
  • Update the compatibility metadata test for the supported QUBO stack.

Refs #44

Repository Inspection

  • DWave.jl directly depends on QUBOTools and QUBODrivers.
  • It does not directly depend on ToQUBO or PseudoBooleanOptimization in Project.toml, test/Project.toml, source, docs, or CI metadata.
  • There is no docs/ build, examples directory, changelog, or release-notes file in this repository. The docs surface is README.md and src/wrapper/README.md, and no executable docs/examples needed decoupling.

Registry Confirmation

Confirmed from a fresh General registry environment:

  • PseudoBooleanOptimization v0.3.0
  • QUBOTools v0.15.1
  • ToQUBO v0.5.1
  • QUBODrivers v0.6.4

The four packages resolve together in one environment.

Validation

Passed:

  • JULIA_DEPOT_PATH=/tmp/dwave-ecosystem-general-check julia --startup-file=no -e 'import Pkg; Pkg.activate(; temp=true); Pkg.add([Pkg.PackageSpec(name="QUBOTools", version="0.15.1"), Pkg.PackageSpec(name="QUBODrivers", version="0.6.4"), Pkg.PackageSpec(name="ToQUBO", version="0.5.1"), Pkg.PackageSpec(name="PseudoBooleanOptimization", version="0.3.0")]); Pkg.status(["QUBOTools", "QUBODrivers", "ToQUBO", "PseudoBooleanOptimization"])'
  • JULIA_DEPOT_PATH=/tmp/dwave-v071-test-depot julia --startup-file=no --project=. -e 'import Pkg; Pkg.update(); Pkg.status(["QUBOTools", "QUBODrivers"]); Pkg.test()'
    • Passed as DWave v0.7.1 with QUBOTools v0.15.1 and QUBODrivers v0.6.4.
    • Local DWAVE_API_TOKEN was unset, so local hardware-backed DWave.Optimizer tests were skipped.
  • JULIA_DEPOT_PATH=/tmp/dwave-v071-source-add-committed-depot julia --startup-file=no -e 'import Pkg; Pkg.activate(; temp=true); Pkg.add([Pkg.PackageSpec(name="PseudoBooleanOptimization", version="0.3.0"), Pkg.PackageSpec(name="QUBOTools", version="0.15.1"), Pkg.PackageSpec(name="ToQUBO", version="0.5.1"), Pkg.PackageSpec(name="QUBODrivers", version="0.6.4")]); Pkg.add(Pkg.PackageSpec(path=pwd())); Pkg.resolve(); using DWave; Pkg.status(["DWave", "PseudoBooleanOptimization", "QUBOTools", "ToQUBO", "QUBODrivers"]; mode=Pkg.PKGMODE_MANIFEST)'
    • Passed and resolved DWave v0.7.1 from this branch with PseudoBooleanOptimization v0.3.0, QUBOTools v0.15.1, ToQUBO v0.5.1, and QUBODrivers v0.6.4.
  • git diff --check

CI:

  • Run 28144616301 passed all four Julia matrix jobs:
    • Julia 1 / Ubuntu
    • Julia 1 / Windows
    • Julia 1.10 / Ubuntu
    • Julia 1.10 / Windows
  • The Julia 1.10 Ubuntu log reported that DWAVE_API_TOKEN was defined but not valid, so CI also skipped the hardware-backed DWave.Optimizer tests.

QUBO.jl canary check:

  • Checked QUBO.jl PR Decide whether to revive or remove the legacy HFS writer #48 canary script locally.
  • Current registered canary command:
    • JULIA_DEPOT_PATH=/tmp/dwave-registered-canary-depot julia --startup-file=no scripts/ecosystem_canary.jl --tier tier-2-dwave --allow-import-failure DWave PseudoBooleanOptimization QUBOTools ToQUBO QUBODrivers DWave
  • Current registered result is expected to fail until this patch release is registered:
    • Registered DWave v0.7.0 resolves with QUBOTools v0.13.1.
    • The canary freshness check reports stale QUBOTools and PseudoBooleanOptimization.
    • The printed compatibility matrix identifies DWave v0.7.0 as QUBODrivers 0.6.1-0.6 and QUBOTools 0.13.
  • The committed source-add smoke above demonstrates the intended post-registration state for DWave v0.7.1: latest core packages resolve together and using DWave succeeds.

Branch Hygiene

@bernalde
bernalde marked this pull request as ready for review June 25, 2026 03:05
@bernalde bernalde changed the title Widen QUBOTools compat through 0.15 Prepare DWave v0.7.1 for QUBOTools 0.15 Jun 25, 2026
@bernalde
bernalde marked this pull request as draft June 25, 2026 03:21

@bernalde bernalde left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Reviewed as maintainer. Note: I am the PR author, so GitHub only permits a COMMENT event here; a formal APPROVE/REQUEST_CHANGES must come from another maintainer. There are no blocking issues, so this would be approvable on the merits.

The change is narrowly scoped to compatibility, as issue #44 requested: widen QUBOTools to 0.13, 0.14, 0.15, normalize QUBODrivers to 0.6, bump to v0.7.1, and update the metadata guard test. The Refs #44 link (not Closes) is correct: registration is a later step, so the issue should stay open after merge.

Nonblocking / Question

  • The compat range now declares 0.14 supported, but nothing exercises it. The functional suite (QUBODrivers.test conformance, parity, topology) resolves and runs against the newest compatible release only, which is QUBOTools v0.15.1. test/compat_metadata.jl asserts the Project.toml strings but not behavior, so 0.14 is declared-but-untested. 0.13 was the prior tested baseline and 0.15 is exercised now; 0.14 is the gap. The source touches core APIs only (QUBOTools.ising, Sample/SampleSet, topology/geometry/Layout, Model, variable/start), which were stable across these minors, so risk is low and a contiguous range is reasonable. Flagging as a Question rather than Blocking: was 0.14 resolved and tested anywhere (e.g. a manual run), or is it included on the assumption of a stable contiguous range? If the latter, that is fine but worth stating in the PR notes. Fix if you want certainty: pin a temp env to QUBOTools = "0.14" and run Pkg.test() once, or drop 0.14 from the range.

Tests run

  • Clean detached worktree at the PR head (ca58f00), isolated JULIA_DEPOT_PATH, DWAVE_API_TOKEN unset.
  • Pkg.instantiate() resolved QUBOTools v0.15.1 and QUBODrivers v0.6.4.
  • Pkg.test() passed (exit 0): all non-hardware testsets green, including the updated compat_metadata.jl guard. The hardware-backed DWave.Optimizer conformance set is gated on a valid token and was skipped, matching the PR's stated CI behavior. Neal/Greedy/Random/Tabu conformance, parity, metadata, chimera, and topology testsets all passed.

Merge-readiness

  • No blocking issues. Diff verified against merge-base 091d47e: 2 files, +5/-5, matching the PR's reported totals. The metadata guard test was updated in lockstep with the compat change. Approvable on the merits; because this is my own PR the formal approval must come from a second maintainer.

Comment thread Project.toml
@bernalde

Copy link
Copy Markdown
Member Author

Review follow-up for PR #51.

  • Commits pushed: none. The only unresolved thread requested validation for the existing compat range, so no file change was needed.
  • Main result: kept QUBOTools = "0.13, 0.14, 0.15" after validating the previously unexercised 0.14 range.
  • Tests run: JULIA_DEPOT_PATH=/tmp/dwave-qubotools014-test-depot julia --startup-file=no -e 'import Pkg; Pkg.activate(; temp=true); Pkg.develop(Pkg.PackageSpec(path=pwd())); Pkg.add(Pkg.PackageSpec(name="QUBOTools", version="0.14")); Pkg.resolve(); Pkg.status(["DWave", "QUBOTools", "QUBODrivers"]; mode=Pkg.PKGMODE_MANIFEST); Pkg.test("DWave")'
  • Result: passed with DWave v0.7.1, QUBODrivers v0.6.4, and QUBOTools v0.14.4.
  • Comments intentionally not addressed: none. The single nonblocking thread was addressed with validation rather than a code change.
  • Remaining risk: hardware-backed DWave.Optimizer tests still did not run here because DWAVE_API_TOKEN is empty in this environment; the existing test gate skipped those tests.

@bernalde

Copy link
Copy Markdown
Member Author

Live hardware validation completed.

  • Command: bash -lc 'source ~/.bashrc; JULIA_DEPOT_PATH=/tmp/dwave-v071-hardware-test-depot julia --startup-file=no --project=. -e '\''import Pkg; Pkg.update(); Pkg.status(["DWave", "QUBOTools", "QUBODrivers"]; mode=Pkg.PKGMODE_MANIFEST); Pkg.test()'\'''
  • Resolved stack: DWave v0.7.1, QUBOTools v0.15.1, QUBODrivers v0.6.4.
  • Result: Pkg.test() passed.
  • Hardware-backed suite ran and passed: D-Wave Quantum Annealing Sampler v9.3.0, 148/148 tests passed.
  • Classical sampler, metadata, Chimera, Pegasus, Zephyr, and WorkingGraph suites also passed.

@bernalde
bernalde marked this pull request as ready for review June 25, 2026 14:08
@bernalde
bernalde merged commit 38cbb2c into main Jun 25, 2026
4 checks passed
@bernalde
bernalde deleted the fix/issue-44-qubotools-compat branch June 25, 2026 14:09
@bernalde

Copy link
Copy Markdown
Member Author

@JuliaRegistrator register

Release notes:

  • Widen QUBOTools compat to include 0.15, while retaining 0.13 and 0.14.
  • Normalize QUBODrivers compat to 0.6, resolving with QUBODrivers v0.6.4.
  • Bump DWave to v0.7.1 so the JuliaQUBO ecosystem can resolve with QUBOTools v0.15.1.
  • Validated with Pkg.test() on QUBOTools v0.15.1; live D-Wave quantum sampler conformance passed 148/148.

@JuliaRegistrator

Copy link
Copy Markdown

Comments on pull requests will not trigger Registrator, as it is disabled. Please try commenting on a commit or issue.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants