Skip to content

Support Julia 1.13: compat bounds, Manifest-v1.13.toml.default and a 1.13 CI job - #75

Draft
1-Bort-1 wants to merge 6 commits into
agent/71-cleanup-bring-bin-install-to-the-box-s-ifrom
agent/73-support-julia-1-13-in-kitecontrollers
Draft

1-Bort-1 wants to merge 6 commits into
agent/71-cleanup-bring-bin-install-to-the-box-s-ifrom
agent/73-support-julia-1-13-in-kitecontrollers

Conversation

@1-Bort-1

@1-Bort-1 1-Bort-1 commented Oct 6, 2026 •

Copy link
Copy Markdown
Member

TL;DR

KiteControllers now accepts Julia 1.13. The compat bounds include it, it has a tracked Manifest-v1.13.toml.default, and CI tests it. Without a 1.13 .default, #74's bin/install could never pick 1.13, and with julia = "1.11, 1.12" nothing loaded in the box's 1.13 session.

What changed

  • Compat: julia (root and docs/), Pkg and Printf (root) and Test (test/) now also allow 1.13.
  • Manifest: Manifest-v1.13.toml.default comes from the minimal resolve (AGENTS.md §2) rather than a full update. I copied Manifest-v1.12.toml.default over the live 1.13 manifest and ran Pkg.resolve() in the 1.13 session. Only standard libraries and the JLLs Julia ships moved: Pkg, LinearAlgebra and SparseArrays went to 1.13.0, LibCURL to 1.0.0, SHA to 1.0.0, CompilerSupportLibraries_jll to 1.5.5, OpenBLAS_jll to 0.3.30, and PCRE2_jll was added. No registered package moved. The 1.13 pins match the 1.12 ones.
  • 1.11/1.12 manifests left alone: they still match their Project.toml. After the compat edit, project_hash is unchanged (d9c712a6…) and Pkg.Operations.is_manifest_current returns true, so they did not need resolving again.
  • CI: '1.13' added to the matrix.
  • bin/update_default_manifest: fixed along the way. It asked for 1.11 or 1.12, ran juliaup default, and deleted ~/.julia/compiled/.... On any Julia newer than 1.11 it wrote Manifest-v1.12.toml.default, so running it under 1.13, as the issue suggests, would have overwritten the 1.12 pins with a 1.13 resolve. It now takes the versions as arguments, defaulting to every tracked .default (SUPPORTED_JULIA from bin/install picks a supported Julia by itself and changes nothing outside the repo #74's setup_env). It selects each one through JULIAUP_CHANNEL, so nothing outside the repo changes. Before updating anything it checks that every version asked for has a .default and an installed Julia, so a bad argument cannot leave the earlier versions updated and the later ones not.
  • .gitignore: the per-version Manifest-v1.1x.toml and install_version_1.1x.txt lines are now Manifest-v*.toml and install_version_*.txt. Without that, the live 1.13 manifest showed up as untracked. While there I removed a duplicated examples_3d/Manifest.toml, five lines that output/ and data/*.jld2 already cover, and a .gitignore line that ignored .gitignore and bin/.gitignore (both tracked, so it only confused git check-ignore).

Where I'd push back

  • CI.yml still has fail-fast: false. AGENTS.md §4.10 says that belongs in a cleanup: PR, so I left it out of this one.
  • Adding a version still means seeding its .default by hand, as done here. bin/install --update needs a .default to start from, so update_default_manifest 1.14 would fail until one exists.

Verification

  • Reproduced first: the box's ./bin/install -y on Julia 1.13.0 printed Error: Julia 1.13 is not supported. Only Julia 1.11 and 1.12 are supported. and the 1.13 session could not load the project.
  • ./bin/install -y on Julia 1.13.0: exit 0. It printed Installing ./Manifest-v1.13.toml from Manifest-v1.13.toml.default... and loaded using KiteControllers, KiteViewers, MakieControlPlots, NOMAD in examples.
  • In a fresh juliaserver session on 1.13.0 with the test environment, 189 of 189 tests passed (38 s) across test-aqua.jl, test-kiteobserver.jl, test-fpc_settings.jl, test-fpp_settings.jl, test-model_and_control.jl and test-flightpathcontroller.jl. Aqua's stdlib compat checks were part of that run.
  • Local full suite (agent ci-local, 1.13.0, one cell) on 016a012: PASS (1 min); rerun on the review fixes started, not finished when this was written · [ ] GitHub CI: pending, so Windows on 1.13 has not run yet
  • ./bin/update_default_manifest 1.13 run for real: exit 0. It moved 15 packages in Manifest-v1.13.toml.default (e.g. StaticArrays 1.9.20 → 1.9.22, WinchModels 0.3.10 → 0.3.11, TZJData 1.5.1 → 1.11.0) and left Project.toml and the 1.11/1.12 .defaults alone. I threw that bump away, since moving pins is a PR of its own, and ./bin/install -y put the tracked pins back (exit 0).
  • ./bin/update_default_manifest 1.10 exits 1 with no Manifest-v1.10.toml.default to update. With a temporary 1.10 .default present it exits 1 with Julia 1.10 is not installed. Neither run touches a file.
  • Docs build: not run (no new or renamed symbols) · REUSE: the repo has no bin/reuse_lint · rebased on bin/install picks a supported Julia by itself and changes nothing outside the repo #74's current head (347c87d).
  • Risk: Windows CI on 1.13 has never run for this package.

Scope

+3762 / −83 across 8 files. 3719 of the added lines are the generated Manifest-v1.13.toml.default. The rest is 5 compat lines, 1 CI line, the .gitignore merge and its clean-up (−8), and bin/update_default_manifest, which went from 66 lines of menu to 35: a loop, a check of every version before it starts, and the 1.11 case as a named helper. Stacked on #74 (#71), which has to merge first.

Opened by 1-Bort-1, an AI agent working for @1-Bart-1.
Closes #73 · task KiteControllers.jl-73

1-Bort-1 and others added 4 commits October 6, 2026 15:59
Seeded from Manifest-v1.12.toml.default and resolved under Julia 1.13;
only standard libraries and their JLLs moved.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
bin/update_default_manifest takes the versions as arguments and defaults
to every tracked .default; it wrote Manifest-v1.12.toml.default under any
Julia newer than 1.11. Live manifests and install stamps are ignored for
every version.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@1-Bort-1 1-Bort-1 added agent:running Agent task state agent:ci Agent task state and removed agent:running Agent task state labels Oct 6, 2026
@1-Bort-1

1-Bort-1 commented Oct 6, 2026 •

Copy link
Copy Markdown
Member Author

Local full suite: PASS (1 min, Julia 1.13.0, one cell of the matrix)

@1-Bort-1 1-Bort-1 left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent review (advisory)

Verdict: APPROVE WITH COMMENTS · 0 inline, 0 off the diff

Good

  • Matches the card: git diff --stat 347c87d HEAD shows exactly the 8 files and +3748/−76 the card lists, and nothing outside the plan.
  • Compat is consistent: julia is "1.11, 1.12, 1.13" in the root and in docs/Project.toml; Pkg and Printf (root) and Test (test/) all allow 1.13.
  • The manifest is a minimal resolve: project_hash d9c712a6… matches the card's 1.11/1.12 claim, and the registered packages checked (KiteUtils 0.11.13, KiteModels 0.11.16, Makie 0.24.13) are pinned, not bumped.
  • .gitignore globs are correct: unanchored Manifest-v*.toml also covers examples/Manifest-v1.1x.toml, and .bak/.default files stay tracked or are handled by their own lines.
  • bin/update_default_manifest fix holds up: on the 1.12 path the old script copied to Manifest-v1.12.toml.default whatever Julia ran. The new loop uses JULIAUP_CHANNEL per version, and select_julia_channel in setup_env keeps that channel as the active one.
  • Rewriting the script is in scope by §1 (it's the tool that makes these manifests). The card names it, and the changelog entry is short and describes behaviour.

Not good

  • bin/update_default_manifest was only checked with bash -n, yet it overwrites every tracked .default. At least ./bin/update_default_manifest 1.13 on a throwaway branch should run before this merges.
  • for version in ${@:-$SUPPORTED_JULIA} is unquoted on purpose so it word-splits. If a channel juliaup lacks is passed, active_julia fails partway through the loop and leaves earlier versions already updated, with no up-front check.
  • The comment # Julia 1.11 has no workspaces, so only the examples manifest holds every package. explains why, which §3 says goes in the PR card. The 1.11 special case would be clearer named as a variable or helper.
  • The card says Pkg/Printf/Test changed "in test/", but only Test changed there; Pkg and Printf are in the root Project.toml.
  • Verification is incomplete: agent ci-local didn't finish, GitHub CI is pending, and Windows on 1.13 has never run. The new matrix line is what will exercise Windows, so wait for green before merging.
  • .gitignore still lists examples_3d/Manifest.toml twice and .gitignore ignores itself. This predates the PR but the file is open here, so §1/§7 compaction would fold it in.

claude, rubric CLEAN_CODE.md. A different lab from the implementer
on purpose: a reviewer sharing its blind spots would not flag its mistakes.

@1-Bort-1 1-Bort-1 added agent:queued Agent task state agent:running Agent task state and removed agent:ci Agent task state agent:queued Agent task state labels Oct 6, 2026
1-Bort-1 and others added 2 commits October 6, 2026 16:06
…e the 1.11 case

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
….gitignore

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@1-Bort-1

1-Bort-1 commented Oct 6, 2026

Copy link
Copy Markdown
Member Author
  • Ran ./bin/update_default_manifest 1.13 for real: exit 0. It moved 15 packages in the 1.13 .default only, and left Project.toml and the 1.11/1.12 .defaults alone. I discarded that bump and reinstalled the tracked pins.
  • Partial updates: fixed in d7c4e29. Every version is checked for a .default and an installed Julia before any is updated. Both error paths were run and exit 1 without touching a file.
  • The 1.11 case is now the resolved_manifest helper (d7c4e29), keeping a one-line fact comment, which is what §3 allows inline.
  • Card wording fixed: Pkg/Printf are in the root, Test in test/.
  • Verification: the card now says what ran. ci-local on the new head has started, and GitHub CI, with Windows 1.13, is still pending. Agreed: merge only once it's green.
  • .gitignore: fixed in 99626dd. Dropped the duplicate, the self-ignoring .gitignore line (it also matched bin/.gitignore), and five lines that output/ and data/*.jld2 already cover.

@1-Bort-1 1-Bort-1 added agent:ci Agent task state agent:review Agent task state and removed agent:running Agent task state agent:ci Agent task state labels Oct 6, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent:review Agent task state

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant