openclaw - 💡(How to fix) Fix Dreaming promotion annotation shows recallCount instead of signalCount; minRecallCount parameter name is misleading [2 pull requests]

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…

Two related issues with the dreaming short-term promotion system:

Root Cause

Two related issues with the dreaming short-term promotion system:

Fix Action

Fixed

Code Example

[score=0.832 recalls=0 avg=0.620 source=memory/2026-05-24-0003.md:9-10]

---

const signalCount = totalSignalCountForEntry(entry);
if (signalCount < minRecallCount) continue;

---

function totalSignalCountForEntry(entry) {
  return Math.max(0, Math.floor(entry.recallCount ?? 0))
       + Math.max(0, Math.floor(entry.dailyCount ?? 0))
       + Math.max(0, Math.floor(entry.groundedCount ?? 0));
}

---

[score=0.832 signals=6 recalls=0 daily=6 avg=0.620 source=...]

---

[score=0.832 signalCount=6 recalls=0 avg=0.620 source=...]
RAW_BUFFERClick to expand / collapse

Description

Two related issues with the dreaming short-term promotion system:

1. Promotion annotation shows recallCount instead of signalCount

When entries are promoted to MEMORY.md, the annotation format is:

[score=0.832 recalls=0 avg=0.620 source=memory/2026-05-24-0003.md:9-10]

The recalls field shows candidate.recallCount (how many times the entry was surfaced by memory_search), but the actual promotion gate checks signalCount = recallCount + dailyCount + groundedCount.

This means entries can show recalls=0 even though they passed the minRecallCount gate via dailyCount signals from daily memory file ingestion. This is confusing when auditing promotion decisions.

Source code reference (short-term-promotion-61_nO3VW.js):

  • Line 1269: recallCount, — stored in candidate object
  • Line 1454: annotation writes recalls=${candidate.recallCount} instead of recalls=${candidate.signalCount}

2. minRecallCount parameter name is misleading

The config parameter plugins.entries.memory-core.config.dreaming.phases.deep.minRecallCount is named as if it gates on recallCount, but the actual gate (line 1244) checks:

const signalCount = totalSignalCountForEntry(entry);
if (signalCount < minRecallCount) continue;

Where totalSignalCountForEntry (line 666-667) is:

function totalSignalCountForEntry(entry) {
  return Math.max(0, Math.floor(entry.recallCount ?? 0))
       + Math.max(0, Math.floor(entry.dailyCount ?? 0))
       + Math.max(0, Math.floor(entry.groundedCount ?? 0));
}

So minRecallCount actually gates on recallCount + dailyCount + groundedCount, not just recallCount.

Suggested fix

  1. Change the annotation to show signalCount instead of recallCount:

    [score=0.832 signals=6 recalls=0 daily=6 avg=0.620 source=...]

    Or at minimum show signalCount:

    [score=0.832 signalCount=6 recalls=0 avg=0.620 source=...]
  2. Rename minRecallCount to minSignalCount (or document that it checks total signal count).

Environment

  • OpenClaw version: 2026.5.26
  • OS: macOS 26.5 (arm64)

Additional context

Verified with actual data: 79 promoted entries in our system, 58 of which have recallCount=0 but passed the gate via dailyCount=5-7. All 79 entries have signalCount >= 2 (our configured minRecallCount).

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