Repository navigation
Description
Goal
Refine how lance-csr is built, tested and released. Most items copy concepts from anam-org/metaxy and telekom/sutura.
Each item needs maintainer approval before work starts. Each item gets its own PR. The PR link goes next to "PR done".
Items
From anam-org/metaxy
- Dagger: run the CI steps as a Dagger module, so the same pipeline runs locally and in GitHub Actions. Reference:
dagger.toml,.dagger/.- Approval of maintainer
- PR done: TBD
- devenv: one reproducible dev shell with the Rust toolchain,
protoc,uvand Python. Reference:devenv.nix,devenv.yaml.- Approval of maintainer
- PR done: TBD
- Nix: use Nix, with a direnv
.envrc, as the base for the dev shell and tools, so tool versions come from a lock file. Reference:.envrc,devenv.lock.- Approval of maintainer
- PR done: TBD
Agent guidance
- ASD-STE100 in
AGENTS.md: add this rule.Use ASD-STE100 Simplified Technical English when you communicate with the user. Use short sentences, active voice, and consistent terms. Keep code identifiers, API names, and quoted source text exact. State the result and any limits clearly.
- Approval of maintainer
- PR done: TBD
From telekom/sutura
-
musl build: add
x86_64-unknown-linux-muslandaarch64-unknown-linux-muslbuilds. Today the release builds onlymanylinux_2_28x86-64 and macOS arm64 wheels. Reference:release.yml.- Approval of maintainer
- PR done: TBD
-
Nix flake for the Rust crates: add
flake.nixandflake.lockthat build the crates as flake outputs. Reference:flake.nix.- Approval of maintainer
- PR done: TBD
-
Cachix: push Nix build results to a Cachix cache, so CI and contributors download them and do not rebuild. A maintainer must create the cache and add its token as a secret. Reference:
cachix-push.yml.- Approval of maintainer
- PR done: TBD
-
stax: add a repo-local
stax.tomlthat sets this repo's remote and forge (GitHub, auth throughgh, stack links in a PR comment). When the devenv or Nix item lands, addstaxto the dev shell at a pinned version. Reference:stax.toml,nix/stax.nix.- Approval of maintainer
- PR done: TBD
-
stax guideline: describe the stacked-PR workflow in
CONTRIBUTING.mdand add a short rule toAGENTS.md. The rules to copy from sutura:- Make stacked branches and their PRs with
st, not withgit checkout -borgh pr create. stax knows only the branches and PRs that it made. - Do not rebase a branch of a stack by hand.
- Run the checks on each branch, because reviewers review each PR alone. Merge from the bottom of the stack up.
- One independent change stays one normal PR. Stacks are for dependent changes.
Reference:
CONTRIBUTING.md, "Pull requests",AGENTS.md.- Approval of maintainer
- PR done: TBD
- Make stacked branches and their PRs with
-
zizmor, fully pinned: pin every GitHub Action to a commit SHA with a version comment, run
zizmorin CI, and let Dependabot keep the pins current. Today most actions use tags such asactions/checkout@v4. OnlyPyO3/maturin-actionis pinned. Reference:dependabot.yml,ci.yml.- Approval of maintainer
- PR done: ci: aarch64 Linux wheels, protoc without Chocolatey, pinned actions and zizmor #139
Distribution
- conda-forge build: publish lance-csr on conda-forge.
- Approval of maintainer
- PR done: Add lance-csr conda-forge/staged-recipes#35499
Activity
prrao87 commentedon Nov 4, 2026
Hi @geoHeil , thanks for your interest in contributing! At first glance (and after an initial agent review), it doesn't seem clear to me what the benefits are. It seems like it adds a lot of complexity, but does it actually help either speed or cost tangibly? Curious what made you choose this specific stack.
geoHeil commentedon Nov 4, 2026
prrao87 commentedon Nov 4, 2026
Got it, let me explore the setup you have in metaxy and get back to you on this, thanks again!
prrao87 commentedon Nov 7, 2026
Hi @geoHeil, thanks again for putting this list together. After some discussion, we'd like to adopt parts of this stack, but not switch entirely to Nix for now. Dagger, devenv, Nix and Cachix would mean more work on our end, and they wouldn't help where most of our build effort goes: the release wheels. Those need native macOS and Windows builds and manylinux-compatible Linux builds, which happen outside Nix.
What we've taken on in #139:
permissions:blocks, and caches restored into the release wheel builds. I've ticked this item above.The conda-forge recipe (conda-forge/staged-recipes#35499) continues separately. Once #139 merges, we'll look at keeping this on hold and revisiting some of those other items at a later time.
geoHeil commentedon Nov 7, 2026
Would you want devenv only ? so just pinned dev tooling without interfering with the build?
Keep in mind with the nix caching you could easily cache some things (lets say slow compiling upstream libraries and then focus your own CI time on your own code which is changing more often.
prrao87 commentedon Nov 7, 2026
Hi @geoHeil, thanks again for putting this list together. Pinning the actions and adding zizmor (hyperdimensionalcomputingai/lance-csr#139 · ci: aarch64 Linux wheels, protoc…) was a real improvement, and so were the aarch64 Linux wheels, and both are going out shortly in v0.9.0.
For now, we’d like to keep CI simple (and running free runners) until more people are using lance-csr. We’re not taking on the remaining items yet (Dagger, devenv/Nix, Cachix, stax). The hard part of our builds is the native macOS and Windows wheels and the manylinux wheels, and these tools wouldn’t help with that. From what I can gather in metaxy’s setup, most of the CI speed comes from paid services: its Dagger jobs run on Dagger Cloud (--engine=cloud) and on Depot runners. Dagger alone doesn’t seem to account for much of it.
Hope you understand, but please feel free to take on any of the performance issues and DataFusion planning optimizations as and when you have the time! We may need to expand on the kinds of query patterns we benchmark on, as the current suite seems to be "benchmaxxed" (for lack of a better term). There are patterns outside of the GDC SNB benchmark that may exhibit suboptimal plans in lance-csr and we'd love for community efforts to take the package in a better direction there.
Closing this for now as out of scope. Thanks for looking into it!