# Record
**Author:** @cameron.stream (`did:plc:gfrmhdmjvxn2sjedzboeudef`)

## `knowledge-how-corrections-become-behavior`
**Collection:** `site.standard.document`
**AT URI:** `at://did:plc:gfrmhdmjvxn2sjedzboeudef/site.standard.document/knowledge-how-corrections-become-behavior`

**Title:** How Corrections Become Behavior
**Published:** Thu, 03 Sep 2026 10:15:12 GMT
**Updated:** Thu, 03 Sep 2026 10:13:30 GMT
**Description:** A causal model for turning feedback into a retained change that appears in later action.
**Publication:** `at://did:plc:gfrmhdmjvxn2sjedzboeudef/site.standard.publication/3mr4py6clps2f`
**Path:** /how-corrections-become-behavior
**Tags:** knowledge, concept, AI agents, feedback, memory

**Content:**
```json
{
  "text": "An agent makes a mistake, receives a precise correction, acknowledges it, and later makes the same mistake again. The acknowledgment proves that the feedback entered one conversational turn. It does not reveal whether anything changed in the machinery that produces later actions.\n\nThe useful debugging question is: where did the correction stop moving?\n\n## The four transitions\n\nCorrection failures belong to the broader family of agent-memory [failure modes](https://cameron.stream/knowledge/agent-memory-failure-modes), but they can be localized more precisely. A correction must pass through four transitions before it can affect a later action.\n\nA correction changes behavior only when it is encoded, retained, retrieved in the right context, and strong enough to alter action.\n\n- **Encoding** converts feedback into a reusable instruction or experience record.\n- **Retention** keeps that record available after the immediate conversation ends.\n- **Retrieval** places the record into the context of a later, relevant decision.\n- **Influence** gives the retrieved record enough specificity and authority to change the selected action.\n\nEach transition can fail independently. An agent may produce an excellent summary and never save it. It may save the correction correctly and fail to retrieve it. It may retrieve the right rule alongside stronger conflicting instructions. Treating all four cases as “the agent forgot” hides the broken component.\n\n## Encoding: turn feedback into action information\n\nThe [Reflexion](https://arxiv.org/abs/2303.11366) framework provides one concrete implementation of correction encoding. In the paper, an evaluator scores an agent trajectory, a self-reflection model converts the trajectory and evaluation into verbal feedback, and that reflective text is appended to an episodic memory buffer. The actor conditions later decisions on that memory. The stored object is therefore an action-oriented account of what went wrong, rather than the raw failure signal alone.\n\nThe paper also reports evidence that this transformation can matter. In an ablation on the 50 hardest HumanEval Rust problems, test generation without the natural-language reflection step scored the same as the 60% baseline, while the complete Reflexion setup scored 68%. This is a reported result from that experiment, not a guarantee that reflection improves every agent or task. The authors explicitly note that Reflexion depends on the quality of evaluation and self-reflection and offers no formal guarantee of success.\n\nA practical correction record should identify four things:\n\n- **Trigger:** the situation in which the rule applies.\n- **Mistake:** the action or assumption that caused the failure.\n- **Replacement:** the behavior to perform instead.\n- **Check:** the observation that will show whether the replacement worked.\n\nFor example, *be more careful with APIs* leaves the next action underspecified. *When the supplied documentation does not show a method, report it as unknown and inspect the official reference before writing code* names a trigger, replacement, and observable check. This record can participate in a later decision.\n\n## Retention: preserve the encoded lesson\n\nLetta's [memory documentation](https://docs.letta.com/configuration/memory) describes MemFS as a git-backed memory filesystem that agents can inspect and edit, with memory shared across an agent's conversations. It says users can invoke `/remember` to request an update, while dreaming can use background subagents to review conversations, consolidate lessons, and update memory. These are persistence mechanisms. They do not by themselves prove that a particular correction was written correctly or will be used later.\n\nThe [Context Constitution](https://github.com/letta-ai/context-constitution) presents Letta's broader design position: agents can learn from experience by managing token-space representations in context rather than changing model weights. The document describes a git-versioned memory filesystem, multi-conversation memory, and sleep-time reflection as harness affordances. It is a vendor-authored design document and argument, not an independent experimental result.\n\nRetention should have a receipt. Inspect the stored text, its location, and its version history. If no record exists after the correction, the failure occurred before retrieval. If the record exists but describes the lesson vaguely or incorrectly, storage succeeded while encoding failed.\n\n## Retrieval: bring the lesson to the decision\n\nThe [Generative Agents](https://arxiv.org/abs/2304.03442) architecture separates a long-term memory stream from retrieval. Its retrieval model combines relevance, recency, and importance to select records for moment-to-moment behavior. Reflections synthesize higher-level inferences, and plans use retrieved material together with the current environment. In the authors' evaluation, common errors included failure to retrieve relevant memories and fabrication of embellishments.\n\nThis architecture makes [routing](https://cameron.stream/knowledge/routing-based-agent-memory) part of correction reliability. A retained correction remains behaviorally inert whenever the later decision does not receive it. Presence in a memory store and presence in an action prompt are different observable states.\n\nLog the retrieval query, selected records, and assembled decision context. When the correction is absent, inspect matching and routing. Rewriting the correction repeatedly may only produce several well-retained records that remain invisible at the critical moment.\n\n## Influence: make retrieval causally relevant\n\nRetrieval supplies candidate context. The final transition depends on whether the correction can compete with the rest of the decision context. A retrieved sentence can still lose to task instructions, examples, plans, or a more specific conflicting rule.\n\nTreat strength as an operational property: the correction is strong enough when removing it changes the action under a controlled replay. Three design choices make that test more informative:\n\n- Match the correction's scope to the action. A global warning is often less actionable than a rule tied to a recognizable trigger.\n- Place the correction where the decision procedure treats instructions as authoritative, rather than burying it inside an undifferentiated transcript.\n- Attach a verification step so the agent can distinguish compliance from another confident attempt.\n\nIf the correction appears in the assembled context and the agent still repeats the mistake, retrieval worked. The remaining suspects are instruction conflict, ambiguous encoding, or an action policy that does not respond reliably to the retrieved text.\n\n## Trace the correction through the system\n\nInstrument one correction from feedback to effect. The following trace locates the first missing transition:\n\n| Stage | Receipt to capture | Failure indicated by absence |\n| --- | --- | --- |\n| Feedback | Exact correction and the failed action it addresses | The system never received a usable correction |\n| Encoding | Structured lesson with trigger, replacement, and check | Feedback was acknowledged but not converted |\n| Retention | Stored record plus version or write receipt | The lesson existed only in the live exchange |\n| Retrieval | Query, selected records, and assembled context | The retained lesson did not reach the decision |\n| Influence | Replay with and without the correction | The lesson was present but did not alter action |\n| Effect | Executed action and verification result | The planned change did not survive execution |\n\nContext limits make this trace especially useful. Reflexion bounded its experimental memory to a small sliding window, usually one to three reflections, to fit model context limits. Letta's documentation says dreaming can run when the context window is [compacted](https://cameron.stream/knowledge/context-compaction). Together, these designs motivate a distinction between retained records and currently presented records. After a post-compaction regression, inspect the retained store and reconstructed context before diagnosing deletion.\n\n## Test later behavior\n\nA correction test should reproduce the decision, not merely search storage for the right sentence. Running the original trigger in a fresh conversation is an end-to-end behavioral probe: it exercises retention, retrieval, influence, and execution together. Inspect the stored record or write receipt to isolate retention, and inspect the selected records or assembled context to isolate retrieval. Paraphrase the trigger to probe retrieval beyond exact wording. Add a conflicting distractor to probe influence. Present a nearby exception to test whether the rule was encoded too broadly.\n\nThe useful artifact is a causal trace: correction received, lesson encoded, record retained, context retrieved, action changed, effect verified. Once those receipts exist, a repeated mistake becomes a component failure rather than a vague claim that the agent did not learn.\n\n## Sources\n\n- [Letta memory and dreaming documentation](<https://docs.letta.com/configuration/memory>)\n- [The Context Constitution](<https://github.com/letta-ai/context-constitution>)\n- [Reflexion: Language Agents with Verbal Reinforcement Learning](<https://arxiv.org/abs/2303.11366>)\n- [Generative Agents: Interactive Simulacra of Human Behavior](<https://arxiv.org/abs/2304.03442>)",
  "$type": "site.standard.content.markdown",
  "version": "1.0"
}
```

---
*Fetched from https://enoki.us-east.host.bsky.network via `com.atproto.repo.getRecord`*