Skip to content

Recall at the moment of failure (story 28.3) - #217

Merged
fabbrik merged 10 commits into
mainfrom
feat/28-3-recall-at-failure
Oct 30, 2026
Merged

fabbrik merged 10 commits into
mainfrom
feat/28-3-recall-at-failure

Conversation

@fabbrik

@fabbrik fabbrik commented Oct 30, 2026

Copy link
Copy Markdown
Owner

Story 28.3 of Epic 28. Opt-in Recall: when a tool call fails (thrown, or classified failed by ClassifyToolResult) and a reusable lesson holds the same failure signature (28.2) as resolved, the model's next call in that run gets one short labelled hint naming what worked after that failure.

  • Mechanism: capture's function middleware appends the hint to the run's ChatOptions.Instructions (MAF clones options per run; proven at MAF 1.22.0 and 1.27.0 by a new compatibility proof). Tool results and exceptions are untouched; nothing enters chat history; works with the one-call setup. Documented as system-role text for the rest of the run.
  • Same rules as the block: eligibility re-read, scope, grant disclosure, model-authored policy, capability gate, DecideInjection, MeasuredHarmful. Exact match first; coarse only when allowed; only resolved signatures.
  • Bounded: 300 ms lookup on the host's TimeProvider, 600 bytes, one hint per signature, MaxHintsPerRun hints, a lookup cap; failures never fail the call or run; races between parallel tool calls reserve records atomically.
  • Measured: the run's holdout arm (same assignment as the block); budget checked before the arm split so both arms are treated alike; docs explain how to read recall rows.
  • recall telemetry span, OnRecall callback, quick-start --recall switch. API additions only.

Tests: MAF 1416 (41 recall), Storage.Postgres 933, Release 197, QuickStart 10, latest-MAF probe, package validation.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy

fabbrik and others added 10 commits October 30, 2026 16:42
…ter (story 28.3)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy
…d bounds, failures reported (story 28.3 review)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy
…rust and reading the estimate (story 28.3 review)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy
@fabbrik
fabbrik merged commit 5584f25 into main Oct 30, 2026
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant