openclaw - ✅(Solved) Fix Bug: memory-core dreaming enabled but managed dreaming cron is not created [1 pull requests, 1 comments, 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#63465Fetched 2026-04-09 07:53:26
View on GitHub
Comments
1
Participants
1
Timeline
1
Reactions
0
Author
Participants
Timeline (top)
commented ×1

Enabling plugins.entries.memory-core.config.dreaming.enabled=true does not reliably create the managed dreaming cron job. In my environment, the setting is persisted, gateway restart completes successfully, but no Memory Dreaming Promotion cron job appears and dreaming never produces DREAMS.md / .dreams artifacts.

Root Cause

Enabling plugins.entries.memory-core.config.dreaming.enabled=true does not reliably create the managed dreaming cron job. In my environment, the setting is persisted, gateway restart completes successfully, but no Memory Dreaming Promotion cron job appears and dreaming never produces DREAMS.md / .dreams artifacts.

Fix Action

Fix / Workaround

Observed evidence

  • Config patch logs for plugins.entries.memory-core.config.dreaming.enabled are present.
  • Gateway restart completes successfully.
  • Managed dreaming cron job is still absent after restart.
  • Docs say dreaming should auto-manage one recurring cron job.
  • Code appears to reconcile managed dreaming cron on gateway:startup, but in practice that reconciliation does not result in the managed job being present.

PR fix notes

PR #63962: fix(gateway): include selected memory slot in startup plugin scope

Description (problem / solution / changelog)

Summary

  • Problem: gateway startup plugin selection did not explicitly include the selected memory-slot plugin when it was not also a configured channel plugin or startup sidecar.
  • Why it matters: memory-slot startup surfaces can be skipped, which can prevent memory-driven startup reconciliation behaviors from running reliably.
  • What changed: resolveGatewayStartupPluginIds now includes the selected memory-slot plugin when activation state permits it.
  • What did NOT change: no cron execution internals, no plugin runtime API changes, no config schema changes.

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor required for the fix
  • Docs
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens
  • Memory / storage
  • Integrations
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

  • Closes #
  • Related #63936
  • This PR fixes a bug or regression

Root Cause (if applicable)

  • Root cause: startup plugin ID resolution only included configured channel plugins plus startup sidecars; the selected memory-slot plugin can fall outside both sets.
  • Missing detection / guardrail: no startup invariant test that asserted selected memory slot plugin inclusion.
  • Contributing context (if known): related reports (#62920, #63465) show the same symptom family; #63097 addresses overlapping startup reconciliation behavior.

Regression Test Plan (if applicable)

  • Coverage level that should have caught this:
    • Unit test
    • Seam / integration test
    • End-to-end test
    • Existing coverage already sufficient
  • Target test or file: src/plugins/channel-plugin-ids.test.ts
  • Scenario the test should lock in:
    • default startup includes memory-core when selected in memory slot
    • custom memory slot selection includes only the selected memory plugin in startup IDs
    • restrictive allowlist expectations still include the selected memory-slot plugin
  • Why this is the smallest reliable guardrail: the bug is in startup plugin-ID classification, fully exercised by resolver unit tests.
  • Existing test that already covers this (if any): existing startup resolver table tests now extended.
  • If no new test is added, why not: N/A

User-visible / Behavior Changes

  • Gateway startup now consistently includes the selected memory-slot plugin in startup plugin scope.

Diagram (if applicable)

Before:
[gateway startup] -> [resolve startup plugin IDs]
                -> [memory-slot plugin may be excluded]
                -> [memory startup reconciliation may not run]

After:
[gateway startup] -> [resolve startup plugin IDs]
                -> [selected memory-slot plugin included]
                -> [memory startup reconciliation path available]

Security Impact (required)

  • New permissions/capabilities? No
  • Secrets/tokens handling changed? No
  • New/changed network calls? No
  • Command/tool execution surface changed? No
  • Data access scope changed? No
  • If any Yes, explain risk + mitigation: N/A

Repro + Verification

Environment

  • OS: Windows (dev), issue reports from macOS/Linux environments
  • Runtime/container: Node + pnpm workspace
  • Model/provider: N/A
  • Integration/channel (if any): N/A
  • Relevant config (redacted): default and custom plugins.slots.memory

Steps

  1. Select memory slot plugin in config (memory-core default or custom memory plugin).
  2. Resolve gateway startup plugin IDs.
  3. Verify selected memory-slot plugin is present in startup scope.

Expected

  • selected memory-slot plugin is included in startup plugin IDs.

Actual

  • verified by focused tests in src/plugins/channel-plugin-ids.test.ts.

Evidence

  • Failing test/log before + passing after
  • Trace/log snippets
  • Screenshot/recording
  • Perf numbers (if relevant)

Human Verification (required)

  • Verified scenarios: ran pnpm test -- src/plugins/channel-plugin-ids.test.ts and confirmed all resolver scenarios pass with the new memory-slot startup invariant.
  • Edge cases checked: restrictive allowlist startup case, custom memory slot selection, default startup path.
  • What you did not verify: full end-to-end gateway restart reproduction on a live memory-core installation.

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only the conversations that still need reviewer or maintainer judgment.

Compatibility / Migration

  • Backward compatible? Yes
  • Config/env changes? No
  • Migration needed? No
  • If yes, exact upgrade steps: N/A

Risks and Mitigations

  • Risk: could load one additional plugin at startup in setups where memory slot is selected but previously omitted.
    • Mitigation: startup inclusion is constrained to selected memory slot plugin and existing activation-state checks.
  • Risk: overlap with #63097 implementation details.
    • Mitigation: this PR remains narrowly scoped to startup plugin ID classification and has focused regression tests.

Changed files

  • src/commands/doctor-bootstrap-size.test.ts (modified, +1/-0)
  • src/plugins/channel-plugin-ids.test.ts (modified, +68/-6)
  • src/plugins/channel-plugin-ids.ts (modified, +18/-0)
RAW_BUFFERClick to expand / collapse

Summary

Enabling plugins.entries.memory-core.config.dreaming.enabled=true does not reliably create the managed dreaming cron job. In my environment, the setting is persisted, gateway restart completes successfully, but no Memory Dreaming Promotion cron job appears and dreaming never produces DREAMS.md / .dreams artifacts.

Expected behavior

When dreaming is enabled, memory-core should auto-manage the recurring cron job described in the docs:

  • job name: Memory Dreaming Promotion
  • payload text: __openclaw_memory_core_short_term_promotion_dream__
  • doctor.memory.status should indicate managed cron present
  • dreaming artifacts should begin to appear over time

Actual behavior

After enabling dreaming from WebUI and also confirming the config persisted as true:

  • no Memory Dreaming Promotion job exists in cron list
  • no DREAMS.md
  • no memory/.dreams/ state
  • no memory-core: created managed dreaming cron job. log after gateway restart
  • no explicit startup reconciliation failure is logged either

This leaves dreaming in a confusing state where config says enabled, but runtime behaves as if the managed controller was never registered.

Environment

  • OpenClaw runtime: Gateway on macOS
  • OS: Darwin 25.4.0 (arm64)
  • Channel setup includes Discord / Feishu
  • Workspace: ~/.openclaw/workspace
  • Memory plugin in use: memory-core
  • Dreaming config includes timezone Asia/Shanghai

Reproduction steps

  1. Enable dreaming in WebUI (Dreaming tab / memory-core config).
  2. Confirm openclaw.json contains plugins.entries.memory-core.config.dreaming.enabled = true.
  3. Restart gateway.
  4. Run cron list / inspect cron jobs.
  5. Run openclaw doctor --non-interactive and inspect logs.

Observed evidence

  • Config patch logs for plugins.entries.memory-core.config.dreaming.enabled are present.
  • Gateway restart completes successfully.
  • Managed dreaming cron job is still absent after restart.
  • Docs say dreaming should auto-manage one recurring cron job.
  • Code appears to reconcile managed dreaming cron on gateway:startup, but in practice that reconciliation does not result in the managed job being present.

Notes

I previously saw logs on earlier test attempts where a managed dreaming cron job was created and later removed, so the code path seems to exist. The current issue is that after the latest enablement + restart, the managed cron is not recreated even though config remains enabled.

If helpful, I can provide sanitized gateway log snippets with timestamps for the enable / restart sequence.

extent analysis

TL;DR

The managed dreaming cron job is not being created after enabling dreaming, despite successful gateway restarts and persisted configuration.

Guidance

  • Verify that the gateway:startup reconciliation code is executing without errors by checking the logs for any startup-related issues.
  • Inspect the openclaw.json file to ensure that the plugins.entries.memory-core.config.dreaming.enabled setting is correctly set to true and that there are no other conflicting configurations.
  • Run openclaw doctor --non-interactive and inspect the output to see if there are any issues with the managed cron job registration.
  • Check the sanitized gateway log snippets for any clues about why the managed cron job is not being created, such as errors or warnings related to the memory-core plugin or the dreaming feature.

Example

No code snippet is provided as it is not clearly supported by the issue.

Notes

The issue may be related to a specific environment or configuration, and providing sanitized gateway log snippets could help identify the root cause. The fact that the managed dreaming cron job was previously created and later removed suggests that the code path exists, but there may be an issue with the reconciliation process.

Recommendation

Apply workaround: Temporarily disable and re-enable the dreaming feature to see if it triggers the creation of the managed cron job, as this has worked in the past according to the user's previous test attempts.

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…

FAQ

Expected behavior

When dreaming is enabled, memory-core should auto-manage the recurring cron job described in the docs:

  • job name: Memory Dreaming Promotion
  • payload text: __openclaw_memory_core_short_term_promotion_dream__
  • doctor.memory.status should indicate managed cron present
  • dreaming artifacts should begin to appear over time

Still need to ship something?

×6

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

Back to top recommendations

TRENDING