Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
5e8d4ee
Add syft-client migration registry and protocol constants
bitsofsteve Jul 23, 2026
6531046
Make VersionInfo a migratable object
bitsofsteve Jul 23, 2026
81bc3f9
Load legacy version files through the migration service
bitsofsteve Jul 23, 2026
bee5916
Move the shared migration service into the migrations package
bitsofsteve Jul 23, 2026
a5af604
Version the msgv2 proposed-changes message
bitsofsteve Jul 23, 2026
b3c4f50
Version the file-change events message
bitsofsteve Jul 23, 2026
b80c713
Register historic protocol-0 artifacts for 0.1.117
bitsofsteve Jul 23, 2026
4c4d6d6
Add release artifact export script with protocol-bump guard
bitsofsteve Jul 23, 2026
ec1a0ce
Add release fixtures and older-protocol compatibility tests
bitsofsteve Jul 23, 2026
95468fe
VersionInfoV2 carries protocol schemas with v1<->v2 migrations
bitsofsteve Jul 23, 2026
3084703
Feed peer job schemas from PeerManager into JobStorage
bitsofsteve Jul 23, 2026
899ea51
Feed peer dataset schemas into DatasetStorage negotiation
bitsofsteve Jul 23, 2026
e87bc51
Register historic schemas explicitly by importing versioned model mod…
pjwerneck Jul 28, 2026
caf8a46
Refactor export_release_artifact.py to avoid possible unrecoverable …
pjwerneck Jul 28, 2026
81c3b3e
Merge branch 'dev' into stephen/syft-client-migrations
pjwerneck Jul 28, 2026
23ceee2
pre-commit fixes
pjwerneck Jul 28, 2026
2e21e70
Fix broken integration test and add test for dataset delivery layout
pjwerneck Jul 28, 2026
ae7601f
Add client migration tests to CI workflows and Justfile
pjwerneck Jul 31, 2026
c67d6e9
Implement version ordering for migration objects
pjwerneck Aug 4, 2026
b612d3f
Publish before bumping and run the release artifact export in CD
pjwerneck Aug 5, 2026
2dec549
Adopt the Drive folder of an earlier client version
pjwerneck Aug 5, 2026
60c1a64
Add a per-protocol minimum supported version
pjwerneck Aug 6, 2026
79f2348
Stop refusing a peer for a client version difference
pjwerneck Aug 6, 2026
15790de
Find a P2P folder whatever client version is in its name
pjwerneck Aug 6, 2026
c2ffeaa
Close small migration gaps B2, B4, D2, A4
pjwerneck Aug 6, 2026
5a3025b
Version SYFT_peers.json and log unknown peer states
pjwerneck Aug 6, 2026
4f1c6e4
Refuse a checkpoint or rolling state from a later client
pjwerneck Aug 6, 2026
f7bf139
Test that a job negotiated down to protocol 0 arrives and reads
pjwerneck Aug 6, 2026
28972a1
Close migration gap by documentation and drop unused config flag
pjwerneck Aug 7, 2026
71a52c1
Deliver a dataset in every protocol layout its audience reads
pjwerneck Aug 11, 2026
e5902b4
Update documentation for generate_release_fixture.py to clarify relea…
pjwerneck Aug 11, 2026
bd12a1d
Add private dataset directory fixture and update tests for versioned …
pjwerneck Aug 11, 2026
b4e3ade
add initial tests for share_private_datset, share_dataset, connection…
rasswanth-s Aug 19, 2026
4ce55ef
Downgrade outgoing sync messages to the peer's negotiated protocol
rasswanth-s Aug 19, 2026
ad33e4a
Materialize missing dataset layouts when sharing with new peers
rasswanth-s Aug 19, 2026
f867ea8
modify share_private_dataset uploads for migrations and tests
rasswanth-s Aug 19, 2026
0bfdff4
Add dataset reference handling and test for local copy uploads withou…
pjwerneck Aug 20, 2026
82d73be
Merge pull request #9488 from OpenMined/migrations/datasets
rasswanth-s Aug 24, 2026
8520dfc
Merge branch 'dev' into pjwerneck/migration-gaps
pjwerneck Aug 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 28 additions & 11 deletions .github/workflows/cd-monorepo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -198,25 +198,42 @@ jobs:
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"

# The branch already holds the version to release. The bump happens after
# the publish, so the version on the branch names an unreleased version
- name: Read the version to release
run: |
git pull
VERSION=$(python3 syft/version.py)
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "Releasing syft $VERSION"

