Repository navigation
The recipe: a lesson can show what the working call returned (story 28.4) - #219
Merged
Merged
Conversation
fabbrik
added a commit
that referenced
this pull request
Oct 30, 2026
… machine (#220) The shared recall test host used timers that never fire, but the recall bound is measured from the clock's timestamps, which were the system's. Under CI load (floating-dependencies, PR #219) a lookup took over 300 ms and timed out. Tests on that clock now get a one-hour bound unless they set their own; the timeout test keeps its manual clock. Claude-Session: https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…tory 28.4) ToolCallRecord.RecipeExcerpt (init-only), captured through ExperienceCaptureOptions.RecipeResultExcerpt, sanitized as a result and cut after sanitization; signed under claims v4; rendered on the Worked: attempt as [returned: "..."] for tools in ExperienceInjectionOptions.RecipeExcerpts; grants consent per tool (0031); AgentExperienceOptions.Recipe sets it all. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy
…story 28.4) 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
…nused records serialize as before 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
…; changelog; experiment amendment proposal (story 28.4) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy
…e inject cases (story 28.4) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy
… exact-read SQL unchanged Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy
…g for contract 1.19 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy
…on 4, U+FFFD for lone surrogates, no excerpt without confirmation, invisible-only keeps [returned] Port limitation documented; contract 1.19 relocked with an invisible-only case; tests for signing end to end, trusted-unsigned records, the v4 golden vector, 0031's CHECKs and a schema stopping at 0030. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy
fabbrik
force-pushed
the
feat/28-4-the-recipe
branch
from
October 30, 2026 23:20
3265cd8 to
3d41776
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Story 28.4 of Epic 28. With host consent, a lesson shows the step that worked, not only its tool name.
ExperienceCaptureOptions.RecipeResultExcerptreturns a short excerpt of a returned call's result the host vouches for; sanitized, lone surrogates replaced, cut to 200 chars, stored as init-onlyToolCallRecord.RecipeExcerpt(omitted from JSON when null, so unused records are byte-identical).ExperienceInjectionOptions.RecipeExcerptsper-tool allowlist; the worked attempt's call renders[returned: "<excerpt>"]; failed calls never do; the recall hint uses the same rendering.AgentExperienceOptions.Recipe(tool, arguments, resultExcerpt)gives all consents in one place.SignClaimsVersion = 4. With signing on, an excerpt no v4 signature confirms is never shown; the public writer fails closed unless given the confirmation check or an explicit no-signing opt-in.LessonOnly); migration 0031 (works on an unmigrated schema except issuing such a grant).--recipe; a proposed real-task amendment comparing recipe vs plain lessons (not run).Tests: Core 1341, MAF 1439, Storage.Postgres 948 default/encrypted/RLS, contract 102, Python 1796, Go race and postgres legs, package validation.
🤖 Generated with Claude Code
https://claude.ai/code/session_01GPXz56QPQAzDSyJTxbQTTy