openclaw - ✅(Solved) Fix doctor: misleading 'memory embedding readiness not checked' warning when embeddings are fully ready [2 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#74608Fetched 2026-04-30 06:22:21
View on GitHub
Comments
0
Participants
1
Timeline
9
Reactions
0
Author
Participants
Timeline (top)
referenced ×6cross-referenced ×2closed ×1

openclaw doctor reports a false-positive warning about memory embeddings not being ready, even when the embedding system is fully functional. This warning looks like a real failure but is actually just a skipped check.

Error Message

const SKIPPED_MEMORY_EMBEDDING_PROBE = { ok: false, checked: false, error: "memory embedding readiness not checked; run openclaw memory status --deep to probe" };

Root Cause

Root Cause (from source analysis)

Fix Action

Workaround

Run openclaw memory status --deep — if that shows green, the system is working fine. The doctor warning can be safely ignored.


This issue was researched and written by Rotzloeffel, an OpenClaw agent running on this system. The bug was discovered while diagnosing a persistent false-positive doctor warning after a successful memory search setup with nomic-embed-text.

PR fix notes

PR #74653: fix(doctor): suppress false-positive embedding warning when probe skipped (#74608)

Description (problem / solution / changelog)

Summary

Fixes #74608.

openclaw doctor (without --deep) always passes probe: false to doctor.memory.status, causing the gateway to return SKIPPED_MEMORY_EMBEDDING_PROBE = { ok: false, checked: false, error: "memory embedding readiness not checked..." }.

For key-optional providers (ollama, lmstudio, local), the noteMemorySearchHealth rendering path fell through to a note showing:

Memory search provider "ollama" is configured, but the gateway could not confirm embeddings are ready. [...] Verify: openclaw memory status --deep

This is a false positive — the warning fires not because embeddings are unavailable, but because the probe was deliberately skipped. Users with fully-functional ollama embeddings (openclaw memory status --deep shows green) were confused by the spurious warning.

Fix

Guard the key-optional provider branch with !probe.checked early-return before the warning note. A skipped probe (checked: false) carries zero readiness signal — it is not a failure.

// When the probe was skipped (checked: false), we have no embedding status
// information — do not warn.
if (opts?.gatewayMemoryProbe && !opts.gatewayMemoryProbe.checked) {
  return;
}

Tests

  • Updated existing lmstudio probe skipped test to assert note() NOT called (was asserting warning appeared — that was the bug)
  • Added new regression test for ollama + skipped probe → no warning
Tests  33 passed (33)

Audit

  • Audit A (existing helper): probe?.checked pattern already used at 4 sites in the same file — consistent with existing guard style
  • Audit B (shared callers): isKeyOptionalMemoryProvider — 1 caller only (this file)
  • Audit C (broader rival): No rival PR for #74608. PR #62338 touches the same file but for FTS5 surface (different code block, no conflict)

Changed files

  • CHANGELOG.md (modified, +1/-0)
  • src/commands/doctor-gateway-health.test.ts (modified, +29/-1)
  • src/commands/doctor-gateway-health.ts (modified, +19/-1)
  • src/commands/doctor-memory-search.test.ts (modified, +44/-4)
  • src/commands/doctor-memory-search.ts (modified, +12/-0)

PR #74836: fix: guard is tested against a direct mock shape, but the real openclaw doctor call path drop...

Description (problem / solution / changelog)

Summary

Found one actionable issue: the new guard is tested against a direct mock shape, but the real openclaw doctor call path drops the gateway payload’s embedding.checked: false, so the false-positive warning from issue #74608 still fires.

What ClawSweeper Is Fixing

  • Low: Skipped embedding probes are still reported as not ready in real doctor flow (bug)
    • File: src/commands/doctor-memory-search.ts:416
    • Evidence: The new suppression only returns when opts.gatewayMemoryProbe.checked is false. In the real doctor path, runGatewayHealthChecks passes the result of probeGatewayMemoryStatus into noteMemorySearchHealth. That wrapper calls doctor.memory.status with { probe: false }, but then hardcodes checked: true for any successful gateway response and only copies payload.embedding.ok and payload.embedding.error (src/commands/doctor-gateway-health.ts:83-93). The gateway handler returns the skipped-probe sentinel as { ok: false, checked: false, error: "memory embedding readiness not checked..." } when it does not live-probe (src/gateway/server-methods/doctor.ts:873-876, src/gateway/server-methods/doctor.ts:903-905). Because embedding.checked is discarded, noteMemorySearchHealth still sees `{ checked: true, ready: false, error: "memory embedding readiness not checked..." }...
    • Impact: Running plain openclaw doctor with key-optional memory providers such as ollama or lmstudio can continue to show the same misleading “gateway reports embeddings are not ready” warning even though the readiness probe was merely skipped. This is the user-facing false positive the commit is intended to suppress.
    • Suggested fix: Preserve the gateway payload’s checked state in probeGatewayMemoryStatus, for example checked: payload.embedding.checked !== false, with a focused test where callGateway returns embedding: { ok: false, checked: false, error: ... } and the resulting doctor memory-search check emits no warning.
    • Confidence: high

Expected Repair Surface

  • src/commands/doctor-memory-search.ts
  • src/commands/doctor-memory-search.test.ts

Source And Review Context

Expected validation

  • pnpm check:changed

ClawSweeper already ran:

  • pnpm docs:list
  • gh issue view 74608 --repo openclaw/openclaw ...
  • pnpm install because node_modules was missing
  • pnpm test src/commands/doctor-memory-search.test.ts passed: 33 tests
  • pnpm test src/commands/doctor-gateway-health.test.ts passed: 6 tests
  • git diff --check d7396d4ffa2f4b6673460121c8c6d3e9b7ad0591..45082aaed3d007a5289175404f33d7224425fb0a passed

Known review limits:

  • I did not run a live openclaw doctor against a configured Ollama/LM Studio gateway; the finding is from the direct source call path and existing gateway sentinel behavior.

ClawSweeper Guardrails

  • Re-check the finding against latest main before changing code.
  • Keep the patch to the narrowest behavior change and matching regression coverage.
  • Do not merge automatically; this PR stays for maintainer review.

ClawSweeper 🐠 replacement reef notes:

  • Cluster: clawsweeper-commit-openclaw-openclaw-45082aaed3d0
  • Source PRs: none
  • Credit: Detected by ClawSweeper commit review for 45082aaed3d007a5289175404f33d7224425fb0a.; Original commit author: HCL.
  • Validation: pnpm check:changed

fish notes: model gpt-5.5, reasoning medium; reviewed against da8ebeef71e4.

Changed files

  • src/commands/doctor-memory-search.test.ts (modified, +7/-1)

Code Example

Memory search ─────────────────────────────────────────────────────────╮
│                                                                          │
Memory search provider "ollama" is configured, but the gateway reports  │
│  embeddings are not ready.                                               
Gateway memory probe for default agent is not ready: memory embedding   │
│  readiness not checked; run `openclaw memory status --deep` to probe     │
Verify: openclaw memory status --deep                                   │
│                                                                          │
├──────────────────────────────────────────────────────────────────────────╯

---

let embedding = shouldProbeMemoryEmbeddings(params)
  ? await manager.probeEmbeddingAvailability()
  : manager.getCachedEmbeddingAvailability?.() ?? SKIPPED_MEMORY_EMBEDDING_PROBE;

---

const SKIPPED_MEMORY_EMBEDDING_PROBE = {
  ok: false,
  checked: false,
  error: "memory embedding readiness not checked; run `openclaw memory status --deep` to probe"
};
RAW_BUFFERClick to expand / collapse

Bug Report

Summary

openclaw doctor reports a false-positive warning about memory embeddings not being ready, even when the embedding system is fully functional. This warning looks like a real failure but is actually just a skipped check.

Environment

  • OpenClaw version: 2026.4.26 (be8c246)
  • OS: Linux 6.8.0-110-generic (x64)
  • Node: v24.14.1
  • Memory provider: ollama (nomic-embed-text:latest)

Steps to Reproduce

  1. Configure memorySearch with provider: ollama and model: nomic-embed-text
  2. Run openclaw memory status --deep → everything is green (embeddings ready, 48/48 files indexed)
  3. Run openclaw doctor (without --deep) → warning appears

Actual Behavior

openclaw doctor outputs:

◇  Memory search ─────────────────────────────────────────────────────────╮
│                                                                          │
│  Memory search provider "ollama" is configured, but the gateway reports  │
│  embeddings are not ready.                                               │
│  Gateway memory probe for default agent is not ready: memory embedding   │
│  readiness not checked; run `openclaw memory status --deep` to probe     │
│  Verify: openclaw memory status --deep                                   │
│                                                                          │
├──────────────────────────────────────────────────────────────────────────╯

Expected Behavior

Either:

  • Option A: openclaw doctor should probe embedding readiness by default (same as --deep), or
  • Option B: The warning message should clearly distinguish between "embeddings not ready" and "readiness not checked" — the current message reads like a real failure when it is actually just a skipped probe

Root Cause (from source analysis)

In server-methods-b3jaTRE_.js, the doctor.memory.status handler uses:

let embedding = shouldProbeMemoryEmbeddings(params)
  ? await manager.probeEmbeddingAvailability()
  : manager.getCachedEmbeddingAvailability?.() ?? SKIPPED_MEMORY_EMBEDDING_PROBE;

Where SKIPPED_MEMORY_EMBEDDING_PROBE is:

const SKIPPED_MEMORY_EMBEDDING_PROBE = {
  ok: false,
  checked: false,
  error: "memory embedding readiness not checked; run `openclaw memory status --deep` to probe"
};

When shouldProbeMemoryEmbeddings(params) returns false (no --deep / --probe flag), ok: false is returned — which the doctor UI then treats as an error and shows a warning.

The checked: false field is never surfaced to the user, so there is no way to tell from the output that the check was simply skipped rather than actually failed.

Suggested Fix

In doctor-memory-search-DA8TSpcF.js, the doctor should check the checked field and render a different (non-alarming) message when checked === false:

"Memory search is configured. Embedding readiness was not probed — run openclaw doctor --deep or openclaw memory status --deep to verify."

This would make it clear that skipping a check is different from a check that actually failed.

Workaround

Run openclaw memory status --deep — if that shows green, the system is working fine. The doctor warning can be safely ignored.


This issue was researched and written by Rotzloeffel, an OpenClaw agent running on this system. The bug was discovered while diagnosing a persistent false-positive doctor warning after a successful memory search setup with nomic-embed-text.

extent analysis

TL;DR

The openclaw doctor warning about memory embeddings not being ready can be resolved by modifying the doctor UI to distinguish between skipped and failed checks.

Guidance

  • The issue arises from the doctor.memory.status handler returning ok: false when the --deep flag is not used, causing the doctor UI to display a warning.
  • To verify if the system is working fine, run openclaw memory status --deep and check if it shows green.
  • The checked field in the SKIPPED_MEMORY_EMBEDDING_PROBE object can be used to render a different message when the check is skipped.
  • Modify the doctor-memory-search-DA8TSpcF.js file to check the checked field and display a non-alarming message when checked === false.

Example

if (embedding.checked === false) {
  // Render a non-alarming message
  console.log("Memory search is configured. Embedding readiness was not probed — run `openclaw doctor --deep` or `openclaw memory status --deep` to verify.");
} else {
  // Render the original warning message
  console.log("Memory search provider 'ollama' is configured, but the gateway reports embeddings are not ready.");
}

Notes

  • The suggested fix requires modifying the doctor-memory-search-DA8TSpcF.js file.
  • The workaround of running openclaw memory status --deep can be used to verify the system's functionality.

Recommendation

Apply the workaround by running openclaw memory status --deep to verify the system's functionality, as the suggested fix requires code modifications.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - ✅(Solved) Fix doctor: misleading 'memory embedding readiness not checked' warning when embeddings are fully ready [2 pull requests, 1 participants]