Repository navigation
store: a workspace window keeps its (workspace_id, id) index whatever the planner statistics say - #195
Merged
Conversation
… the planner statistics say Since #182 the Store refreshes planner statistics when it opens. A test crashes and restarts the Store mid-suite, the shared test store then gets statistics, and with them SQLite planned the chunk backfill window as a range over the chunks primary key instead of the (workspace_id, id) index, so chunk_backfill_test's plan check failed depending on test order (main run 41049651178). Live stores have statistics too now, so the same flip could make a backfill window read across every workspace. - ChunkBackfill's window statements and Graph.Backfill's pages of one workspace name their index with INDEXED BY, which fixes the plan; a tenant or whole-store graph scan still plans freely. - Store.Dialect drops INDEXED BY and NOT INDEXED for PostgreSQL, which has no index hints, so the same statements stay supported there. - The census lines of the four plan checks carry the hint.
robertohluna
added a commit
that referenced
this pull request
Nov 1, 2026
## Release 0.3.11 Moves the version from 0.3.10 to 0.3.11 in the 16 files the 0.3.10 bump (#178) touched: application, CLI, MCP, client installer, contract, docs and the tests that pin it. Contract schema `1`, API `v1` and expected migration `85` are unchanged: nothing since 0.3.10 adds a migration. Two lines in `docs/guides/versioning-and-releases.md` that record when a feature arrived ("From 0.3.10 on") stay as they are. ## In 0.3.11 (since v0.3.10) - bundles: a rolled-back batch leaves no line in the written log, and the boot take-back runs beside boot (#177) - sync: a replica removes what it made from a source package only once the package row is gone, as the origin does (#173) - workspace: the crawl skips files in no workspace, and a takeover relabels default rows only, atomically with the row (#179) - steward: a tenant takes back the default rows its source packages vouch for under a bare workspace id (#171) - ci: run the Linux merge-gating jobs on MIOSA self-hosted runners (#180) - api: ingest takes occurred_at, source_id and write_files (#181) - search: the full-text match drives the join, and the store keeps its planner statistics fresh (#182) - graph: a backfill job done in slices records the whole run when its last slice finishes (#183) - deps: plug_crypto 2.2.1, which keeps the secret key base out of stack traces (CVE-2026-105963) (#184) - intake: a cross-reference copy is dated when its signal happened, not when its file was written (#185) - docs: the README leads with what the engine does, measured results, what sets it apart, how it works, and a five-minute start (#186) - wiki: a page without citations goes stale by age, and RAG skips stale or unsourced pages (#187) - api: bound search text, collapse duplicate hits, honor limit on graph and exports, scope stats (#189) - wiki: re-curate a stale page only when the curator has material (#190) - health: report a broken embedder as degraded, count rag, connector and intake metrics, keep the git sha current (#188) - tests: retry a bundle job cancel sent from a telemetry handler until the store answers (#191) - api: an offset without a limit on the graph windows its edges like a limit does (#192) - tests: judge the gate cache only on a run where no other write moved the stamp (#193) - bundle jobs: answer a Store that did not answer as busy, not as a job that is not there (#194) - store: a workspace window keeps its (workspace_id, id) index whatever the planner statistics say (#195) - test: three tests no longer depend on timing or on what else the store is doing (#196) - memory: an episode's provenance is projected as evidence links, so assemble no longer fails (#197) - embed: an input Ollama refuses as longer than the model's window is sent again at half its length (#198) - embed: the two request clauses sit together again, so a strict compile passes (#200) - memory: a recall over a stale associative projection queues its rebuild (#199)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Since #182 the Store refreshes planner statistics when it opens. A test restarts the Store mid-suite, the shared test store then gets statistics, and with them SQLite planned the chunk backfill window as a range over the
chunksprimary key instead ofidx_chunks_workspace_id, sochunk_backfill_test's plan check failed depending on test order (main run 41049651178). Live stores now have statistics too, so the same flip could make a backfill window read across every workspace.ChunkBackfillwindow statements andGraph.Backfillpages of one workspace name their index withINDEXED BY, which fixes the plan; a tenant or whole-store graph scan still plans freely.Store.DialectdropsINDEXED BY/NOT INDEXEDfor PostgreSQL (no index hints there), with a test, so the statements stay supported on the PostgreSQL store.