Self-Cleaning and Captured Anyway: One Measured Primitive for Error in a Store an Agent Writes to Itself, and What a Falling Score Actually Measures
Organizations: University of Macau · South China University of Technology
Abstract
"An agent that writes its conclusions into a store it later retrieves from closes a loop usually reported as one-way contamination. Taking the loop to the infinite-tenure limit against an append-only store gives a different picture: because writing never deletes, the reachable state space has a hard upper edge at (n-1)/n, so the outcome is a choice between two edges rather than a decay. At f_0 = 0.9 the interval between the two modes holds 3.6% of 220 runs where a uniform spread would put 20.6%, and is strictly empty on the first 15; the pooled mean describes 8.2% of the runs it summarises, the median 68.2%. Everything the model contributes is carried by one measured primitive with no fitted parameter, the copy function γ(φ): on 36 Wikidata facts, sign(\hatγ - γ_{crit}), with γ_{crit} = 1/k at r = 0, w = 1, predicts the direction of drift on 353 of 360 real-fact runs (39 of 40 synthetic in the same batch). Scale does not rescue the store: pooled frontier capture is 0.850, with claude-sonnet-4.5 captured on 20 of 20 seeds against our registered prediction of <0.5. What the interval tests is distinguishability rather than count: on the real facts, multi-valued runs have 6.4x its occupancy of the rest. It survives at f_0 in {0.1, 0.3, 0.5}, capture peaks at f_0 = 0.5, and of four interventions with criteria frozen first, timing dominates fraction at matched budget while a consistency gate drives every model to 0.993. The resampling unit is the seed, at a design effect of 3.75 on a pooled level: under a 44-seed control the ordering supporting claim 4 collapses from Spearman +0.98 at three seeds to +0.31-0.80 at forty-four, while claim 2's ordering is exact there (+1.00, p = 0.017). All 87 graded rows are in Appendix W, 37 of them graded withdrawn, failed, self-correcting, undecidable or an acknowledged limit, against 50 that are not."
Figures & tables
| Prior work | What it establishes | What is added here |
|---|---|---|
| Self-Confirmation Trap [ 76 ] | the closed loop named: own trajectories written to memory and reused | the outcome is bimodal rather than cumulative, and one primitive predicts which branch |
| State contamination [ 66 ] | unsafe content survives summarisation below detector thresholds | a different failure axis; no dynamics, no copy probability there |
| Admission control [ 73 ] | write-time gating on self-consistency reduces contamination | the same gate has a regime where it erases the model’s own cleaning |
| Majority aggregation traps [ 41 , 29 ] | one-shot majority over samples locks in correlated error | the write side over tenure, where the gate decouples composition from reader quality |
| Accumulate vs. replace [ 25 , 16 ] | accumulating real with synthetic data avoids collapse | a budgeted grounding event, where schedule dominates at fixed fraction |
| Exact-match and pass@ critiques | strict matching understates capability; pass k separates capability from reliability | an intervention that conserves while moving |
| world | one tracked topic: a generated entity ( Baldrix Holdings ) with a generated numeric attribute ( 68.91M ). The false value is a one-digit corruption: plausible, never equal, unreachable by guessing |
| store at | records, of them asserting the corruption, giving |
| each step | retrieve records uniformly from the topic; ask the plain question a deployed assistant would be asked; append the answer |
| prompt | never states the truth, never warns of error, so measures ordinary behaviour rather than a response to a warning |
| tenure | steps, growing the store from to records: a range in , which is what makes the term visible within one run |
| models | five, three seeds, temperature |
| outcome | per run | count |
|---|---|---|
| escaped | 0.069 0.075 0.094 0.106 0.113 0.125 0.250 0.306 | 8/15 |
| dead band | — | 0/15 |
| captured | 0.512 0.938 0.981 0.988 0.988 0.994 0.994 | 7/15 |
| largest gap in the sorted outcomes / mean gap | 6.4 | |
| model | capture rate simulated from | observed |
|---|---|---|
| gemma-3-27b | 0.12 | 0/3 |
| phi-4 | 0.48 | 1/3 |
| granite-4.1-8b | 0.62 | 1/3 |
| ministral-8b | 0.60 | 2/3 |
| qwen3-8b | 1.00 | 3/3 |
| quantity | value |
|---|---|
| difference in band occupancy, multi-valued minus two-valued | |
| unclustered standard error, and its | , |
| clusters: Wikidata facts runs each | |
| fact-level , and the design effect it implies | , |
| interval, rule of thumb | spans |
| interval, facts resampled with replacement | excludes |
| escaped, (seed ) | captured, (seed ) | |||||||
| step | write | write | ||||||
| truth | false | |||||||
| truth | false | |||||||
| false | false | |||||||
| truth | false | |||||||
| truth | false | |||||||
| model | observed | arm A | arm B | ||
|---|---|---|---|---|---|
| gemma-3-27b | |||||
| phi-4 | |||||
| granite-4.1-8b | |||||
| ministral-8b | |||||
| qwen3-8b | — | — | |||
| mean | seed units | seed units |
| model | seed | truth records | gap to ceiling | ||
|---|---|---|---|---|---|
| phi-4 | 2 | 0.9938 | 0.9938 | 1 | 0.0000 |
| qwen3-8b | 0 | 0.9938 | 0.9938 | 1 | 0.0000 |
| granite-4.1-8b | 0 | 0.9875 | 0.9938 | 2 | 0.0062 |
| ministral-8b | 1 | 0.9875 | 0.9938 | 2 | 0.0062 |
| qwen3-8b | 1 | 0.9812 | 0.9938 | 3 | 0.0125 |
| qwen3-8b | 2 | 0.9375 | 0.9938 | 10 | 0.0563 |
| model | pass@1 at | pass@8 at | share of items mixed at |
|---|---|---|---|
| google/gemma-3-27b-it | |||
| ibm-granite/granite-4.1-8b | |||
| microsoft/phi-4 | |||
| mistralai/ministral-8b-2512 | |||
| mean pass@8 pass@1 over | |||
| intervention | frozen criterion | attacks | outcome |
|---|---|---|---|
| grounding schedule | capture monotone in schedule, models; front-loading beats no grounding by | the fraction-of-verified-data rule [ 25 ] | ordering supported ; magnitude failed |
| majority admission gate | helps or is neutral at low ; harmful or no better at high ; both | write-time admission control as an unconditional safeguard [ 73 ] | supported and |
| cost-matched state slot | helps at low , ; a direction at high , same way | our own two readings of what a self-fed slot does | low supported ; high a tie |
| source marker | harmless at low ; lowers capture at high ; lowers ; each | our own registered D13 ′ | harmless supported ; the other two failed |
| front | uniform | back | ungrounded control | |
| pooled capture rate | 0.20 | 0.33 | 0.40 | 0.47 |
| front | uniform | back | spread | |
|---|---|---|---|---|
| 5 | 0.20 | 0.27 | 0.40 | 0.20 |
| 15 | 0.20 | 0.33 | 0.40 | 0.20 |
| 45 | 0.07 | 0.20 | 0.47 | 0.40 |
| arm | capture | capture | on-topic | |||
|---|---|---|---|---|---|---|
| uniform (control) | ||||||
| embed, oracle kept | ||||||
| embed, no oracle | ||||||
| embed, dedup | ||||||
| uniform | ||||||
| uniform |
| capture | |||||
|---|---|---|---|---|---|
| criterion | quantity | value | verdict |
|---|---|---|---|
| P-T1-N0(a) | matched-cell against the published panel | supported | |
| P-T1-N0(b) | on synthetic topics | supported | |
| P-T1-N1 | span of measured | supported | |
| P-T1-N2 | , bottom against top tercile | supported | |
| P-T1-N3 | synthetic against the lowest- real cell | vs | not supported |
| P-T1-N4 | threshold agreement, real against synthetic | vs | supported |
Appendix figures & tables35 assets
Supplementary material from the paper’s appendix.
Appendix
| centre | value | share described | verdict | |
|---|---|---|---|---|
| P-T1-M1 | pooled mean | supported (bar ) | ||
| P-T1-M2 | median | reported; narrows M1 | ||
| best single centre | upper bound on any one number |
| limit taken | what happens to the spread | at | regime |
|---|---|---|---|
| fixed, | back , front const. | — | finite budget, long tenure |
| fixed, | diverges like | at | ours |
| peak over at fixed | at always | height | — |
| exactly | identically , every | free re-grounding |
| in | share in the middle | |||
| seeds ( ) | ||||
| seeds ( ) | ||||
| uniform baseline for an interval of width | ||||
| P-T1-B1 ′ , frozen before the data | bar | |||
| mean | worst | ||||
| split | in-sample | out-of-sample | ratio | in | out |
| contiguous | |||||
| parity | |||||
| signed mean out of sample: and | |||||
| arm A , for scale: seed units of , worst , signed mean , under-predicts | |||||
| model | runs | calls | lost (%) | capture | |
|---|---|---|---|---|---|
| anthropic/claude-sonnet-4.5 | captured on every seed | ||||
| openai/gpt-4o | |||||
| pooled | P-T1-F1 bar : supported |
| capture | mean | median | in void | |||
|---|---|---|---|---|---|---|
| and the mean lands inside the void | ||||||
| highest capture of the four | ||||||
| the arm § G reports |
| back’s first write | capture (frozen) | (post hoc) | |||||
|---|---|---|---|---|---|---|---|
| at step | front / back | front / back | |||||
| 5 | 0.03 | 145 | 0.964 | 0.20 / 0.40 | 0.20 | 0.275 / 0.468 | 0.193 |
| 15 | 0.10 | 135 | 0.909 | 0.20 / 0.40 | 0.20 | 0.275 / 0.489 | 0.214 |
| 45 | 0.30 | 105 | 0.776 | 0.07 / 0.47 | 0.40 | 0.211 / 0.507 | 0.295 |
| 75 | 0.50 | 75 | 0.677 | 0.07 / 0.33 | 0.27 | 0.190 / 0.396 | 0.205 |
| 120 | 0.80 | 30 | 0.568 | 0.00 / 0.00 | no info | 0.213 / 0.331 | 0.117 |
| observable | spread | spread | difference | bar | verdict |
|---|---|---|---|---|---|
| failed | |||||
| capture at | supported |
| front | uniform | back | ||
|---|---|---|---|---|
| pooled capture rate | front | uniform | back | frozen criteria |
| first realisation | 0.20 | 0.27 | 0.33 | P-S1 , P-S2 ✓, P-S3 |
| second realisation (on disk) | 0.20 | 0.33 | 0.40 | P-S1 , P-S2 ✓, P-S3 |
| movement | 0 | identical |
| difference in to be resolved | |||
|---|---|---|---|
| seeds required per model | 24 | 44 | 98 |
| seeds we ran | 3, then 7 in the registered re-test | ||
| experiment | frozen at | criteria | amend. | words |
|---|---|---|---|---|
| E_A | a46631d9 , 2026-08-06 07:15 | P-A1, P-A2, P-A3 | 0 | 161 |
| E_BIMODAL2 | 2072fee0 , 2026-08-07 01:51 | P-T1-B1, P-T1-B2, P-T1-B3, P-T1-B4, P-T1-B5, P-T1-B1’, P-T1-B1” | 3 | 513 |
| E_BUDGET | a46631d9 , 2026-08-06 07:15 | P-B1, P-B2, P-B3 | 0 | 314 |
| E_F0 | 45d6f80b , 2026-08-07 16:28 | P-T1-F0 | 1 | 330 |
| E_FRONTIER | a4095483 , 2026-08-07 16:19 | P-T1-F1, P-T1-F2, P-T1-F3, P-T1-F4, P-T1-F5 | 0 | 315 |
| E_GATE | a46631d9 , 2026-08-06 07:15 | P-G1, P-G2 | 0 | 79 |
| invariant | assertions | |
|---|---|---|
| ✓ | answer labels partition | 1,114,218 |
| ✓ | api_calls >= logged steps | 7,544 |
| ✓ | bimodal2 config == converge’s n_false0=9 arm | 220 |
| ✓ | bimodal2 uses only fresh seeds (>=9) | 220 |
| ✓ | budgets matched within an R | 6 |
| ✓ | converge n_false0=9 arm is internally uniform | 15 |
| model | middle | middle share | mean | |||
|---|---|---|---|---|---|---|
| qwen3-8b | 44 | 0 | 0 | 44 | 0.000 | 0.939 |
| ministral-8b | 44 | 6 | 2 | 36 | 0.045 | 0.808 |
| phi-4 | 44 | 10 | 2 | 32 | 0.045 | 0.757 |
| granite-4.1-8b | 44 | 10 | 3 | 31 | 0.068 | 0.735 |
| gemma-3-27b | 44 | 11 | 3 | 30 | 0.068 | 0.724 |
| pooled | 220 | 37 | 10 | 173 | 0.045 | 0.792 |
| model | arm | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| gemma-3-27b-it | A | 0.00 | 0.00 | 0.03 | 0.02 | 0.03 | 0.00 | 0.00 | 0.76 | 1.00 |
| n | 92 | 102 | 76 | 44 | 32 | 31 | 25 | 29 | 19 | |
| B | 0.00 | 0.03 | 0.05 | 0.03 | 0.03 | 0.04 | 0.10 | 0.93 | 1.00 | |
| n | 351 | 469 | 392 | 244 | 183 | 142 | 126 | 827 | 3866 | |
| granite-4.1-8b | A | 0.00 | 0.00 | 0.11 | 0.14 | 0.18 | 0.30 | 0.47 | 0.84 | 1.00 |
| n | 42 | 56 | 65 | 58 | 33 | 20 | 17 | 49 | 110 |
| quantity, at seeds | design effect | clustered/naive se | at seeds | |
|---|---|---|---|---|
| level R=45 front | 0.665 | 3.66 | 1.85 | 0.084 |
| level R=75 front | 0.662 | 3.65 | 1.83 | 0.141 |
| level R=120 front | 0.639 | 3.56 | 1.80 | 0.170 |
| contrast R=45 front-back | 0.118 | 1.47 | 1.15 | 0.027 |
| contrast R=75 front-back | 0.066 | 1.26 | 0.99 | 0.081 |
| contrast R=120 front-back | 0.035 | 1.14 | 0.93 | 0.284 |
| arm | criterion | published | per seed | vs -seed control | reading | |
|---|---|---|---|---|---|---|
| E-gate | low | P-G1 low | 5/5 | 5/5/5 | — | not a count of five |
| E-gate | high | P-G1 high | 5/5 | 5/5/5 | 5/5 | not a count of five |
| E-A | low | P-A1 | 4/5 | 5/3/5 | — | seed-fragile |
| E-A | high | P-A2 worse | 1/5 | 1/1/1 | 0/5 | stable |
| E-prov | low | P-P1 | 4/5 | 5/5/4 | — | stable |
| E-prov | high | P-P2 | 2/5 | 1/0/1 | 3/5 | stable |
| model | capture, seeds | capture, seeds | , | , |
|---|---|---|---|---|
| gemma-3-27b-it | 0.00 | 0.682 | 0.150 | 0.724 |
| granite-4.1-8b | 0.33 | 0.705 | 0.444 | 0.735 |
| phi-4 | 0.33 | 0.727 | 0.408 | 0.757 |
| ministral-8b-2512 | 0.67 | 0.818 | 0.537 | 0.808 |
| qwen3-8b | 1.00 | 1.000 | 0.971 | 0.939 |
| arm | pairs | range | mean | design effect range |
|---|---|---|---|---|
| bimodal2 f0=0.9, 44 seeds | 10 | to | 2.14–4.39 | |
| transient3 front R=45, 44 seeds | 10 | to | 1.94–4.79 | |
| transient3 front R=120, 44 seeds | 10 | to | 1.73–4.95 |
| window | at seeds | at | predictor spread, | ||
|---|---|---|---|---|---|
| 0.067 | 0.450 | 0.333 0.061 | |||
| 0.067 | 0.667 | 0.400 0.068 | |||
| 0.033 | 0.400 | 0.458 0.065 | |||
| 0.033 | 0.133 | 0.500 0.080 |
| model | novel writes, median | max | capture | in dead band | |
| gemma-3-27b-it | 2 | 10 | 0.02 | 0.682 | 1/44 |
| granite-4.1-8b | 0 | 0 | 0.00 | 0.705 | 2/44 |
| ministral-8b-2512 | 0 | 0 | 0.00 | 0.818 | 2/44 |
| phi-4 | 0 | 0 | 0.00 | 0.727 | 2/44 |
| qwen3-8b | 43 | 128 | 0.33 | 1.000 | 0/44 |
| novel writes 0 | 0.795 | 6/161 | |||
| subset | in band | share | capture | distinct retrieved | ||
| f0=0.1 (the registered level, P-T1-N6) , band | ||||||
| two-valued (novel ) | 338 | 4 | 0.012 | 0.027 | 0.031 | 1.21 |
| multi-valued (novel ) | 22 | 1 | 0.045 | 0.455 | 0.389 | 2.13 |
| multi-valued (novel ) | 19 | 1 | 0.053 | 0.526 | 0.445 | 2.27 |
| within granite-4.1-8b | two-valued 1/163, multi-valued 1/17 | |||||
| within ministral-8b-2512 | two-valued 3/175, multi-valued 0/5 | |||||
| capture | in dead band | min | max | ||
|---|---|---|---|---|---|
| 0.1 | 0.000 | 0/400 | 0.150 | 0.094 | 0.225 |
| 0.3 | 0.000 | 153/400 | 0.337 | 0.231 | 0.431 |
| 0.5 | 0.723 | 111/400 | 0.528 | 0.438 | 0.625 |
| 0.7 | 1.000 | 0/400 | 0.711 | 0.588 | 0.806 |
| 0.9 | 1.000 | 0/400 | 0.901 | 0.831 | 0.956 |
| rule | capture | in dead band | ||
|---|---|---|---|---|
| 0.0 | count non-truths | 1.000 | 0/400 | 0.951 |
| 0.25 | count non-truths | 1.000 | 0/400 | 0.957 |
| 0.5 | count non-truths | 1.000 | 0/400 | 0.948 |
| 0.75 | count non-truths | 1.000 | 0/400 | 0.950 |
| 1.0 | count non-truths | 1.000 | 0/400 | 0.953 |
| 0.0 | largest block | 1.000 | 0/400 | 0.952 |
| arm | model | obs. | cells | thin | below | above | isotonic | only | bootstrap |
| A | gemma-3-27b-it | 0.682 | 9/9 | 3 | 0.081 | 0.081 | 0.081 | 0.000 | |
| granite-4.1-8b | 0.705 | 9/9 | 2 | 0.499 | 0.499 | 0.499 | 0.301 | ||
| ministral-8b-2512 | 0.818 | 9/9 | 2 | 0.545 | 0.545 | 0.549 | 0.365 | ||
| phi-4 | 0.727 | 9/9 | 4 | 0.399 | 0.399 | 0.401 | 0.000 | ||
| qwen3-8b | 1.000 | 4/9 | 2 | 1.000 | 1.000 | 1.000 | 0.665 | ||
| mean sim obs , seed units | 12.4 | 12.4 | 12.3 | 22.9 |
| store | ranker | /avail | truth in top- | sep(T,F) | oldest | purity |
|---|---|---|---|---|---|---|
| t=0 9 false / 1 true | bm25 | 1/2 | no | 0.0000 | yes | 1.00 |
| char3 | 1/2 | no | 0.0000 | yes | 1.00 | |
| minilm | 2/2 | yes | 0.0052 | no | 1.00 | |
| t=70 captured, 79/1 | bm25 | 1/2 | no | 0.0000 | yes | 1.00 |
| char3 | 1/2 | no | 0.0000 | yes | 1.00 | |
| minilm | 2/2 | yes | 0.0052 | no | 1.00 |
| planted max/min | largest block, first | distinct, first | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cell | median | max | ||||||||||
| near | 1.46 | 6.85 | 3.00 | 3.14 | 3.26 | 3.50 | 5.08 | 3.75 | 3.85 | 3.81 | 3.73 | 2.65 |
| far | 100.01 | 100.16 | 3.00 | 3.14 | 3.21 | 3.50 | 5.54 | 3.75 | 3.80 | 3.82 | 3.73 | 2.57 |
| cell | share in the band | capture | ||
|---|---|---|---|---|
| near | 100 | 0.030 | 0.870 | 0.849 |
| far | 100 | 0.000 | 0.970 | 0.924 |
| sem | 100 | 0.010 | 0.070 | 0.129 |
| bimodal2 ( ) | 220 | 0.032 | — | — |
| experiment | runs | models | logged steps |
|---|---|---|---|
| bimodal2 | 220 | 5 | 33,000 |
| budget | 90 | 5 | 13,461 |
| cl_n10 | 9 | 3 | 270 |
| cl_n20 | 9 | 3 | 540 |
| cl_n40 | 9 | 3 | 1,080 |
| cl_n80 | 9 | 3 | 2,160 |
| grade | rows | what the grade means in this paper |
|---|---|---|
| withdrawn / superseded | asserted, then taken back or re-assigned; the sequence is in the post-mortems | |
| not supported / failed | a frozen criterion was missed, on our own data | |
| self-correction | our own arithmetic or our own criterion was wrong and is repaired here | |
| not decidable / not evaluable | the apparatus or the band cannot separate the outcomes: not a null | |
| acknowledged limit | a boundary of the result, stated where the result is | |
| formal | proved from the definitions; no measurement can move it |
| Claim | Status | Evidence |
|---|---|---|
| 1. Outcome distribution bimodal, not a decaying mean | measured ; below: 2 not supported, 1 withdrawn | split; gap mean gap |
| 2. alone orders capture rate, zero fitted parameters | measured , ordinal; below: 1 not supported, 1 withdrawn | at three seeds; , at forty-four |
| 3. The outcome is decided in the first few steps | measured ; below: 1 withdrawn | at of |
| 4. Early copy rate orders capture rate | not supported at forty-four seeds; measured as published | / at three seeds, to at forty-four, |
| 5. The mean-field sign criterion locates the boundary | measured falsification of our own | drift down, capture anyway |
| 6. Score : contamination costs determinism, not information | measured | pass@8 pass@1 |
| Claim | Status | Evidence |
|---|---|---|
| The 63 rows below were moved here from Table 47 by the rule in papers/split_claims.py : a lettered sub-row whose status is supportive moves; every top-level claim and every row carrying a withdrawal, failure or self-correction stays. Nothing is dropped. | ||
| 1a. The interval survives a sample, sparse rather than empty | measured at | P-T1-B1 ′ : vs bar , uniform ; P-T1-B2 gap |
| 1b. The balance between the modes | withdrawn | becomes |
LLM Agent Memory
Large language model agent memory lets agents retain, organize, retrieve, and update information across interactions and long-running tasks.
See all 376 papers