omnigraph/docs/user
Ragnor Comerford 0edcf3ec59
feat(engine): reindex in optimize to keep index coverage current
A scalar/FTS/vector index only covers the fragments it was built over. Rows
appended after the build (e.g. `ingest --mode merge`, whose commit does not
rebuild an existing index) are scanned unindexed, and `compact_files` rewrites
fragments out of coverage. Nothing folded them back in, so coverage decayed as
the graph grew — even the id/src/dst BTREEs that power traversal.

`optimize_one_table` now runs Lance `optimize_indices` after `compact_files`
(incremental merge, not retrain — the same compact->optimize_indices sequence
LanceDB's `optimize()` uses) and enters the publish path on compaction work OR
stale index coverage (new `TableStore::has_unindexed_fragments`, reusing the
fragment_bitmap logic). `optimize_indices` is a committing call with no
uncommitted variant in lance-6.0.1, so it is an inline-commit residual covered
by the existing `SidecarKind::Optimize` recovery sidecar spanning both ops.
Blob-bearing tables are still skipped (the Lance blob-compaction bug is
compaction-specific; reindex-for-blob deferred as a noted follow-up).

Tests: maintenance.rs asserts an appended fragment is uncovered before and
covered after optimize, and idempotency holds (second pass is a no-op).
lance_surface_guards pins the `optimize_indices` signature and its incremental-
coverage behavior. The existing optimize Phase-B recovery failpoint now also
exercises a crash after reindex. Docs: maintenance.md, writes.md, invariants.md,
lance.md, AGENTS.md.
2026-06-13 18:47:41 +02:00
..
audit.md docs(cli): the two config surfaces + the operator file reference 2026-06-11 20:32:04 +03:00
branches-commits.md fix: optimize publishes compaction; recovery roll-back converges manifest (#141) 2026-06-08 02:50:12 +03:00
changes.md docs: split user and developer docs (#93) 2026-05-15 03:45:22 +03:00
cli-reference.md feat(config): OMNIGRAPH_NO_LEGACY_CONFIG strict mode (RFC-008 stage 4) 2026-06-12 00:03:10 +03:00
cli.md feat(cli)!: unified load command; deprecate ingest as an alias 2026-06-11 04:18:00 +03:00
cluster-config.md feat(cluster): the storage: root — state, catalog, and graph roots relocatable 2026-06-11 14:28:04 +03:00
cluster.md test(cluster,server): gated object-storage cluster e2e + CI wiring + docs 2026-06-11 15:56:40 +03:00
constants.md feat(engine): indexed graph traversal (#149) 2026-06-09 18:09:13 +02:00
deployment.md test(cluster,server): gated object-storage cluster e2e + CI wiring + docs 2026-06-11 15:56:40 +03:00
embeddings.md Rename repo terminology to graph (#118) 2026-05-24 16:46:00 +01:00
errors.md docs: rename runs.md/runs.rs → writes and repoint all references (#131) 2026-05-30 23:20:56 +02:00
index.md docs(cluster): operator how-to guide for deploying and managing clusters 2026-06-10 22:10:19 +03:00
indexes.md fix(engine): build scalar BTREE for enum and orderable-scalar @index columns 2026-06-13 18:42:58 +02:00
install.md Add Windows release binaries (#127) 2026-05-30 14:23:40 +02:00
maintenance.md feat(engine): reindex in optimize to keep index coverage current 2026-06-13 18:47:41 +02:00
policy.md feat(cli)!: unified load command; deprecate ingest as an alias 2026-06-11 04:18:00 +03:00
query-language.md (feat) convert engine call sites to &dyn TableStorage; demote legacy TableStore methods to pub(crate) (#86) 2026-06-09 23:03:08 +02:00
schema-language.md schema: HTTP allow_data_loss exposure + e2e drop coverage (MR-694 follow-up) (#107) 2026-05-19 01:56:46 +03:00
schema-lint.md docs: split user and developer docs (#93) 2026-05-15 03:45:22 +03:00
server.md test(cluster,server): gated object-storage cluster e2e + CI wiring + docs 2026-06-11 15:56:40 +03:00
storage.md Recovery liveness, storage fault-injection matrix, and one storage implementation over object_store (#203) 2026-06-13 11:20:08 +02:00
transactions.md docs: drop ./ path prefixes; document query discovery 2026-06-11 01:33:30 +03:00