Skip to content

fix: floor the version graph at 33.0.5:0 - #132

Merged
MattDHill merged 1 commit into
masterfrom
fix/version-graph-floor
Sep 24, 2026
Merged

MattDHill merged 1 commit into
masterfrom
fix/version-graph-floor

Conversation

@MattDHill

@MattDHill MattDHill commented Aug 24, 2026 •

Copy link
Copy Markdown
Member

What is wrong

canMigrateFrom is >=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, and guardUpstreamUpgrade refuses the jump during init. The prod registry publishes exactly that range as 34.0.4:4's sourceVersion today, 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 up is IMPOSSIBLE. Replacing the 32.0.11:0 anchor with one at 33.0.5:0 (the oldest published 33 revision) moves it. Ships in 34.0.4:5 — no version bump.

Executing the real graph:

canMigrateFrom: >=33.0.5:0 && <=34.0.4:5
32.0.11:0  false
33.0.5:0   true
33.0.7:0   true
33.0.8:0   true
33.0.8:3   true
34.0.3:6   true
34.0.4:4   true

The 0.3.5.x layout migration is unaffected. dump() shows the >=33.0.5:0 && <33.0.8:2 range vertex still carries clearTask + migrateFrom035x into 33.0.8:2, so a 33.0.8:0 carry-over runs it on the way to 34.0.4:5.

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 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:0 install to a 33 release instead of this one.

Verified

  • Rebased onto master (34.0.4:5); npm run check and Prettier green.
  • Range and per-version satisfaction executed against the installed SDK (2.0.9), output above; versionGraph.dump() inspected for the migration path.
  • Not installed on a box.

@MattDHill
MattDHill force-pushed the fix/version-graph-floor branch from eccf9de to 1b60055 Compare September 6, 2026 04:36
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
MattDHill force-pushed the fix/version-graph-floor branch from 1b60055 to 7ab4cf6 Compare September 24, 2026 22:11
@MattDHill
MattDHill merged commit d22b302 into master Sep 24, 2026
3 checks passed
@MattDHill
MattDHill deleted the fix/version-graph-floor branch September 24, 2026 22:12
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