Repository navigation
feat(graphstore): add Gremlin provider and acceptance matrix - #114
Merged
Merged
Conversation
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.
Summary
Add a
gremlinGraphStore provider so UModel can persist models, entities, and topology through a TinkerPop Gremlin Server.umodel-serverandumodel-mcpaccept--graphstore gremlin, with verified TLS, optional SASL authentication, and the existing SPL/read-only Cypher query contracts.Motivation
Gremlin-backed graphs could not previously be selected as UModel storage. The new provider is validated against real Gremlin Server 3.7.3 instances through the existing query and client suites, including application/database restarts and failure paths.
Changes
make test-gremlin-matrix, covering plain and authenticated TLS connections, TinkerTransactionGraph rollback, TinkerGraph partial-write behavior, disconnection, and persistent graph restart. Run the matrix in CI and parameterize Query Service, REST, CLI, MCP, golden, and UI tests for Gremlin.Test plan
make test-serviceandmake guardmake ci(service builds, race-enabled tests, SDK verification, schema/examples/docs checks)make expandUMODEL_CONTAINER_RUNTIME=podman make test-gremlin-matrix: complete plain/TLS/authenticated query and client suites, transactional rollback, non-transactional failure semantics, server disconnect, and database restart/search recoverymake test-uiwith repository-pinned pnpm 9.15.9UMODEL_TEST_GRAPHSTORE=gremlin make test-ui-e2e: all 18 browser/API checks passed against the real Gremlin-backed quickstartgit diff --check; Chinese README copies are identicalCompatibility
Requires a WebSocket endpoint with GraphSON 3 and bound
gremlin-groovyscripts. Public reads continue through Query Service. One writing provider instance per graph is required, and requests are limited to 1 MiB. Backend-specific indexes and constraints remain operator-managed.Rollback is verified on TinkerTransactionGraph; non-transactional TinkerGraph can retain partial writes after a server failure.
graph-matchis not advertised by this provider, and itsPROVIDER_UNSUPPORTEDresponse is tested. The default embedder remainsnoop; the matrix validates search routing and index recovery rather than embedding quality.Out of scope
Arbitrary user Gremlin execution, distributed writer coordination, and compatibility certification for other hosted Gremlin backends.