Skip to content

Release wave: QUBODrivers 0.3→0.6 / QUBOTools 0.10→0.13 + timing metadata #53

@bernalde

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". TenSolver.jl's current compat is:

QUBODrivers = "0.3"
QUBOTools   = "0.10"

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

  • Largest version jump in the wave: QUBODrivers 0.3 → 0.6 and QUBOTools 0.10 → 0.13. Expect API churn (the @setup macro surface and SampleSet constructors changed); budget accordingly. If anything is unclear, MQLib.jl post-wave is the reference implementation.
  • No timing recorded in SampleSet metadata — DMRG elapsed time is only logged via the ITensors on_iteration callback. Capture it (sweep times + total) into metadata["time"]["effective"] and the namespaced breakdown.
  • DMRG convergence parameters (maxdim, cutoff, vtol) are the natural sweep axes — expose them as typed @setup attributes.
  • Recently fixed one-variable QUBO handling (Modernize Julia CI cache action and workflow pins #48) — make sure that fix is in the release that carries the compat bump.

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions