Skip to content

Release wave: QUBODrivers 0.6 / QUBOTools 0.13 compat + seed support + benchmark conformance #26

Description

@bernalde

Part of the benchmarking-readiness epic: JuliaQUBO/QUBO.jl#40 (WS2 — coordinated driver release wave). Blocked by the QUBODrivers metadata/seed standardization and conformance-suite issues on that epic (WS1) — adopt both in a single PR here so the package is only touched once.

Problem

QUBO.jl v0.6 requires QUBODrivers = "0.6" / QUBOTools = "0.13". PySA.jl's current compat is:

QUBODrivers = "0.3, 0.4, 0.5"
QUBOTools   = "0.10, 0.11, 0.12"

The intersection with QUBO.jl v0.6 (and with the QUBOLib-served QOBLib benchmarking stack) is empty — this package cannot be installed alongside the rest of the ecosystem. A scheduled ecosystem-resolution canary is being added to QUBO.jl that will stay red until this lands.

Package-specific work

  • Parameter naming is inconsistent with the rest of the ecosystem: n_reads, n_sweeps, n_replicas vs the conventional num_reads etc. Keep the existing raw keys for compatibility but add the standard attribute aliases; document the mapping.
  • PySA currently exposes no seed — the underlying pysa solver accepts one; plumb it through as the standard RandomSeed attribute. Without it PySA cannot participate in reproducible sweeps.
  • Temperature schedule attributes (MinimumTemperature, MaximumTemperature) are exactly the kind of parameters the campaign will sweep — make sure they are settable via MOI.RawOptimizerAttribute string keys too (harness sets params generically from TOML).
  • PythonCall = "0.9.23" pin: align with DWave/CIMOptimizer (see DWave issue note).

Common work (all drivers in the wave)

  1. Bump compat: QUBODrivers = "0.6" (drop pre-0.5 entries unless there's a reason to keep them) and QUBOTools = "0.13" where it is a direct dependency. Fix any breakage from the upgrade.
  2. Adopt the QUBODrivers metadata schema: metadata["time"]["effective"] (backend solve time) always set; seeds recorded under metadata["seeds"]; backend name/version under metadata["backend"].
  3. Declare capability traits honestly (supports_seed, honors_final_reads, enforces_time_limit).
  4. Adopt the standard RandomSeed attribute where the backend supports seeding (alias any existing seed attribute to it; keep the old one as deprecated).
  5. CI runs the upgraded QUBODrivers.test(Optimizer) with benchmark_conformance = true.
  6. Tag a release and verify it registers (General registry compat must match).

Checkpoints (anti-drift)

  • Before starting: wait for the reference driver run posted on the epic (first wave driver, suggested MQLib.jl) and use its conformance output as the template — deviations should be deliberate, not accidental.
  • Mid-PR: post the conformance-suite output here (all sets, including which are trait-skipped and why).
  • Before merge: resolve a temp environment with QUBO@0.6 + this branch via Pkg.develop — the actual coexistence check, not just compat-file edits.

Acceptance criteria

  • Registered release with QUBODrivers 0.6 / QUBOTools 0.13 compat, conformance suite green in CI, package resolves alongside QUBO.jl v0.6.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions