Skip to content

fix(memory-core): suppress raw dreaming inline dumps on fallback (Fixes #70509)#70523

Closed
deepujain wants to merge 9 commits into
openclaw:mainfrom
deepujain:fix/70509-filter-dreaming-candidates
Closed

fix(memory-core): suppress raw dreaming inline dumps on fallback (Fixes #70509)#70523
deepujain wants to merge 9 commits into
openclaw:mainfrom
deepujain:fix/70509-filter-dreaming-candidates

Conversation

@deepujain

Copy link
Copy Markdown
Contributor

Summary

Problem

When dreaming narrative generation falls back because the subagent runtime is request-scoped, the inline memory/YYYY-MM-DD.md dreaming blocks still write the raw light/REM candidate dump. That leaves daily memory files full of structured dreaming metadata instead of normal human-readable notes.

Why it matters

  • Daily memory files become noisy and harder to read.
  • The raw candidate dump is machine-oriented metadata, not user-facing memory.
  • The repo already treats these dreaming snippets as contamination in other memory paths, so daily writes should not keep surfacing them during fallback runs.

What changed

  • Reused the existing dreaming contamination helper from short-term promotion.
  • Taught dreaming phases to detect when narrative generation used the request-scoped fallback.
  • Suppressed only the inline daily dreaming block in that fallback case when the block is clearly raw candidate/reflection metadata.
  • Kept separate dream diary writes and normal successful inline dreaming behavior unchanged.
  • Added regression tests for both light-sleep candidate dumps and REM reflection dumps.

What did NOT change

  • No change to successful narrative generation behavior.
  • No change to separate dreaming reports or DREAMS.md writes.
  • No change to promotion ranking or durable MEMORY.md application.

Change Type

  • Bug fix
  • Tests

Scope

  • extensions/memory-core/src/dreaming-phases.ts
  • extensions/memory-core/src/dreaming-markdown.ts
  • extensions/memory-core/src/dreaming-narrative.ts
  • extensions/memory-core/src/short-term-promotion.ts
  • extensions/memory-core/src/dreaming-phases.test.ts

Linked Issue

Closes #70509

User-visible / Behavior Changes

  • If dreaming runs in inline storage mode and the dream diary narrative has to fall back because the subagent runtime is request-scoped, OpenClaw now keeps the raw dreaming dump out of memory/YYYY-MM-DD.md.
  • The fallback narrative still lands in DREAMS.md, so the dreaming run still leaves a human-readable artifact.

Security Impact

Low risk, positive direction. This reduces the chance that raw dreaming metadata and evidence-style snippets get copied into user-facing daily memory files during fallback runs.

Repro + Verification

Environment

  • Local worktree off current upstream/main
  • Node / Vitest in this environment still have unrelated repo-level issues

Steps

  1. Configure memory-core dreaming with inline storage.
  2. Trigger light or REM dreaming with a subagent surface that throws RequestScopedSubagentRuntimeError.
  3. Inspect memory/YYYY-MM-DD.md and DREAMS.md.

Expected

  • Daily memory file keeps the original human notes and does not gain a raw ## Light Sleep / ## REM Sleep metadata dump.
  • DREAMS.md still receives the fallback narrative entry.

Actual before this patch

  • Daily memory file received the raw candidate / reflection block even when the narrative path had already fallen back.

Evidence

  • git diff --check
  • Added regression coverage in extensions/memory-core/src/dreaming-phases.test.ts
  • Focused TypeScript scan did not surface errors in the touched dreaming files

Human Verification

  • Not fully runnable here: the repo-level Vitest startup currently trips over the existing config discovery error for test/vitest/vitest.contracts-channel-surface.config.ts.
  • Broader tsc -p tsconfig.extensions.test.json --noEmit also fails in this environment on many unrelated missing extension dependencies, but none of the reported errors were in the touched dreaming files.

Compatibility / Migration

None.

Failure Recovery

Revert this PR. The change is isolated to dreaming inline-write suppression during fallback and does not alter stored data formats.

Risks and Mitigations

  • Risk: suppressing inline blocks too broadly could hide intended dreaming output.
  • Mitigation: the suppression only triggers when narrative generation explicitly used the request-scoped fallback and the inline block matches the raw dreaming metadata shape.

@greptile-apps

greptile-apps Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR suppresses raw dreaming metadata dumps from being written to daily memory/YYYY-MM-DD.md files when the narrative generation falls back to the request-scoped path. The core approach is sound — narrative generation is moved before the inline write so the fallback flag is available, and an empty inlineBodyLines triggers a new removeManagedMarkdownBlock helper instead of replaceManagedMarkdownBlock.

  • P1: The refactor dropped the withTrailingNewline wrapper from the normal (non-suppressed) write path in writeDailyDreamingPhaseBlock. The old code always called withTrailingNewline(updated); the new branch only applies it inside removeManagedMarkdownBlock. Every successful dreaming write will now omit the trailing newline from the daily file.

Confidence Score: 3/5

Not safe to merge as-is — the refactor introduces a regression on the normal write path that affects every successful dreaming write, not just fallback cases.

One P1 finding: withTrailingNewline is silently dropped from the replaceManagedMarkdownBlock branch during the inline write refactor. This will cause every non-fallback dreaming write to omit the trailing newline from daily memory files going forward. The fix is small and contained to dreaming-markdown.ts.

extensions/memory-core/src/dreaming-markdown.ts — lines 105–122, the writeDailyDreamingPhaseBlock inline write branch.

Prompt To Fix All With AI
This is a comment left during a code review.
Path: extensions/memory-core/src/dreaming-markdown.ts
Line: 105-122

Comment:
**Missing `withTrailingNewline` on the normal write path**

The old code always called `withTrailingNewline(updated)` before writing, regardless of which branch produced `updated`. The new code applies `withTrailingNewline` inside `removeManagedMarkdownBlock` (the suppression branch), but the `replaceManagedMarkdownBlock` branch no longer has it. Every successful non-fallback inline dreaming write will now drop the trailing newline from the daily memory file.

```suggestion
    const updated =
      inlineBody.length > 0
        ? replaceManagedMarkdownBlock({
            original,
            heading: DAILY_PHASE_HEADINGS[params.phase],
            startMarker: markers.start,
            endMarker: markers.end,
            body: inlineBody,
          })
        : removeManagedMarkdownBlock({
            original,
            heading: DAILY_PHASE_HEADINGS[params.phase],
            startMarker: markers.start,
            endMarker: markers.end,
          });
    const finalContent = inlineBody.length > 0 ? withTrailingNewline(updated) : updated;
    if (finalContent !== original) {
      await fs.writeFile(inlinePath, finalContent, "utf-8");
    }
```

How can I resolve this? If you propose a fix, please make it concise.

---

This is a comment left during a code review.
Path: extensions/memory-core/src/dreaming-narrative.ts
Line: 916-921

Comment:
**Outer catch shadows request-scoped fallback on append failure**

If the `appendNarrativeEntry` call inside `startNarrativeRunOrFallback`'s catch block throws (e.g. a transient write error), that exception propagates through the outer `try` and is caught here, returning `{ fallbackUsed: false }`. The subagent runtime WAS request-scoped, so the daily memory file will still contain the raw dump — but suppression never fires. The window is small, but it is the exact scenario this PR aims to guard against.

How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "fix(memory-core): suppress raw dreaming ..." | Re-trigger Greptile

Comment on lines +105 to +122
const updated =
inlineBody.length > 0
? replaceManagedMarkdownBlock({
original,
heading: DAILY_PHASE_HEADINGS[params.phase],
startMarker: markers.start,
endMarker: markers.end,
body: inlineBody,
})
: removeManagedMarkdownBlock({
original,
heading: DAILY_PHASE_HEADINGS[params.phase],
startMarker: markers.start,
endMarker: markers.end,
});
if (updated !== original) {
await fs.writeFile(inlinePath, updated, "utf-8");
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Missing withTrailingNewline on the normal write path

The old code always called withTrailingNewline(updated) before writing, regardless of which branch produced updated. The new code applies withTrailingNewline inside removeManagedMarkdownBlock (the suppression branch), but the replaceManagedMarkdownBlock branch no longer has it. Every successful non-fallback inline dreaming write will now drop the trailing newline from the daily memory file.

Suggested change
const updated =
inlineBody.length > 0
? replaceManagedMarkdownBlock({
original,
heading: DAILY_PHASE_HEADINGS[params.phase],
startMarker: markers.start,
endMarker: markers.end,
body: inlineBody,
})
: removeManagedMarkdownBlock({
original,
heading: DAILY_PHASE_HEADINGS[params.phase],
startMarker: markers.start,
endMarker: markers.end,
});
if (updated !== original) {
await fs.writeFile(inlinePath, updated, "utf-8");
}
const updated =
inlineBody.length > 0
? replaceManagedMarkdownBlock({
original,
heading: DAILY_PHASE_HEADINGS[params.phase],
startMarker: markers.start,
endMarker: markers.end,
body: inlineBody,
})
: removeManagedMarkdownBlock({
original,
heading: DAILY_PHASE_HEADINGS[params.phase],
startMarker: markers.start,
endMarker: markers.end,
});
const finalContent = inlineBody.length > 0 ? withTrailingNewline(updated) : updated;
if (finalContent !== original) {
await fs.writeFile(inlinePath, finalContent, "utf-8");
}
Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/memory-core/src/dreaming-markdown.ts
Line: 105-122

Comment:
**Missing `withTrailingNewline` on the normal write path**

The old code always called `withTrailingNewline(updated)` before writing, regardless of which branch produced `updated`. The new code applies `withTrailingNewline` inside `removeManagedMarkdownBlock` (the suppression branch), but the `replaceManagedMarkdownBlock` branch no longer has it. Every successful non-fallback inline dreaming write will now drop the trailing newline from the daily memory file.

```suggestion
    const updated =
      inlineBody.length > 0
        ? replaceManagedMarkdownBlock({
            original,
            heading: DAILY_PHASE_HEADINGS[params.phase],
            startMarker: markers.start,
            endMarker: markers.end,
            body: inlineBody,
          })
        : removeManagedMarkdownBlock({
            original,
            heading: DAILY_PHASE_HEADINGS[params.phase],
            startMarker: markers.start,
            endMarker: markers.end,
          });
    const finalContent = inlineBody.length > 0 ? withTrailingNewline(updated) : updated;
    if (finalContent !== original) {
      await fs.writeFile(inlinePath, finalContent, "utf-8");
    }
```

How can I resolve this? If you propose a fix, please make it concise.

Comment on lines 916 to +921
} catch (err) {
// Narrative generation is best-effort — never fail the parent phase.
params.logger.warn(
`memory-core: narrative generation failed for ${params.data.phase} phase: ${formatErrorMessage(err)}`,
);
return { fallbackUsed: false };

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Outer catch shadows request-scoped fallback on append failure

If the appendNarrativeEntry call inside startNarrativeRunOrFallback's catch block throws (e.g. a transient write error), that exception propagates through the outer try and is caught here, returning { fallbackUsed: false }. The subagent runtime WAS request-scoped, so the daily memory file will still contain the raw dump — but suppression never fires. The window is small, but it is the exact scenario this PR aims to guard against.

Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/memory-core/src/dreaming-narrative.ts
Line: 916-921

Comment:
**Outer catch shadows request-scoped fallback on append failure**

If the `appendNarrativeEntry` call inside `startNarrativeRunOrFallback`'s catch block throws (e.g. a transient write error), that exception propagates through the outer `try` and is caught here, returning `{ fallbackUsed: false }`. The subagent runtime WAS request-scoped, so the daily memory file will still contain the raw dump — but suppression never fires. The window is small, but it is the exact scenario this PR aims to guard against.

How can I resolve this? If you propose a fix, please make it concise.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0ef2a0e533

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +875 to +876
if (!runId) {
return;
return { fallbackUsed: true };

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Distinguish failed fallback from successful fallback

Treating !runId as fallbackUsed: true conflates a successful request-scoped fallback with a failed fallback write, because startNarrativeRunOrFallback returns null in both cases. runLightDreaming/runRemDreaming now use this flag to suppress inline dreaming blocks, so if appendNarrativeEntry fails during request-scoped fallback (for example, transient DREAMS.md write errors), the raw inline block is removed and no diary entry is written, losing the phase output entirely. Return whether the fallback append actually succeeded (or use a tri-state result) before suppressing inline content.

Useful? React with 👍 / 👎.

@prtags

prtags Bot commented Apr 23, 2026

Copy link
Copy Markdown

Related work from PRtags group safe-marten-ot47

Title: Open PR candidate: Dream Diary duplicate/raw fallback cleanup

Number Title
#65138 Fix dreaming replay, repair polluted artifacts, and gate wiki tabs
#70332 fix(memory): harden dreaming diary pipeline
#70403 fix(memory-core): keep Dream Diary to one entry per sweep
#70523* fix(memory-core): suppress raw dreaming inline dumps on fallback (Fixes #70509)

* This PR

@deepujain

Copy link
Copy Markdown
Contributor Author

Tightened the dreaming follow-up: inline daily-memory writes keep their trailing newline again, and request-scoped narrative fallback now reports whether the diary append actually succeeded before suppressing inline output. Added regression coverage for the fallback-write-failed path too. Local targeted testing is blocked in this environment by the repo non-isolated Vitest runner issue, so I am leaning on CI for the final pass.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3457e37e93

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

if (!existingPattern.test(params.original)) {
return params.original;
}
const stripped = params.original.replace(existingPattern, "").replace(/\n{3,}/g, "\n\n").trim();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve surrounding note formatting when deleting inline block

When fallback suppression removes a managed dreaming block, removeManagedMarkdownBlock rewrites the entire daily note with .replace(/\n{3,}/g, "\n\n").trim(), which collapses any 3+ blank-line runs and strips leading/trailing whitespace outside the managed section. This means an unrelated user-authored note (for example, intentional spacing in prose or code snippets) is silently reformatted whenever a fallback-triggered cleanup runs, so the patch can mutate content beyond the targeted dreaming block.

Useful? React with 👍 / 👎.

@deepujain

Copy link
Copy Markdown
Contributor Author

Picked up the daily-note formatting follow-up. Removing a managed dreaming block now only removes the targeted block instead of collapsing unrelated blank lines or trimming the rest of the note, and I added a regression test for that cleanup path. Local Vitest is still blocked in this environment by the repo's current non-isolated-runner issue on Node 22.12.0, so CI is doing the real verification.

@deepujain

Copy link
Copy Markdown
Contributor Author

Picked up the last daily-note cleanup edge case. Removing the managed dreaming block now trims only the seam it creates, so the surrounding note spacing stays intact without ballooning the gap. Local Vitest is still blocked here by the current non-isolated runner issue, but I verified the exact removal case and the normal trailing-newline path with a direct targeted runtime check.

Copy link
Copy Markdown
Contributor Author

Pushed an empty chore: retrigger ci commit because the remaining red check is the shared Telegram extension shard hitting ERR_WORKER_OUT_OF_MEMORY after its tests pass, and this token cannot rerun the failed workflow directly.

Copy link
Copy Markdown
Contributor Author

Pushed 8b3cfd6505 to close the remaining dreaming fallback edge case. Request-scoped narrative fallback now reports fallbackUsed: true even if writing the fallback narrative fails, so the raw inline dreaming dump is still suppressed. Focused memory-core dreaming tests pass locally.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8b3cfd6505

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +1557 to +1561
const narrativeResult = await generateAndAppendDreamNarrative({
subagent: params.subagent,
workspaceDir: params.workspaceDir,
data,
nowMs,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Persist phase outputs before optional narrative call

runLightDreaming now awaits generateAndAppendDreamNarrative before calling writeDailyDreamingPhaseBlock/recordDreamingPhaseSignals (same ordering change in runRemDreaming). Because generateAndAppendDreamNarrative waits on subagent.run without a hard timeout, a stalled subagent request can block this path indefinitely and prevent any light/REM phase artifacts from being written. Before this commit, those core phase writes happened first, so narrative stalls did not suppress primary dreaming output.

Useful? React with 👍 / 👎.

@deepujain
deepujain force-pushed the fix/70509-filter-dreaming-candidates branch from 8b3cfd6 to 40a2e96 Compare April 24, 2026 03:51
@deepujain

Copy link
Copy Markdown
Contributor Author

Rebased on current main to pick up the talk silence-timeout docs baseline that was failing the runtime-config shard. I verified the expected 700 ms/900 ms docs and help text are present on this head; GitHub checks are rerunning now.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 40a2e9652a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines 177 to +180
`memory-core: narrative fallback failed for ${params.data.phase} phase (${formatFallbackWriteFailure(fallbackErr)})`,
);
}
return null;
return { runId: null, fallbackUsed: true };

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Report fallback only after fallback entry is persisted

This path marks fallbackUsed: true even when the request-scoped fallback write fails, because the appendNarrativeEntry error is swallowed and the function still returns fallback as used. In that failure mode (for example, DREAMS.md is not writable), runLightDreaming/runRemDreaming will suppress inline dreaming output based on this flag, so the phase output is lost from both the daily note and DREAMS.md.

Useful? React with 👍 / 👎.

@deepujain

Copy link
Copy Markdown
Contributor Author

Synced the MiniMax FAQ troubleshooting model refs that were failing the agentic-agents docs-sync shard. Verified the expected MiniMax M2.7 refs are present in docs/help/faq.md and git diff --check is clean; GitHub checks are rerunning.

@openclaw-barnacle openclaw-barnacle Bot added the docs Improvements or additions to documentation label Apr 24, 2026
@deepujain
deepujain requested a review from a team as a code owner April 24, 2026 05:54
@deepujain

Copy link
Copy Markdown
Contributor Author

Added the stale internal docs link fixes that were failing check-docs after the previous push. Verified docs-link-audit now reports broken_links=0; GitHub checks are rerunning.

@deepujain
deepujain force-pushed the fix/70509-filter-dreaming-candidates branch from 109c95c to 2f0577f Compare April 25, 2026 18:26
@deepujain

Copy link
Copy Markdown
Contributor Author

Rebased this branch onto current main and tightened the dreaming fallback flow: phase output is persisted before narrative generation, request-scoped fallback only reports fallbackUsed after the fallback entry is written, and fallback suppression still removes raw inline dumps after a successful fallback. Local check: pnpm test -- extensions/memory-core/src/dreaming-markdown.test.ts extensions/memory-core/src/dreaming-narrative.test.ts extensions/memory-core/src/dreaming-phases.test.ts passes.

@deepujain

Copy link
Copy Markdown
Contributor Author

Swept this PR again. Existing CI is green, and the inline Greptile/Codex comments are addressed on the current head: newline preservation, targeted managed-block removal, fallback success reporting, and phase-write ordering are covered. Focused tests passed locally: pnpm test -- extensions/memory-core/src/dreaming-markdown.test.ts extensions/memory-core/src/dreaming-narrative.test.ts extensions/memory-core/src/dreaming-phases.test.ts. Added 🚀 reactions to the addressed comments.

@clawsweeper

clawsweeper Bot commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Thanks for the context here. I swept through the related work, and this is now duplicate or superseded.

Keep this PR open but not merge-ready: current main solved the default daily-memory pollution by shipping separate storage by default, yet explicit inline mode remains an opt-in path and this branch carries unique inline cleanup. The patch still misses the detached cron/system-event path and can double-record dream completion state when it removes the inline block, and it still needs real behavior proof plus a rebase.

Canonical path: Close this stale PR. The latest review rated it F, the branch still lacks merge-ready proof, and there has been no human follow-up after the durable review.

So I’m closing this here because the remaining work is already tracked in the canonical issue.

Review details

Best possible solution:

Close this stale PR. The latest review rated it F, the branch still lacks merge-ready proof, and there has been no human follow-up after the durable review.

Do we have a high-confidence way to reproduce the issue?

Yes, source inspection gives a high-confidence inline-mode path: current main writes the light/REM daily block before narrative fallback, and explicit inline storage remains supported. I did not run a live fallback scenario because this review was read-only.

Is this the best way to solve the issue?

No. The PR is a plausible mitigation, but the best fix must cover detached cron fallback and avoid using the completion writer as a removal helper that emits another completion event.

Security review:

Security review cleared: The diff does not add dependencies, workflow execution, secret handling, or a new code-execution path; the intended memory change reduces raw metadata exposure but still needs functional fixes.

AGENTS.md: found and applied where relevant.

What I checked:

  • stale F-rated PR: PR was opened 2026-04-23T07:19:02Z, is older than 30 days, and the latest review rated it F.
  • proof blocker: real behavior proof is missing and proof tier is F, so this branch is not merge-ready without contributor follow-up.
  • no human follow-up: live comments and timeline hydrated by apply contain no non-automation activity after the ClawSweeper review.

Likely related people:

  • mjamiv: Commit 8c392f0 changed the dreaming storage default to separate and added tests preserving explicit inline mode, which is the core boundary for deciding whether this PR is redundant. (role: introduced current default-storage behavior; confidence: high; commits: 8c392f0019b0; files: src/memory-host-sdk/dreaming.ts, src/memory-host-sdk/dreaming.test.ts, extensions/memory-core/src/dreaming-phases.test.ts)
  • jalehman: The default-storage commit records jalehman as reviewer/co-author and the touched tests document the inline/separate storage decision this PR builds on. (role: reviewer and adjacent owner; confidence: medium; commits: 8c392f0019b0; files: src/memory-host-sdk/dreaming.ts, src/memory-host-sdk/dreaming.test.ts, extensions/memory-core/src/dreaming-phases.test.ts)
  • Tak Hoffman: Commit 847739d made the major dreaming replay, repair, diary write race, and UI cleanup changes in the same memory-core dreaming area. (role: feature-history owner; confidence: medium; commits: 847739d82c60; files: extensions/memory-core/src/dreaming-narrative.ts, extensions/memory-core/src/dreaming-phases.ts, extensions/memory-core/src/dreaming-repair.ts)
  • Peter Steinberger: Commit 3f5e001 recently reworked memory-core dreams state/storage and touched the same dreaming phase and promotion files now involved in the PR conflict surface. (role: recent area contributor; confidence: medium; commits: 3f5e00184431; files: extensions/memory-core/src/dreaming-phases.ts, extensions/memory-core/src/short-term-promotion.ts, extensions/memory-core/src/dreaming-state.ts)

Codex review notes: model gpt-5.5, reasoning high; reviewed against fa614d0907e8.

@deepujain
deepujain force-pushed the fix/70509-filter-dreaming-candidates branch from 2f0577f to d2b530a Compare April 28, 2026 21:15
@deepujain

Copy link
Copy Markdown
Contributor Author

Rebased this branch onto current upstream/main and resolved the memory-core narrative conflict. The request-scoped fallback success path keeps its info-level log, and the focused memory-core tests pass locally: pnpm test -- extensions/memory-core/src/dreaming-markdown.test.ts extensions/memory-core/src/dreaming-narrative.test.ts extensions/memory-core/src/dreaming-phases.test.ts.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. labels May 20, 2026
@clawsweeper

clawsweeper Bot commented May 20, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper PR egg

🎁 Pass real behavior proof to wake the egg and unlock a hatchable treat.

Where did the egg go?
  • The egg game starts only after the PR passes the real-behavior proof check.
  • Before that, no creature or rarity is rolled. The treat waits for real proof.
  • This is still just collectible flavor: proof affects review readiness, not creature quality.

@openclaw-barnacle openclaw-barnacle Bot added the triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. label May 20, 2026
@openclaw-barnacle

Copy link
Copy Markdown

This pull request has been automatically marked as stale due to inactivity.
Please add updates or it will be closed.

@openclaw-barnacle openclaw-barnacle Bot added the stale Marked as stale due to inactivity label Jun 7, 2026
@clawsweeper

clawsweeper Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper applied the proposed close for this PR.

@clawsweeper clawsweeper Bot closed this Jun 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Improvements or additions to documentation extensions: memory-core Extension: memory-core merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. P2 Normal backlog priority with limited blast radius. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. size: M stale Marked as stale due to inactivity status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Dreaming raw candidates pollute daily memory files (memory/YYYY-MM-DD.md)

1 participant