You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Record recurring task failures as structured negative knowledge that carries three things Experience does not have today:
a machine-matchable trigger signature, so that a recurrence of the same failure can be recognized at recall time instead of being re-learned as a fresh lesson;
a repair-routing attribution, naming which layer of the harness the fix must touch, so the response is "patch the broken layer" rather than "write another lesson";
an avoided-recurrence ledger, so an entry that keeps being recalled but never actually helps becomes visible for Review instead of persisting silently forever.
PowerContext covers the positive case well: ExperienceContent captures reusable judgment as situation / action / outcome / lesson. What is missing is the negative counterpart with a stable identity: there is currently no way to express "this failure has happened before, here is how to recognize it, here is which layer is broken, and here is the evidence that we stopped making it".
Problem and proposed solution
Research basis
Zhaochen Yu, Yingcheng Wu, Zhenfei Yin, Kaiyuan Chen, Zhe Zhao, Mengdi Wang, Shuicheng Yan, and Ling Yang. Recursive Experiential-Working Memory Evolution for Long-Horizon Agent Harnesses (Recuris), arXiv:2608.24876v1, August 25, 2026.
Recuris models the harness memory-control layer as a four-component tuple M_k = (E_k, W_k, rho_k, C_k) and defines that tuple as the patch space: failures are localized onto components, not merely summarized.
Component
Definition in the paper (Sections 2.1.1, 2.3.1)
Failure localized to it means
E Experiential Memory
stores reusable skills in the agent-skill format
missing or flawed skill
W Working-Memory Specification
defines the state schema and update proposal for its task-specific instance
omitted goal, unsuitable state field, or incorrect state-update proposal
rho Invocation Policy
decides at which execution events skills are retrieved and which entries enter the context
missed, late, or irrelevant skill invocation
C Checker Set
tests whether observations support proposed state changes
a supported transition was rejected, or an unsupported transition was accepted
Two properties are worth carrying over directly:
Attribution is a repair decision, not a causal claim. The paper states: "This is a repair decision rather than a claim of causal identification... Recuris attributes each diagnosed failure to the component on which a localized intervention is most likely to help." That framing is compatible with PowerContext's evidence discipline, and is the opposite of writing a confident but unfalsifiable lesson.
Admission is validation-gated and bounded (Section 2.3.3). A candidate patch is accepted only when it repairs the target failure and satisfies a preset regression criterion evaluated on the failed task plus a held-out development set of anchor tasks the current memory already solves. Test tasks, trajectories, and scores never enter localization, patch generation, or admission. The base model, Meta-Agent, localization/patching procedures, and the gate itself stay fixed.
Reported results, not reproduced PowerContext results. The authors report +17.8 points on tau-bench for GPT-5.6 Sol and +15.6 for Claude Opus 5 (to 87.9%), +16.6/+13.5 on SkillFlow for Qwen3.6-27B/35B, +32.2 points on the longest tasks, and up to 80% fewer common long-horizon failures across four benchmarks and ten models. These are author-reported single-paper numbers.
Known limits of the paper, which bound what we should copy. Recuris has no per-failure recurrence counter. It measures reuse and avoidance through aggregate proxies only: Reach (share of held-out tasks where the memory was invoked at least once), held-out success gains, and the dev-set regression rate (e.g. gated updates broke 4 of 42 dev tasks the base already solved). It also targets skill/memory patches admitted against a held-out dev set, which is a stronger validation budget than a per-turn production recall loop can assume.
Reference implementation
claw-mem v7.6.0 (Apache-2.0, small community project) operationalizes the E-adjacent diagnosis into a per-item "Error Pattern Card". Its card format is a useful concrete starting point:
src/types.ts — RootCauseCategory = "skill-defect" | "state-defect" | "invocation-timing" | "transition-judgment", whose doc comment states the semantics are mapped from Recuris E/W/rho/C onto "the layer the fix must touch"; and ErrorSignature { trigger, symptom } (when to recall the card, and how the error looks).
Card fields: stable semantic id cardId (epc:<trigger>, so re-storing the same id is an edit rather than a new entry), errorSignature, rootCauseCategory, resolution (minimum 20 characters), optional verification, server-owned effectiveness, provenance. A near-duplicate trigger (normalized bigram overlap, threshold 0.8) only suggests editing the existing card; it does not hard-reject.
Effectiveness ledger: per-card hitCount / avoidedCount / lastHitAt; 5 consecutive non-avoided hits move the card to inactive, and the first avoided hit revives it. Every rejection and warning is appended to an append-only audit file.
Two honest caveats about using it as a source: its README claims 100% on LoCoMo, ConvoMem, and LongMemEval simultaneously and a "subagent memory merge" that does not exist in its source, so its published numbers should not be treated as a baseline. The card format and constants above are verifiable in code, and those are the only parts cited here.
Existing foundations and precise gaps
Code references are pinned to source master at c2016666, inspected on September 10, 2026.
Free text is not a match key. Two encounters with the same failure cannot be reliably recognized as the same failure, so recurrence cannot be counted and a "lesson" cannot be falsified.
Candidate Review validates evidence, content, and revision consistency before committing.
Review validates before publication. Nothing observes after publication whether the recorded knowledge did anything.
#1508 connects recurring Task Outcomes to an existing Experience and evaluates a proposed Skill revision under a paired comparison.
#1508 consolidates failures into Experience and gates Skill revisions. It does not type the failure against a repair space, and does not track per-entry avoided recurrence in production.
Dream decides which artifact to propose. It assumes the input concept already exists; there is no negative-knowledge type with a trigger identity to consolidate in the first place.
#1422 defines the governed evaluation loop with validation_status independent of Candidate review.
The loop has no named outcome category for "a previously recorded failure did not recur". That is the metric this feature needs to be evaluated by.
Provenance is already stronger than the reference implementation's. The gap is only the negative-knowledge concept and its ledger, not evidence plumbing.
A search of master for recurrence, effectiveness, and avoided returns no matching concept in source, so this is not partially implemented under another name.
Proposed design direction
1. A trigger signature as the identity, not free text. Store a structured error_signature (trigger: when the entry should be recalled; symptom: the observable shape of the error) alongside the entry. This is the only field that makes recurrence detectable, and therefore the only field that makes an avoided-recurrence ledger possible. Following the reference implementation, the signature should be the entry's stable match key so that re-recording the same failure edits the entry rather than duplicating it.
2. Repair-routing attribution, mapped onto PowerContext's actual control layer. Do not copy the four enum names. Map the paper's patch space onto the surfaces PowerContext would actually patch:
Recuris component
PowerContext surface the fix must touch
E Experiential Memory
Memory entry text, ExperienceContent, or a Skill package
W Working-Memory Specification
Handoff objective / state[] / next_action, or the Task Outcome fields being recorded
rho Invocation Policy
Scope recall configuration, how the prepare query is constructed, assembly.sections selection
C Checker Set
Handoff disposition / acceptance criteria, or a verification instruction attached to Experience or a Handoff
The point of the enum is to route the repair, and to make "the card is right but recall never fires it" a distinct, expressible diagnosis (rho) rather than an invisible bug. Attribution should stay a human Review decision; it should not be inferred automatically and then treated as fact.
3. An avoided-recurrence ledger, with Review-gated degradation instead of automatic deactivation. When an entry is selected into prepared context, record the selection. When a later Task Outcome carries the same trigger signature, record whether the failure recurred. That gives selected / avoided / recurred per entry.
This is the one place where the reference implementation must not be copied literally: claw-mem deactivates a card automatically after 5 non-avoided hits. PowerContext's immutable revisions and the boundary recorded in RFC 0051 ("no automatic decay, importance, or retirement in the first release") make automatic deactivation unacceptable. The equivalent behavior should be: a low-yield entry is marked as needing review and surfaced through the existing Candidate Review path, where a human decides whether to revise or retire it through explicit revision. Revival on first avoidance can be retained, since it only moves an entry back into normal recall.
4. A write-time structural validation gate with an append-only record. Minimum required fields, a minimum-resolution-length rule, and a confidence floor below which the entry is dropped rather than stored ("missing is better than wrong"). Near-duplicate triggers should suggest editing the existing entry rather than silently creating a near-twin. Every rejection and warning should be persisted append-only, which fits PowerContext's Source/Observation model directly.
5. One new metric for the evaluation loop. An "avoided recurrence" outcome category, consumed by the protocol in #1422. Without it, this feature cannot be evaluated, and the ledger has no purpose. Note the paper's own honest limitation here: it does not have this counter either, so PowerContext would be going past the published baseline rather than reproducing it.
Explicit non-goals for a first scope. No automatic attribution inference. No automatic retirement or decay. No model calls added to prepare (the constraint already recorded in RFC 1489 applies). No cross-Scope learning.
Open questions
Where should this live? Three options, with different costs:
extend ExperienceContent with optional error_signature / attribution fields — cheapest, but mixes positive and negative knowledge in one content shape and still leaves the ledger homeless;
keep it in Memory under a reserved kind — also cheap, but the match key and counters are not MemoryEntryVersion fields, so the schema grows anyway, and Memory's admission rules are written around statements that change future judgment rather than around recognizable failures;
a new Artifact family — cleanest for a stable match key plus a ledger, and consistent with how Experience and Skill were separated, but it carries API, review, Dashboard, and documentation cost.
A fourth option may be the sharpest: split the two concepts the reference implementation conflates. A rejected approach or an API pitfall is decision knowledge and has no need for a ledger; only a recurring failure needs a match key and an avoided-recurrence counter. The first might belong in Memory or an Experience applicability note, the second in its own type.
When is the ledger written? Writing on every prepare adds a mutation to a read path. Writing only from Task Outcome linkage is later and sparser but keeps prepare read-only.
Does attribution belong in the artifact or in a Review annotation? Putting it in the artifact makes it durable and queryable; putting it in Review keeps the artifact immutable and the judgment auditable.
How does this interact with feat: consolidate Experience and evaluate Skill revisions (WikiSkill) #1508? Should an entry with an E-class attribution feed Skill revision proposals, and should a rho-class attribution feed recall-policy evaluation instead? If yes, the attribution enum becomes the routing key between two different downstream loops.
Alternatives considered
Rely on feat: consolidate Experience and evaluate Skill revisions (WikiSkill) #1508 consolidation alone. It genuinely covers recurring failures becoming Experience, and it is a prerequisite-level capability rather than a duplicate. But it has no match key, so recurrence stays uncountable; no repair typing, so "the recall policy is broken" can only be written as prose; and no per-entry yield signal after publication.
Adopt the reference implementation's card format as-is. Rejected: its automatic deactivation after 5 non-avoided hits contradicts RFC 0051 and the immutable-revision model.
Rules-based extraction of the same three classes from a free-text history. This is a related pattern in the same ecosystem (protected-zone extraction of confirmed facts, rejected approaches, and API pitfalls, with a confidence floor and mandatory provenance). It is attractive for provenance discipline but it is extraction from a transcript, not an identity and ledger for a known failure, so it solves a different problem. The one rule worth borrowing is the confidence floor.
This is not a duplicate of #1508, #1509/#1510, or #1422. The delta is narrow and specific: a negative-knowledge identity (trigger signature) plus a repair-routing attribution plus a per-entry avoided-recurrence ledger, all gated by the existing Review path. If maintainers judge that #1508's Experience consolidation should absorb the identity, or that #1422 should own the ledger as a generic per-artifact outcome signal, that is a better outcome than a new family, and I would rather reframe this issue than add a parallel concept.
If the direction is accepted, I am ready to open a pull request with a bilingual RFC under docs/en/rfcs/ and docs/zh/rfcs/, plus the corresponding website documentation.
Contribution
I am willing to contribute the bilingual RFC, documentation, and implementation.
Feature description
Record recurring task failures as structured negative knowledge that carries three things
Experiencedoes not have today:PowerContext covers the positive case well:
ExperienceContentcaptures reusable judgment assituation/action/outcome/lesson. What is missing is the negative counterpart with a stable identity: there is currently no way to express "this failure has happened before, here is how to recognize it, here is which layer is broken, and here is the evidence that we stopped making it".Problem and proposed solution
Research basis
Zhaochen Yu, Yingcheng Wu, Zhenfei Yin, Kaiyuan Chen, Zhe Zhao, Mengdi Wang, Shuicheng Yan, and Ling Yang. Recursive Experiential-Working Memory Evolution for Long-Horizon Agent Harnesses (Recuris), arXiv:2608.24876v1, August 25, 2026.
Recuris models the harness memory-control layer as a four-component tuple
M_k = (E_k, W_k, rho_k, C_k)and defines that tuple as the patch space: failures are localized onto components, not merely summarized.EExperiential MemoryWWorking-Memory SpecificationrhoInvocation PolicyCChecker SetTwo properties are worth carrying over directly:
Reported results, not reproduced PowerContext results. The authors report +17.8 points on tau-bench for GPT-5.6 Sol and +15.6 for Claude Opus 5 (to 87.9%), +16.6/+13.5 on SkillFlow for Qwen3.6-27B/35B, +32.2 points on the longest tasks, and up to 80% fewer common long-horizon failures across four benchmarks and ten models. These are author-reported single-paper numbers.
Known limits of the paper, which bound what we should copy. Recuris has no per-failure recurrence counter. It measures reuse and avoidance through aggregate proxies only: Reach (share of held-out tasks where the memory was invoked at least once), held-out success gains, and the dev-set regression rate (e.g. gated updates broke 4 of 42 dev tasks the base already solved). It also targets skill/memory patches admitted against a held-out dev set, which is a stronger validation budget than a per-turn production recall loop can assume.
Reference implementation
claw-mem v7.6.0 (Apache-2.0, small community project) operationalizes the
E-adjacent diagnosis into a per-item "Error Pattern Card". Its card format is a useful concrete starting point:src/types.ts—RootCauseCategory = "skill-defect" | "state-defect" | "invocation-timing" | "transition-judgment", whose doc comment states the semantics are mapped from RecurisE/W/rho/Conto "the layer the fix must touch"; andErrorSignature { trigger, symptom }(when to recall the card, and how the error looks).cardId(epc:<trigger>, so re-storing the same id is an edit rather than a new entry),errorSignature,rootCauseCategory,resolution(minimum 20 characters), optionalverification, server-ownedeffectiveness,provenance. A near-duplicate trigger (normalized bigram overlap, threshold 0.8) only suggests editing the existing card; it does not hard-reject.hitCount/avoidedCount/lastHitAt; 5 consecutive non-avoided hits move the card toinactive, and the first avoided hit revives it. Every rejection and warning is appended to an append-only audit file.Two honest caveats about using it as a source: its README claims 100% on LoCoMo, ConvoMem, and LongMemEval simultaneously and a "subagent memory merge" that does not exist in its source, so its published numbers should not be treated as a baseline. The card format and constants above are verifiable in code, and those are the only parts cited here.
Existing foundations and precise gaps
Code references are pinned to source
masteratc2016666, inspected on September 10, 2026.ExperienceContentholdssituation/action/outcome/lesson, all free text.validation_statusindependent of Candidate review.builtin/work/models.py) and keyed Sources carry exact provenance.A search of
masterforrecurrence,effectiveness, andavoidedreturns no matching concept in source, so this is not partially implemented under another name.Proposed design direction
1. A trigger signature as the identity, not free text. Store a structured
error_signature(trigger: when the entry should be recalled;symptom: the observable shape of the error) alongside the entry. This is the only field that makes recurrence detectable, and therefore the only field that makes an avoided-recurrence ledger possible. Following the reference implementation, the signature should be the entry's stable match key so that re-recording the same failure edits the entry rather than duplicating it.2. Repair-routing attribution, mapped onto PowerContext's actual control layer. Do not copy the four enum names. Map the paper's patch space onto the surfaces PowerContext would actually patch:
EExperiential MemoryExperienceContent, or a Skill packageWWorking-Memory Specificationobjective/state[]/next_action, or the Task Outcome fields being recordedrhoInvocation Policypreparequery is constructed,assembly.sectionsselectionCChecker Setdisposition/ acceptance criteria, or a verification instruction attached to Experience or a HandoffThe point of the enum is to route the repair, and to make "the card is right but recall never fires it" a distinct, expressible diagnosis (
rho) rather than an invisible bug. Attribution should stay a human Review decision; it should not be inferred automatically and then treated as fact.3. An avoided-recurrence ledger, with Review-gated degradation instead of automatic deactivation. When an entry is selected into prepared context, record the selection. When a later Task Outcome carries the same trigger signature, record whether the failure recurred. That gives
selected/avoided/recurredper entry.This is the one place where the reference implementation must not be copied literally: claw-mem deactivates a card automatically after 5 non-avoided hits. PowerContext's immutable revisions and the boundary recorded in RFC 0051 ("no automatic decay, importance, or retirement in the first release") make automatic deactivation unacceptable. The equivalent behavior should be: a low-yield entry is marked as needing review and surfaced through the existing Candidate Review path, where a human decides whether to revise or retire it through explicit revision. Revival on first avoidance can be retained, since it only moves an entry back into normal recall.
4. A write-time structural validation gate with an append-only record. Minimum required fields, a minimum-resolution-length rule, and a confidence floor below which the entry is dropped rather than stored ("missing is better than wrong"). Near-duplicate triggers should suggest editing the existing entry rather than silently creating a near-twin. Every rejection and warning should be persisted append-only, which fits PowerContext's Source/Observation model directly.
5. One new metric for the evaluation loop. An "avoided recurrence" outcome category, consumed by the protocol in #1422. Without it, this feature cannot be evaluated, and the ledger has no purpose. Note the paper's own honest limitation here: it does not have this counter either, so PowerContext would be going past the published baseline rather than reproducing it.
Explicit non-goals for a first scope. No automatic attribution inference. No automatic retirement or decay. No model calls added to
prepare(the constraint already recorded in RFC 1489 applies). No cross-Scope learning.Open questions
Where should this live? Three options, with different costs:
ExperienceContentwith optionalerror_signature/attributionfields — cheapest, but mixes positive and negative knowledge in one content shape and still leaves the ledger homeless;kind— also cheap, but the match key and counters are notMemoryEntryVersionfields, so the schema grows anyway, and Memory's admission rules are written around statements that change future judgment rather than around recognizable failures;A fourth option may be the sharpest: split the two concepts the reference implementation conflates. A rejected approach or an API pitfall is decision knowledge and has no need for a ledger; only a recurring failure needs a match key and an avoided-recurrence counter. The first might belong in Memory or an Experience applicability note, the second in its own type.
When is the ledger written? Writing on every
prepareadds a mutation to a read path. Writing only from Task Outcome linkage is later and sparser but keepsprepareread-only.Does attribution belong in the artifact or in a Review annotation? Putting it in the artifact makes it durable and queryable; putting it in Review keeps the artifact immutable and the judgment auditable.
How does this interact with feat: consolidate Experience and evaluate Skill revisions (WikiSkill) #1508? Should an entry with an
E-class attribution feed Skill revision proposals, and should arho-class attribution feed recall-policy evaluation instead? If yes, the attribution enum becomes the routing key between two different downstream loops.Alternatives considered
Relationship to existing work
This is not a duplicate of #1508, #1509/#1510, or #1422. The delta is narrow and specific: a negative-knowledge identity (trigger signature) plus a repair-routing attribution plus a per-entry avoided-recurrence ledger, all gated by the existing Review path. If maintainers judge that #1508's Experience consolidation should absorb the identity, or that #1422 should own the ledger as a generic per-artifact outcome signal, that is a better outcome than a new family, and I would rather reframe this issue than add a parallel concept.
If the direction is accepted, I am ready to open a pull request with a bilingual RFC under
docs/en/rfcs/anddocs/zh/rfcs/, plus the corresponding website documentation.Contribution