# Artifacts live inside the package, so they must be committed before the
# build. Re-running the export writes nothing when they already exist.
- name: Freeze release artifacts
run: |
just export-release-artifacts
git add syft/migrations/history
git diff --cached --quiet || \
git commit -m "Freeze syft v${{ env.VERSION }} release artifacts"

- name: Upload to PyPI
id: publish
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_PASS_SYFT }}
run: |
git pull
just bump-and-publish ${{ inputs.bump_type }}
VERSION=$(python3 syft/version.py)
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "version=$VERSION" >> $GITHUB_OUTPUT

# bump-and-publish already committed the version bump. Root tags continue
# the repo's historical vX.Y.Z lineage; sub-packages use <name>/vX.Y.Z.
# The tag is annotated and pushed explicitly: `--follow-tags` only pushes
# annotated tags, so a lightweight tag would never reach origin.
- name: Tag and push
just publish
echo "version=${{ env.VERSION }}" >> $GITHUB_OUTPUT

# The tag must name the published version, so it is created before the bump.
# Root tags continue the repo's historical vX.Y.Z lineage; sub-packages
# use <name>/vX.Y.Z. The tag is annotated and pushed explicitly:
# `--follow-tags` only pushes annotated tags, so a lightweight tag would
# never reach origin.
- name: Tag the release, then bump for the next one
run: |
git tag -a "v${{ env.VERSION }}" -m "syft v${{ env.VERSION }}"
just bump ${{ inputs.bump_type }}
git push origin HEAD
git push origin "refs/tags/v${{ env.VERSION }}"

Expand Down
28 changes: 16 additions & 12 deletions .github/workflows/cd-syft-bg.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,16 +43,15 @@ jobs:
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"

- name: Bump version
# The branch already holds the version to release. The bump happens after
# the publish, so the version on the branch always names an unreleased
# version while people develop.
- name: Read the version to release
run: |
git pull
pip install packaging
OUTPUT=$(python scripts/bump_version.py syft-bg ${{ inputs.bump_type }})
VERSION=$(echo "$OUTPUT" | sed -n '1p')
MODIFIED=$(echo "$OUTPUT" | sed -n '2p')
VERSION=$(python -c "import tomllib; print(tomllib.load(open('packages/syft-bg/pyproject.toml','rb'))['project']['version'])")
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "MODIFIED=$MODIFIED" >> $GITHUB_ENV
echo "Bumped syft-bg to $VERSION (modified: $MODIFIED)"
echo "Releasing syft-bg $VERSION"

