Skip to content

v0.9.1 — August 2026 (Beta)

Latest

Choose a tag to compare

@andremun andremun released this 22 Aug 08:40

Instance Space Analysis Toolkit v0.9.1

Engineering-quality, architecture, and infrastructure follow-up to v0.9.0 — no changes to any pipeline algorithm's actual behaviour. Targets MATLAB R2025a or later.

New functionality

  • Per-stage inspection callbacks in build()/explore() — pass 'onStage', @(stageName, model) ... to inspect intermediate results (e.g. PILOT's projection right after it's computed) without splitting a run into several staged calls. Purely additive; omitting it changes nothing.
  • CLOISTER's boundary is now rendered for 2D projections — distribution_boundary.png and InstanceSpace.plot('boundary'). (A three-year-old gap: CLOISTER always computed this bound, nothing ever drew it.) 3D projections are explicitly refused rather than shown inaccurately, since CLOISTER's own hull computation is still 2D-only (tracked separately, #50).

Better engineering

  • Data ingestion given its own train/eval function (INIT.m), closing a real drift between build-time and explore-time behaviour (see Bug fixes).
  • Per-stage input/output contract validation in build() — a hand-edited or incomplete model now fails with a clear error naming the missing field, instead of an opaque crash deep in the pipeline.
  • CI added (GitHub Actions): runs the full test suite on every push/PR.
  • Test suite migrated to matlab.unittest, with code-coverage reporting.
  • SECURITY.md/CONTRIBUTING.md added.
  • LIBSVM MEX-file provenance resolved — unbuildable precompiled binaries removed; a clear error now names the gap if a legacy model ever needs them.
  • Minor: FILTER's previously-discarded diagnostic outputs kept; a couple of small dead-code cleanups; CITATION.cff fixed so Zenodo archival stops silently failing.

Bug fixes

  • Explore-time tie-breaking now matches build-time exactly, including the random tie-break for instances with more than one best-performing algorithm (previously silently broke ties by column order instead).
  • traceAlphaBoundary multi-region export bug — a footprint with multiple disconnected regions previously only exported the first one.
  • opts.general.seed now actually reaches PILOT and SIFTED — both previously ignored a configured seed and always used MATLAB's factory RNG state, silently defeating reproducibility/variance studies that rely on varying the seed.
  • ISAmigrateModel's LIBSVM-retraining path used the wrong performance data, producing a visibly wrong-scale summary table for migrated models.
  • CLOISTER now warns when its correlation-contradiction filter runs against non-mean-centred data (opts.norm.flag=false), a case where its sign-based check silently degrades.
  • opts.perf.epsilon validation fixed for AbsPerf=true — previously accepted with no numeric validation at all.

See RELEASE_NOTES.md for full detail.

Full Changelog: v0.9.0...v0.9.1