Deps bump for 1.1.1-beta: CTParser 0.9, CTModels 0.18, ExaModels 0.12; kkt→occidata runner - #622
Merged
Merged
Conversation
Member
|
@jbcaillau Waiting for CTParser. |
…a runner - Project.toml: CTModels 0.16→0.18, CTParser 0.8→0.9 (picks up 0.9.0-beta from ct-registry), ExaModels 0.11→0.12. Version 1.1.1→1.1.1-beta since CTParser is still a beta. - docs/Project.toml: CTBase 0.28→0.29. - CI.yml: the self-hosted kkt runner was retired; replace it with occidata (job test-gpu-occidata, label "run ci occidata-runner", runs_on [["occidata"]]), following CTParser.jl and CTFlows.jl. test_args=GPU kept — CTDirect's GPU suite (test/test_gpu.jl) is deliberately separate from the plain suite. CTParser 0.9 breaking changes (:exa emission needs ExaModels ≥ 0.12, String errors become CTException subtypes) do not affect CTDirect: it never touches the ExaModels builder API (the closure comes from CTModels.get_build_examodel) and no test catches a string error. CUDSS (no longer pulled transitively by MadNLPGPU 0.10) is already handled in test/test_gpu.jl since 38e1c16. Local CPU suite green: 535/535, no failures, no errors. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Member
|
@PierreMartinon @jbcaillau Since CTParser is in beta version, I will make a beta of CTDirect. I need these two new versions to make a beta in OptimalControl with all the new stuffs. Work to be done:
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #622 +/- ##
==========================================
+ Coverage 71.25% 71.53% +0.27%
==========================================
Files 14 14
Lines 1395 1391 -4
==========================================
+ Hits 994 995 +1
+ Misses 401 396 -5 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
…sts (#624) :variable was advertised in the :scheme option description (surfaced by describe(:collocation)) and had a live dispatch branch, but src/ode/variable.jl is not compiled, so scheme=:variable failed with a raw UndefVarError. Remove the advertisement and the dead branch; the WIP file and its commented include stay. scheme=:variable now raises the normal "Unknown discretization method" error. Also: the else-branch error message listed phantom :gauss_legendre_*_stagewise values and omitted the real :gauss_legendre_*_constant_control ones — realign it with the actual branches. Fix docs default (midpoint, not trapeze). Bump 1.1.1-beta -> 1.1.2-beta. Local CPU suite: 536/536. Closes #624 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
3 tasks
Both testsets ran test_problem(moonlander(); adnlp_backend=:manual) (the
:quadrotor one via an old copy-paste slip). ADNLPModels' SparseReverseADHessian
records its ReverseDiff tape on an uninitialised Vector{Dual} and runs the model
function on it; moonlander's unbounded state `theta` inside cos()/sin() turns a
garbage -Inf seed into a DomainError during model build. Deterministic on the
Julia 1.12 CI runners, flaky on 1.10 — surfaced (not caused) by the dependency
bump in this PR.
Upstream: JuliaSmoothOptimizers/ADNLPModels.jl#383
Re-enable: #626
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
CTDirect had neither, which the Handbook requires of every package (philosophy/changelog.md). Bootstrapped like CTParser.jl (e185d6e): a baseline entry for the last stable release (1.0.12), then full entries for the three betas of the 1.1 line — - 1.1.0-beta: CTSolvers dispatch contract, immutable BuiltModel / BuiltModel-based build_solution, CTBase 0.28 parameter contract. - 1.1.1-beta: "1-D is a scalar" call-boundary contract, ecosystem compat realignment (CTBase 0.29 / CTModels 0.18 / CTSolvers 0.5 / CTParser 0.9 / ExaModels 0.12), CI label gating, kkt -> occidata. - 1.1.2-beta: :variable scheme removal (bug fix; it never compiled), scheme error-message resync, moonlander/quadrotor test disable, these two files. Breaking changes are mirrored in BREAKING.md with # Before / # After migration blocks; near-breaking items (the :variable removal, compat floor raises) are non-breaking notes. Docs-only; no source or Project.toml change. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Replace six untyped error() / ArgumentError throws in src/DOCP_data.jl and src/ode/common.jl with CTBase.Exceptions subtypes, matching the CTParser 0.9.0 alignment: - non-strictly-increasing time_grid, unknown discretization scheme and unknown getter value -> IncorrectArgument (with got/expected/ suggestion/context); the unknown-scheme expected list is derived from the real dispatch branches, and points at the smaller :exa set - DOCP_Jacobian_pattern / DOCP_Hessian_pattern interface stubs -> NotImplemented (required_method + suggestion) Tests: tighten the :variable-scheme assertion to @test_throws Exceptions.IncorrectArgument, add a non-increasing time_grid assertion, import Exceptions in test_common.jl. Docs: CHANGELOG "Changed" + Testing entries and a BREAKING.md non-breaking note for the 1.1.2-beta section. src/ode/variable.jl is untouched (WIP, not compiled). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Add $(TYPEDEF) docstrings to the Collocation and DirectShooting discretizer structs: what the transcription is, when to prefer one over the other, supported modeler backends, how to select it from the explicit-mode API. Fixes the "no docs found" warning when OptimalControl.jl transcludes CTDirect.Collocation. - Bump version 1.1.2-beta -> 1.1.3-beta (1.1.2-beta already released). - Move the #627 typed-exception entry from the released 1.1.2-beta section to a new 1.1.3-beta section in CHANGELOG.md / BREAKING.md, alongside the #623 documentation entry and the :truck_trailer test disable. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This was referenced Aug 28, 2026
…#628) Docstrings (24 symbols; src/ode/variable.jl left as WIP): - module CTDirect, const AbstractModel, __discretizer - Euler / Midpoint / Trapeze structs; GenericIRK / GenericIRKStagewise abstract types (with Interface Requirements) - Collocation / DirectShooting: Strategies.id/parameter/options/metadata, the kwarg constructors, the __*_grid_size/scheme/... defaults - ode/common.jl: getter (Arguments/Returns/Throws), the three extra add_nonzero_block! methods - irk_stagewise.jl: __initial_guess(::DOCP{<:GenericIRKStagewise}) docs/api_reference.jl: the primary_modules file lists were stale (named collocation_core.jl / disc/*.jl, omitted direct_shooting.jl, DOCP_*.jl, ode/irk_stagewise.jl). Since the generator silently ignores missing paths, those symbols were absent from the generated API reference. Lists resynced with the current src/ layout. Verified: docstring audit clean except variable.jl; docs build has no "no docs found" warnings and the new symbols appear on the API pages; full suite 531/531. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
De-qualify every `[`CTDirect.Collocation`](@ref)` / `[`CTDirect.DirectShooting`](@ref)` self-reference in src/ to plain inline code — same treatment as 1.1.4-beta's DOCPCache fix. Both types have their own docstring (added for #623) and the links resolve fine in CTDirect's own docs build, but a downstream package (OptimalControl.jl) only ever transcludes the default_parameter/ available_parameters docstrings that reference them, never the type docstrings themselves, so the links never had an anchor to resolve to there. `[`CTDirect.Scheme`](@ref)` and other type cross-references are untouched — not confirmed to have the same failure. Surfaced while raising OptimalControl.jl's [compat] to unlock the Makie backend (Phase I of its documentation campaign): 2 new "Cannot resolve @ref" warnings on api/options.md, absent from the previous baseline. Filed as #631. Version bumped to 1.1.6-beta. CHANGELOG.md and BREAKING.md updated. CTDirect test suite unchanged, all passing. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Compat / deps
0.160.180.80.90.110.120.280.29CTBase = "0.29"andCTSolvers = "0.5"were already correct; the staleManifest.tomljust hadn't been re-resolved since the previous compat commit.Package version
1.1.1→1.1.1-betabecause CTParser is still on a beta (0.9.0-beta).CTParser 0.9 breaking changes — no impact on CTDirect
:exaemission now requires ExaModels ≥ 0.12: this is CTParser'sdef_exacodegen; CTDirect only calls the builder closure viaCTModels.get_build_examodeland never touches the ExaModels builder API directly.Stringerrors →CTExceptionsubtypes: no CTDirect test catches a string error from CTParser.CTParserExaModelsextension (ExaModels + LinearAlgebra): arms automatically, LinearAlgebra is already in the graph.CUDSS / GPU
MadNLPGPU 0.10 no longer pulls CUDSS transitively; CTSolvers 0.5.3 made CUDSS an explicit weakdep and its
CTSolversMadNLPGPUtrigger is now["MadNLPGPU", "CUDA", "CUDSS"]. CTDirect already adapted in 38e1c16 (using CUDSSintest/test_gpu.jl, CUDSS in[extras]/[compat]/[targets].test). No change needed here.CI: kkt → occidata
The self-hosted
kktrunner was retired. Replaced withoccidata(jobtest-gpu-occidata, labelrun ci occidata-runner,runs_on: [["occidata"]]), following CTParser.jl and CTFlows.jl.test_args: 'GPU'kept — CTDirect's GPU suite (test/test_gpu.jl) is deliberately separate from the plain CPU suite. GitHub labelrun ci kkt-runnerrenamed torun ci occidata-runneron the repo.Verification
Local CPU suite: 535/535 pass, no failures, no errors. Manifest re-resolves to CTBase 0.29.3, CTModels 0.18.0, CTParser 0.9.0-beta, CTSolvers 0.5.3, ExaModels 0.12.0.
GPU suite: run on occidata via the
run ci occidata-runnerlabel on this PR.