fix(active-memory): isolate recall lane#80255
Conversation
|
Codex review: needs maintainer review before merge. Reviewed May 29, 2026, 8:47 AM ET / 12:47 UTC. Summary PR surface: Source +2, Tests +14. Total +16 across 2 files. Reproducibility: yes. Source inspection shows current main calls Review metrics: 1 noteworthy metric.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land the narrow lane isolation if maintainers accept the shared recall-lane tradeoff, and keep broader fail-open or per-agent concurrency work tracked under #72015. Do we have a high-confidence way to reproduce the issue? Yes. Source inspection shows current main calls Is this the best way to solve the issue? Yes, with a maintainer tradeoff. Passing a non-main lane is the narrow maintainable fix for this self-deadlock; broader fail-open or per-agent concurrency behavior belongs in the related reliability work. AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against 6235720c8aee. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +2, Tests +14. Total +16 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
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
|
86c2887 to
938bcc4
Compare
938bcc4 to
2bbc26f
Compare
2bbc26f to
22f558f
Compare
Real behavior proof
@clawsweeper re-review |
913ec71 to
b4fac3b
Compare
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
@clawsweeper re-review I updated the PR body with focused Active Memory behavior proof and the exact passing test output. |
|
@clawsweeper re-review I updated the PR body with the required Real behavior proof fields: behavior, environment, steps, evidence, observedResult, and notTested. |
b4fac3b to
baf4038
Compare
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
baf4038 to
9a80f81
Compare
Summary
Active Memory recall could block itself during prompt building.
The parent reply and the recall subagent could use the same queue lane, so recall waited behind the work that was waiting for recall.
This change puts recall on its own
active-memorylane and adds a regression test for that call.Fixes #79026.
Related: #72015.
What Changed
The runtime change is intentionally small.
Recall still runs during
before_prompt_build; it just no longer competes with the parent session lane.active-memoryrecall lane.runEmbeddedAgentfor Active Memory recall.lane: "active-memory".Real behavior proof
Behavior addressed: Active Memory recall no longer shares the parent main lane during prompt-build recall.
Real environment tested: Fresh local macOS smoke from the cleaned PR branch. It used
pnpm gateway:dev,OPENCLAW_SKIP_CHANNELS=1, Active Memory enabled, Memory Core enabled, andscripts/e2e/mock-openai-server.mjsas a local OpenAI-compatible loopback model endpoint.Exact steps or command run after this patch: Created an isolated
OPENCLAW_HOME, wrote a temporary config withgateway.http.endpoints.chatCompletions.enabled=true, started the loopback model server, started the local dev gateway, then sent a real webchat turn throughPOST /v1/chat/completionswith sessionagent:main:direct:proof-80255-fresh.Evidence after fix: Runtime output from the fresh smoke:
Observed result after fix: The gateway returned HTTP 200 with
OPENCLAW_E2E_OK_80255_FRESH. Active Memory loggedstartanddone status=okduring the turn, finishing recall in 209ms with no prompt-build timeout.What was not tested: This smoke did not use a hosted external model provider or a real channel app such as Telegram/Discord. An AWS Crabbox focused rerun was attempted earlier, but the box lost network/DNS/SSH during the run (
run_f1a17d6fa03a, leasecbx_d5bb40661343), so it was not counted as passing proof.Testing
Focused local validation passed after the cleanup.
git diff --check node scripts/run-vitest.mjs extensions/active-memory/index.test.ts -t "runs recall on a dedicated active-memory lane"Fresh local smoke also passed as described above.
Risks
Risk is low because this only changes the queue lane for Active Memory's embedded recall subagent.
It does not change memory search behavior, provider selection, channel delivery, or plugin defaults.