Skip to content

Move Options, Strategies, and Orchestration to CTBase#149

Merged
ocots merged 1 commit into
mainfrom
move-ctsolvers-to-ctbase
Jun 22, 2026
Merged

Move Options, Strategies, and Orchestration to CTBase#149
ocots merged 1 commit into
mainfrom
move-ctsolvers-to-ctbase

Conversation

@ocots

@ocots ocots commented Jun 22, 2026

Copy link
Copy Markdown
Member

Summary

This PR completes the migration of three generic infrastructure modules from CTSolvers to CTBase, making them available to the broader control-toolbox ecosystem.

Modules moved to CTBase 0.21:

  • Options — option definition, extraction, and validation
  • Strategies — abstract strategy contract, registry, builders, disambiguation, introspection
  • Orchestration — routing and disambiguation of strategy parameters

This is a clean break: no re-export shims. All call sites now use CTBase.Options, CTBase.Strategies, CTBase.Orchestration.

Changes

Source

  • Remove src/Options/, src/Strategies/, src/Orchestration/ (34 files, ~5500 lines)
  • Update src/CTSolvers.jl: drop three include/using blocks, update architecture docstring
  • Rewire src/Modelers/Modelers.jl and src/Solvers/Solvers.jl to CTBase.Options / CTBase.Strategies
  • Rewire all 7 extensions (CTSolversCUDA, Ipopt, Knitro, MadNCL, MadNLP, MadNLPGPU, Uno)

Tests

  • Drop pure unit/contract tests that moved to CTBase: options (7 files), orchestration (10 files), strategies (17 files)
  • Rewire the 11 remaining strategy integration tests and all modeler/solver tests to CTBase.*
  • Add explicit contract validation testsets (id, metadata, options) for all concrete strategies: Modelers.ADNLP, Modelers.Exa, Solvers.Ipopt, MadNLP, MadNCL, Uno

Documentation

  • Remove the 4 developer guides that moved to CTBase: Options System, Implementing a Strategy, Strategy Parameters, Orchestration and Routing
  • Update index.md, architecture.md, implementing_a_modeler.md, implementing_a_solver.md with pointers to CTBase.jl documentation
  • Update docs/api_reference.jl and docs/make.jl to remove the moved API sections

Dependencies

  • Bump CTBase to 0.21.0-beta (the release that contains Options, Strategies, Orchestration)

Test plan

  • All 2429 tests pass (48 test files, including extension tests for Ipopt, MadNLP, MadNCL, Uno)
  • Docs build clean (julia --project=docs docs/make.jl) — no broken cross-references or undefined symbols
  • Contract validation testsets added for all concrete strategies (modelers + solvers with extensions)
  • CI green

🤖 Generated with Claude Code

These three modules are generic infrastructure with no dependency on
CTSolvers-specific code. Moving them to CTBase makes them available to
the broader control-toolbox ecosystem (OptimalControl, etc.) without
going through CTSolvers.

Changes:
- Remove src/Options/, src/Strategies/, src/Orchestration/ (moved to CTBase 0.21)
- Update src/CTSolvers.jl: drop the three includes, update architecture docstring
- Rewire src/Modelers/Modelers.jl and src/Solvers/Solvers.jl to CTBase.Options / CTBase.Strategies
- Rewire all 7 extensions (CTSolversCUDA, Ipopt, Knitro, MadNCL, MadNLP, MadNLPGPU, Uno)
- Drop pure unit/contract tests that moved to CTBase (options: 7, orchestration: 10, strategies: 17)
- Rewire the 11 remaining strategy integration tests and all modeler/solver tests to CTBase.*
- Add explicit contract validation testsets (id, metadata, options) for all concrete strategies:
  Modelers.ADNLP, Modelers.Exa, Solvers.Ipopt, MadNLP, MadNCL, Uno
- Remove the 4 developer guides that moved to CTBase (options system, implementing a strategy,
  strategy parameters, orchestration and routing); update index.md, architecture.md,
  implementing_a_modeler.md, implementing_a_solver.md with references to CTBase.jl docs
- Update docs/api_reference.jl and docs/make.jl to remove the moved API sections
- Bump CTBase dependency to 0.21.0-beta

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@ocots
ocots merged commit 1d2a161 into main Jun 22, 2026
7 checks passed
@ocots
ocots deleted the move-ctsolvers-to-ctbase branch June 22, 2026 17:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant