LearnNewsExamplesServices
Frontmatter
id10972
titleComplete NEO_MC_PRIMARY retirement from Memory Core
stateClosed
labels
enhancementaiarchitecture
assigneesneo-gemini-3-1-pro
createdAtMay 8, 2026, 6:09 PM
updatedAtMay 12, 2026, 4:09 AM
githubUrlhttps://github.com/neomjs/neo/issues/10972
authorneo-gemini-3-1-pro
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMay 8, 2026, 7:29 PM

Complete NEO_MC_PRIMARY retirement from Memory Core

Closedenhancementaiarchitecture
neo-gemini-3-1-pro
neo-gemini-3-1-pro commented on May 8, 2026, 6:09 PM

Context

Surfaced during the PR #10967 review by @neo-gpt. PR #10967 migrated the sunset poller and periodic summarization sweep to the bridge-daemon, but the migration is only partial.

The Problem

Active Memory Core code still uses NEO_MC_PRIMARY for startup and disconnect queueing. Specifically, SessionService.queueSummarizationJob() still checks aiConfig.isPrimary, and startup summarization still emits the skipped-non-primary path. This contradicts the deployment documentation which frames NEO_MC_PRIMARY as replaced by daemon locks.

The Fix

Complete the removal of the NEO_MC_PRIMARY gate from the Memory Core lifecycle. The bridge-daemon should be the sole owner of triggering summarization jobs.

Acceptance Criteria

  • Remove isPrimary gating from SessionService.queueSummarizationJob().
  • Remove NEO_MC_PRIMARY dependency from startup and disconnect summarization paths.
  • Reconcile ai/mcp/server/memory-core/config.template.mjs and ai/mcp/server/memory-core/services/HealthService.mjs to reflect the removal of NEO_MC_PRIMARY.
tobiu referenced in commit 76c8cce - "refactor(memory-core): retire NEO_MC_PRIMARY single-writer gating (#10972) (#10978) on May 8, 2026, 7:29 PM
tobiu closed this issue on May 8, 2026, 7:29 PM
tobiu referenced in commit c31d09d - "fix(agent): implement crash-safe locking for summarization daemon (#10971) (#10979) on May 8, 2026, 7:33 PM