## lance-format/lance — v13.0.0-beta.18…v13.0.0-beta.19

_20 commits._

### Features
- **feat(format): separate index keys from covering fields (#9159)** (4cdc3d6)
- **feat(python): add combined_fields (BM25F) full-text query (#8550)** (da1d163)
- **feat: expose ANN search stage timings (#9602)** (68c12df)
- **feat(dataset): write compaction's spilled lineage into the fragment's data file (#9347)** (0918a43)
- **feat(fts): score unindexed fragments in combined_fields (#9444)** (0d89fca)
- **feat(dataset): spill row lineage when updating rows (#9339)** (eedd50c)
- **feat(table): load spilled row lineage ahead of a commit (#9338)** (a47f7d5)

### Fixes
- **fix(label_list): split unnested batches to one sort chunk each (#9585)** (4b89d17)
- **perf(index): keep the HNSW graph when remapping IVF_HNSW partitions (#9590)** (cb2e2af)
- **perf: skip redundant ANN segment row-id prefilters (#9599)** (c4d5017)
- **fix!: derive merge_columns field ids from the dataset manifest (#9547)** (08d0440)
- **fix(mem_wal): dedup repeated row positions when training the flushed PK sidecar (#9595)** (b94b20c)
- **fix(encoding): skip full-width block bitpacking (#9598)** (0109274)
- **fix(linalg): build on architectures without SIMD kernels (#9446)** (3d3fded)
- **fix: reject deep `Clone` commits that bypass `deep_clone` (#9555)** (b5ad236)

### Tests
- **test(bench): measure row lineage placement against a checked workload (#9340)** (5483093)
- **test(python): make test_vector_filter_fts_search order-tolerant (#9607)** (92c6a5d)
- **test(index): seed the skewed k-means training data (#9587)** (4e145e7)

### Chore
- **chore: release beta version 13.0.0-beta.19** (4678aec)
- **chore: upgrade Rust toolchain to 1.98.1 (#9577)** (10c7047)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/lance-format/lance?utm_source=github-action)._