Skip to content

fix(memory): keep memory_search in transient qmd mode#92639

Merged
clawsweeper[bot] merged 4 commits into
openclaw:mainfrom
TurboTheTurtle:codex/92464-local-json-exit
Jun 13, 2026
Merged

fix(memory): keep memory_search in transient qmd mode#92639
clawsweeper[bot] merged 4 commits into
openclaw:mainfrom
TurboTheTurtle:codex/92464-local-json-exit

Conversation

@TurboTheTurtle

@TurboTheTurtle TurboTheTurtle commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Route memory_search through the existing transient QMD manager mode (purpose: "cli") instead of the default/full manager.
  • Keep QMD memory search from starting full-manager lifecycle resources such as watchers, boot updates, and embed/update timers during one-shot agent turns.
  • Add focused regression coverage proving memory_search requests the transient manager mode; existing QMD manager coverage proves that mode does not start watchers or background updates.

Fixes #92464

Real behavior proof

Behavior addressed: openclaw agent --local --json can complete the assistant turn and print JSON, but a memory-heavy memory_search path can leave the CLI process waiting on QMD full-manager lifecycle cleanup. The fix makes the memory search tool use QMD's existing one-shot CLI manager mode, which performs searches without opening the full background lifecycle.

Real environment tested: Local OpenClaw checkout at PR head 42d7eb4a52, macOS/Darwin, Node from the repository toolchain, pnpm 11.2.2. The packaged OpenClaw extension build/profile was run from this checkout, and the memory-core/QMD runtime shard was executed against the real extension-memory Vitest project. The local host did not have the external qmd binary installed, so the original 10,000-entry Docker/OpenAI-provider repro was not rerun.

Exact steps or command run after this patch:

corepack [email protected] --dir . test extensions/memory-core/src/tools.citations.test.ts extensions/memory-core/src/memory/qmd-manager.test.ts
corepack [email protected] --dir . test extensions/memory-core/src/tools.citations.test.ts
node scripts/run-oxlint.mjs extensions/memory-core/src/tools.ts extensions/memory-core/src/tools.citations.test.ts extensions/memory-core/src/memory-tool-manager-mock.ts
corepack [email protected] --dir . exec oxfmt --check extensions/memory-core/src/tools.ts extensions/memory-core/src/tools.citations.test.ts extensions/memory-core/src/memory-tool-manager-mock.ts
git diff --check
corepack [email protected] --dir . test extensions/memory-core
corepack [email protected] --dir . tsgo:test:extensions
corepack [email protected] --dir . test:extensions:memory

Evidence after fix:

corepack [email protected] --dir . test extensions/memory-core/src/tools.citations.test.ts extensions/memory-core/src/memory/qmd-manager.test.ts
[test] starting test/vitest/vitest.extension-memory.config.ts
Test Files  2 passed (2)
Tests  145 passed (145)
[test] passed 1 Vitest shard in 7.14s

corepack [email protected] --dir . test extensions/memory-core
Test Files  64 passed (64)
Tests  895 passed (895)
[test] passed 1 Vitest shard in 35.89s

corepack [email protected] --dir . test:extensions:memory
[extension-memory] memory-core: ok 334.3 MB
[extension-memory] report: /var/folders/sl/5dkd3zq12dv65j6jx57zq1hc0000gn/T/openclaw-extension-memory.json
{
  "baselineMb": 45.328125,
  "combinedMb": 652.21875,
  "counts": { "totalEntries": 120, "ok": 120, "fail": 0, "timeout": 0 }
}

Observed result after fix: memory_search now asks the memory runtime for purpose: "cli"; the QMD manager's existing one-shot CLI mode initializes without file watchers, boot updates, or embed/update timers. The changed memory-core extension builds and loads successfully, and all 120 extension-memory profile entries completed with zero failures and zero timeouts.

What was not tested: I did not run the original Docker image with 10,000 imported entries and external OpenAI credentials. The local proof covers the source-level lifecycle bug that made memory_search select the full QMD manager instead of the one-shot manager.

@openclaw-barnacle openclaw-barnacle Bot added extensions: memory-core Extension: memory-core size: XS triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 13, 2026
@clawsweeper

clawsweeper Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed June 13, 2026, 8:39 AM ET / 12:39 UTC.

Summary
The branch threads a oneShotCliRun flag from explicit openclaw agent --local runs through agent and plugin tool context so memory-core uses and closes transient QMD CLI managers only for one-shot local CLI memory_search calls while preserving shared/default QMD behavior and boot freshness.

PR surface: Source +101, Tests +152. Total +253 across 22 files.

Reproducibility: yes. source-level: current main uses the default QMD manager for memory_search, while the linked report provides a concrete Docker local-JSON process-linger repro shape. I did not rerun the full 10k Docker/OpenAI workload in this read-only review.

Review metrics: 1 noteworthy metric.

  • SDK-visible context fields: 1 added. The new oneShotCliRun field is visible to plugin tool factories, so maintainers should consciously accept the API surface before merge.

Stored data model
Persistent data-model change detected: unknown-data-model-change: extensions/memory-core/src/tools.test.ts, unknown-data-model-change: extensions/memory-core/src/tools.ts, vector/embedding metadata: extensions/memory-core/index.ts, vector/embedding metadata: extensions/memory-core/src/memory-tool-manager-mock.ts, vector/embedding metadata: extensions/memory-core/src/memory/qmd-manager.test.ts, vector/embedding metadata: extensions/memory-core/src/memory/qmd-manager.ts, and 5 more. Confirm migration or upgrade compatibility proof before merge.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P2] Get maintainer acceptance or redirection for the oneShotCliRun plugin tool context before merge.

Risk before merge

  • [P1] The PR exposes a new SDK-visible plugin tool context field, so maintainers should explicitly accept that lifecycle signal as the right plugin API shape before merge.
  • [P1] The exact 10,000-entry Docker/OpenAI-provider workload from the linked issue was not rerun; confidence comes from source inspection, focused regression tests, and real qmd CLI proof on a synthetic corpus.

