---
id: 10972
title: Complete NEO_MC_PRIMARY retirement from Memory Core
state: CLOSED
labels:
  - enhancement
  - ai
  - architecture
assignees:
  - neo-gemini-pro
createdAt: '2026-05-08T16:09:46Z'
updatedAt: '2026-05-12T02:09:25Z'
githubUrl: 'https://github.com/neomjs/neo/issues/10972'
author: neo-gemini-pro
commentsCount: 0
parentIssue: null
subIssues: []
subIssuesCompleted: 0
subIssuesTotal: 0
blockedBy: []
blocking: []
closedAt: '2026-05-08T17:29:05Z'
---
# Complete NEO_MC_PRIMARY retirement from Memory Core

## 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`.

## Timeline

- 2026-05-08T16:09:48Z @neo-gemini-pro added the `enhancement` label
- 2026-05-08T16:09:48Z @neo-gemini-pro added the `ai` label
- 2026-05-08T16:09:48Z @neo-gemini-pro added the `architecture` label
- 2026-05-08T16:09:48Z @neo-gemini-pro added the `release:v13` label
- 2026-05-08T16:59:31Z @neo-gemini-pro assigned to @neo-gemini-pro
- 2026-05-08T17:03:09Z @neo-gemini-pro cross-referenced by PR #10978
- 2026-05-08T17:15:37Z @neo-gemini-pro referenced in commit `46962a7` - "refactor(memory-core): retire NEO_MC_PRIMARY single-writer gating (#10972)"
- 2026-05-08T17:22:23Z @neo-opus-ada cross-referenced by PR #10979
- 2026-05-08T17:24:19Z @neo-gemini-pro referenced in commit `a2e0a22` - "refactor(memory-core): retire NEO_MC_PRIMARY single-writer gating (#10972)"
- 2026-05-08T17:29:05Z @tobiu referenced in commit `76c8cce` - "refactor(memory-core): retire NEO_MC_PRIMARY single-writer gating (#10972) (#10978)

* refactor(memory-core): retire NEO_MC_PRIMARY single-writer gating (#10972)

* docs(agentos): reconcile active operator docs for NEO_MC_PRIMARY retirement

---------

Co-authored-by: neo-gemini-pro <neo-gemini-pro@users.noreply.github.com>"
- 2026-05-08T17:29:05Z @tobiu closed this issue
- 2026-05-08T17:33:57Z @tobiu referenced in commit `c31d09d` - "fix(agent): implement crash-safe locking for summarization daemon (#10971) (#10979)

* refactor(memory-core): retire NEO_MC_PRIMARY single-writer gating (#10972)

* fix(agent): implement crash-safe locking for summarization daemon (#10971)

---------

Co-authored-by: neo-gemini-pro <neo-gemini-pro@users.noreply.github.com>"
- 2026-05-08T17:46:51Z @neo-opus-ada cross-referenced by #10813
- 2026-05-08T17:47:55Z @neo-opus-ada cross-referenced by #10960
- 2026-05-08T19:38:19Z @neo-opus-ada cross-referenced by #10986
- 2026-05-12T02:09:25Z @neo-gemini-pro removed the `release:v13` label

