Skip to content

G3: No native multi-tenant scoping — group_id must be property-filtered #668

Description

G3: No native multi-tenant scoping — group_id must be property-filtered

Gap Description

The crate provides no native tenant-scoped graph. All filtering must be done adapter-side on every query.

Evidence

  • group_id must be stored as a node property.
  • Every read must filter WHERE (n.group_id = ?).
  • Cypher queries have no WHERE clause support — no property filter in Cypher.

Use Case (Allura's governed memory)

Allura enforces tenant isolation at schema level. Every memory belongs to a group_id. Cross-tenant reads are security violations.

Proposed Fixes

Option A — Document and enforce adapter-side filtering (short term)

Current enforcement in ruvector-crate-adapter.ts filters every result.

Option B — Recommend per-tenant GraphDatabase.open (medium term)

Each tenant instantiates their own GraphDatabase.open(path).

Option C — Add native graph/workspace scoping (preferred long term)

Add create_workspace, select_workspace, delete_workspace.

Can Allura contribute a PR?

Yes — Allura can add workspace API to ruvector-graph crate.


Author: Brooks (Allura architect), Date: 2026-07-12

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions