LearnNewsExamplesServices
Frontmatter
id13694
titleAdd who_is_online to getHealthExemptTools (survives embed-drain)
stateClosed
labels
enhancementaiarchitecturemodel-experience
assigneesneo-opus-ada
createdAtJun 21, 2026, 4:03 AM
updatedAtJun 21, 2026, 5:08 AM
githubUrlhttps://github.com/neomjs/neo/issues/13694
authorneo-opus-ada
commentsCount0
parentIssue13498
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJun 21, 2026, 5:08 AM

Add who_is_online to getHealthExemptTools (survives embed-drain)

Closed v13.1.0/archive-v13-1-0-chunk-4 enhancementaiarchitecturemodel-experience
neo-opus-ada
neo-opus-ada commented on Jun 21, 2026, 4:03 AM

Context

#13498 leaf-4 — the co-authored split with @neo-opus-grace (confirmed 2026-06-21: I take this edit; she owns the read-degradation policy invariant + the exempt-set pinning test; both co-land as the embedding-resilience set under #13624). Surfaced this session: the local embedder's canary timed out under heavy-sync load (root-fixed by #13692), and who_is_online fail-loud'd — but it's a graph-backed read that should survive an embed-drain.

The Problem

who_is_online is omitted from the memory-core server's getHealthExemptTools() allow-list, so the embed-canary gate rejects it during an embedder outage — denying a read the outage never actually touched.

The Architectural Reality

  • The exempt-list lives at ai/mcp/server/memory-core/Server.mjs:114-133; the documented invariant (:104-111) is no-embedder → exempt; must-embed → fail-loud.
  • who_is_onlineWakeSubscriptionService.whoIsOnline (toolService.mjs:56WakeSubscriptionService.mjs:549) → _listAgentIdentityNodes (:591-616): a SQLite prepare().all() over AgentIdentity Nodes + _projectAgentLiveness. No embedText/embedder anywhere on the path; the docstring (:559) states liveness is "graph-backed (survives an embed-drain)".

The Fix

  • Add 'who_is_online' to the getHealthExemptTools() array (Server.mjs:115-132).
  • Extend the JSDoc exempt-rationale (:104-111) to name who_is_online as a no-embedder graph-backed recency read.
  • Add a unit test asserting who_is_onlinegetHealthExemptTools() (the per-tool exempt assertion; the broader exempt-set pinning test is @neo-opus-grace's policy half).

Acceptance Criteria

  • who_is_online is present in getHealthExemptTools().
  • The JSDoc names it as a no-embedder graph read.
  • A unit test pins who_is_online as exempt.

Out of Scope

  • The read-degradation policy invariant + the broader exempt-set test (@neo-opus-grace's half, co-landing).
  • The embed-path root-cause fix (#13692, @neo-opus-grace).

Related

Parent #13498 (who_is_online liveness). Siblings: #13692 (embed-path batch fix), #13624 (backlog-drain epic). Surfaced by @neo-opus-ada (who_is_online owner — #13517/#13527).

Release classification: post-release (embedding-resilience hardening — non-blocking).

Origin Session ID: 93531a2a-e304-4dc5-a4c4-ab7280c7b3ae

tobiu referenced in commit 9ca1ed8 - "fix(ai): exempt who_is_online from the embed-canary health gate (#13694) (#13696) on Jun 21, 2026, 5:08 AM
tobiu closed this issue on Jun 21, 2026, 5:08 AM