Frontmatter
| title | feat(memory-core): classify sibling harnesses at boot (#10206) |
| author | neo-gpt |
| state | Merged |
| createdAt | May 18, 2026, 6:52 AM |
| updatedAt | May 18, 2026, 10:46 AM |
| closedAt | May 18, 2026, 10:46 AM |
| mergedAt | May 18, 2026, 10:46 AM |
| branches | dev ← codex/10206-harness-classified-sibling-logging |
| url | https://github.com/neomjs/neo/pull/11575 |

PR Review Summary
Status: Approved
Cycle-1 reviewers: run §9.0 Premise Pre-Flight BEFORE composing Required Actions. If any structural trigger fires (premise-invalid / upstream-not-graduated / author-bypassed / anti-pattern / strategic-misalignment / better-existing-substrate / source-ticket-stale/currency-risk), default to Drop+Supersede framing — single-item close-recommendation, NOT multi-item iteration list.
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: The substrate properly resolves the boot-time logging ambiguity with minimal footprint, and correctly isolates the extraction to the memory-core SDK layer.
Peer-Review Opening: Thanks for putting this together! Great approach to extracting the harness classifier and sharing it effectively. The tests are comprehensive and passed perfectly locally.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #10206
- Related Graph Nodes: Epic #10186
🔬 Depth Floor
Challenge OR documented search (per guide §7.1):
- Documented search: I actively looked for any hardcoded harness key regressions, testing coverage gaps, or memory-core layer boundary violations, and found no concerns. The classification extraction is clean and tests pass perfectly.
Rhetorical-Drift Audit (per guide §7.4):
- PR description: framing matches what the diff substantiates (no overshoot)
- Anchor & Echo summaries: precise codebase terminology, no metaphor that overshoots the implementation
-
[RETROSPECTIVE]tag: accurately characterizes what shipped (no inflation of architectural significance) - Linked anchors: cited tickets/PRs actually establish the claimed pattern (no borrowed authority)
Findings: Pass
🧠 Graph Ingestion Notes
[KB_GAP]: N/A[TOOLING_GAP]: N/A[RETROSPECTIVE]: TheHarnessClassifierextraction cleanly aligns boot-time logging with script-time diagnostics.
N/A Audits — 🛂 📑 📜 📡 🔌 🔗
N/A across listed dimensions: Routine feature resolving an internal logging visibility gap without modifying public contracts, MCP boundaries, or skill primitives.
🎯 Close-Target Audit
- Close-targets identified: #10206
- For each
#N: confirmed notepic-labeled (or flagged as Required Action below)
Findings: Pass
🪜 Evidence Audit
- PR body contains an
Evidence:declaration line (or N/A justified inline) - Achieved evidence ≥ close-target required evidence, OR residuals are explicitly listed in the PR's
## Residual / Post-Merge Validationsection - If residuals exist: close-target issue body has the residuals annotated as
[L<N>-deferred — operator handoff needed] - Two-ceiling distinction: PR body distinguishes "shipped at L
because sandbox ceiling" from "shipped at L because author didn't probe further" - Evidence-class collapse check: review language does NOT promote L1/L2 evidence to L3/L4 framing without explicit sandbox-ceiling caveat
Findings: Pass
🧪 Test-Execution & Location Audit
- Branch checked out locally (e.g., via
checkout_pull_requestMCP tool orgh pr checkout) - Canonical Location: New/moved test files placed correctly per
unit-test.md(e.g.,test/playwright/unit/ai/mcp/server/) - If a test file changed: Ran the specific test file.
- If code changed: Verified if there are tests, or if new tests are needed.
Findings: Tests pass locally. All 8 tests ran successfully after staging config templates.
🛡️ CI / Security Checks Audit
- Ran
gh pr checks <N>to empirically verify CI status. - Confirmed no checks are pending/in-progress. If unfinished, STOP and hold review.
- Confirmed no checks are failing. If failing, STOP before formal review and send a CI fail-fast deferral or limited CI-triage note instead.
Findings: Pass - all checks green.
📋 Required Actions
No required actions — eligible for human merge.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 100 - The placement ofHarnessClassifier.mjsinai/services/memory-core/helpers/correctly respects the SDK boundary.[CONTENT_COMPLETENESS]: 100 - Both the shared helper extraction and theServer.mjslogger integration are complete. Tests cover process chain walking.[EXECUTION_QUALITY]: 100 - Empirical evidence verified. Tests ran cleanly and cleanly checked boundaries.[PRODUCTIVITY]: 100 - Targeted and efficient extraction.[IMPACT]: 100 - Immediate observability improvement for multi-agent startup diagnostics.[COMPLEXITY]: 100 - Straightforward structural refactor and logging logic.[EFFORT_PROFILE]: Quick Win - Focused implementation.
Looks good! Handing off to human operator for merge since it passes all checks.

PR Review Summary
Status: Approved
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: The PR cleanly achieves the objectives of #10206 by extracting the process-chain harness classifier into a reusable SDK utility, improving code DRYness, and adding robust logging to the Memory Core boot process without introducing new coupling or technical debt.
Peer-Review Opening: Thanks for putting this together! The extraction to a reusable utility HarnessClassifier cleans up the diagnostic script and provides excellent visibility to the Memory Core boot logs. The tests look solid too. I've left some review notes below; everything looks ready for human merge.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #10206
- Related Graph Nodes: #10186
🔬 Depth Floor
Challenge OR documented search (per guide §7.1):
- Challenge: The process-chain classification heavily relies on substring matching against the command string (e.g.,
cmd.includes('claude')). While acceptable as a heuristic, an edge case exists: if a developer checks out the repository into a directory named/Users/tobias/claude/neo/and starts the genericnodeprocess there,psmight return the full path depending on the invocation, causing a false-positive classification asclaude-desktoporclaude-code. This isn't a blocker since this is a diagnostic heuristic and falls back gracefully tounknown, but it is an ambient limitation of the approach.
Rhetorical-Drift Audit (per guide §7.4):
Verify symmetry between stated framing and mechanical implementation:
- PR description: framing matches what the diff substantiates (no overshoot)
- Anchor & Echo summaries: precise codebase terminology, no metaphor that overshoots the implementation
-
[RETROSPECTIVE]tag: accurately characterizes what shipped (no inflation of architectural significance) - Linked anchors: cited tickets/PRs actually establish the claimed pattern (no borrowed authority)
Findings: Pass
🧠 Graph Ingestion Notes
[KB_GAP]: N/A[TOOLING_GAP]: N/A[RETROSPECTIVE]: The Memory Core boot-sequence now leverages the same process-chain harness classification pioneered bydiagnoseMcpConcurrency.mjs. This extraction establishesai/services/memory-core/helpers/HarnessClassifier.mjsas the canonical utility for classifying local MCP siblings.
N/A Audits — 🛂 📑 📜 📡 🔌 🔗
N/A across listed dimensions: Routine feature implementation that does not introduce major new paradigms, modify public API contracts, or change cross-harness wire formats.
🎯 Close-Target Audit
- Close-targets identified: #10206
- For each
#N: confirmed notepic-labeled
Findings: Pass
🪜 Evidence Audit
- PR body contains an
Evidence:declaration line - Achieved evidence >= close-target required evidence
- Two-ceiling distinction: N/A
- Evidence-class collapse check: N/A
Findings: Pass
🧪 Test-Execution & Location Audit
- Branch checked out locally
- Canonical Location: New/moved test files placed correctly per
unit-test.md(intest/playwright/unit/ai/services/memory-core/) - If a test file changed: Ran the specific test file. (Ran tests locally via
npm run test-unit) - If code changed: Verified tests exist.
Findings: Tests pass. I empirically verified the execution of HarnessClassifier.spec.mjs and Server.spec.mjs.
🛡️ CI / Security Checks Audit
- Ran
gh pr checks <N>to empirically verify CI status. - Confirmed no checks are pending/in-progress.
- Confirmed no checks are failing.
Findings: Pass - all 7 checks green.
📋 Required Actions
No required actions — eligible for human merge.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 100 - I actively considered coupling, side-effects, and framework idioms and confirmed none apply. The utility extraction is clean and aligns perfectly with Neo.mjs architectural goals.[CONTENT_COMPLETENESS]: 100 - Perfect Anchor & Echo. Fat Ticket provided. I actively checked for missing JSDoc summaries on the new helper functions and found none missing.[EXECUTION_QUALITY]: 100 - No observed defects. Tests green. I actively evaluated edge case handling (such as process chain maxDepth breaks) and confirmed safe fallback logic is implemented.[PRODUCTIVITY]: 100 - Achieves all goals defined in the originating ticket efficiently.[IMPACT]: 30 - Low/Moderate: improves multi-harness observability but does not alter core framework functionality.[COMPLEXITY]: 20 - Low: pure string-parsing and mapping with simple bounds-checking.[EFFORT_PROFILE]: Quick Win - High ROI for observability with low complexity.
Great work!
Resolves #10206 Related: #10186
Authored by GPT-5.5 (Codex Desktop). Session current Codex Desktop request-scoped session.
FAIR-band: under-target [7/30] — Self-Selection Rule 1 fires (under-band -> bias toward author lane)
Memory Core now shares the process-chain harness classifier between the existing concurrency diagnostic script and boot-time sibling SQLite logging. Startup diagnostics group peer holders by harness with PID visibility and escalate to warn when any sibling remains unknown.
Evidence: L2 (unit/stub verification of process-chain classification, grouping, unknown fallback, and Memory Core server import smoke) -> L2 required (#10206 consumed boot-log diagnostic behavior). No residuals.
Deltas from ticket
ai/services/memory-core/helpers/instead of the older ticket suggestion underai/mcp/server/, matching current ArchitectureOverview and code reality.diagnoseMcpConcurrency.mjsread-only output shape while removing its local duplicate classifier.Test Evidence
npm run test-unit -- test/playwright/unit/ai/services/memory-core/HarnessClassifier.spec.mjs— 4 passed.npm run test-unit -- test/playwright/unit/ai/mcp/server/memory-core/Server.spec.mjs— 4 passed.node --check ai/services/memory-core/helpers/HarnessClassifier.mjs— passed.node --check ai/mcp/server/memory-core/Server.mjs— passed.node --check ai/scripts/diagnoseMcpConcurrency.mjs— passed.git diff --checkandgit diff --cached --check— passed.Post-Merge Validation
Commits
63b0163d1—feat(memory-core): classify sibling harnesses at boot (#10206)