---
id: 10206
title: 'feat(memory-core): add harness classification to boot-time sibling-PID logging'
state: CLOSED
labels:
  - enhancement
  - ai
  - architecture
  - model-experience
assignees:
  - neo-gpt
createdAt: '2026-04-22T20:45:03Z'
updatedAt: '2026-05-18T08:46:47Z'
githubUrl: 'https://github.com/neomjs/neo/issues/10206'
author: neo-gemini-pro
commentsCount: 2
parentIssue: 10186
subIssues: []
subIssuesCompleted: 0
subIssuesTotal: 0
blockedBy: []
blocking: []
closedAt: '2026-05-18T08:46:47Z'
---
# feat(memory-core): add harness classification to boot-time sibling-PID logging

## Problem

Currently, `logSiblingConcurrency()` simply logs the total count and PIDs of sibling MCP server processes holding the memory-core SQLite files at boot time. While this provides basic visibility (e.g., \"3 peer process(es)\"), it lacks actionable context regarding *who* these peers are.

## Value

By bringing the `classifyHarness()` logic (already pioneered in `diagnoseMcpConcurrency.mjs` via #10187) into the boot-time check, we can classify siblings by harness. A log message like \"2 Antigravity + 1 Claude Desktop\" is vastly more actionable than \"3 siblings\". It enables specific anomaly classification (e.g., triggering a `WARN` only when an unexpected harness count is detected) rather than treating the steady-state as an alert.

## Proposal

1. Extract the `classifyHarness()` logic from `diagnoseMcpConcurrency.mjs` into a shared utility within the `ai/mcp/server/` or `ai/mcp/utils/` domain.
2. Update `logSiblingConcurrency()` in `Server.mjs` to utilize this utility.
3. Refine the startup log to report grouped harness counts instead of a raw PID list.
4. (Optional) Introduce logic to escalate the severity to `logger.warn` if an unknown/unrecognized harness is detected, preserving `logger.info` for the expected steady-state.

## Related
- Sub-task of Epic #10186
- Identified during review of #10188 (PR #10204)

_Authored by Gemini 3.1 Pro (Antigravity). Session 90dc2e65-962b-419f-91af-55dea55e5d3d._

## Timeline

- 2026-04-22T20:45:11Z @neo-gemini-pro added parent issue #10186
- 2026-05-18T04:37:17Z @neo-gpt added the `enhancement` label
- 2026-05-18T04:37:17Z @neo-gpt added the `ai` label
- 2026-05-18T04:37:17Z @neo-gpt added the `architecture` label
- 2026-05-18T04:37:17Z @neo-gpt added the `model-experience` label
### @neo-gpt - 2026-05-18T04:37:26Z

**Input from GPT-5 (Codex Desktop):**

> ● Triaged per `ticket-triage` skill. Applied: `enhancement`, `ai`, `architecture`, `model-experience`.
> 
> Stage retrospective passed:
> - Premise: current `ai/mcp/server/memory-core/Server.mjs` still logs raw sibling PID count, while `ai/scripts/diagnoseMcpConcurrency.mjs` still owns harness classification logic.
> - Prescription: extracting/reusing harness classification for boot-time diagnostics fits the stated symptom rather than broadening into concurrency policy.
> - Substrate: Memory Core startup diagnostics / AI MCP server support surface.
> - Consumer: agent operators reading boot logs during multi-harness contention debugging.
> - Service boundary: read-only process classification; no new state mutation or cross-daemon ownership boundary.
> 
> Assignment disposition: proceeding to `ticket-intake` before any code changes.

- 2026-05-18T04:39:03Z @neo-gpt cross-referenced by #10186
### @neo-gpt - 2026-05-18T04:39:49Z

**Input from GPT-5 (Codex Desktop):**

> ● ## Contract Ledger Addendum (pickup-time)
> 
> Adding the Contract Ledger required by current `ticket-intake` for consumed surfaces; this is a pickup-time matrix for the existing older ticket, not scope expansion.
> 
> | Target Surface | Source of Authority | Proposed Behavior | Fallback / Edge Case | Docs | Evidence |
> |---|---|---|---|---|---|
> | `MemoryCoreServer.logSiblingConcurrency()` boot log | #10206 + parent #10186 diagnostic scope | When sibling SQLite holders exist, startup log groups peers by harness classification and still preserves useful PID visibility. | If classification cannot resolve a harness, group under `unknown`; if `lsof`/`ps` is unavailable or no holders exist, preserve current non-fatal behavior. | JSDoc / summary update on modified or extracted helper. | L1 static diff + L2 unit/stub verification of grouping and fallback. |
> | Shared harness classifier helper | Existing `diagnoseMcpConcurrency.mjs` classifier from #10187 | Exposes reusable process-chain harness classification without adding process-management behavior. | Bounded PID walk; returns `unknown` on unreadable/unrecognized process chains. | JSDoc / `@summary` on exported helper. | L2 unit/stub verification of known and unknown harness commands. |

- 2026-05-18T04:45:29Z @neo-gpt assigned to @neo-gpt
- 2026-05-18T04:52:19Z @neo-gpt cross-referenced by PR #11575
- 2026-05-18T08:46:48Z @tobiu referenced in commit `52742ed` - "feat(memory-core): classify sibling harnesses at boot (#10206) (#11575)

Co-authored-by: tobiu <tobiasuhlig78@gmail.com>"
- 2026-05-18T08:46:48Z @tobiu closed this issue

