V1.2.3 - Feb 19 2026
V1.2.3 -- Feb 19, 2026
⚠️ Breaking Changes
Requirements
Method Removals
transition_tonow required onTransitionCriterion(#4848) — Users must explicitly specify transition targets- Removed callable serialization (#4806) — Encoding callables now raises an exception
- Removed legacy classes:
TData(#4771),MinimumTrialsInStatus(#4786), completion criteria (#4850),arms_per_nodeoverride (#4822)
🚀 New Features
Experiment Lifecycle Tracking
New ExperimentStatus enum (DRAFT, INITIALIZATION, OPTIMIZATION, COMPLETED) with automatic status updates from the Scheduler based on generation strategy phase. (#4737, #4738, #4891)
BOPE (Preference Learning)
- Utility-based traces via PairwiseGP preference models (#4792)
UtilityProgressionAnalysissupport with "User Preference Score" UI (#4793)
BONSAI (Pruning)
- New
pruning_target_parameterizationAPI parameter (#4775) - Tutorial and documentation added (#4865, #4871)
New methods
add_tracking_metrics()method (#4858)TorchAdapter.botorch_modelconvenience property (#4827)DerivedParameternow supportsboolandstrtypes (#4847)- LLM integration:
LLMProvider/LLMMessageabstractions andllm_messageson Experiment (#4826, #4904)
Visualization
- Improved slice/contour plots: uses status_quo → best trial → center hierarchy (#4841)
- Sensitivity analysis excludes 'step' by default (#4777)
ScalarizedOutcomeConstraintsupport in feasibility analysis (#4856)
⚡ Performance
- Data handling:
DataRow-backedDataclass with itertuples — 3.6x faster tensor creation (#4773, #4774, #4798) - Generation strategy caching: Significant speedup in high trial count regimes (#4830)
- Optimization complete logic: O(nodes × TC) → O(TC on current node) (#4828)
🐛 Bug Fixes
- Fix
GeneratorRun.clone()not copying metadata (mutations affected original) (#4892) - Fix OneHot transform not updating hierarchical parameter dependents (#4825)
- Fix Float parameters loaded as ints from SQA (#4853)
- Fix scikit-learn 1.8.0 compatibility with XGBoost (#4816)
- Trials now marked ABANDONED (not FAILED) on metric fetch failure (#4779)
- Baseline improvement healthcheck now shows WARNING instead of FAIL (#4883)
🧹 Modernization
Codebase updated to Python 3.11+ idioms:
typing.Selfinstead oftyping_extensions.Self(#4867)StrEnuminstead of(str, Enum)(#4868)ExceptionGroup(PEP 654) for structured errors (#4877)asyncio.TaskGroupfor structured concurrency (#4878)- PEP 604 type annotations (
X | None) (#4912)
Full Changelog
For the complete list of 90+ PRs, see the GitHub releases page.