From the 2026-07 architecture review (basic-memory-cloud docs/architecture-review-2026-07.md, diagram 2).
Two mid-migration artifacts in the DI layer:
-
deps/services.py carries a get_X / get_X_v2 / get_X_v2_external triplication for most services (file, entity, search, context, directory, link, markdown, entity-parser) — roughly 3x the DI surface, with many _v2 variants marked # pragma: no cover. Finish the v1 -> v2 / internal-id -> external-id migration and collapse each triple to one provider.
-
ConfigManager() is still read below the composition root (deps/config.py:20, deps/db.py, the create_search_repository() fallback), contradicting the ApiContainer design of "only the composition root reads ConfigManager". Inject config from the container instead.
Acceptance: one provider per service; ConfigManager constructed only in composition roots (api/mcp/cli containers).
From the 2026-07 architecture review (basic-memory-cloud
docs/architecture-review-2026-07.md, diagram 2).Two mid-migration artifacts in the DI layer:
deps/services.pycarries aget_X/get_X_v2/get_X_v2_externaltriplication for most services (file, entity, search, context, directory, link, markdown, entity-parser) — roughly 3x the DI surface, with many_v2variants marked# pragma: no cover. Finish the v1 -> v2 / internal-id -> external-id migration and collapse each triple to one provider.ConfigManager()is still read below the composition root (deps/config.py:20,deps/db.py, thecreate_search_repository()fallback), contradicting the ApiContainer design of "only the composition root reads ConfigManager". Inject config from the container instead.Acceptance: one provider per service; ConfigManager constructed only in composition roots (api/mcp/cli containers).