Goal
Make it easier to filter open PRs by code area (e.g., "show me all open encoding PRs"). Today the area-ish labels in this repo (vector, indexes, file-storage, format, java, python, etc.) are unprefixed, inconsistent, and partly overlap — there's no clean filter for "PRs in my area."
Proposal
Adopt an A-* area-label convention (rust-lang style) plus an auto-labeler that applies labels based on changed paths.
Labels
| Label |
Description |
Paths |
A-java |
Java bindings + JNI |
java/**, rust/lance-jni/** |
A-namespace |
Namespace impls |
rust/lance-namespace*/** |
A-index |
Vector index, linalg, tokenizer |
rust/lance-index/**, rust/lance-linalg/**, rust/lance-tokenizer/** |
A-encoding |
Encoding, IO, file format |
rust/lance-encoding/**, rust/lance-io/**, rust/lance-file/**, protos/** |
A-python |
Python bindings |
python/** (excluding lockfiles) |
A-docs |
Documentation |
docs/**, **/*.md |
A-ci |
CI / build workflows |
.github/** |
A-deps |
Dependency updates |
**/Cargo.lock, **/uv.lock, deny.toml, **/pyproject.toml |
A-core |
General Rust core (catch-all) |
other rust/**, Cargo.toml |
A PR can carry multiple A-* labels (e.g. a Java + namespace PR gets both).
Auto-labeler
Add .github/labeler.yml + a workflow using actions/labeler@v5 that runs on PR open/sync and applies labels based on changed paths.
Migration of existing labels
Rename in place via gh label edit. GitHub preserves the label on existing issues/PRs through rename, so nothing breaks:
vector, indexes → A-index (merge)
file-storage, format → A-encoding
java → A-java
python → A-python
ci → A-ci
dependencies, python:uv → A-deps
rust → unclear; possibly drop in favor of A-core
Labels not on the map (arrow, c++, wasm, PyTorch/Tensorflow, duckdb, ray, OS labels, etc.) stay as cross-cutting tags.
Why this matters
Anyone can bookmark a filter like is:pr is:open label:A-encoding to see only PRs in their area, instead of scanning the whole open-PR list.
Open questions
A-core as an explicit catch-all, or should unlabeled-means-core?
- Is
A-python worth having given Python-binding PRs are usually reviewed by whoever owns the underlying Rust change? (Filter ergonomics say yes; routing says no.)
- Are
A-docs / A-ci / A-deps overkill, or do reviewers want to filter them in/out separately?
Feedback welcome before I roll this out.
Goal
Make it easier to filter open PRs by code area (e.g., "show me all open encoding PRs"). Today the area-ish labels in this repo (
vector,indexes,file-storage,format,java,python, etc.) are unprefixed, inconsistent, and partly overlap — there's no clean filter for "PRs in my area."Proposal
Adopt an
A-*area-label convention (rust-lang style) plus an auto-labeler that applies labels based on changed paths.Labels
A-javajava/**,rust/lance-jni/**A-namespacerust/lance-namespace*/**A-indexrust/lance-index/**,rust/lance-linalg/**,rust/lance-tokenizer/**A-encodingrust/lance-encoding/**,rust/lance-io/**,rust/lance-file/**,protos/**A-pythonpython/**(excluding lockfiles)A-docsdocs/**,**/*.mdA-ci.github/**A-deps**/Cargo.lock,**/uv.lock,deny.toml,**/pyproject.tomlA-corerust/**,Cargo.tomlA PR can carry multiple
A-*labels (e.g. a Java + namespace PR gets both).Auto-labeler
Add
.github/labeler.yml+ a workflow usingactions/labeler@v5that runs on PR open/sync and applies labels based on changed paths.Migration of existing labels
Rename in place via
gh label edit. GitHub preserves the label on existing issues/PRs through rename, so nothing breaks:vector,indexes→A-index(merge)file-storage,format→A-encodingjava→A-javapython→A-pythonci→A-cidependencies,python:uv→A-depsrust→ unclear; possibly drop in favor ofA-coreLabels not on the map (
arrow,c++,wasm,PyTorch/Tensorflow,duckdb,ray, OS labels, etc.) stay as cross-cutting tags.Why this matters
Anyone can bookmark a filter like
is:pr is:open label:A-encodingto see only PRs in their area, instead of scanning the whole open-PR list.Open questions
A-coreas an explicit catch-all, or should unlabeled-means-core?A-pythonworth having given Python-binding PRs are usually reviewed by whoever owns the underlying Rust change? (Filter ergonomics say yes; routing says no.)A-docs/A-ci/A-depsoverkill, or do reviewers want to filter them in/out separately?Feedback welcome before I roll this out.