Releases
backend-v2.28.0
Compare
Sorry, something went wrong.
No results found
2.28.0 (2026-08-13)
Features
bench: first-stage blend A/B on LoCoMo, and share the harness plumbing (#714 ) (f4280d7 )
bench: LoCoMo rerank A/B harness (#712 ) (9369e6e )
broker: gate the four memory operations the broker already calls (#753 ) (c974bb4 )
embeddings: nightly sweep that re-embeds NULL-embedding rows (#767 ) (780e652 )
memory: conflict-record write machinery — storage + resolver (A55 1d) (#764 ) (14f1b2b )
memory: contradiction classification logic — L1/L2/L3 (A55 1d) (#759 ) (9b9d3ae )
memory: contradiction engine seam + arch flag (A55 Phase 1) (#754 ) (541cc05 )
memory: unified contradiction-model schema + read serialization (A55) (#752 ) (e601021 )
memory: wire conflict-record write into the detector, flag-gated (A55 1d) (#766 ) (fab52e4 )
observability: make the unembedded-row backlog measurable (#776 ) (af9e2fb )
search: index memories.title, at the same weight as content (#731 ) (621afea )
write: honour per-item write_mode on the bulk path (#710 ) (6ab8f2d )
Bug Fixes
capture: mirror the shared pipeline's diagnostics, effort and decline test (#755 ) (5c0f7f6 )
crystallizer: match the /lifecycle-candidates contract; drop inline remediation (#765 ) (154350b )
crystallizer: read the embedding-coverage keys the endpoint returns (#763 ) (7219d80 )
embedding: chunk bulk embeds to the backend's batch cap, and report bulk-only outages (#721 ) (d812a9d )
embedding: key degraded-provider stats per backend, not per process (#726 ) (048e2e1 )
embedding: let bulk callers pass their budget so a slow provider is attributable (#724 ) (052d700 )
embedding: set per-phase httpx timeouts, matching the LLM client (#761 ) (ef8be4b )
events: declare the embed-backfill subscription in the manifest (#772 ) (c5e0543 )
memory: null the vector when a content-change re-embed fails (#775 ) (4c87f85 )
memory: unshadow HTTPException so pipeline failures surface as 500 (#760 ) (077f30a )
reports: anchor working-on lane keywords to word starts (#773 ) (e4a695e )
rerank: chunk the remote candidate pool so the sidecar's cap can't reject it (#709 ) (c987649 )
rerank: distinguish permanent config faults from transient failures (#708 ) (ce3fc51 )
search: declare the scored-search wire contract once, in common/ (#727 ) (6483a39 )
search: deliver every scoring knob to the SQL on both search paths (#723 ) (9590c4c )
search: let SEARCH_OVERFETCH_FACTOR reach the SQL LIMIT (#725 ) (f94572a )
search: move 034's backfill out of the startup path (#732 ) (9fe4557 )
search: put fts_score on the cosine scale (#687 ) (#722 ) (4f0eb2b )
search: reserve candidate and result slots for FTS-only rows (#687 ) (#700 ) (4ae972b )
search: settle graph_max_hops at 3 across every surface (#730 ) (0f8d4c8 )
search: ship the 034 backfill inside the image (#734 ) (e78cd29 )
Performance
contradiction: batch the Path C entity-aware per-candidate LLM judge (A61) (#771 ) (0e4c9f8 )
contradiction: batch the semantic per-candidate LLM judge (A61) (#770 ) (86c24c8 )
db: index the FK columns that reference memories.id / entities.id (#751 ) (160f271 )
Dependencies
actions: bump actions/setup-python from 5 to 7 (#640 ) (0dee432 )
actions: bump googleapis/release-please-action from 4.4.1 to 5.0.0 (#639 ) (93a5bbb )
actions: bump the actions group across 1 directory with 3 updates (#638 ) (408f23b )
bump the uv-minor-patch group across 4 directories with 11 updates (#747 ) (a72a5d3 )
plugin: bump @types/node from 26.1.1 to 26.2.0 in /plugin in the npm-minor-patch group across 1 directory (#688 ) (a40ca4a )
Documentation
write: document embedding_pending and the strong-mode opt-out (#706 ) (187b5b5 )
Code Refactoring
search: derive SearchProfileUpdate from the knob table (#736 ) (a5a55f2 )
search: one knob table instead of four registration points (#728 ) (ae56d08 )
search: one resolver for both search paths, and A47 reaches legacy (#729 ) (724f4e8 )
You can’t perform that action at this time.