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". MQLib.jl's current compat is:
QUBODrivers = "0.4, 0.5"
QUBOTools = "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
- Suggested first driver in the wave (pure JLL binary, no Python, already has a
RandomSeed["seed"] attribute and per-iteration timing) — its conformance run becomes the reference template posted on the epic.
QUBOTools = "0.12" is the tightest pin in the ecosystem — widen to "0.12, 0.13" after verifying the format/API surface used (model read + SampleSet construction) is unchanged in 0.13.
- MQLib heuristics are time-limit driven: declare
enforces_time_limit = true and make sure MOI.TimeLimitSec maps to the heuristic runtime parameter (it already scales num_reads to the time limit — document the semantics).
- 37 heuristics selectable: expose the heuristic name as a sweep-able attribute and record it under
metadata["algorithm"]["name"] so campaign results distinguish them.
Common work (all drivers in the wave)
- 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.
- Adopt the QUBODrivers metadata schema:
metadata["time"]["effective"] (backend solve time) always set; seeds recorded under metadata["seeds"]; backend name/version under metadata["backend"].
- Declare capability traits honestly (
supports_seed, honors_final_reads, enforces_time_limit).
- Adopt the standard
RandomSeed attribute where the backend supports seeding (alias any existing seed attribute to it; keep the old one as deprecated).
- CI runs the upgraded
QUBODrivers.test(Optimizer) with benchmark_conformance = true.
- Tag a release and verify it registers (General registry compat must match).
Checkpoints (anti-drift)
Acceptance criteria
- Registered release with QUBODrivers 0.6 / QUBOTools 0.13 compat, conformance suite green in CI, package resolves alongside QUBO.jl v0.6.
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". MQLib.jl's current compat is: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
RandomSeed["seed"]attribute and per-iteration timing) — its conformance run becomes the reference template posted on the epic.QUBOTools = "0.12"is the tightest pin in the ecosystem — widen to"0.12, 0.13"after verifying the format/API surface used (model read + SampleSet construction) is unchanged in 0.13.enforces_time_limit = trueand make sureMOI.TimeLimitSecmaps to the heuristic runtime parameter (it already scales num_reads to the time limit — document the semantics).metadata["algorithm"]["name"]so campaign results distinguish them.Common work (all drivers in the wave)
QUBODrivers = "0.6"(drop pre-0.5 entries unless there's a reason to keep them) andQUBOTools = "0.13"where it is a direct dependency. Fix any breakage from the upgrade.metadata["time"]["effective"](backend solve time) always set; seeds recorded undermetadata["seeds"]; backend name/version undermetadata["backend"].supports_seed,honors_final_reads,enforces_time_limit).RandomSeedattribute where the backend supports seeding (alias any existing seed attribute to it; keep the old one as deprecated).QUBODrivers.test(Optimizer)withbenchmark_conformance = true.Checkpoints (anti-drift)
QUBO@0.6+ this branch viaPkg.develop— the actual coexistence check, not just compat-file edits.Acceptance criteria