fix: floor the version graph at 33.0.5:0 - #132
Merged
Merged
Conversation
MattDHill
force-pushed
the
fix/version-graph-floor
branch
from
September 6, 2026 04:36
eccf9de to
1b60055
Compare
canMigrateFrom was >=32.0.11:0 && <=34.0.4:5, which says an install on Nextcloud 32 can migrate into a package bundling Nextcloud 34. It cannot: Nextcloud upgrades one major at a time, and guardUpstreamUpgrade refuses the jump during init. The floor is the lowest declared version whose up is IMPOSSIBLE, so replacing the 32.0.11:0 anchor with one at 33.0.5:0 — the oldest published 33 revision — moves it. Executing the graph gives >=33.0.5:0 && <=34.0.4:5, and every 33 revision below 33.0.8:2, including the 33.0.8:0 a 0.3.5.x carry-over lands on, still takes the range vertex that runs clearTask and migrateFrom035x. With the registry publishing canMigrateFrom as sourceVersion (Start9Labs/start-technologies#3807, deployed), a 32.0.11:0 install is now offered a 33 release instead of this one. guardUpstreamUpgrade reads its data-version floor from priorVersions, which now starts at 33; for a Nextcloud 32 install that lookup finds nothing and the guard only throws, which is all an install outside the graph can reach. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MattDHill
force-pushed
the
fix/version-graph-floor
branch
from
September 24, 2026 22:11
1b60055 to
7ab4cf6
Compare
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.
What is wrong
canMigrateFromis>=32.0.11:0 && <=34.0.4:5, which claims an install on Nextcloud 32 can migrate into a package bundling Nextcloud 34. It cannot: Nextcloud upgrades one major at a time, andguardUpstreamUpgraderefuses the jump during init. The prod registry publishes exactly that range as34.0.4:4'ssourceVersiontoday, so a 32 install is offered 34 and rolled back.The 0.3.5.x registry now serves Nextcloud 33.0.8 as current, so most carry-overs land on
33.0.8:0; a server that never updated there still carries over on 32.0.11 or older.The change
The floor of a version graph is the lowest declared version whose
upisIMPOSSIBLE. Replacing the32.0.11:0anchor with one at33.0.5:0(the oldest published 33 revision) moves it. Ships in34.0.4:5— no version bump.Executing the real graph:
The 0.3.5.x layout migration is unaffected.
dump()shows the>=33.0.5:0 && <33.0.8:2range vertex still carriesclearTask+migrateFrom035xinto33.0.8:2, so a33.0.8:0carry-over runs it on the way to34.0.4:5.guardUpstreamUpgradereads its data-version floor frompriorVersions, which now starts at 33. For a Nextcloud 32 install that lookup finds nothing and the guard only throws its "update to a release bundling Nextcloud 33 first" error — the only path an install outside the graph can reach.With Start9Labs/start-technologies#3807 deployed, the registry routes a
32.0.11:0install to a 33 release instead of this one.Verified
master(34.0.4:5);npm run checkand Prettier green.versionGraph.dump()inspected for the migration path.