Refresh uv.lock for ActiveRocketPy 1.13.0 and check it in CI - #62
Merged
Conversation
The submodule now pins ActiveRocketPy 1.13.0, but the committed lockfile still recorded 1.12.0 (and missed the new animation extra). CI installs with pip, so nothing flagged the drift, and a local uv run would quietly rewrite the lockfile instead. Regenerate it and add uv lock --check to the test job, which is the one that checks out the submodule the editable dependency needs. Signed-off-by: thc1006 <84045975+thc1006@users.noreply.github.com>
This was referenced Jul 27, 2026
Merged
Member
|
Thanks, I missed this |
This was referenced Jul 27, 2026
thc1006
added a commit
that referenced
this pull request
Jul 28, 2026
) * Relock uv.lock after the version bump a086ca6 raised the version to 0.1.0 in pyproject.toml without relocking, so uv.lock still records 0.0.1 for this package and `uv lock --check` fails. develop is red on that step right now, and so is every pull request based on it. One line. This is the check #62 added, working as intended. Signed-off-by: thc1006 <84045975+thc1006@users.noreply.github.com> * Run CI on pushes to develop, not only to main The stale lockfile in the previous commit reached develop and stayed red without anyone seeing it, because the workflow only triggers on pushes to main and on pull requests. A direct push to develop runs nothing. A pull request that targets develop still fires on pull_request alone, so this does not double up the ordinary case. It does double up one case: #61 has develop as its head branch, so a push to develop now produces both a push run and a synchronize run for #61. Those are not the same tree, since the pull request run tests develop merged into main, and the concurrency key keys on the ref so neither cancels the other. That seems worth the extra run rather than something to suppress. Signed-off-by: thc1006 <84045975+thc1006@users.noreply.github.com> --------- Signed-off-by: thc1006 <84045975+thc1006@users.noreply.github.com>
thc1006
added a commit
that referenced
this pull request
Jul 28, 2026
A plain uv sync rewrites uv.lock when it no longer matches, so a checkout that has drifted quietly becomes a working environment that is no longer the released one. That is the failure this section exists to prevent, and it has happened twice already: #62 and #78 both landed because a submodule bump left the lockfile stale. --locked stops and says so instead. Verified both ways: it exits 0 on a clean release checkout, and on a lockfile that no longer matches it refuses with 'the lockfile at uv.lock needs to be updated, but --locked was provided'. Signed-off-by: thc1006 <84045975+thc1006@users.noreply.github.com>
thc1006
added a commit
that referenced
this pull request
Jul 28, 2026
Cutting the 0.1.0 header here left the file arguing with itself: a 2026-07-DD placeholder date, no Unreleased section, an Unreleased comparison link with nothing above it, no 0.1.0 link, and CONTRIBUTING telling contributors to add entries to a section that no longer existed. The release scope is also still open, so the section would have to be edited again anyway. Unreleased needs no date, and the release PR is what renames it and adds the link. Record the migration #39 requires. It is described as additive, and it is not: rocket.control.gimbal_range became max_gimbal_angle and the three time-constant keys became required, so a scenario file written for v0.0.2 raises KeyError: 'max_gimbal_angle' on the first launch action. Measured against the shipped scenario 0 with the old key names. Add the coordinate-frame correction from #68. Z is altitude above sea level rather than height above the pad, in balloon_states, the GNSS sensors and the rocket state, which is the kind of thing an agent aims with. It was the largest omission in the file. Drop #46 from the ActiveRocketPy relock. It landed on 2026-06-27, a month before #60 bumped the submodule to 1.13, so it cannot have relocked against it; #62 did. Say "users and contributors" in both files, since the entries already include tests, CI and tooling. Point the vpython instructions at one command with both extras. uv sync is exact, so running --extra vpython after --extra dev uninstalls the dev extra. Measured: ruff was present, then gone, then present again with both extras named together. Give the Makefile a .PHONY, so a file named format does not shadow the target. Signed-off-by: thc1006 <84045975+thc1006@users.noreply.github.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.
The submodule pins ActiveRocketPy 1.13.0, but the committed
uv.lockstill recorded the editable package as 1.12.0. This is adevelopproblem: #60 moved the submodule there and left the lockfile behind.mainis self-consistent, since it still pins the 1.12.0 commit that its lockfile records; it inherits the mismatch only when this and #60 reach it together.Nothing catches this today: CI installs through pip and
requirements-dev.txt, so it never reads the lockfile. Locally it is worse than silent, sinceuv runanduv syncquietly rewrite a stale lockfile, which is easy to revert by reflex and never commit.What this does
uv.lock, which bumps activerocketpy to 1.13.0 and records that it now publishes ananimationextra. To be precise about what that does and does not do: the lockfile learns the extra exists, butactiverocketpy[all]still expands toenv-analysisandmonte-carloonly, so pyvista and imageio-ffmpeg are still not installed. Whetherallshould cover animation is an upstream question.uv lock --checkstep to the test job. That job is the one that checks out submodules, whichuv lockneeds because activerocketpy is an editable path dependency. uv is pinned the same way ruff is.The lockfile diff is 5 added and 2 removed lines, with no unrelated dependency churn.
Checks
uv lock --checkexits 1 against the old lockfile and 0 after the regeneration, so the new step actually fails when the lockfile goes stale.ruff check,ruff format --checkandpytest tests/are green locally with the refreshed lockfile.Found while reviewing #61. The other items from that review are tracked separately.