Maintainer options:

  1. Accept the lifecycle context (recommended)
    A maintainer can explicitly approve oneShotCliRun as the additive plugin tool context signal for one-shot local CLI cleanup and land with the existing proof.
  2. Keep the signal internal
    If maintainers do not want plugins to see this lifecycle bit, rework the patch so only a private core or memory-runtime seam receives the one-shot cleanup hint.
  3. Pause for exact scale proof
    If exact workload parity is required, keep the PR open until the original 10k Docker/OpenAI local JSON workload is rerun against the branch.

Next step before merge

  • [P2] The remaining action is maintainer review of the SDK-visible lifecycle context, not a narrow automated code repair.

Security
Cleared: The diff changes TypeScript runtime plumbing and tests only; I found no new dependency, workflow, secret handling, package-resolution, downloaded-artifact, or supply-chain surface.

Review details

Best possible solution:

Merge after maintainer acceptance of the SDK-visible lifecycle context, keeping the PR's narrow CLI-only propagation, default manager preservation, and boot-sync regression coverage intact.

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

Yes, source-level: current main uses the default QMD manager for memory_search, while the linked report provides a concrete Docker local-JSON process-linger repro shape. I did not rerun the full 10k Docker/OpenAI workload in this read-only review.

Is this the best way to solve the issue?

Yes with maintainer API acceptance: threading a trusted one-shot runtime bit to the owning memory plugin is narrower than core special-casing memory-core, and the latest patch preserves default/shared manager behavior plus configured QMD boot freshness.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 4c23d1d5978e.

Label changes

Label changes:

  • add status: 🚀 automerge armed: This PR is in ClawSweeper's automerge lane. Sufficient (terminal): The PR includes after-fix real qmd CLI terminal proof showing one-shot mode, foreground boot sync, successful JSON results, prompt process exit, and no survivor qmd/open-file resources.
  • remove status: 👀 ready for maintainer look: Current PR status label is status: 🚀 automerge armed.

Label justifications:

  • P1: The PR targets a user-facing openclaw agent --local --json process-linger workflow that can block automation after final JSON output.
  • merge-risk: 🚨 compatibility: The diff adds an SDK-visible plugin tool context field that may become a plugin contract if merged.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 🚀 automerge armed: This PR is in ClawSweeper's automerge lane. Sufficient (terminal): The PR includes after-fix real qmd CLI terminal proof showing one-shot mode, foreground boot sync, successful JSON results, prompt process exit, and no survivor qmd/open-file resources.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR includes after-fix real qmd CLI terminal proof showing one-shot mode, foreground boot sync, successful JSON results, prompt process exit, and no survivor qmd/open-file resources.
Evidence reviewed

PR surface:

Source +101, Tests +152. Total +253 across 22 files.

View PR surface stats
Area Files Added Removed Net
Source 18 283 182 +101
Tests 4 152 0 +152
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 22 435 182 +253

Acceptance criteria:

  • [P1] corepack [email protected] --dir . test extensions/memory-core/src/tools.citations.test.ts extensions/memory-core/src/tools.test.ts extensions/memory-core/src/memory/qmd-manager.test.ts src/commands/agent-via-gateway.test.ts.
  • [P1] corepack [email protected] --dir . test extensions/memory-core src/commands/agent-via-gateway.test.ts.
  • [P1] corepack [email protected] --dir . tsgo:test:extensions.
  • [P1] node scripts/run-oxlint.mjs extensions/memory-core/src/memory/qmd-manager.ts extensions/memory-core/src/memory/qmd-manager.test.ts extensions/memory-core/src/tools.ts extensions/memory-core/src/tools.citations.test.ts extensions/memory-core/src/tools.test.ts src/commands/agent-via-gateway.ts src/commands/agent-via-gateway.test.ts.
  • [P1] corepack [email protected] --dir . exec oxfmt --check extensions/memory-core/src/memory/qmd-manager.ts extensions/memory-core/src/memory/qmd-manager.test.ts extensions/memory-core/src/tools.ts extensions/memory-core/src/tools.citations.test.ts extensions/memory-core/src/tools.test.ts src/commands/agent-via-gateway.ts src/commands/agent-via-gateway.test.ts && git diff --check.

What I checked:

  • Repository policy read: Root AGENTS.md and the relevant scoped guides were read fully; plugin SDK compatibility guidance affected the review because the PR adds an SDK-visible tool context field. (AGENTS.md:1, 4c23d1d5978e)
  • Current main behavior: Current main resolves memory_search through getMemoryManagerContext({ cfg, agentId }), which delegates to the default/full QMD manager path rather than transient CLI mode. (extensions/memory-core/src/tools.ts:404, 4c23d1d5978e)
  • PR one-shot split: At PR head, createMemorySearchTool derives memoryManagerPurpose from options.oneShotCliRun, passes it into getMemoryManagerContextWithPurpose, and closes only tracked transient managers in a finally block. (extensions/memory-core/src/tools.ts:424, 64fe82c24c0b)
  • QMD transient contract: The existing search manager treats purpose: "cli" as transient and avoids reusing the cached full manager, which matches the PR's chosen lifecycle hook. (extensions/memory-core/src/memory/search-manager.ts:163, 4c23d1d5978e)
  • CLI entry boundary: The PR sets oneShotCliRun from dispatchOpts.local === true, and PR-head tests assert explicit local runs pass true while embedded gateway fallback passes false. (src/commands/agent-via-gateway.ts:845, 64fe82c24c0b)
  • SDK-visible surface: The PR adds oneShotCliRun?: boolean to OpenClawPluginToolContext, making the lifecycle bit visible to plugin tool factories. (src/plugins/tool-types.ts:50, 64fe82c24c0b)

