Skip to content

Reconcile v2/main with the v1.0.0 release branch: changesets, changelogs, and a merge of v2/release/1.0.0 #5117

Description

@cliffhall

Part of #4968

Problem

v1.0.0 shipped from the one-time release branch v2/release/1.0.0, cut at d8120439 (the commit before the SDK v2 migration) and merged to main by #5090 (c003d0d8). v2/main still carries the v1.0.0 preparation as it was before that switch, so its release state no longer matches what shipped:

  1. The SDK v2 major changesets are gone. chore: fold pending changesets into a 1.0.0 CHANGELOG for each TypeScript server #5083 (0c505a61) folded every pending changeset into a hand-written 1.0.0 CHANGELOG entry, including everything-sdk-v2.md, filesystem-sdk-v2.md, memory-sdk-v2.md and sequentialthinking-sdk-v2.md. The SDK v2 migration did not ship in 1.0.0, so without those changesets the next Version Packages PR would not bump the four TypeScript servers to 2.0.0 or describe the migration.

  2. Three pending changesets describe fixes that already shipped in 1.0.0, cherry-picked onto the release branch (filesystem: a roots update with no valid roots keeps the previous allowed directories #5094, filesystem: overlapping roots refreshes can apply out of order and undo a revocation #5097, filesystem: tool calls use the old allow-list while a roots refresh is pending #5101):

    • .changeset/filesystem-revoke-empty-roots.md
    • .changeset/filesystem-roots-refresh-order.md
    • .changeset/filesystem-roots-refresh-barrier.md

    Left in place, 2.0.0's changelog would list them a second time.

  3. v2/main's 1.0.0 CHANGELOG entries differ from the published ones. git diff origin/v2/main origin/v2/release/1.0.0 -- 'src/*/CHANGELOG.md' shows the differences in all four TypeScript servers: the published entries omit the SDK v2 migration and include the cherry-picked filesystem fixes.

  4. v2/release/1.0.0 is not an ancestor of v2/main, so the v2.0.0 milestone merge into main would not be a pure merge whose tree equals v2/main's (the release skill's requirement).

Expected outcome

One PR against v2/main, labeled v2, that:

  1. Restores the four *-sdk-v2.md major changesets with their original content (git show 0c505a61^:.changeset/<name>-sdk-v2.md).
  2. Removes the three filesystem changesets listed above.
  3. Makes each TypeScript server's 1.0.0 CHANGELOG entry match what was published, byte for byte with origin/v2/release/1.0.0 (which equals main's tree at c003d0d8).
  4. Merges origin/v2/release/1.0.0 into v2/main with a merge commit, resolving each conflict deliberately. This is a one-time, recorded exception to "all work lands on v2/main": say so in the PR body and link First semver release: TypeScript servers at 1.0.0 and Python servers at the next CalVer, the frozen legacy-era servers #4968. Where the two lines diverge on the same code (src/filesystem/server.ts, its roots tests, .github/workflows/release.yml, scripts/release-npm-floor.test.mjs, the fetch annotation from fix(fetch): annotate the fetch tool #5112/v1.0.0: annotate the fetch tool (release branch) #5113), keep v2/main's SDK v2 version of the code and confirm the release-branch fix is already present in it. Anything present only on the release branch is a gap: port it, don't drop it.
  5. Leaves the Python servers at 2026.10.10 and their CHANGELOG/pyproject.toml state matching main.

The merge commit is exempt from DCO; every other commit is signed off. Run npm run local:gate before pushing. Never squash this PR: squashing loses the merge parent and defeats item 4.

Verification

  • git merge-base --is-ancestor origin/v2/release/1.0.0 <head> succeeds.
  • npx changeset status lists a major bump for all four TypeScript servers and no filesystem roots fixes.
  • git diff origin/main <head> -- 'src/*/CHANGELOG.md' shows no difference in any released 1.0.0 section.
  • git merge-tree --write-tree origin/main <head> has no conflicts, and its tree equals <head>'s tree (the dry run for the v2.0.0 merge PR).

When done

Close #4968 by hand, since its last open criterion is the .changeset/ state, and move its card to Done.

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

Metadata

Metadata

Assignees

Labels

choreMaintenance: deps, build tooling, CI, cleanup — no user-facing behavior changev2

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions