Repository navigation
Piccolo v2.2.0
Changes
- The quantum template integrator defaults flipped from the
BilinearIntegratorplaceholder to the structure-exploiting native tier:HermitianExponentialIntegrator(unitary/ket),NonHermitianExponentialIntegrator(density), andSplineIntegratorfor the spline method.BilinearIntegratorremains fully selectable; theCubicSplinePulse+Bilinearpairing still errors by design. - The default solver backend is now MadNLP (via DirectTrajOpt 0.11's default, with its
QualityFunctionUpdatebarrier); Ipopt remains fully selectable viasolve!(prob; options = IpoptOptions(...)). - Specs: the solver backend is now part of the declared contract (
:madnlpdefault,:ipoptselectable) with a runtime declared==executed coherence assertion; the specs corpus wire forms re-frozen accordingly. Unpinned historical specs' hashes change; persistedresult.tomlspecs carry explicit backends and stay reproducible.
Added
- The adjoint-robustness objective family and
RobustControlProblem - The
integrators_splinefamily (open-core: multiket/multidensity/sampling spline integrators, interval coefficients, VJP/JVP machinery) - Per-member endpoint fidelity constraints for
SamplingProblem GaussianPulsecarries the family'sdrive_namefield (restores its NamedTrajectory conversion)
Fixed
- Eleven real defects from the coverage campaign: the exponential assembly's globals threading and map-before-triu ordering; permuted ∂c/∂θ global columns in density/multidensity Jacobians; a time-warp
BoundsErrorin_global_full_cols; the sampling constructors'global_dataDict-formTypeErrorin both integrator families; cubic multidensity sampling members silently dropping drives;ModulatedDrive'sdynamics_operatorcrash;SamplingProblem's integrator-kwarg type-block (all four documented shapes now accepted);MinimumTimeProblem's density-goal lockout;GaussianPulse's missing field - The test suite's assertion-at-cutoff family hardened: converge-then-assert with loud status assertions — the suite is now solver-guaranteed rather than lucky
Merged pull requests:
- fix(#326): complete the SplineIntegrators re-export seam — moved names unreachable at top level (#327) (@aarontrowbridge)
- feat(321): HermitianExponentialIntegrator warp column — derived-Δt dynamics with exact duration sensitivities (TR Phase 1b) (#328) (@aarontrowbridge)
- feat(3c): spline-shape constraint family + Hermite primitives + bending regularizer to Piccolo (open-core slice 3c) (#329) (@aarontrowbridge)
- docs(#330): demote warp-docstring @refs to code ticks (NT names render nowhere downstream) (#331) (@aarontrowbridge)
- feat(3d): adjoint-robustness objective family + RobustControlProblem to Piccolo (open-core slice 3d) (#332) (@aarontrowbridge)
- chore(deps): update DataInterpolations requirement from 8.9 to 8.9, 10.1 (#333) (@dependabot[bot])
- fix(sampling): re-land per-member endpoint fidelity constraints (#339) (#340) (@jeonghun-jj-lee)
- fix(operators): ModulatedDrive dynamics_operator crash + coverage reconciliation fills (#345) (#346) (@aarontrowbridge)
- docs(ci): pin docs template by commit SHA (#351) (#352) (@aarontrowbridge)
- test(coverage): E1 integrators_spline — family to 90.2% reachable, real multidensity-cubic bug fixed (#347) (#353) (@aarontrowbridge)
- test(coverage)+fix: E2 tails to 99.7%+, five real bugs — globals assembly, permuted columns, warp BoundsError (#348) (#354) (@aarontrowbridge)
- test(coverage)+fix: E3 drift fill, three real bugs, the measurement policy calls (#349) (#355) (@aarontrowbridge)
- feat(334): finish the BilinearIntegrator demotion — HE/NHE/Spline native defaults, three suite reds diagnosed (#357) (#359) (@aarontrowbridge)
- feat(360): inherit the DTO-0.11 MadNLP default — compat bump, the specs dual-backend contract, true-default proof (#360) (#363) (@aarontrowbridge)
- test(358): harden the assertion-at-cutoff family — converge-then-assert, never lucky (#358) (#364) (@aarontrowbridge)
- release: v2.2.0 bump (#356) (#365) (@aarontrowbridge)
Closed issues:
- [unitaryDESIGN] Visual Design of a Bosonic Qubit in Wigner Function Space (#57)
- [unitaryDESIGN] Documentation Improvement for AI Agents (#61)
- fidelity needs inspection (#106)
- propagate
kwargsforplot_unitary_populations(#123) - Re-export seam gap: unitary_rollout_trajectory (and spline-block siblings) unreachable at top level post-3b (#326)
- docs: warp_plumbing docstrings carry @refs to NT names that render nowhere downstream (sync_timesteps!, ddeltats_dparams) (#330)
- Demote BilinearIntegrator from template defaults — quantum templates flip to structure-exploiting integrators (3b/3a natives) (#334)
- SamplingProblem: per-member endpoint fidelity constraints regressed by Specs Phase 1b rebase (#259) (#339)
- Reconcile codecov coverage (badge 83%) with the campaign's measured ~96% (#345)
- Coverage cluster E1: the integrators_spline family — 16 files, 1930 misses, five at 0% (#347)
- Coverage cluster E2: adjoint-robustness, exponential tail, spline constraints (~524 misses) (#348)
- Coverage cluster E3: September drift, rollout lanes, dead code, and the measurement policy calls (#349)
- docs(ci): pin docs template by commit SHA (tag-rev fetch breaks under Pkg ≥1.13) (#351)
- Cut v2.2.0 (E-cluster fixes live in 2.1.0) + shipped-env bump + template re-verify (#356)
- Finish the BilinearIntegrator demotion (#334) + inherit the MadNLP default — the one-release v2.2.0 surface (#357)
- Harden the assertion-at-cutoff test family (pre-v2.2.0) — converge-then-assert, never lucky (#358)
- Inherit the MadNLP default (post-DTO-v0.11.0) — the specs gate, compat bump, and the true-default regime proof (#360)