- name: Build package
working-directory: packages/syft-bg
Expand All @@ -65,12 +64,17 @@ jobs:
TWINE_PASSWORD: ${{ secrets.PYPI_PASS_SYFT_BG }}
run: uvx twine upload --verbose dist/*

# Annotated tag + explicit push: `--follow-tags` only pushes annotated
# tags, so a lightweight tag would never reach origin.
- name: Commit and tag
# The tag must name the published version, so it is created before the bump.
# The tag is annotated and pushed explicitly: `--follow-tags` only pushes
# annotated tags, so a lightweight tag would never reach origin.
- name: Tag the release, then bump for the next one
run: |
git add ${{ env.MODIFIED }}
git commit -m "Release syft-bg v${{ env.VERSION }}"
git tag -a "syft-bg/v${{ env.VERSION }}" -m "syft-bg v${{ env.VERSION }}"
pip install packaging
OUTPUT=$(python scripts/bump_version.py syft-bg ${{ inputs.bump_type }} --dependents published)
NEXT=$(echo "$OUTPUT" | sed -n '1p')
MODIFIED=$(echo "$OUTPUT" | sed -n '2p')
git add $MODIFIED
git commit -m "Bump syft-bg to $NEXT for the next release"
git push origin HEAD
git push origin "refs/tags/syft-bg/v${{ env.VERSION }}"
37 changes: 25 additions & 12 deletions .github/workflows/cd-syft-dataset.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,16 +43,24 @@ jobs:
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"

- name: Bump version
# The branch already holds the version to release. The bump happens after
# the publish, so the version on the branch always names an unreleased
# version while people develop.
- name: Read the version to release
run: |
git pull
pip install packaging
OUTPUT=$(python scripts/bump_version.py syft-dataset ${{ inputs.bump_type }})
VERSION=$(echo "$OUTPUT" | sed -n '1p')
MODIFIED=$(echo "$OUTPUT" | sed -n '2p')
VERSION=$(python -c "import tomllib; print(tomllib.load(open('packages/syft-datasets/pyproject.toml','rb'))['project']['version'])")
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "MODIFIED=$MODIFIED" >> $GITHUB_ENV
echo "Bumped syft-dataset to $VERSION (modified: $MODIFIED)"
echo "Releasing syft-dataset $VERSION"

# Artifacts live inside the package, so they must be committed before the
# build. Re-running the export writes nothing when they already exist.
- name: Freeze release artifacts
run: |
uv run python packages/syft-datasets/scripts/export_release_artifact.py
git add packages/syft-datasets/src/syft_datasets/migrations/history
git diff --cached --quiet || \
git commit -m "Freeze syft-dataset v${{ env.VERSION }} release artifacts"

- name: Build package
working-directory: packages/syft-datasets
Expand All @@ -65,12 +73,17 @@ jobs:
TWINE_PASSWORD: ${{ secrets.PYPI_PASS_SYFT_DATASET }}
run: uvx twine upload --verbose dist/*

# Annotated tag + explicit push: `--follow-tags` only pushes annotated
# tags, so a lightweight tag would never reach origin.
- name: Commit and tag
# The tag must name the published version, so it is created before the bump.
# The tag is annotated and pushed explicitly: `--follow-tags` only pushes
# annotated tags, so a lightweight tag would never reach origin.
- name: Tag the release, then bump for the next one
run: |
git add ${{ env.MODIFIED }}
git commit -m "Release syft-dataset v${{ env.VERSION }}"
git tag -a "syft-dataset/v${{ env.VERSION }}" -m "syft-dataset v${{ env.VERSION }}"
pip install packaging
OUTPUT=$(python scripts/bump_version.py syft-dataset ${{ inputs.bump_type }} --dependents published)
NEXT=$(echo "$OUTPUT" | sed -n '1p')
MODIFIED=$(echo "$OUTPUT" | sed -n '2p')
git add $MODIFIED
git commit -m "Bump syft-dataset to $NEXT for the next release"
git push origin HEAD
git push origin "refs/tags/syft-dataset/v${{ env.VERSION }}"
28 changes: 16 additions & 12 deletions .github/workflows/cd-syft-enclave.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,16 +43,15 @@ jobs:
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"

- name: Bump version
# The branch already holds the version to release. The bump happens after
# the publish, so the version on the branch always names an unreleased
# version while people develop.
- name: Read the version to release
run: |
git pull
pip install packaging
OUTPUT=$(python scripts/bump_version.py syft-enclave ${{ inputs.bump_type }})
VERSION=$(echo "$OUTPUT" | sed -n '1p')
MODIFIED=$(echo "$OUTPUT" | sed -n '2p')
VERSION=$(python -c "import tomllib; print(tomllib.load(open('packages/syft-enclave/pyproject.toml','rb'))['project']['version'])")
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "MODIFIED=$MODIFIED" >> $GITHUB_ENV
echo "Bumped syft-enclave to $VERSION (modified: $MODIFIED)"
echo "Releasing syft-enclave $VERSION"

- name: Build package
working-directory: packages/syft-enclave
Expand All @@ -65,12 +64,17 @@ jobs:
TWINE_PASSWORD: ${{ secrets.PYPI_PASS_SYFT_ENCLAVE }}
run: uvx twine upload --verbose dist/*

# Annotated tag + explicit push: `--follow-tags` only pushes annotated
# tags, so a lightweight tag would never reach origin.
- name: Commit and tag
# The tag must name the published version, so it is created before the bump.
# The tag is annotated and pushed explicitly: `--follow-tags` only pushes
# annotated tags, so a lightweight tag would never reach origin.
- name: Tag the release, then bump for the next one
run: |
git add ${{ env.MODIFIED }}
git commit -m "Release syft-enclave v${{ env.VERSION }}"
git tag -a "syft-enclave/v${{ env.VERSION }}" -m "syft-enclave v${{ env.VERSION }}"
pip install packaging
OUTPUT=$(python scripts/bump_version.py syft-enclave ${{ inputs.bump_type }} --dependents published)
NEXT=$(echo "$OUTPUT" | sed -n '1p')
MODIFIED=$(echo "$OUTPUT" | sed -n '2p')
git add $MODIFIED
git commit -m "Bump syft-enclave to $NEXT for the next release"
git push origin HEAD
git push origin "refs/tags/syft-enclave/v${{ env.VERSION }}"
37 changes: 25 additions & 12 deletions .github/workflows/cd-syft-job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,16 +43,24 @@ jobs:
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"

- name: Bump version
# The branch already holds the version to release. The bump happens after
# the publish, so the version on the branch always names an unreleased
# version while people develop.
- name: Read the version to release
run: |
git pull
pip install packaging
OUTPUT=$(python scripts/bump_version.py syft-job ${{ inputs.bump_type }})
VERSION=$(echo "$OUTPUT" | sed -n '1p')
MODIFIED=$(echo "$OUTPUT" | sed -n '2p')
VERSION=$(python -c "import tomllib; print(tomllib.load(open('packages/syft-job/pyproject.toml','rb'))['project']['version'])")
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "MODIFIED=$MODIFIED" >> $GITHUB_ENV
echo "Bumped syft-job to $VERSION (modified: $MODIFIED)"
echo "Releasing syft-job $VERSION"

# Artifacts live inside the package, so they must be committed before the
# build. Re-running the export writes nothing when they already exist.
- name: Freeze release artifacts
run: |
uv run python packages/syft-job/scripts/export_release_artifact.py
git add packages/syft-job/src/syft_job/migrations/history
git diff --cached --quiet || \
git commit -m "Freeze syft-job v${{ env.VERSION }} release artifacts"

- name: Build package
working-directory: packages/syft-job
Expand All @@ -65,12 +73,17 @@ jobs:
TWINE_PASSWORD: ${{ secrets.PYPI_PASS_SYFT_JOB }}
run: uvx twine upload --verbose dist/*

# Annotated tag + explicit push: `--follow-tags` only pushes annotated
# tags, so a lightweight tag would never reach origin.
- name: Commit and tag
# The tag must name the published version, so it is created before the bump.
# The tag is annotated and pushed explicitly: `--follow-tags` only pushes
# annotated tags, so a lightweight tag would never reach origin.
- name: Tag the release, then bump for the next one
run: |
git add ${{ env.MODIFIED }}
git commit -m "Release syft-job v${{ env.VERSION }}"
git tag -a "syft-job/v${{ env.VERSION }}" -m "syft-job v${{ env.VERSION }}"
pip install packaging
OUTPUT=$(python scripts/bump_version.py syft-job ${{ inputs.bump_type }} --dependents published)
NEXT=$(echo "$OUTPUT" | sed -n '1p')
MODIFIED=$(echo "$OUTPUT" | sed -n '2p')
git add $MODIFIED
git commit -m "Bump syft-job to $NEXT for the next release"
git push origin HEAD
git push origin "refs/tags/syft-job/v${{ env.VERSION }}"
28 changes: 16 additions & 12 deletions .github/workflows/cd-syft-migration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,16 +43,15 @@ jobs:
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"

- name: Bump version
# The branch already holds the version to release. The bump happens after
# the publish, so the version on the branch always names an unreleased
# version while people develop.
- name: Read the version to release
run: |
git pull
pip install packaging
OUTPUT=$(python scripts/bump_version.py syft-migration ${{ inputs.bump_type }})
VERSION=$(echo "$OUTPUT" | sed -n '1p')
MODIFIED=$(echo "$OUTPUT" | sed -n '2p')
VERSION=$(python -c "import tomllib; print(tomllib.load(open('packages/syft-migration/pyproject.toml','rb'))['project']['version'])")
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "MODIFIED=$MODIFIED" >> $GITHUB_ENV
echo "Bumped syft-migration to $VERSION (modified: $MODIFIED)"
echo "Releasing syft-migration $VERSION"

- name: Build package
working-directory: packages/syft-migration
Expand All @@ -65,12 +64,17 @@ jobs:
TWINE_PASSWORD: ${{ secrets.PYPI_PASS_SYFT_MIGRATION }}
run: uvx twine upload --verbose dist/*

# Annotated tag + explicit push: `--follow-tags` only pushes annotated
# tags, so a lightweight tag would never reach origin.
- name: Commit and tag
# The tag must name the published version, so it is created before the bump.
# The tag is annotated and pushed explicitly: `--follow-tags` only pushes
# annotated tags, so a lightweight tag would never reach origin.
- name: Tag the release, then bump for the next one
run: |
git add ${{ env.MODIFIED }}
git commit -m "Release syft-migration v${{ env.VERSION }}"
git tag -a "syft-migration/v${{ env.VERSION }}" -m "syft-migration v${{ env.VERSION }}"
pip install packaging
OUTPUT=$(python scripts/bump_version.py syft-migration ${{ inputs.bump_type }} --dependents published)
NEXT=$(echo "$OUTPUT" | sed -n '1p')
MODIFIED=$(echo "$OUTPUT" | sed -n '2p')
git add $MODIFIED
git commit -m "Bump syft-migration to $NEXT for the next release"
git push origin HEAD
git push origin "refs/tags/syft-migration/v${{ env.VERSION }}"
28 changes: 16 additions & 12 deletions .github/workflows/cd-syft-permissions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,16 +43,15 @@ jobs:
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"

- name: Bump version
# The branch already holds the version to release. The bump happens after
# the publish, so the version on the branch always names an unreleased
# version while people develop.
- name: Read the version to release
run: |
git pull
pip install packaging
OUTPUT=$(python scripts/bump_version.py syft-permissions ${{ inputs.bump_type }})
VERSION=$(echo "$OUTPUT" | sed -n '1p')
MODIFIED=$(echo "$OUTPUT" | sed -n '2p')
VERSION=$(python -c "import tomllib; print(tomllib.load(open('packages/syft-permissions/pyproject.toml','rb'))['project']['version'])")
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "MODIFIED=$MODIFIED" >> $GITHUB_ENV
echo "Bumped syft-permissions to $VERSION (modified: $MODIFIED)"
echo "Releasing syft-permissions $VERSION"

- name: Build package
working-directory: packages/syft-permissions
Expand All @@ -65,12 +64,17 @@ jobs:
TWINE_PASSWORD: ${{ secrets.PYPI_PASS_SYFT_PERMISSIONS }}
run: uvx twine upload --verbose dist/*

# Annotated tag + explicit push: `--follow-tags` only pushes annotated
# tags, so a lightweight tag would never reach origin.
- name: Commit and tag
# The tag must name the published version, so it is created before the bump.
# The tag is annotated and pushed explicitly: `--follow-tags` only pushes
# annotated tags, so a lightweight tag would never reach origin.
- name: Tag the release, then bump for the next one
run: |
git add ${{ env.MODIFIED }}
git commit -m "Release syft-permissions v${{ env.VERSION }}"
git tag -a "syft-permissions/v${{ env.VERSION }}" -m "syft-permissions v${{ env.VERSION }}"
pip install packaging
OUTPUT=$(python scripts/bump_version.py syft-permissions ${{ inputs.bump_type }} --dependents published)
NEXT=$(echo "$OUTPUT" | sed -n '1p')
MODIFIED=$(echo "$OUTPUT" | sed -n '2p')
git add $MODIFIED
git commit -m "Bump syft-permissions to $NEXT for the next release"
git push origin HEAD
git push origin "refs/tags/syft-permissions/v${{ env.VERSION }}"
28 changes: 16 additions & 12 deletions .github/workflows/cd-syft-perms.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,16 +43,15 @@ jobs:
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"

- name: Bump version
# The branch already holds the version to release. The bump happens after
# the publish, so the version on the branch always names an unreleased
# version while people develop.
- name: Read the version to release
run: |
git pull
pip install packaging
OUTPUT=$(python scripts/bump_version.py syft-perms ${{ inputs.bump_type }})
VERSION=$(echo "$OUTPUT" | sed -n '1p')
MODIFIED=$(echo "$OUTPUT" | sed -n '2p')
VERSION=$(python -c "import tomllib; print(tomllib.load(open('packages/syft-perms/pyproject.toml','rb'))['project']['version'])")
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "MODIFIED=$MODIFIED" >> $GITHUB_ENV
echo "Bumped syft-perms to $VERSION (modified: $MODIFIED)"
echo "Releasing syft-perms $VERSION"

- name: Build package
working-directory: packages/syft-perms
Expand All @@ -65,12 +64,17 @@ jobs:
TWINE_PASSWORD: ${{ secrets.PYPI_PASS_SYFT_PERMS }}
run: uvx twine upload --verbose dist/*

# Annotated tag + explicit push: `--follow-tags` only pushes annotated
# tags, so a lightweight tag would never reach origin.
- name: Commit and tag
# The tag must name the published version, so it is created before the bump.
# The tag is annotated and pushed explicitly: `--follow-tags` only pushes
# annotated tags, so a lightweight tag would never reach origin.
- name: Tag the release, then bump for the next one
run: |
git add ${{ env.MODIFIED }}
git commit -m "Release syft-perms v${{ env.VERSION }}"
git tag -a "syft-perms/v${{ env.VERSION }}" -m "syft-perms v${{ env.VERSION }}"
pip install packaging
OUTPUT=$(python scripts/bump_version.py syft-perms ${{ inputs.bump_type }} --dependents published)
NEXT=$(echo "$OUTPUT" | sed -n '1p')
MODIFIED=$(echo "$OUTPUT" | sed -n '2p')
git add $MODIFIED
git commit -m "Bump syft-perms to $NEXT for the next release"
git push origin HEAD
git push origin "refs/tags/syft-perms/v${{ env.VERSION }}"
Loading
Loading