Dude, Where's My State? Execution Information Requirements for Stateful Agents
Abstract
Long-running agents must preserve information that later steps depend on. We introduce the Execution Information Requirement (EIR), a lower bound on the information that must remain accessible for correct completion under specified task and access conditions. We develop LACUNA, a framework that generates tasks with known dependencies and varies information demand, retention, and recovery separately from the difficulty of individual operations. Across four models, restoring a missing result raises accuracy on affected recall steps to 100%, compared with 0% for equal-length irrelevant information. Sufficient storage alone does not ensure success: retention policies can discard required results, errors can propagate through later computations, and agents can stop before recovery is complete. We also introduce VESTIGE, which uses agent execution traces to construct semantic graphs and measure information demand for real tasks. Across 72,562 software-agent trajectories, VESTIGE reveals a steeper distance-related decline in solution-relevant rereading for failed runs (RR 0.951 per distance doubling), while adjusted peak demand alone is not associated with failure. Together, these contributions support evaluating whether agents preserve and recover the information their tasks require.
Figures & tables
Appendix figures & tables27 assets
Supplementary material from the paper’s appendix.
Appendix
| Paper name | Recorded provider identifier | Decoding |
|---|---|---|
| GPT-5.6 Reasoning | dev-gpt-56-reasoning | provider default † |
| Claude Opus 4.6 | dev-anthropic-claude-opus-4-6 | temperature 0 |
| Claude Haiku 4.5 | dev-anthropic-claude-haiku-4-5 | temperature 0 |
| GPT-4.1 Mini | dev-gpt-41-mini-04-14 | temperature 0 |
| Study | Workloads and graph settings | Capacity, recovery, and policies | Models/seeds | Registered count |
|---|---|---|---|---|
| Capability control | Five families; ; ; except Running Maximum chain | Full information, ; no-tool primary plus deterministic-calculator control | Four models; seeds 1–3 | 180 primary; 72 tool-control |
| No-recomputation pressure | Store–Recall at ; Stepwise Sum, Maximum, and Top- at ; | Store–Recall for and for ; other families ; recovery prohibited | Four models for Store–Recall; three capability-eligible models otherwise; seeds 1–3 | 252 |
| Store–Recall restoration | Store–Recall, , , | No injection, exact missing result, or equal-length irrelevant result; recovery otherwise prohibited | Four models; seeds 1–3 | 12 trajectories per arm |
| Stepwise Maximum restoration | Random-DAG maximum, , , , | Control, exact unavailable operands, or length-matched sham | Four models; seeds 1–3 | 12 trajectories per arm |
| Recovery geometry | Sum DAG, , , ; nodes | Atomic retrieval versus memoized and naive recursive recomputation | Deterministic; seeds 1–3 | 99 cones/topology |
| Model recovery probes | Stepwise Sum, Maximum, and Top- recovery cones | Model selects reads; harness performs arithmetic; charged reads compared with oracle minimum | Evaluated model panel | 88 probes |
| Channel checked | Checks | Findings |
|---|---|---|
| Payload width | 7,777 | 0 |
| Identifier set | 1,752 | 0 |
| Occupancy | 1,752 | 0 |
| Ordering | 1,752 | 0 |
| JSON determinism | 1,752 | 0 |
| Message length at saturation | 1,531 | 0 |
| Model | Stepwise Sum | Store–Recall | Running Max. | Stepwise Max. | Stepwise Top- |
|---|---|---|---|---|---|
| Gpt56Reasoning | 1.000 | 1.000 | 1.000 | 1.000 | 0.908 |
| ClaudeOpus46 | 1.000 | 1.000 | 0.998 | 1.000 | 0.918 |
| ClaudeHaiku45 | 1.000 | 1.000 | 1.000 | 1.000 | 0.754 |
| Gpt41Mini | 0.040 | 1.000 | 0.474 | 0.547 | 0.221 |
| retained | Store–Recall | Stepwise Sum | Stepwise Maximum | Stepwise Top- | |
|---|---|---|---|---|---|
| 16 | 1.00 | ||||
| 12 | 1.33 | ||||
| 8 | 2.00 | ||||
| 4 | 4.00 |
| (operational) | Query accuracy | |
|---|---|---|
| 16 | 1.00 | 0.997 |
| 14 | 1.14 | 0.865 |
| 12 | 1.33 | 0.781 |
| 10 | 1.60 | 0.675 |
| 8 | 2.00 | 0.498 |
| 6 | 2.67 | 0.382 |
| Model | No injection | Exact restoration | Matched sham | |
|---|---|---|---|---|
| Gpt56Reasoning | 0.137 | 1.000 | 0.000 | |
| ClaudeOpus46 | 0.176 | 1.000 | 0.000 | |
| ClaudeHaiku45 | 0.000 | 1.000 | 0.000 | |
| Gpt41Mini | 0.140 | 1.000 | 0.000 | |
| Mean | 0.113 | 1.000 | 0.000 |
| Model | Control | Sham | Exact |
|---|---|---|---|
| Claude Haiku 4.5 | 0.641 | 0.714 | 1.000 |
| Claude Opus 4.6 | 0.641 | 0.714 | 1.000 |
| GPT-5.6 | 0.646 | 0.714 | 1.000 |
| Pooled mean | 0.642 | 0.714 | 1.000 |
| Topology | Atomic | Memoized recompute | Naive recompute | Memoization speedup | Depth |
|---|---|---|---|---|---|
| Chain ( ) | 1 | 13.0 | 13.0 | ||
| Balanced ( ) | 1 | 38.5 | 19.5 | ||
| Bushy ( ) | 1 | 45.3 | 30.3 |
| Model | Success rate | Read overhead (successes; optimal) | Redundant rereads | Off-cone reads | Early stops |
|---|---|---|---|---|---|
| Gpt56Reasoning | 100% | 1.000 | 0 | 0 | 0 |
| ClaudeOpus46 | 100% | 1.000 | 0 | 0 | 0 |
| ClaudeHaiku45 | 100% | 1.000 | 0 | 0 | 0 |
| Gpt41Mini | 50% | 1.000 | 0 | 1 | 2 |
| Workload | Successful | Premature | Total |
|---|---|---|---|
| Stepwise Sum | 32 | 8 | 40 |
| Stepwise Maximum | 18 | 6 | 24 |
| Stepwise Top- | 19 | 5 | 24 |
| Total | 69 | 19 | 88 |
| Model | Architecture | Scored | Accuracy | JIT rate |
|---|---|---|---|---|
| GPT-5.6 | No-recovery floor | 6/6 | 0.755 | – |
| Scratch | 6/6 | 0.315 | 1.000 | |
| LRU | 6/6 | 0.224 | 1.000 | |
| Scratch–LRU | 6/6 | 0.089 | 1.000 | |
| Claude Opus 4.6 | No-recovery floor | 6/6 | 0.804 | – |
| Scratch | 6/6 | 0.274 | 0.963 |
| Policy | End-to-end accuracy | Self-consistent accuracy | Missing-reference steps | |
|---|---|---|---|---|
| Exact window | 16 | |||
| LRU | 16 | |||
| LRU | 20 | |||
| LRU | 32 | |||
| LRU + correct restoration | 16 | |||
| LRU + sham restoration | 16 |
| Workload | Pressure | FIFO | LRU | Theory-informed | Belady | LRU gap closed |
|---|---|---|---|---|---|---|
| Stepwise Sum | 1.33 | 0.381 | 0.397 | 0.381 | 0.000 | -0.04 |
| 2.00 | 0.640 | 0.619 | 0.640 | 0.206 | +0.05 | |
| 4.00 | 0.857 | 0.857 | 0.857 | 0.566 | +0.00 | |
| Store–Recall | 1.33 | 0.292 | 0.219 | 0.000 | 0.000 | +0.25 |
| 2.00 | 0.490 | 0.417 | 0.000 | 0.000 | +0.15 | |
| 4.00 | 0.719 | 0.677 | 0.490 | 0.073 | +0.06 |
| Workload | Architecture | Scored | Accuracy | Max-turn |
|---|---|---|---|---|
| Store–Recall | Forced paging (unbounded) | 24/24 | 1.000 | 0 |
| Mem0 | 24/24 | 0.996 | 0 | |
| A-MEM | 24/24 | 0.959 | 0 | |
| Graphiti | 24/24 | 1.000 | 0 | |
| FIFO | 24/24 | 0.811 | 0 | |
| Letta | 24/24 | 0.370 | 0 |
| Workload | Architecture | Scored | Accuracy | Max-turn |
|---|---|---|---|---|
| Stepwise Sum | A-MEM | 24/24 | 0.436 | 0 |
| Graphiti | 24/24 | 0.767 | 0 | |
| Letta | 24/24 | 0.370 | 0 | |
| Mem0 | 24/24 | 0.367 | 0 | |
| Stepwise Maximum | A-MEM | 24/24 | 0.942 | 0 |
| Graphiti | 24/24 | 0.934 | 0 |
| Cohort | Runs | Goal access | Mean peak demand | Failure AUC |
|---|---|---|---|---|
| Verified | 4,988 | 92.0% | 9,001 | .541 |
| CoderForge | 500 | 99.0% | 73,135 | .440 |
| OpenHands/Qwen3 | 67,074 | 57.4% | 4,460 | .527 |
| Benchmark | State entity | Goal or anchor |
|---|---|---|
| SWE-bench / SWE-rebench | versioned file | independent reference-patch file |
| -Bench | typed database entity | reference task state |
| Terminal-Bench 2.0 | versioned shell path | realized trace only |
| Test | Estimate | 95% CI | |
|---|---|---|---|
| Failed distance | RR 1.02 | [0.99, 1.05] | 0.174 |
| Failed needed distance | RR 0.951 | [0.911, 0.992] | 0.020 |
| Fair-clock needed-file gap, per doubling | OR 1.18 | [0.985, 1.43] | — |