docs: add Tier 6 to the roadmap after an external review - #17
Open
tonytonycoder11 wants to merge 1 commit into
Open
docs: add Tier 6 to the roadmap after an external review#17tonytonycoder11 wants to merge 1 commit into
tonytonycoder11 wants to merge 1 commit into
Conversation
An external review raised a set of items against Kdrant. This records the ones worth building as M26 to M30, and writes down why the rest were declined, so the same suggestions do not have to be re-litigated later. Promoted out of the deferred list, each because it blocks a concrete workflow: metadata-filter translation for the Spring AI and LangChain4j adapters, which is the whole distance between an adapter existing and being a drop-in (M26); ensureCollection, ordered scroll and batchUpdate, for rerunnable bootstrap and resumable ETL (M27); Micrometer and X-Request-Id, today reachable only as a seam (M28); and contract tests against the Qdrant OpenAPI schema, which protect every other guarantee as Qdrant ships minors (M29). M30 collects the documentation that lowers the switching cost, all of it describing features that already ship. Declined, with the reason recorded next to each: a Flow-based paged search, since offset makes the server re-run the ANN search per page and scroll is already the Flow for reading many; pool settings on KdrantConfig, which stays transport-neutral by the M12 decision, so they land on the REST factory instead; a bundled JDK facade, unchanged from the 1.0 position; HTTP/2 as the answer to throughput, which is not the settled story it is assumed to be; and a separate ADR directory, whose rationale belongs in STABILITY.md. M25 gains the concrete substitution list for the KMP migration. The recorded Kover blocker names 0.9.1 while the version catalog already pins 0.9.9 with the plugin declared and never applied, so M29 asks for a re-verification rather than assuming it is still blocked. The README Roadmap section gains the Next paragraph the conventions call for, and its Shipped paragraph now names 1.1.0 rather than stopping at 1.0.0.
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.
An external review raised a set of items against Kdrant. This triages them into a new Tier 6 (M26 to M30) and records, next to each declined item, the reason it was declined, so the same suggestions do not have to be re-litigated later.
The filter is deliberately narrow: an item earns a milestone only if it closes a gap between what Kdrant offers and what an adopter can actually use. Nothing here is added for completeness.
Accepted
kdrant-spring-aiandkdrant-langchain4jaccept the frameworks' filter types but never translate them. Filtered retrieval is the common RAG case, so today an application that filters cannot swap its backend without rewriting its retrieval layer. This is the whole distance between "an adapter exists" and "a drop-in replacement".ensureCollection, orderedscroll,batchUpdatescroll-backed ETL. The blocker forensureCollection, the enrichedCollectionInforead-back, already shipped in0.2.0.configureClientmakes this reachable; a team standing up a service should not have to build it.kmemo-micrometeralready proves the shape on the sibling project.Two adjustments worth calling out, because they changed the suggestion rather than accepting it:
maxConnectionsPerRoute,keepAliveTime) was suggested forKdrantConfig. It lands on the REST-engine factory instead: those are CIO concerns, andKdrantConfigis transport-neutral by the M12 decision that keptupsertBatchSizeout for exactly the same reason.Also in M26: an expression that cannot be translated must fail loudly, never silently drop the clause. A dropped filter returns confidently wrong documents, which is far more expensive than an error.
Declined, with reasons recorded in the roadmap
Flow-based pagedsearch.searchreturns a bounded top-kby design, and paging it withoffsetmakes the server re-run the ANN search for every page.scrollis already theFlowfor reading many, and M27 gives it the deterministic ordering that use case actually needs.kdrant-jdkfacade. The1.0position stands. A hand-written facade is permanent public API to maintain for a market that has not asked yet; revisit on evidence.STABILITY.md.One thing to verify separately
The roadmap justified deferring Kover with "0.9.1 is not compatible with the Kotlin 2.4 Gradle plugin", but
libs.versions.tomlalready pinskover = "0.9.9"with the plugin declared and never applied, most likely a Dependabot bump that was never re-tested. The build was not run as part of this change, so M29 asks for a re-verification against the current Kotlin2.4.10/ Gradle9.6.1toolchain rather than claiming it is unblocked.Scope
Documentation only:
ROADMAP.mdand the README Roadmap section. No code, noCHANGELOG.mdentry, since nothing shipped. Checked againstROADMAP-CONVENTIONS.md: no✅without a version, tier and milestone headings conform, and the README now carries theShipped/Next/Laterlabels the standard calls for. ItsShippedparagraph also now names1.1.0, which it had not been updated to.Kdrant's M25 and Kmemo's M17 are the same KMP migration on the same toolchain; M25 now says so, and gains the concrete substitution list. The companion change is NaCode-Studios/Kmemo.