Likely related people:

  • TurboTheTurtle: Current-main history includes prior QMD JSON one-shot work on the same QMD manager surface, so this is relevant beyond authorship of this PR. (role: recent area contributor; confidence: high; commits: 9408380ae729; files: extensions/memory-core/src/memory/qmd-manager.ts)
  • vincentkoc: Recent main history changed QMD watcher/root lifecycle behavior in the central QMD manager file touched by this PR. (role: recent QMD lifecycle contributor; confidence: high; commits: dbcae5b78d9f; files: extensions/memory-core/src/memory/qmd-manager.ts)
  • dreamhunter2333: Recent main history fixed orphaned embedding work after memory_search timeouts, adjacent to this PR's one-shot cleanup boundary. (role: recent memory_search lifecycle contributor; confidence: medium; commits: 8d72cb9401e5; files: extensions/memory-core/src/tools.ts, extensions/memory-core/src/memory/search-manager.ts)
  • mushuiyu886: Recent main history changed QMD startup-error handling in the same manager acquisition path this PR relies on. (role: recent adjacent QMD acquisition contributor; confidence: medium; commits: 3a1a5c0dac68; files: extensions/memory-core/src/memory/search-manager.ts)
  • steipete: History shows recent plugin tool context additions and prior memory CLI lifecycle work, both central to the API-surface decision in this PR. (role: plugin context and memory runtime contributor; confidence: medium; commits: 525767c72611, 9dcd53c0b676; files: src/plugins/tool-types.ts, src/agents/openclaw-tools.plugin-context.ts, extensions/memory-core/src/memory/search-manager.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@openclaw-barnacle openclaw-barnacle Bot added proof: supplied External PR includes structured after-fix real behavior proof. and removed triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 13, 2026
@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. P1 High-priority user-facing bug, regression, or broken workflow. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. labels Jun 13, 2026
@TurboTheTurtle

Copy link
Copy Markdown
Contributor Author

Behavior addressed: memory_search now keeps qmd-backed searches in one-shot CLI manager mode and closes every transient manager it opens, including the closed-handle retry path. The retry path now reacquires with purpose: "cli" instead of reopening the default cached manager.

Real environment tested: local macOS checkout at head 8a55faf9cf9e2480fd0d0521f7416213cea70cd6, Node v24.15.0, real QMD binary /Users/andy/.bun/bin/qmd (qmd 1.1.0), synthetic isolated workspace/state under /Users/andy/.openclaw/tmp/openclaw-pr92639-qmd-real-FFI2wI. No production OpenClaw state, gateway, or live memory corpus was used.

Exact steps or command run after this patch:

corepack [email protected] --dir . exec oxfmt \
  extensions/memory-core/src/tools.ts \
  extensions/memory-core/src/tools.citations.test.ts \
  extensions/memory-core/src/tools.test.ts \
  extensions/memory-core/src/memory-tool-manager-mock.ts

corepack [email protected] --dir . exec oxfmt --check \
  extensions/memory-core/src/tools.ts \
  extensions/memory-core/src/tools.citations.test.ts \
  extensions/memory-core/src/tools.test.ts \
  extensions/memory-core/src/memory-tool-manager-mock.ts

node scripts/run-oxlint.mjs \
  extensions/memory-core/src/tools.ts \
  extensions/memory-core/src/tools.citations.test.ts \
  extensions/memory-core/src/tools.test.ts \
  extensions/memory-core/src/memory-tool-manager-mock.ts

git diff --check

corepack [email protected] --dir . test \
  extensions/memory-core/src/tools.citations.test.ts \
  extensions/memory-core/src/tools.test.ts \
  extensions/memory-core/src/memory/qmd-manager.test.ts

corepack [email protected] --dir . test extensions/memory-core
corepack [email protected] --dir . tsgo:test:extensions

/usr/bin/time -p perl -e 'alarm shift; exec @ARGV' 45 \
  node --import tsx /private/tmp/openclaw-pr92639-qmd-proof.ts

ROOT=/Users/andy/.openclaw/tmp/openclaw-pr92639-qmd-real-FFI2wI
pgrep -fl qmd || true
lsof +D "$ROOT" 2>/dev/null || true
find "$ROOT/state/agents/main/qmd" -maxdepth 5 -type f -print | sort

Evidence after fix:

Finished in 25ms on 4 files using 10 threads.
All matched files use the correct format.
node scripts/run-oxlint.mjs ... passed
git diff --check passed

Test Files  3 passed (3)
Tests       161 passed (161)

Test Files  64 passed (64)
Tests       895 passed (895)

tsgo:test:extensions exited 0

Real qmd-backed memory_search proof:

[memory] qmd manager initialized for agent "main" mode=cli collections=2 durationMs=731
{
  "root": "/Users/andy/.openclaw/tmp/openclaw-pr92639-qmd-real-FFI2wI",
  "workspaceDir": "/Users/andy/.openclaw/tmp/openclaw-pr92639-qmd-real-FFI2wI/workspace",
  "stateDir": "/Users/andy/.openclaw/tmp/openclaw-pr92639-qmd-real-FFI2wI/state",
  "qmdCommand": "/Users/andy/.bun/bin/qmd",
  "elapsedMs": 2474,
  "backend": "qmd",
  "effectiveMode": "search",
  "hits": 2,
  "foundMarker": true,
  "resultPaths": [
    "memory.md",
    "memory/2026-06-13.md"
  ]
}
real 4.48
user 3.87
sys 0.62

Observed result after fix: the real qmd-backed memory_search tool emitted final JSON and the Node process exited well inside the 45s guard. Follow-up process checks showed no qmd processes and no open file holders under the proof root; the isolated qmd index files were present under state/agents/main/qmd/xdg-cache/qmd/. Unit coverage also now asserts the closed-manager retry reacquires with purpose: "cli" and the transient manager is closed.

What was not tested: I did not run a full provider-backed openclaw agent --local --json turn against a 10k-entry corpus. This proof exercises the shared memory_search tool path called by that agent mode with the real qmd CLI backend, synthetic qmd collections, forced initial sync, JSON output, process exit, and no survivor qmd/open-file resources.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 13, 2026
@openclaw-barnacle openclaw-barnacle Bot added commands Command implementations agents Agent runtime and tooling size: L and removed size: M labels Jun 13, 2026
@TurboTheTurtle

Copy link
Copy Markdown
Contributor Author

Addressed the remaining author-action finding from ClawSweeper.

Patch update in 714b9244:

  • Normal/shared memory_search calls now keep the default QMD manager lifecycle (purpose: undefined) and do not close the manager after each tool call.
  • Only explicit one-shot local CLI runs carry oneShotCliRun: true; that trusted runtime bit is threaded through plugin tool context.
  • Memory-core uses transient purpose: "cli" and best-effort close only when oneShotCliRun is set.
  • Gateway timeout embedded fallback still gets the existing bundle/live-session cleanup, but does not mark memory_search as one-shot CLI mode.

Regression coverage added:

  • Shared/default memory_search uses default manager and performs zero manager closes.
  • Explicit one-shot local CLI memory_search uses purpose: "cli" and closes the transient manager.
  • Closed sqlite handle retry preserves the same lifecycle mode for both default and one-shot CLI paths.
  • agentCliCommand --local passes oneShotCliRun: true; embedded fallback passes false.

Verification run locally on this branch:

  • corepack [email protected] --dir . test extensions/memory-core/src/tools.citations.test.ts extensions/memory-core/src/tools.test.ts src/commands/agent-via-gateway.test.ts -> 2 shards passed, 92 tests passed
  • node scripts/run-oxlint.mjs <19 touched files> -> passed
  • corepack [email protected] --dir . exec oxfmt --check <19 touched files> && git diff --check -> passed
  • corepack [email protected] --dir . tsgo:test:extensions -> passed
  • corepack [email protected] --dir . test extensions/memory-core src/commands/agent-via-gateway.test.ts -> 2 shards passed; memory-core 64 files / 897 tests passed, command shard 55 tests passed
  • corepack [email protected] --dir . tsgo:test -> passed

Real behavior proof rerun against the real qmd CLI with the explicit one-shot flag:

{
  "qmdCommand": "/Users/andy/.bun/bin/qmd",
  "elapsedMs": 2414,
  "backend": "qmd",
  "effectiveMode": "search",
  "hits": 2,
  "foundMarker": true,
  "resultPaths": [
    "memory.md",
    "memory/2026-06-13.md"
  ]
}

The subprocess completed in 4.816s total after initializing qmd in mode=cli, so the transient CLI cleanup path still exits cleanly while default plugin calls preserve the normal manager lifecycle.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. labels Jun 13, 2026
@clawsweeper clawsweeper Bot added status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Jun 13, 2026
@Takhoffman

Copy link
Copy Markdown
Contributor

@clawsweeper automerge

@clawsweeper

clawsweeper Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

🦞✅
Maintainer-approved ClawSweeper automerge is complete.

Approver: Takhoffman
Head: 64fe82c24c0b
Merge status: merged by ClawSweeper automerge
Merged at: 2026-06-13T14:14:55Z
Merge commit: ddacb7ba39d4

What merged:

  • Merged fix(memory): keep memory_search in transient qmd mode after ClawSweeper review.

Automerge notes:

  • PR branch already contained follow-up commit before automerge: fix(memory): close transient search managers
  • PR branch already contained follow-up commit before automerge: fix(memory): preserve default search managers
  • PR branch already contained follow-up commit before automerge: fix(memory): preserve qmd cli boot freshness

The automerge loop is complete.

Automerge progress:

  • 2026-06-13 12:33:13 UTC review queued 64fe82c24c0b (queued)
  • 2026-06-13 14:14:57 UTC merged 64fe82c24c0b (merged by ClawSweeper automerge)

@clawsweeper clawsweeper Bot added clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane. clawsweeper:human-review Needs maintainer review before ClawSweeper can continue and removed status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Jun 13, 2026
@clawsweeper

clawsweeper Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

🦞✅
ClawSweeper is pausing this repair loop for human review.

Source: clawsweeper[bot]
Reason: - [P2] The remaining action is maintainer review of the SDK-visible lifecycle context, not a narrow automated code repair.; Cleared: The diff changes TypeScript runtime plumbing and tests only; I found no new dependency, workflow, secret handling, package-resolution, downloaded-artifact, or supply-chain surface. (sha=64fe82c24c0b5293463e5f12c5b3fb60de2c47b0)

Why human review is needed:
This item has security-sensitive risk. ClawSweeper is pausing instead of making an autonomous change that could affect trust, credentials, permissions, or exposure.

What the maintainer can do as a next step:
If the maintainer accepts the current risk and wants ClawSweeper to continue merge gates, comment @clawsweeper approve. If the security-sensitive detail still needs changes, describe the safe path or push the fix, then comment @clawsweeper automerge. If the risk should not be automated, keep the PR paused for manual review or comment @clawsweeper stop.

I added clawsweeper:human-review and left the final call with a maintainer.

@Takhoffman

Copy link
Copy Markdown
Contributor

@clawsweeper approve

@clawsweeper clawsweeper Bot removed the clawsweeper:human-review Needs maintainer review before ClawSweeper can continue label Jun 13, 2026
@clawsweeper
clawsweeper Bot merged commit ddacb7b into openclaw:main Jun 13, 2026
216 of 228 checks passed
@TurboTheTurtle
TurboTheTurtle deleted the codex/92464-local-json-exit branch June 13, 2026 20:20
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jun 14, 2026
Summary:
- Merged fix(memory): keep memory_search in transient qmd mode after ClawSweeper review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(memory): close transient search managers
- PR branch already contained follow-up commit before automerge: fix(memory): preserve default search managers
- PR branch already contained follow-up commit before automerge: fix(memory): preserve qmd cli boot freshness

Validation:
- ClawSweeper review passed for head 64fe82c.
- Required merge gates passed before the squash merge.

Prepared head SHA: 64fe82c
Review: openclaw#92639 (comment)

Co-authored-by: Andy Ye <[email protected]>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <[email protected]>
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request Jun 16, 2026
…26.6.8) (#1144)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/openclaw/openclaw](https://openclaw.ai) ([source](https://github.com/openclaw/openclaw)) | patch | `2026.6.6` → `2026.6.8` |

---

### Release Notes

<details>
<summary>openclaw/openclaw (ghcr.io/openclaw/openclaw)</summary>

### [`v2026.6.8`](https://github.com/openclaw/openclaw/blob/HEAD/CHANGELOG.md#202668)

[Compare Source](openclaw/openclaw@v2026.6.6...v2026.6.8)

##### Highlights

- Telegram and WhatsApp channel delivery are richer and less brittle: Telegram can send structured rich text with tables, lists, expandable blockquotes, prompt-preserving CLI backend delivery, retired native draft migration, and safer rich-media boundaries, while WhatsApp now honors configured ACP bindings. ([#&#8203;92679](openclaw/openclaw#92679), [#&#8203;84082](openclaw/openclaw#84082), [#&#8203;89421](openclaw/openclaw#89421), [#&#8203;92513](openclaw/openclaw#92513)) Thanks [@&#8203;obviyus](https://github.com/obviyus), [@&#8203;jzakirov](https://github.com/jzakirov), [@&#8203;spacegeologist](https://github.com/spacegeologist), and [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Agent and Gateway recovery is sharper across account-scoped DM sends, generated media completions, restart shutdown aborts, yielded subagent pauses, yielded cron media, heartbeat dedupe, session identity prompts, and unknown OpenAI agent selector rejection. ([#&#8203;92788](openclaw/openclaw#92788), [#&#8203;91246](openclaw/openclaw#91246), [#&#8203;91357](openclaw/openclaw#91357), [#&#8203;92631](openclaw/openclaw#92631), [#&#8203;92146](openclaw/openclaw#92146), [#&#8203;91287](openclaw/openclaw#91287), [#&#8203;92468](openclaw/openclaw#92468), [#&#8203;92510](openclaw/openclaw#92510)) Thanks [@&#8203;yetval](https://github.com/yetval), [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle), [@&#8203;ooiuuii](https://github.com/ooiuuii), [@&#8203;openperf](https://github.com/openperf), [@&#8203;IWhatsskill](https://github.com/IWhatsskill), [@&#8203;ZengWen-DT](https://github.com/ZengWen-DT), and [@&#8203;zhangguiping-xydt](https://github.com/zhangguiping-xydt).
- Provider/model handling expands and tightens with GLM-5.2, Claude Haiku 4.5 catalog rows, OpenRouter and Google Vertex provider-prefix normalization, managed SecretRef auth, bounded model browse discovery, storeless OpenAI Responses replay gating, and Claude 4.5 Copilot tool-streaming safety. ([#&#8203;92796](openclaw/openclaw#92796), [#&#8203;90116](openclaw/openclaw#90116), [#&#8203;92627](openclaw/openclaw#92627), [#&#8203;91218](openclaw/openclaw#91218), [#&#8203;90686](openclaw/openclaw#90686), [#&#8203;92247](openclaw/openclaw#92247), [#&#8203;90706](openclaw/openclaw#90706), [#&#8203;75393](openclaw/openclaw#75393)) Thanks [@&#8203;arkyu2077](https://github.com/arkyu2077), [@&#8203;liuhao1024](https://github.com/liuhao1024), [@&#8203;bymle](https://github.com/bymle), [@&#8203;rohitjavvadi](https://github.com/rohitjavvadi), [@&#8203;samson910022](https://github.com/samson910022), [@&#8203;snowzlm](https://github.com/snowzlm), and [@&#8203;Kailigithub](https://github.com/Kailigithub).
- `/usage` and reply payload hooks now have a native full footer renderer, default template, fixed-decimal formatting, credential-aware limits, better partial-count handling, and warnings for broken templates instead of silent bad output. ([#&#8203;92657](openclaw/openclaw#92657), [#&#8203;89835](openclaw/openclaw#89835), [#&#8203;89629](openclaw/openclaw#89629)) Thanks [@&#8203;Marvinthebored](https://github.com/Marvinthebored).
- UI and mobile flows are steadier: workspace files can collapse and start collapsed, WebChat backscroll survives streaming, the sidebar session picker remains interactive above the desktop workbench, reset soft args survive UI dispatch, stale dashboard session parent lineage is preserved, and iOS reconnects stale foreground gateways. ([#&#8203;92779](openclaw/openclaw#92779), [#&#8203;92622](openclaw/openclaw#92622), [#&#8203;92705](openclaw/openclaw#92705), [#&#8203;91353](openclaw/openclaw#91353), [#&#8203;90658](openclaw/openclaw#90658), [#&#8203;92552](openclaw/openclaw#92552)) Thanks [@&#8203;shakkernerd](https://github.com/shakkernerd), [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle), [@&#8203;NianJiuZst](https://github.com/NianJiuZst), [@&#8203;zhouhe-xydt](https://github.com/zhouhe-xydt), [@&#8203;luoyanglang](https://github.com/luoyanglang), and [@&#8203;Solvely-Colin](https://github.com/Solvely-Colin).
- Memory, state, and diagnostics recover cleaner: oversized OpenAI embedding batches split before 431s, QMD memory search stays available in transient mode, SQLite avoids WAL on NFS state volumes, stuck-session recovery scheduling no longer resets warning backoff, and Infinity chunk limits stay genuinely unbounded. ([#&#8203;92650](openclaw/openclaw#92650), [#&#8203;92618](openclaw/openclaw#92618), [#&#8203;92639](openclaw/openclaw#92639), [#&#8203;91247](openclaw/openclaw#91247), [#&#8203;92752](openclaw/openclaw#92752), [#&#8203;92735](openclaw/openclaw#92735)) Thanks [@&#8203;mushuiyu886](https://github.com/mushuiyu886), [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle), [@&#8203;849261680](https://github.com/849261680), [@&#8203;gnanam1990](https://github.com/gnanam1990), and [@&#8203;yhterrance](https://github.com/yhterrance).

##### Changes

- Providers/models: add GLM-5.2 support and Claude Haiku 4.5 catalog entries while keeping provider-qualified model IDs normalized across OpenRouter and Google Vertex paths. ([#&#8203;92796](openclaw/openclaw#92796), [#&#8203;90116](openclaw/openclaw#90116), [#&#8203;92627](openclaw/openclaw#92627), [#&#8203;91218](openclaw/openclaw#91218)) Thanks [@&#8203;arkyu2077](https://github.com/arkyu2077), [@&#8203;liuhao1024](https://github.com/liuhao1024), and [@&#8203;bymle](https://github.com/bymle).
- Channel plugins: ship Telegram rich-message delivery and WhatsApp ACP binding support, including rich prompt handoff to CLI backends and transport fixtures for richer drafts. ([#&#8203;92679](openclaw/openclaw#92679), [#&#8203;92513](openclaw/openclaw#92513)) Thanks [@&#8203;obviyus](https://github.com/obviyus) and [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Agent commands: support `/btw` in CLI-backed sessions and keep CLI usage-error exits classified as usage failures instead of successful runs. ([#&#8203;92669](openclaw/openclaw#92669), [#&#8203;92162](openclaw/openclaw#92162)) Thanks [@&#8203;joshavant](https://github.com/joshavant) and [@&#8203;Pandah97](https://github.com/Pandah97).
- Usage hooks: add built-in full footer rendering, default footer templates, per-turn usage state, credential-aware limits, and fixed-decimal formatting for usage-bar templates. ([#&#8203;92657](openclaw/openclaw#92657), [#&#8203;89835](openclaw/openclaw#89835), [#&#8203;89629](openclaw/openclaw#89629)) Thanks [@&#8203;Marvinthebored](https://github.com/Marvinthebored).
- Docs and operator guidance: document node config examples, clarify before-install hook scope, correct agent default concurrency comments, refresh ZAI provider docs, and update channel/group docs for current Telegram and WhatsApp behavior. ([#&#8203;92677](openclaw/openclaw#92677), [#&#8203;92766](openclaw/openclaw#92766), [#&#8203;92695](openclaw/openclaw#92695)) Thanks [@&#8203;liuhao1024](https://github.com/liuhao1024), [@&#8203;sallyom](https://github.com/sallyom), and [@&#8203;ArielSmoliar](https://github.com/ArielSmoliar).

##### Fixes

- Onboarding/skills: show the Homebrew install recommendation only on macOS and Linux, so FreeBSD and other unsupported platforms no longer get a misleading brew prompt. Fixes [#&#8203;68893](openclaw/openclaw#68893); carries forward [#&#8203;68894](openclaw/openclaw#68894), [#&#8203;68910](openclaw/openclaw#68910), [#&#8203;68941](openclaw/openclaw#68941), [#&#8203;68943](openclaw/openclaw#68943), [#&#8203;69002](openclaw/openclaw#69002), and [#&#8203;69545](openclaw/openclaw#69545). Thanks [@&#8203;yurivict](https://github.com/yurivict), [@&#8203;Sanjays2402](https://github.com/Sanjays2402), [@&#8203;Eruditi](https://github.com/Eruditi), [@&#8203;JustInCache](https://github.com/JustInCache), [@&#8203;nnish16](https://github.com/nnish16), and [@&#8203;Mlightsnow](https://github.com/Mlightsnow).
- Channels and delivery: preserve account-scoped DM channel send policy, rich Telegram final replies, rich Telegram tables and lists, Telegram thread-create CLI remapping, Slack outbound `message_sent` hooks, contributed message-tool schema optionality, same-channel generated media completions, and channel chunking around surrogate pairs and Infinity limits. ([#&#8203;92788](openclaw/openclaw#92788), [#&#8203;92679](openclaw/openclaw#92679), [#&#8203;89421](openclaw/openclaw#89421), [#&#8203;89943](openclaw/openclaw#89943), [#&#8203;91137](openclaw/openclaw#91137), [#&#8203;91246](openclaw/openclaw#91246), [#&#8203;92735](openclaw/openclaw#92735)) Thanks [@&#8203;yetval](https://github.com/yetval), [@&#8203;obviyus](https://github.com/obviyus), [@&#8203;spacegeologist](https://github.com/spacegeologist), [@&#8203;rishitamrakar](https://github.com/rishitamrakar), [@&#8203;lundog](https://github.com/lundog), [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle), and [@&#8203;yhterrance](https://github.com/yhterrance).
- Auto-reply/groups: keep ordinary group text replies on automatic final-reply delivery while allowing `message(action=send)` for files, images, and other attachments to the same group or topic. Carries forward [#&#8203;43276](openclaw/openclaw#43276); refs [#&#8203;48004](openclaw/openclaw#48004). Thanks [@&#8203;NayukiChiba](https://github.com/NayukiChiba) and [@&#8203;ShakaRover](https://github.com/ShakaRover).
- Auto-reply/skills: preserve multiline payloads for `/skill` and direct skill slash commands while keeping command-head normalization for aliases, colon syntax, and bot mentions. Fixes [#&#8203;79155](openclaw/openclaw#79155); carries forward [#&#8203;81305](openclaw/openclaw#81305). Thanks [@&#8203;web3blind](https://github.com/web3blind).
- iMessage: normalize leading NUL sent-message echo prefixes while preserving interior NUL bytes and the leading attributedBody marker handling from [#&#8203;73942](openclaw/openclaw#73942). Carries forward [#&#8203;63581](openclaw/openclaw#63581). Thanks [@&#8203;drvoss](https://github.com/drvoss).
- Discord: give generated auto-thread titles a 60-second timeout and 4,096-token reasoning-model output budget, clamped to the selected model output cap. ([#&#8203;64734](openclaw/openclaw#64734)) Thanks [@&#8203;hanamizuki](https://github.com/hanamizuki).
- Agent, cron, and Gateway runtime: mark active main sessions before restart shutdown aborts, pause yielded subagent runs whose terminal also signals abort, preserve yielded media completions, de-duplicate main-session heartbeat events, expose session identity in runtime prompts, reject unknown OpenAI agent selectors, keep generated media completions and slash-command block replies in WebChat, preserve fresh post-compaction usage while clearing stale usage snapshots, and require admin privileges for HTTP session/model override surfaces. ([#&#8203;91357](openclaw/openclaw#91357), [#&#8203;92631](openclaw/openclaw#92631), [#&#8203;92146](openclaw/openclaw#92146), [#&#8203;91287](openclaw/openclaw#91287), [#&#8203;92468](openclaw/openclaw#92468), [#&#8203;92510](openclaw/openclaw#92510), [#&#8203;91246](openclaw/openclaw#91246), [#&#8203;50795](openclaw/openclaw#50795), [#&#8203;50845](openclaw/openclaw#50845), [#&#8203;82874](openclaw/openclaw#82874), [#&#8203;92651](openclaw/openclaw#92651), [#&#8203;92646](openclaw/openclaw#92646)) Thanks [@&#8203;ooiuuii](https://github.com/ooiuuii), [@&#8203;openperf](https://github.com/openperf), [@&#8203;IWhatsskill](https://github.com/IWhatsskill), [@&#8203;ZengWen-DT](https://github.com/ZengWen-DT), [@&#8203;zhangguiping-xydt](https://github.com/zhangguiping-xydt), [@&#8203;Hollychou924](https://github.com/Hollychou924), [@&#8203;leno23](https://github.com/leno23), and [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Agents/exec: default empty-success background completion notices on only for real chat channels, preserving explicit opt-outs and keeping generic providers silent while carrying forward the narrow UX intent from [#&#8203;39726](openclaw/openclaw#39726) and [#&#8203;46926](openclaw/openclaw#46926). Thanks [@&#8203;Sapientropic](https://github.com/Sapientropic) and [@&#8203;wenkang-xie](https://github.com/wenkang-xie).
- Providers and model replay: preserve storeless OpenAI Responses replay compatibility, avoid eager tool streaming for Claude 4.5 in Copilot, honor profile auth for SecretRef model entries, bound model browsing, strip provider prefixes where runtimes need bare IDs, and surface nested embedding fetch failures. ([#&#8203;90706](openclaw/openclaw#90706), [#&#8203;75393](openclaw/openclaw#75393), [#&#8203;90686](openclaw/openclaw#90686), [#&#8203;92247](openclaw/openclaw#92247), [#&#8203;92627](openclaw/openclaw#92627), [#&#8203;91218](openclaw/openclaw#91218), [#&#8203;92628](openclaw/openclaw#92628)) Thanks [@&#8203;snowzlm](https://github.com/snowzlm), [@&#8203;Kailigithub](https://github.com/Kailigithub), [@&#8203;rohitjavvadi](https://github.com/rohitjavvadi), [@&#8203;samson910022](https://github.com/samson910022), [@&#8203;liuhao1024](https://github.com/liuhao1024), [@&#8203;bymle](https://github.com/bymle), and [@&#8203;mushuiyu886](https://github.com/mushuiyu886).
- Memory, state, diagnostics, and config: split header-too-large embedding batches, keep QMD memory search enabled in transient mode, avoid SQLite WAL on NFS volumes, preserve recovery scheduling outside stuck-session warning backoff, and keep shell environment fallbacks contained in config write tests. ([#&#8203;92650](openclaw/openclaw#92650), [#&#8203;92618](openclaw/openclaw#92618), [#&#8203;92639](openclaw/openclaw#92639), [#&#8203;91247](openclaw/openclaw#91247), [#&#8203;92752](openclaw/openclaw#92752)) Thanks [@&#8203;mushuiyu886](https://github.com/mushuiyu886), [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle), [@&#8203;849261680](https://github.com/849261680), and [@&#8203;gnanam1990](https://github.com/gnanam1990).
- Workspace setup state: store setup completion outside the workspace dot directory using an OpenClaw-named root file, migrate valid legacy state forward, and avoid clobbering generic root `workspace-state.json` files for TigerFS-style dot-path compatibility. This Clownfish replacement carries forward the focused [#&#8203;53326](openclaw/openclaw#53326) fix idea because the original branch was closed and uneditable. ([#&#8203;53326](openclaw/openclaw#53326), [#&#8203;44783](openclaw/openclaw#44783), [#&#8203;39446](openclaw/openclaw#39446)) Thanks [@&#8203;1qh](https://github.com/1qh).
- UI/mobile/TUI: preserve dashboard session parent lineage, WebChat backscroll, reset soft command args, sidebar session picker interactivity, collapsed workspace files, resolved `/model` confirmation refs, and stale foreground iOS Gateway reconnects. ([#&#8203;90658](openclaw/openclaw#90658), [#&#8203;92622](openclaw/openclaw#92622), [#&#8203;91353](openclaw/openclaw#91353), [#&#8203;92705](openclaw/openclaw#92705), [#&#8203;92779](openclaw/openclaw#92779), [#&#8203;92773](openclaw/openclaw#92773), [#&#8203;92552](openclaw/openclaw#92552)) Thanks [@&#8203;luoyanglang](https://github.com/luoyanglang), [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle), [@&#8203;zhouhe-xydt](https://github.com/zhouhe-xydt), [@&#8203;NianJiuZst](https://github.com/NianJiuZst), [@&#8203;shakkernerd](https://github.com/shakkernerd), [@&#8203;NarahariRaghava](https://github.com/NarahariRaghava), and [@&#8203;Solvely-Colin](https://github.com/Solvely-Colin).
- TUI: reload the active session after external `/new` or `/reset` session-change events so stale transcript and stream state clear promptly. Fixes [#&#8203;38966](openclaw/openclaw#38966); carries forward [#&#8203;40472](openclaw/openclaw#40472). Thanks [@&#8203;yizhanzjz](https://github.com/yizhanzjz) and [@&#8203;wsyjh8](https://github.com/wsyjh8).
- Control UI: preserve Gateway Access tokens during same-normalized WebSocket URL edits and reload gateway-scoped tokens when switching endpoints. Fixes [#&#8203;41545](openclaw/openclaw#41545); repairs [#&#8203;42001](openclaw/openclaw#42001) with additional source PRs [#&#8203;41546](openclaw/openclaw#41546), [#&#8203;41552](openclaw/openclaw#41552), and [#&#8203;41718](openclaw/openclaw#41718). Thanks [@&#8203;wsyjh8](https://github.com/wsyjh8), [@&#8203;llagy0020](https://github.com/llagy0020), [@&#8203;llagy007](https://github.com/llagy007), [@&#8203;pingfanfan](https://github.com/pingfanfan), and [@&#8203;zheliu2](https://github.com/zheliu2).
- Gateway CLI: tolerate a single transient clean WebSocket close before `hello-ok` so one-shot RPC calls reconnect instead of failing noisily, while repeated clean pre-hello closes still surface. Carries forward source PRs [#&#8203;54475](openclaw/openclaw#54475) and [#&#8203;54774](openclaw/openclaw#54774); [#&#8203;85253](openclaw/openclaw#85253) covered adjacent connect assembly diagnostics. Thanks [@&#8203;ruanrrn](https://github.com/ruanrrn).
- Gateway/Linux: keep root-owned systemd user service lifecycle commands on root's user manager when a stale `SUDO_USER` remains in a root shell with root's user bus environment. Fixes [#&#8203;81410](openclaw/openclaw#81410). Thanks [@&#8203;Ericksza](https://github.com/Ericksza) and [@&#8203;ChuckClose-tech](https://github.com/ChuckClose-tech).
- Release and test reliability: extend slow Gateway/full-suite watchdogs, split local full-suite shards when throttled, stabilize plugin auth marker fixtures, avoid brittle provider-ref error text, and keep QA Lab bootstrap selection assertions aligned with flow-only scenarios. ([#&#8203;92652](openclaw/openclaw#92652))
- macOS Peekaboo bridge: update the embedded Peekaboo package to 3.5.2 and route bundled-skill CLI commands through the OpenClaw app bridge so they inherit its Screen Recording and Accessibility grants.
- Agent routing: route subagent RPC callbacks addressed to an agent-shaped `--to` target to the correct session key instead of falling back to the main session, so WeChat (and other channel) session-key callbacks reach the intended subagent session. ([#&#8203;90231](openclaw/openclaw#90231)) Thanks [@&#8203;zhangguiping-xydt](https://github.com/zhangguiping-xydt).
- Cron: preserve model, fallback, thinking, timeout, light-context, unsafe-content, and tool allow-list overrides on implicit text payloads by promoting them to agent turns, while explicit system events still prune those fields. Fixes [#&#8203;28905](openclaw/openclaw#28905); carries forward [#&#8203;64060](openclaw/openclaw#64060) and [#&#8203;73946](openclaw/openclaw#73946). Thanks [@&#8203;liaoandi](https://github.com/liaoandi).
- QQBot delivery: keep markdown table chunks self-contained across message boundaries by preserving table state across block deliveries, flushing unfinished table-row fragments as plain text, and detecting short pipe-terminated rows by column count so split rows are not sent as malformed markdown. ([#&#8203;92428](openclaw/openclaw#92428)) Thanks [@&#8203;sliverp](https://github.com/sliverp).

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/1144
wangmiao0668000666 pushed a commit to wangmiao0668000666/openclaw that referenced this pull request Jun 17, 2026
Summary:
- Merged fix(memory): keep memory_search in transient qmd mode after ClawSweeper review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(memory): close transient search managers
- PR branch already contained follow-up commit before automerge: fix(memory): preserve default search managers
- PR branch already contained follow-up commit before automerge: fix(memory): preserve qmd cli boot freshness

Validation:
- ClawSweeper review passed for head 64fe82c.
- Required merge gates passed before the squash merge.

Prepared head SHA: 64fe82c
Review: openclaw#92639 (comment)

Co-authored-by: Andy Ye <[email protected]>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <[email protected]>
badgerbees pushed a commit to badgerbees/openclaw that referenced this pull request Jul 8, 2026
Summary:
- Merged fix(memory): keep memory_search in transient qmd mode after ClawSweeper review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(memory): close transient search managers
- PR branch already contained follow-up commit before automerge: fix(memory): preserve default search managers
- PR branch already contained follow-up commit before automerge: fix(memory): preserve qmd cli boot freshness

Validation:
- ClawSweeper review passed for head 64fe82c.
- Required merge gates passed before the squash merge.

Prepared head SHA: 64fe82c
Review: openclaw#92639 (comment)

Co-authored-by: Andy Ye <[email protected]>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge commands Command implementations extensions: memory-core Extension: memory-core merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. P1 High-priority user-facing bug, regression, or broken workflow. proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: L status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

openclaw agent --local --json can emit final JSON but keep process/workers alive

2 participants