fix(active-memory): fast-fail stalled recall paths#75761
fix(active-memory): fast-fail stalled recall paths#75761codexGW wants to merge 1 commit intoopenclaw:mainfrom
Conversation
|
Codex review: needs changes before merge. Summary Reproducibility: yes. On current main, Active Memory does not observe formatted tool output and its watchdog uses Next step before merge Security Review findings
Review detailsBest possible solution: Rebase this PR onto current main, keep the plugin-local fast-fail and timeout-boilerplate handling, and align the setup-grace contract in code, tests, docs, and changelog before exact-head checks gate merge. Do we have a high-confidence way to reproduce the issue? Yes. On current main, Active Memory does not observe formatted tool output and its watchdog uses Is this the best way to solve the issue? Partly. The callback-based fast-fail is the narrowest maintainable implementation, but the hard-timeout/setup-grace semantics need docs alignment and conflict repair before this is the best mergeable form. Full review comments:
Overall correctness: patch is incorrect Acceptance criteria:
What I checked:
Likely related people:
Remaining risk / open question:
Codex review notes: model gpt-5.5, reasoning high; reviewed against ac607044f1ff. |
37e278f to
e850a6b
Compare
|
Combined live verification with #75860 also applied locally:
This confirms the important behavior for this PR under the combined runtime: timed-out active-memory recall is classified as timeout/empty and does not leak harness timeout prose into the main prompt. |
0db7c10 to
bf010d7
Compare
bf010d7 to
bf5f404
Compare
|
@clawsweeper explain to me how this change would fit into the overall life cycle of active memory and how this pr if merged would change that life cycle |
|
🦞🦞 I asked ClawSweeper to answer this maintainer mention in the next review comment. Tiny claws, bounded scope: this is a read-only assist pass unless it produces one of the existing structured safe-action markers. Request: explain to me how this change would fit into the overall life cycle of active memory and how this pr if merged would change that life cycle |
|
@clawsweeper status |
|
🦞🦞
|
|
@Takhoffman This PR does not change when Active Memory runs: it still starts during The lifecycle change is in terminal cases. Before this PR, if the embedded subagent ran With this PR, Active Memory observes the So useful recall is unchanged; the change is that empty and timed-out recall become terminal earlier and do not add misleading |
|
@clawsweeper automerge |
|
🦞🦞
Draft PRs stay fix-only until GitHub marks them ready for review. Pause with Automerge progress:
|
|
🦞🦞 Source: I added |
|
@clawsweeper why was automerge stopped |
|
@clawsweeper automerge |
|
ClawSweeper 🐠 reef update Thanks for the work on this. ClawSweeper opened a replacement PR only because the source branch was not writable from the available bot permissions. branch tides, not contributor blame. Replacement PR: #76183 fish notes: model gpt-5.5, reasoning high; reviewed against 3a55e61. |
|
Update on the source branch: the closed PR UI still shows the old head SHA, but Current source branch tip: What changed since the stale PR head:
Local validation passed:
|
Summary
memory_searchresult withresults: []anddebug.hits === 0.memory_getmisses as terminal recall failures.Root Cause
Active-memory recall waited for the embedded subagent timeout even after Memory Search had already proven there were no hits or was unavailable. Separately, the plugin waited for the setup-grace watchdog before resolving timeout and could normalize the embedded harness timeout message as an
okmemory summary.Validation
pnpm exec oxfmt --check --threads=1 CHANGELOG.md extensions/active-memory/index.ts extensions/active-memory/index.test.tspnpm exec oxlint extensions/active-memory/index.ts extensions/active-memory/index.test.tspnpm test extensions/active-memory/index.test.tspnpm changed:lanes --jsonpnpm check:changedstatus=timeout,elapsedMs=5040,summaryChars=0fortimeoutMs=5000; no<active_memory_plugin>context or timeout boilerplate was injected into the main prompt.Notes
memory_getfound useful file memory.