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". CIMOptimizer.jl's current compat is:
QUBODrivers = "0.5"
(QUBOTools: via QUBODrivers)
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
- All ~50 hyperparameters go through untyped
RawOptimizerAttribute keys — fine for the long tail, but promote the campaign-relevant ones (num_runs, time limit, seed if the cim-optimizer backend supports one) to typed @setup attributes.
- Timing comes from
solver.result["time"] — verify what it measures (PyTorch solve loop vs including tensor setup) and map it to "effective" accordingly; document under the namespaced breakdown if setup is significant.
- PyTorch dependency makes this the heaviest Python environment in the wave: confirm CondaPkg resolution alongside PySA/DWave in one environment, or document that it needs an isolated environment (the harness supports per-solver environments either way, but it must be known).
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". CIMOptimizer.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
RawOptimizerAttributekeys — fine for the long tail, but promote the campaign-relevant ones (num_runs, time limit, seed if the cim-optimizer backend supports one) to typed@setupattributes.solver.result["time"]— verify what it measures (PyTorch solve loop vs including tensor setup) and map it to"effective"accordingly; document under the namespaced breakdown if setup is significant.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