lance-duckdb Update Lance Dependency
Scope
Use this skill in the lance-format/lance-duckdb repository when updating Lance Rust dependencies to a specific Lance version or tag.
Inputs can be a version (7.2.0-beta.1), a tag (v7.2.0-beta.1), a tag ref (refs/tags/v7.2.0-beta.1), or latest.
Workflow
Confirm the worktree status with git status --short.
Resolve the target Lance version:
If the input is latest, empty, or omitted, run:
python3 ci/check_lance_release.py
Parse the JSON output. If needs_update is not true, stop without creating a PR. Otherwise use latest_tag.
If the input is explicit, use it directly.
Compute update metadata without changing files:
python3 ci/update_lance_dependency.py "$TAG_OR_VERSION" --metadata-only
Before making changes, check for an existing open PR with the emitted pr_title:
gh pr list --search "\"$PR_TITLE\" in:title" --state open --limit 1 --json number,url,title
If a matching open PR exists, stop and report it instead of creating a duplicate.
Run the deterministic update entrypoint:
python3 ci/update_lance_dependency.py "$TAG_OR_VERSION"
This updates the direct Lance Rust crate versions in Cargo.toml, removes repository-local Lance [patch.crates-io] entries if present, refreshes Cargo.lock with precise Cargo updates, and prints JSON metadata containing branch_name, commit_message, and pr_title.
Run validation:
cargo fmt --all
cargo check --manifest-path Cargo.toml
cargo clippy --manifest-path Cargo.toml --all-targets
If Cargo reports incompatible Arrow/DataFusion requirements, inspect the target Lance release requirements and update the pinned Arrow/DataFusion versions in Cargo.toml, then rerun python3 ci/update_lance_dependency.py "$TAG_OR_VERSION" and the validation commands. Fix real diagnostics and rerun validation until it succeeds.
Inspect git status --short and git diff to ensure only the Lance dependency update and required compatibility fixes are present.
If the task only asks to prepare local changes, stop here and report the changed files and validation result.
If the task asks to publish the update, create a branch using the printed branch_name, stage all relevant files, and commit using the printed commit_message. Do not amend or rewrite existing commits.
Push to origin. Before creating the PR, check that the current token has push permission:
gh api repos/lance-format/lance-duckdb --jq .permissions.push
If the remote branch already exists for the same generated branch name, delete the remote ref with gh api -X DELETE repos/lance-format/lance-duckdb/git/refs/heads/$BRANCH_NAME, then push. Do not force-push.
Create a PR targeting main with the printed pr_title. If there is no PR template, keep the body to two or three concise sentences: state the Lance dependency bump, note any required compatibility fixes, and link the triggering Lance tag or release.
Read back the remote PR title after creation. If it is not a Conventional Commit title, fix it immediately.
GitHub Actions
This workflow is intentionally manual. When this skill is used from GitHub Actions, TAG, GH_TOKEN, and GITHUB_TOKEN may already be set. Resolve latest first when TAG is empty. Once an explicit tag or version is known, use:
python3 ci/update_lance_dependency.py "$TAG" --github-output "$GITHUB_OUTPUT"
Then use the emitted branch_name, commit_message, and pr_title values for branch, commit, and PR creation.
1---2name: lance-duckdb-update-lance-dependency3description: Update lance-duckdb to a specific Lance release or tag. Use when bumping Lance Rust dependencies in the lance-duckdb repository, including Cargo.toml, Cargo.lock, validation, branch creation, commit, push, and PR creation when requested.4---56# lance-duckdb Update Lance Dependency78## Scope910Use this skill in the `lance-format/lance-duckdb` repository when updating Lance Rust dependencies to a specific Lance version or tag.1112Inputs can be a version (`7.2.0-beta.1`), a tag (`v7.2.0-beta.1`), a tag ref (`refs/tags/v7.2.0-beta.1`), or `latest`.1314## Workflow15161. Confirm the worktree status with `git status --short`.172. Resolve the target Lance version:1819 - If the input is `latest`, empty, or omitted, run:2021 ```bash22 python3 ci/check_lance_release.py23 ```2425 Parse the JSON output. If `needs_update` is not `true`, stop without creating a PR. Otherwise use `latest_tag`.2627 - If the input is explicit, use it directly.28293. Compute update metadata without changing files:3031 ```bash32 python3 ci/update_lance_dependency.py "$TAG_OR_VERSION" --metadata-only33 ```3435 Before making changes, check for an existing open PR with the emitted `pr_title`:3637 ```bash38 gh pr list --search "\"$PR_TITLE\" in:title" --state open --limit 1 --json number,url,title39 ```4041 If a matching open PR exists, stop and report it instead of creating a duplicate.42434. Run the deterministic update entrypoint:4445 ```bash46 python3 ci/update_lance_dependency.py "$TAG_OR_VERSION"47 ```4849 This updates the direct Lance Rust crate versions in `Cargo.toml`, removes repository-local Lance `[patch.crates-io]` entries if present, refreshes `Cargo.lock` with precise Cargo updates, and prints JSON metadata containing `branch_name`, `commit_message`, and `pr_title`.50515. Run validation:5253 ```bash54 cargo fmt --all55 cargo check --manifest-path Cargo.toml56 cargo clippy --manifest-path Cargo.toml --all-targets57 ```5859 If Cargo reports incompatible Arrow/DataFusion requirements, inspect the target Lance release requirements and update the pinned Arrow/DataFusion versions in `Cargo.toml`, then rerun `python3 ci/update_lance_dependency.py "$TAG_OR_VERSION"` and the validation commands. Fix real diagnostics and rerun validation until it succeeds.60616. Inspect `git status --short` and `git diff` to ensure only the Lance dependency update and required compatibility fixes are present.62637. If the task only asks to prepare local changes, stop here and report the changed files and validation result.64658. If the task asks to publish the update, create a branch using the printed `branch_name`, stage all relevant files, and commit using the printed `commit_message`. Do not amend or rewrite existing commits.66679. Push to `origin`. Before creating the PR, check that the current token has push permission:6869 ```bash70 gh api repos/lance-format/lance-duckdb --jq .permissions.push71 ```7273 If the remote branch already exists for the same generated branch name, delete the remote ref with `gh api -X DELETE repos/lance-format/lance-duckdb/git/refs/heads/$BRANCH_NAME`, then push. Do not force-push.747510. Create a PR targeting `main` with the printed `pr_title`. If there is no PR template, keep the body to two or three concise sentences: state the Lance dependency bump, note any required compatibility fixes, and link the triggering Lance tag or release.767711. Read back the remote PR title after creation. If it is not a Conventional Commit title, fix it immediately.7879## GitHub Actions8081This workflow is intentionally manual. When this skill is used from GitHub Actions, `TAG`, `GH_TOKEN`, and `GITHUB_TOKEN` may already be set. Resolve `latest` first when `TAG` is empty. Once an explicit tag or version is known, use:8283```bash84python3 ci/update_lance_dependency.py "$TAG" --github-output "$GITHUB_OUTPUT"85```8687Then use the emitted `branch_name`, `commit_message`, and `pr_title` values for branch, commit, and PR creation.