Tracking: declare a concurrency scope per component so single-process components stay usable without blocking multi-replica deployments
Les mainteneurs répondent en général sous 3 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 38/100
- Type d'issue
- Fonctionnalité
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- neo4j, postgresql, python, sqlite
- Domaine
- backend, distributed-systems
Piste de recherche
Read the related issues #1574, #1755, and #1756, plus the referenced design documents design/concurrency_scopes.md and design/server_redesign.md if available. Trace how components are constructed and how startup configuration is handled; the issue does not name implementation files or tests. Done means components declare composed concurrency scopes and startup rejects a component narrower than server.concurrency_scope, with a clear component-specific message.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Priority 3 of the horizontal-scaling work (#1574), after the session lifecycle (#1755) and the background-work primitive (#1756). It is the smallest change of the three and unblocks keeping several components rather than removing them.
Why
Several components are correct in one process and wrong in several. The project wants to keep declarative memory for existing deployments and does not need it to scale, and does not depend on short-term memory at all. Routing requests by session so each replica owns its sessions does not deliver that: semantic sets are org-level and shared across projects (#1732), a failover loses the per-process state, and a routing layer is one more thing every later component must respect. A declared scope gives the same guarantee at boot, in one place, with no runtime cost.
At a glance
| Component | Today | Scope to declare | Issue |
|---|---|---|---|
| PostgreSQL segment store, episode store, session table | safe from any replica | CLUSTER | done (#1661) |
| Qdrant and Milvus stores on the SQL registry | safe from any replica after the chain | CLUSTER | #1733 to #1736 |
| sqlite-vec store, SQLite SQL stores | shared by one host's processes | HOST | #1733 scope statements |
| Engine-backed SQLite vector store | one process per partition (in-process index) | PROCESS | #1733 scope statements |
| Short-term memory | deque in process memory | PROCESS | #1748 |
| Neo4j vector graph store, Nebula vector graph store (declarative memory) | per-process caches | PROCESS | #1753 |
| Neo4j semantic storage | per-process set cache | PROCESS | #1753 |
| Semantic memory as a whole | ingestion loop in every replica | PROCESS until #1745 lands, then CLUSTER | #1745 |
Single fix
A ConcurrencyScope enum, PROCESS < HOST < CLUSTER, that every component computes from its parameters at construction and composes as the minimum of its parts. The deployment declares its own scope (server.concurrency_scope), and startup refuses any component narrower than the deployment, naming the component. Nothing is checked at runtime. Prior art: #1531 (closed) and design/concurrency_scopes.md on its branch; the scope round of design/server_redesign.md (#1579).
What this buys
Declarative memory and short-term memory stay as they are for single-replica deployments, with no code change beyond the declaration. A multi-replica deployment fails at boot with a clear message instead of serving wrong answers. Each later fix (claimed ingestion, a database-backed short-term memory, a loaded Nebula schema) is a one-word scope change on the component.
Not part of this
Making any PROCESS component scale. Removing declarative memory or short-term memory; removal becomes a separate decision that this issue makes unnecessary.
Tracked
- #1748
- #1753
- #1745 (declared PROCESS until the claim lands)
🤖 Written by Claude Code (Claude Fable 5.1) on behalf of @edwinyyyu.
- Langage dominant
- Python
- Étoiles
- 3.1k
- Forks
- 217
- Merge moyen
- 2 j 19 h
- PR mergées (30 j)
- 17
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de MemMachine/MemMachine
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
MemMachine/MemMachine#1877 ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
MemMachine/MemMachine#1874 ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
MemMachine/MemMachine#1873 ·
Les mainteneurs répondent en général sous 3 jours
-
Install docs: Windows quickstart runs a bash script, and the macOS wizard description is staleOuvertedocumentation
Difficulté 2/5 1-3 heures Accessibilité débutants 79/100
MemMachine/MemMachine#1870 ·
Les mainteneurs répondent en général sous 3 jours
-
[Bug]: LangGraph memory search summary reports no memories for nonempty episodic resultsPeut-être pris @March-7 l’a pris il y a 7 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
MemMachine/MemMachine#1852 ·
Les mainteneurs répondent en général sous 3 jours
Toutes les issues de MemMachine/MemMachine
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
-
Validate finite output clamping limits in StepPredictor.prepare_clamping_params to prevent silent NaN/Inf propagationPeut-être pris @muskan-creates352 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
mllam/neural-lam#848 ·
Les mainteneurs répondent en général sous 2 jours
-
infra
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
fab-geocommuns/RNB-coeur#1166 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
deepspeedai/DeepSpeed#8951 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
aws/context-ontology-accelerator#343 ·
Les mainteneurs répondent en général sous 1 jour