Skip to content

Commit d129965

Browse files
brokemac79steipete
andauthored
fix(active-memory): preserve verbose recall summaries (#90739)
* fix(active-memory): preserve verbose recall summaries * fix(active-memory): require recall evidence for recovery * fix(active-memory): recognize capped recall results * fix(active-memory): preserve grounded recall state * refactor(active-memory): limit recovery to completed recalls * fix(active-memory): ground terminal recall recovery * fix(active-memory): limit unavailable recovery to completed replies * fix(active-memory): harden recall evidence recovery * fix(active-memory): preserve timeout recovery contract * fix(active-memory): preserve capped failure evidence * fix(active-memory): reject content-only recall failures * fix(active-memory): ground completed recall summaries * fix(active-memory): separate hook and recall timeouts * fix(active-memory): classify custom tool failures * fix(active-memory): preserve harness tool evidence * fix(active-memory): reject explicit empty results * fix(active-memory): wait for fallback recall evidence * fix(codex): report dynamic tool results * fix(active-memory): separate preflight recall deadline * fix(active-memory): normalize recall tool names * fix(agents): classify unavailable approvals * docs(active-memory): clarify hook timeout phases * test(active-memory): stabilize timeout abort proof * fix(agents): preserve successful cancellation outcomes --------- Co-authored-by: Peter Steinberger <[email protected]>
1 parent a028131 commit d129965

26 files changed

Lines changed: 2942 additions & 415 deletions
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
b5887d8c887a53a997dc4c5220f6b9d5adffbddb58e4b25ae0d20ca06850d0ca config-baseline.json
1+
0485ba902d2afd89d2c41cde7180d0cec2900b2db6804b9f97d42b7d85cd3af5 config-baseline.json
22
72bb80be618406f3337eaa2560d2559a35e49bd29576de8dd4a3aec1a6a94d92 config-baseline.core.json
33
1218f5555541b61bd5ddcac6441f15061b44789e2471d4ffecbe3059777c55c1 config-baseline.channel.json
4-
b0dec5acfe60557e728e5ad03cc36d19d2432d51f755656c97846afa7fbe374a config-baseline.plugin.json
4+
a14ac4261e98403d1a7e047070e6f151938444e27382b860315bd0c74fda4861 config-baseline.plugin.json
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
ab2a32b037be61953ad32d2498468bc812b0794ba6135530cefd1c8326d69de8 plugin-sdk-api-baseline.json
2-
2c7bca3b46e0edd08ed445a241bb0a80b77635bf82825d5201ce41a8759c0e56 plugin-sdk-api-baseline.jsonl
1+
85c3572e6ed2bfe3df92c7d53cef465b30d2e861ad9529009faa287cdc5aec71 plugin-sdk-api-baseline.json
2+
0d7c7e42d04b97d40519c5a23ba96599b05868c71a997eb913b9fccbc5fb2515 plugin-sdk-api-baseline.jsonl

docs/concepts/active-memory.md

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,9 @@ names that plugin registers. Active Memory lists those tools in the recall
479479
prompt and passes the same list to the embedded sub-agent. If none of the
480480
configured tools are available, or the memory sub-agent fails, Active Memory
481481
skips recall for that turn and the main reply continues without memory context.
482+
For custom recall tools, non-empty model-visible tool output counts as recall
483+
evidence unless structured result fields explicitly report an empty result or
484+
failure.
482485
`toolsAllow` only accepts concrete memory tool names. Wildcards, `group:*`
483486
entries, and core agent tools such as `read`, `exec`, `message`, and
484487
`web_search` are ignored before the hidden memory sub-agent starts.
@@ -743,7 +746,11 @@ Before v2026.5.2 the plugin silently extended your configured `timeoutMs` by an
743746
extra 30000 ms during cold-start so model warm-up, embedding-index load, and
744747
the first recall could share one larger budget. v2026.5.2 moved that grace
745748
behind an explicit `setupGraceTimeoutMs` config — your configured `timeoutMs`
746-
is now the budget by default, unless you opt in.
749+
is now the recall-work budget by default, unless you opt in. The blocking hook
750+
uses two bounded phases around that budget: up to 1500 ms for session/config
751+
preflight before recall starts, then a separate fixed 1500 ms for abort
752+
settlement and transcript recovery after recall work stops. Neither allowance
753+
extends model or tool execution.
747754

748755
If you upgraded from v2026.4.x and you set `timeoutMs` to a value tuned for the
749756
old implicit-grace world (the recommended starter `timeoutMs: 15000` is one
@@ -765,14 +772,16 @@ outer watchdog budgets back to the pre-v5.2 effective values:
765772
}
766773
```
767774

768-
Per the v2026.5.2 changelog: _"use the configured recall timeout as the
769-
blocking prompt-build hook budget by default and move cold-start setup grace
770-
behind explicit `setupGraceTimeoutMs` config, so the plugin no longer silently
771-
extends 15000 ms configs to 45000 ms on the main lane."_
775+
The v2026.5.2 change removed the old implicit 30000 ms cold-start extension.
776+
Beyond the configured recall-work budget, the hook can use up to 1500 ms for
777+
preflight and another 1500 ms for post-recall completion. Its worst-case
778+
blocking time is therefore `timeoutMs + setupGraceTimeoutMs + 3000` ms.
772779

773780
The embedded recall runner uses the same effective timeout budget, so
774781
`setupGraceTimeoutMs` covers both the outer prompt-build watchdog and the inner
775-
blocking recall run.
782+
blocking recall run. The preflight cap covers session/config checks before that
783+
budget begins. The post-recall allowance lets the outer hook settle abort
784+
cleanup and read any final transcript state.
776785

777786
For resource-tight gateways where cold-start latency is a known trade-off,
778787
lower values (5000–15000 ms) work too — the trade-off is a higher chance of

0 commit comments

Comments
 (0)