Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
215 commits
Select commit Hold shift + click to select a range
3c70caf
chore: add CTBase v0.17 compat (beta version)
ocots Jan 17, 2026
8ce1c39
Merge branch 'main' into breaking/ctmodels-0.7
ocots Jan 18, 2026
8c082ee
Merge branch 'main' into breaking/ctmodels-0.7
ocots Jan 18, 2026
d1c9086
Merge branch 'breaking/ctmodels-0.7' of github.com:control-toolbox/CT…
ocots Jan 18, 2026
01998a2
chore: v0.7.0-beta
ocots Jan 18, 2026
20c8925
chore: v0.6.11 to accept breakages
ocots Jan 18, 2026
4c55fdd
Bump version to 0.7.0-beta for breaking migration
ocots Jan 19, 2026
4109719
feat: add extract_solver_infos function with MadNLP extension (Issue …
ocots Jan 22, 2026
b8338cc
release: v0.7.1-beta
ocots Jan 22, 2026
72ea5c9
docs: comprehensive Strategies architecture design and analysis
ocots Jan 22, 2026
f6dff06
docs: add final architecture with Orchestration module
ocots Jan 22, 2026
ee75ddc
docs: harmonize documentation and complete strategies module code ann…
ocots Jan 23, 2026
9a2d28b
feat: Implement Options module with extraction API
ocots Jan 23, 2026
df7fa89
refactor: Simplify Options module structure
ocots Jan 23, 2026
3e89046
feat: Implement OptionDefinition unification and Strategies module sc…
ocots Jan 23, 2026
a74b49b
feat: improve docstrings and display for Options and Strategies modules
ocots Jan 23, 2026
e9c257b
feat: refactor StrategyOptions with OptionValue and improve documenta…
ocots Jan 24, 2026
7dadb89
feat: Implement StrategyRegistry and introspection API
ocots Jan 24, 2026
15bc51f
test: Add comprehensive tests for registry and introspection APIs
ocots Jan 24, 2026
4023b47
refactor: Make OptionDefinition type-stable with parametric type
ocots Jan 24, 2026
aba66af
feat: Complete StrategyMetadata type stability refactor
ocots Jan 24, 2026
60a6d16
feat: Strategy builders + CTBase exceptions
ocots Jan 24, 2026
e4a2987
feat: Complete strategy configuration and utilities
ocots Jan 24, 2026
837aafd
feat: Complete strategy validation with advanced contract checks
ocots Jan 24, 2026
0e64915
feat: Add comprehensive reports for remaining work and documentation …
ocots Jan 24, 2026
0f573bb
fix: Correct markdown code fences in documentation report
ocots Jan 24, 2026
a0cbf20
feat: Complete Orchestration module implementation
ocots Jan 25, 2026
524d501
docs: Add Orchestration API reference and separate public/private APIs
ocots Jan 25, 2026
0554c09
docs: Complete professional documentation overhaul
ocots Jan 25, 2026
29e5c68
add reports to gitignore
ocots Jan 25, 2026
a6d0975
fix spell checks
ocots Jan 25, 2026
04b2087
remove build
ocots Jan 25, 2026
3155c76
remove reports
ocots Jan 25, 2026
6b07042
Merge pull request #255 from control-toolbox/feature/tools-architecture
ocots Jan 25, 2026
dca329e
feat: Complete restructure of src/ directory architecture
ocots Jan 25, 2026
17938c7
foo
ocots Jan 25, 2026
61fb4cd
feat: Phase 1 - Module Modelers with AbstractStrategy contract
ocots Jan 25, 2026
81a69b3
feat: Add DOCP module for Discretized Optimal Control Problems
ocots Jan 25, 2026
2db43e7
fix: Apply development standards to DOCP module
ocots Jan 25, 2026
9f4ef03
refactor: Phase 1 critical revisions - clean architecture
ocots Jan 26, 2026
9a06a93
refactor: Complete Phase 2 refonte - Architecture propre
ocots Jan 26, 2026
0add8c9
refactor: Comment legacy NLP imports - replaced by new modules
ocots Jan 26, 2026
8a157bc
refactor: Split model_api.jl into Optimization and DOCP modules
ocots Jan 26, 2026
e9ef846
refactor: Rename to building.jl and move solver_info to Optimization
ocots Jan 26, 2026
dba3197
test: Add comprehensive tests for Optimization and DOCP modules
ocots Jan 26, 2026
fe18b3d
fix: Correct ExaModels syntax in tests (partial)
ocots Jan 26, 2026
9121906
fix: Correct ExaModels syntax in all tests - ALL TESTS PASSING
ocots Jan 26, 2026
0ec6547
feat: Add error cases and integration tests
ocots Jan 26, 2026
0cf4da6
refactor: Restructure test suite into suite/ directory
ocots Jan 26, 2026
4e146af
fix: Include src/init/ in CTModels.jl
ocots Jan 26, 2026
d423e30
fix: Rename test_default() to test_defaults()
ocots Jan 26, 2026
ec55472
fix: Import builder functions and extract OptionValue in Modelers
ocots Jan 26, 2026
e66c8b0
fix: Resolve all remaining test failures
ocots Jan 26, 2026
f083569
feat: Restore full backend testing with proper option filtering
ocots Jan 26, 2026
b713c9b
refactor: Add explicit default value functions for modeler options
ocots Jan 26, 2026
34d4d33
refactor: Add extract_raw_options utility to eliminate code duplication
ocots Jan 26, 2026
61a81ab
feat: Introduce NotProvided type to disambiguate option defaults
ocots Jan 26, 2026
dee1d75
test: Update modelers test to reflect NotProvided behavior
ocots Jan 26, 2026
fcc11a5
fix: Replace nothing with NotStored sentinel for option filtering
ocots Jan 26, 2026
fdfc45b
fix: Restore proper KernelAbstractions.Backend type for ExaModeler
ocots Jan 26, 2026
d9154fe
test: Suppress overwriting bound warnings in test_model.jl
ocots Jan 26, 2026
adc4a64
docs: Add explanatory messages for intentional warnings in test_const…
ocots Jan 26, 2026
ddfba8b
test: Add comprehensive tests for MadNLP extension
ocots Jan 26, 2026
1a92d59
refactor: Split test_utils.jl into orthogonal test files
ocots Jan 26, 2026
d8a7b55
fix: Correct test failures in test_exports.jl and test_model.jl
ocots Jan 26, 2026
bec0aea
refactor: Modularize optimization test files
ocots Jan 26, 2026
ffb4671
refactor: Modularize strategies test files
ocots Jan 26, 2026
35fb57e
refactor: Modularize 8 ocp test files
ocots Jan 26, 2026
33e4461
refactor: Complete modularization of ocp test files
ocots Jan 26, 2026
c37a979
Merge pull request #256 from control-toolbox/feature/strategies-modelers
ocots Jan 26, 2026
718fd85
feat: Add modular architecture refactoring plan
ocots Jan 26, 2026
02db68a
foo
ocots Jan 26, 2026
7afa678
move
ocots Jan 26, 2026
b1674a9
move
ocots Jan 26, 2026
9965e6b
feat(phase1): Create modular architecture with Utils, Display, Serial…
ocots Jan 26, 2026
8ab0670
fix: Correct module dependencies - InitialGuess imports from Utils
ocots Jan 26, 2026
e4cfd05
feat(phase2): Activate Display, Serialization, and InitialGuess modules
ocots Jan 26, 2026
6435abe
fix: Add missing exports and imports to InitialGuess module
ocots Jan 26, 2026
428d6ef
refactor: Move RecipesBase.plot stub from Serialization to Display mo…
ocots Jan 26, 2026
efc4c42
feat(phase3): Complete OCP module reorganization
ocots Jan 26, 2026
46775ac
fix(phase3): Clean up OCP module structure
ocots Jan 26, 2026
849fdac
fix(phase4): Add missing OCP exports and qualify imports to resolve c…
ocots Jan 26, 2026
92854c3
fix: Remove import warnings by fixing module dependencies
ocots Jan 26, 2026
9d514b0
refactor: Move compatibility aliases to OCP module
ocots Jan 26, 2026
d0278f0
refactor: Move type definitions to their logical modules
ocots Jan 26, 2026
d941bde
docs: Improve CTModels.jl documentation quality
ocots Jan 26, 2026
68437a6
fix(phase4): Add missing exports for InitialGuess tests
ocots Jan 26, 2026
835436a
fix(phase4): Resolve build_solution conflict and add missing imports
ocots Jan 27, 2026
142ba46
fix(phase4): Add plot support and missing accessor exports
ocots Jan 27, 2026
60295ba
feat: Add plot! support to public API
ocots Jan 27, 2026
70e7a36
fix: Add objective accessor to OCP exports
ocots Jan 27, 2026
0871cae
fix: Add solver info accessor functions to OCP exports
ocots Jan 27, 2026
cd0eee6
fix: Add all missing accessor functions to OCP exports
ocots Jan 27, 2026
de8baca
fix: Complete serialization tests - 100% success
ocots Jan 27, 2026
4f7ab95
fix: Correct OCP test exports and improve test results
ocots Jan 27, 2026
92e6001
feat: Major OCP test fixes - achieve 99.7% test success rate
ocots Jan 27, 2026
bf235f0
feat: Add missing constraint accessor exports
ocots Jan 27, 2026
2f8889c
fix: Resolve remaining export and import issues
ocots Jan 27, 2026
2b06df5
fix: Resolve final Display and time function issues
ocots Jan 27, 2026
adf643f
fix: Add remaining components functions to Display imports
ocots Jan 27, 2026
e393135
�� feat: ACHIEVE 100% TEST SUCCESS RATE!
ocots Jan 27, 2026
2a07735
refactor: Improve Display imports readability
ocots Jan 27, 2026
80fdc33
refactor: Improve Display imports readability
ocots Jan 27, 2026
9a96fa1
docs: add and update analysis reports for DOCP and tools architecture
ocots Jan 27, 2026
c705189
docs: improve Mermaid diagram readability in DOCP audit
ocots Jan 27, 2026
d3ed6b3
�� feat: ACHIEVE PERFECT TEST/SOURCE ORTHOGONALITY!
ocots Jan 27, 2026
5178b9b
✅ feat: Complete Phase 3 - Final test structure optimization
ocots Jan 27, 2026
e223b76
docs: replace Mermaid with ASCII art for U-shape pipeline in DOCP audit
ocots Jan 27, 2026
469a6f8
docs: add ER diagram to visualize DOCP structure
ocots Jan 27, 2026
b305960
docs: fix ER diagram relationships and add missing builder closures
ocots Jan 27, 2026
1131e27
docs: add complete ER diagrams for all 5 alternative architectures (A-E)
ocots Jan 27, 2026
03a1a15
feat: Complete test orthogonality and fix final test error
ocots Jan 27, 2026
6baba5e
docs: refine Alternative B with Strategies.id automatic lookup
ocots Jan 27, 2026
6e556b7
docs: expand Long-term Vision into complete Alternative F synthesis
ocots Jan 27, 2026
c485745
docs: detail builder signature handling (ADNLPModeler vs ExaModeler)
ocots Jan 27, 2026
845803d
fix: Mermaid sequence diagram parse error (remove ... in labels)
ocots Jan 27, 2026
5f1c9ae
cleaning
ocots Jan 28, 2026
f5d244f
rename
ocots Jan 28, 2026
cab5953
fix: Replace FieldError with ErrorException for Julia 1.10 compatibility
ocots Jan 28, 2026
b766e71
fix: Use Exception base type for Julia 1.10-1.12 compatibility
ocots Jan 28, 2026
40ce416
Merge pull request #257 from control-toolbox/refactor/modular-archite…
ocots Jan 28, 2026
8b9aefc
first commit
ocots Jan 28, 2026
d98200b
feat: Add comprehensive defensive validation for OCP components
ocots Jan 28, 2026
a5dcf8a
feat: Add defensive validation for objective and constraints
ocots Jan 28, 2026
bdbdcca
feat: Add comprehensive defensive validation system
ocots Jan 28, 2026
c9c58b9
feat: implement enhanced error system with refactoring of priority files
ocots Jan 28, 2026
b9ae585
refactor: découpage orthogonal du module InitialGuess
ocots Jan 28, 2026
cd828ee
fix: corriger les erreurs de tests du module InitialGuess
ocots Jan 28, 2026
f87571b
fix: réécrire tests state/control/variable avec modules et DummyOCP
ocots Jan 28, 2026
4f082b8
fix: corriger les DummyOCP et tests pour InitialGuess
ocots Jan 28, 2026
091204b
fix: corriger les dernières erreurs de tests InitialGuess
ocots Jan 28, 2026
f9e135e
fix: corriger les références Exceptions dans constraints.jl
ocots Jan 28, 2026
d49ab6b
refactor: enrichir les erreurs dans times.jl avec Exceptions
ocots Jan 28, 2026
37aa8f8
refactor: enrichir les erreurs dans control.jl et name_validation.jl
ocots Jan 28, 2026
882ee4a
refactor: enrichir les erreurs dans state.jl avec Exceptions
ocots Jan 28, 2026
f648642
refactor: enrichir les erreurs dans variable.jl avec Exceptions
ocots Jan 28, 2026
6875ddf
refactor: enrichir les erreurs dans objective.jl avec Exceptions
ocots Jan 28, 2026
8e8671f
refactor: enrichir toutes les erreurs dans constraints.jl avec Except…
ocots Jan 28, 2026
48b94fb
refactor: enrichir l'erreur dans dynamics.jl avec Exceptions
ocots Jan 28, 2026
a7419c9
refactor: mettre à jour la documentation InitialGuess avec Exceptions
ocots Jan 28, 2026
fdff49c
fix: corriger les tests pour attendre Exceptions.IncorrectArgument
ocots Jan 28, 2026
9a13542
docs: ajouter audit qualité complet des messages d'erreur enrichis
ocots Jan 28, 2026
9188ea0
feat: améliorer qualité messages d'erreur - score 84% → 92%
ocots Jan 28, 2026
13f100f
feat: améliorer messages d'erreur - Priorité 2 (score 92% → 96%)
ocots Jan 28, 2026
e5511a9
refactor: réorganiser module Exceptions pour cohérence avec projet
ocots Jan 28, 2026
19839ee
Rename exceptions.jl to Exceptions.jl
ocots Jan 28, 2026
b905bb1
Merge pull request #262 from control-toolbox/feat/enhance-defensive-v…
ocots Jan 29, 2026
dba2130
first commit
ocots Jan 29, 2026
46bafb1
Add idempotence tests for export/import serialization
ocots Jan 29, 2026
dffcb1d
feat: preserve Symbol types in JSON serialization
ocots Jan 29, 2026
fd3cfed
Merge pull request #263 from control-toolbox/test/serialization-idemp…
ocots Jan 29, 2026
6b7a9bb
first commit
ocots Jan 29, 2026
d5323c2
feat: refactor JSON serialization with empirical validation
ocots Jan 29, 2026
7f2f33f
Phase 3: Deepcopy validation and comprehensive testing
ocots Jan 29, 2026
65bab88
Phase 4 (part 1): Add discretization utilities and _serialize_solution
ocots Jan 29, 2026
84b238c
Phase 4 (part 2): Refactor JLD2 to use discretization
ocots Jan 29, 2026
fddd002
Phase 4: Complete serialization optimization - All tests pass
ocots Jan 29, 2026
c6458f6
Phase 5: Refactor build_solution interpolation with unified API
ocots Jan 30, 2026
2330ca4
Merge pull request #264 from control-toolbox/refactor/serialization-o…
ocots Jan 30, 2026
0660829
Add MadNLP objective sign tests
ocots Jan 30, 2026
e21bd5f
foo
ocots Jan 30, 2026
abd7840
Merge branch 'refactor/serialization-optimizations' into develop
ocots Jan 30, 2026
b508249
feat: restore model field in Solution struct while eliminating JLD2 w…
ocots Jan 30, 2026
5d06fcd
feat: enriched exception system with user-friendly error messages
ocots Jan 31, 2026
752f578
feat: refactor test suite for enriched exceptions - all 4311 tests pass
ocots Jan 31, 2026
7909407
some cleaning
ocots Jan 31, 2026
10686c2
foo
ocots Jan 31, 2026
efbbdfc
Merge pull request #265 from control-toolbox/feature/enriched-excepti…
ocots Jan 31, 2026
992be5d
new rules
ocots Jan 31, 2026
66aa25b
new rules
ocots Jan 31, 2026
b683367
docs: add comprehensive reference for ADNLPModels and ExaModels options
ocots Jan 31, 2026
1e9ae5f
feat: complete enhanced modelers design and analysis
ocots Jan 31, 2026
9e47c4d
feat: implement enhanced modelers with new options
ocots Jan 31, 2026
fec51b8
fix: resolve duplicate includes and import issues
ocots Jan 31, 2026
dd60d14
add verbose and showtiming
ocots Jan 31, 2026
fdb9914
feat: complete enhanced modelers options with ExaModeler refactor
ocots Jan 31, 2026
f80d78b
feat: add agent directives to all rules for transparency
ocots Jan 31, 2026
e08eba4
Merge pull request #267 from control-toolbox/feature/enhance-modelers…
ocots Feb 1, 2026
7c643f3
migrate to CTBase
ocots Feb 4, 2026
d1f7661
feat: Full CTBase exception compatibility - 4213/4213 tests passing
ocots Feb 4, 2026
8c8a1cb
add ct registry to ci
ocots Feb 4, 2026
49a65ac
v0.8.0-beta
ocots Feb 4, 2026
f392c9a
no windows
ocots Feb 4, 2026
34b8b25
feat: migrate CTSolvers modules from CTModels (Phase 2-3)
ocots Feb 4, 2026
8a45764
docs: update documentation for CTModels 0.8.0-beta after module migra…
ocots Feb 4, 2026
a9cba0c
docs: fix cross-reference warnings in documentation build
ocots Feb 4, 2026
5e62d16
docs: complete documentation update with extensions integration
ocots Feb 4, 2026
f547ec0
Merge pull request #270 from control-toolbox/migration
ocots Feb 4, 2026
46a4229
docs: add CHANGELOG and BREAKING for 0.8.0-beta release
ocots Feb 4, 2026
1540f7e
Merge branch 'migration' into develop
ocots Feb 4, 2026
a1c1289
foof
ocots Feb 4, 2026
f20932a
Refactor as_vector function to accept AbstractVector
ocots Feb 7, 2026
180a77f
refactor: update imports and references after CTSolvers migration
ocots Feb 10, 2026
6864407
bump: version 0.8.0-beta.1
ocots Feb 10, 2026
d68d83c
Update .gitignore: exclude .agent/, .windsurf/, and .reports/ directo…
ocots Feb 10, 2026
1e6d247
Update GitHub workflows: use CTActions shared workflows for coverage …
ocots Feb 10, 2026
fd1bcbc
Bump version to 0.8.1-beta
ocots Feb 10, 2026
5d5e5cd
Update CHANGELOG: add 0.8.1-beta release notes and clean up Unrelease…
ocots Feb 10, 2026
5a43712
refactor: centralise validation in build_initial_guess (SRP)
ocots Feb 12, 2026
e38adbb
chore: update version to 0.8.2-beta
ocots Feb 12, 2026
9f4c4cc
docs: add 0.8.2-beta changelog and breaking changes
ocots Feb 12, 2026
2fa3b94
refactor: rename InitialGuess types and API for clarity
ocots Feb 12, 2026
73de535
cleanup: remove redundant AbstractModel alias and documentation
ocots Feb 12, 2026
723ff8b
refactor: complete InitialGuess module reorganization
ocots Feb 12, 2026
2137bd4
refactor: rename InitialGuess module to Init for brevity
ocots Feb 12, 2026
87c24b3
chore: bump version to 0.8.3-beta
ocots Feb 12, 2026
f81e477
docs: add 0.8.3-beta changelog and breaking changes
ocots Feb 12, 2026
b859f58
chore: bump version to 0.9.0-beta
ocots Feb 12, 2026
4ed14b1
docs: update version references from 0.8.3 to 0.9.0
ocots Feb 12, 2026
4b488e2
docs: translate French comments and docstrings to English
ocots Feb 13, 2026
033b583
docs: fix InitialGuess module path in API reference
ocots Feb 13, 2026
a7cb3ee
Merge pull request #273 from control-toolbox/rename
ocots Feb 13, 2026
8b387bc
remove extras
ocots Mar 2, 2026
7d61c72
Bump version to 0.9.1
ocots Mar 2, 2026
9f8f479
docs: add 0.9.1 changelog and breaking changes
ocots Mar 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,8 @@ on:
jobs:
call:
uses: control-toolbox/CTActions/.github/workflows/ci.yml@main
with:
runs_on: '["ubuntu-latest","macos-latest"]'
use_ct_registry: true
secrets:
SSH_KEY: ${{ secrets.SSH_KEY }}
3 changes: 3 additions & 0 deletions .github/workflows/Coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,8 @@ on:
jobs:
call:
uses: control-toolbox/CTActions/.github/workflows/coverage.yml@main
with:
use_ct_registry: true
secrets:
codecov-secret: ${{ secrets.CODECOV_TOKEN }}
SSH_KEY: ${{ secrets.SSH_KEY }}
4 changes: 4 additions & 0 deletions .github/workflows/Documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,7 @@ on:
jobs:
call:
uses: control-toolbox/CTActions/.github/workflows/documentation.yml@main
with:
use_ct_registry: true
secrets:
SSH_KEY: ${{ secrets.SSH_KEY }}
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@ test/solution.jld2
test/solution.json

#
reports/
profiling/
tmp/
.agent/
.agent/
.windsurf/
.reports/
.extras/
246 changes: 246 additions & 0 deletions BREAKING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
# Breaking Changes

This document describes breaking changes in CTModels releases and how to migrate your code.

## [0.9.1] - 2026-03-02

**No breaking changes** - This release only removes experimental test files from `test/extras/` directory. All public APIs remain unchanged.

---

## [0.9.0-beta] - 2026-02-12

### Module and Type Renaming

#### Overview
The InitialGuess module has been renamed to `Init` for better API ergonomics and more concise naming. This is a **breaking change** that requires users to update their imports and type references.

#### What Changed

##### Module Name
```julia
# Before (0.8.2-beta and earlier)
using CTModels.InitialGuess

# After (0.9.0-beta)
using CTModels.Init
```

##### Type Names
```julia
# Before
pre = CTModels.OptimalControlPreInit(...)
abstract_type = CTModels.AbstractOptimalControlPreInit

# After
pre = CTModels.PreInitialGuess(...)
abstract_type = CTModels.AbstractPreInitialGuess
```

#### Migration Required

**User code changes required** - update your imports and type references:

```julia
# Before
using CTModels.InitialGuess
pre_init = CTModels.OptimalControlPreInit(state=0.1, control=0.2)

# After
using CTModels.Init
pre_init = CTModels.PreInitialGuess(state=0.1, control=0.2)
```

#### Benefits

- **More Concise API**: `CTModels.Init` vs `CTModels.InitialGuess`
- **Cleaner Type Names**: `PreInitialGuess` vs `OptimalControlPreInit`
- **Better Developer Experience**: Shorter, more intuitive names
- **Maintained Functionality**: Zero behavioral changes, only naming improvements

#### Compatibility

- All public functions remain unchanged
- Only module and type names have been updated
- All tests pass (3146/3146)
- Ready for production use

---

## [0.8.2-beta] - 2026-02-12

### InitialGuess Validation Architecture Change

#### Overview
Refactored the InitialGuess validation system to follow Single Responsibility Principle. This is an **internal architectural change** that does not affect the public API behavior but improves code organization.

#### What Changed

##### Construction vs Validation Separation
```julia
# Before (0.8.1-beta and earlier)
# initial_guess() validated internally, build_initial_guess() had mixed responsibilities

# After (0.8.2-beta)
# initial_guess() is pure construction
# build_initial_guess() centralises validation for ALL input types
```

##### Validation Coverage Fix
```julia
# Before: This case was NOT validated (potential runtime error)
bad_init = CTModels.InitialGuess(wrong_dimensions...)
validated = CTModels.build_initial_guess(ocp, bad_init) # No validation!

# After: All branches are validated
validated = CTModels.build_initial_guess(ocp, bad_init) # Throws IncorrectArgument
```

#### Migration Required

**No user code changes required** - this is an internal refactoring that:
- Maintains all existing public APIs
- Fixes a validation gap for direct `AbstractInitialGuess` inputs
- Improves error detection and code reliability
- All tests pass (147/147)

#### Benefits

- **Better Error Detection**: Invalid initial guesses are caught consistently
- **Cleaner Architecture**: Clear separation of construction and validation concerns
- **Improved Reliability**: Eliminates potential runtime errors from unchecked inputs

---

## [0.8.0-beta] - 2026-02-04

### Module Migration to CTSolvers

#### Overview
Major refactoring where several modules have been moved from CTModels to the new CTSolvers package.

#### Moved Modules
The following modules are no longer part of CTModels and must be imported from CTSolvers:

- **Options** → `using CTSolvers.Options`
- **Strategies** → `using CTSolvers.Strategies`
- **Orchestration** → `using CTSolvers.Orchestration`
- **Optimization** → `using CTSolvers.Optimization`
- **Modelers** → `using CTSolvers.Modelers`
- **DOCP** → `using CTSolvers.DOCP`

#### Migration Guide

##### Before (CTModels < 0.8.0)
```julia
using CTModels
using CTModels.Options
using CTModels.Strategies
using CTModels.Optimization
```

##### After (CTModels ≥ 0.8.0)
```julia
using CTModels
using CTSolvers.Options
using CTSolvers.Strategies
using CTSolvers.Optimization
```

#### Specific Changes

##### Option Types
```julia
# Before
using CTModels.Options
opt = CTModels.OptionValue(100, :user)

# After
using CTSolvers.Options
opt = CTSolvers.OptionValue(100, :user)
```

##### Strategy Types
```julia
# Before
using CTModels.Strategies
strategy = CTModels.DirectStrategy()

# After
using CTSolvers.Strategies
strategy = CTSolvers.DirectStrategy()
```

##### Modelers
```julia
# Before
using CTModels.Modelers
modeler = CTModels.ADNLPModeler()

# After
using CTSolvers.Modelers
modeler = CTSolvers.ADNLPModeler()
```

##### DOCP Types
```julia
# Before
using CTModels.DOCP
docp = CTModels.DiscretizedOptimalControlProblem(...)

# After
using CTSolvers.DOCP
docp = CTSolvers.DiscretizedOptimalControlProblem(...)
)
```

#### Package Dependencies

If your package depends on CTModels and uses any of the moved modules, update your dependencies:

```toml
# Project.toml
[deps]
CTModels = "34c4fa32-2049-4079-8329-de33c2a22e2d"
CTSolvers = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" # Add CTSolvers

[compat]
CTModels = "0.8"
CTSolvers = "0.1" # Or appropriate version
```

#### What Remains in CTModels

The following modules remain in CTModels and are unchanged:

- **OCP**: Core optimal control problem types and building
- **Utils**: Utility functions and helpers
- **Display**: Text display and printing
- **Serialization**: Export/import functionality
- **InitialGuess**: Initial guess management
- **Extensions**: Plots, JSON, JLD2 extensions

#### Compatibility

- CTModels 0.8.0-beta maintains compatibility with CTBase 0.18
- All remaining CTModels APIs are unchanged
- Extensions (Plots, JSON, JLD2) work as before

#### Action Required

1. **Update imports**: Replace CTModels module imports with CTSolvers equivalents
2. **Update dependencies**: Add CTSolvers to your package dependencies
3. **Update code**: Change module prefixes from `CTModels.` to `CTSolvers.` where needed
4. **Test**: Verify your code works with the new module structure

#### Help and Support

- Check the [CTSolvers documentation](https://github.com/control-toolbox/CTSolvers.jl) for detailed API
- Open an issue if you encounter migration problems
- See examples in the CTSolvers repository for usage patterns

---

## Older Breaking Changes

See [CHANGELOG.md](CHANGELOG.md) for historical breaking changes.
Loading
Loading