agent-memory-bench: the experience corpus
0
3 commits
2 linked in READMEs
updated Sep 1, 2026
The neutral feed for a preregistered, execution-graded benchmark of memory layers for coding agents. Every memory product under test ingests these same bytes through its own write path, then an agent is given real coding work in a real repository where success depends on something established in an earlier session, and the artifact is graded by execution: the task's tests pass or they do not.
There is no LLM judge anywhere in the primary endpoint.
The site states the design and how a product gets an arm; the repository is where every claim can be re-derived. Start at the site if you want to know what this measures, at the repository if you want to check it.
corpus/ is a set of recorded Claude Code sessions in JSON Lines, one file per session:
{"role": "user", "content": "...", "ts": "2026-07-03T14:00:00Z"}
{"role": "assistant", "content": "", "tool_name": "Bash", "tool_input": "...", "tool_result": "...", "ts": "..."}
Two kinds of session, in a deliberate ratio:
| split | what it is | count |
|---|---|---|
sessions/<task_id>/ | signal: a session in which a governing fact for that task is established | 40 |
distractors/ | mundane sessions establishing no governing fact | 156 |
Measured 2026-09-01: 196 files in corpus/manifest.json, 40 under sessions/ and 156 under
distractors/, with manifest and disk in exact agreement in both directions. Two of the 40 are
sessions/smoke/, which are bring-up wiring rather than signal, so the distractor to signal ratio
is 4.11:1 counting the 38 real signal sessions and 3.90:1 counting all 40. (corpus/README.md
is shipped in this dataset and carries both figures: 39 signal sessions and 4.00:1 as measured
2026-08-29, and a dated correction to today's counts underneath it. The corpus gained one session
between those dates, so the older figure is dated rather than wrong, and it is left standing on
purpose.)
corpus/manifest.json carries the sha256 of every file, and a session on disk but absent from the
manifest is invisible to every arm, which once made six tasks unwinnable by retrieval for weeks.
Three properties are enforced by tooling rather than promised:
scripts/audit_corpus.py asserts
presence, containment and locus. Cross-session tasks distribute one fact across several of
their own sessions, one share each, and the audit asserts that too.It does not measure the write path, and that is half of every product being tested. The corpus is bulk ingested once, before the grid, and never written to again. The agent never forms a memory from its own work, so nothing here says whether a product captures what an agent learns or whether what it captured survives to the next session. Extraction and consolidation products get no credit for the thing they sell.
It is not a leaderboard. No multi-product run has happened. Four of the eight arms the harness reserves a row for have a package docstring and no adapter, and no third-party product is named here before it has been shown its own adapter and frozen configuration and given a right of reply.
It is not clean of its recording environment. Because content is verbatim, tool results carry the recording machine's paths and usernames. Sessions recorded on a Windows development machine are pipeline-validation recordings; the corpus for the preregistered run is recorded inside the Docker harness, where paths and users are neutral by construction. See the hygiene note below.
from datasets import load_dataset
sessions = load_dataset("Gde05/agent-memory-bench-corpus", "sessions", split="train")
distractors = load_dataset("Gde05/agent-memory-bench-corpus", "distractors", split="train")
To verify integrity against the manifest, clone the GitHub repository and run
python scripts/audit_corpus.py, which asserts presence, containment and locus rather than only
checksums.
This corpus is the input to the benchmark, not its answer key. Task statements, checkers and reference solutions live in the GitHub repository and are deliberately not mirrored here, so that a model trained on this dataset gains exposure to the haystack without gaining the graded artifacts.
Nothing prevents scraping the GitHub repository as well. If you are training a model and intend
this benchmark to remain informative about your model, exclude
github.com/GiulioDER/agent-memory-bench from your crawl.
docs/STATUS.md in the repository is the dated statement of what has been measured, what has been
built and not measured, and what is blocked. It carries the command that re-derives each claim.
@misc{agentmemorybench2026,
title = {agent-memory-bench: an execution-graded benchmark of memory layers for coding agents},
author = {{GiulioDER}},
year = {2026},
howpublished = {\url{https://github.com/GiulioDER/agent-memory-bench}}
}
Apache 2.0, matching the repository.
3 commits
agent-memory-bench: the experience corpus
0
3 commits
2 linked in READMEs
updated Sep 1, 2026
The neutral feed for a preregistered, execution-graded benchmark of memory layers for coding agents. Every memory product under test ingests these same bytes through its own write path, then an agent is given real coding work in a real repository where success depends on something established in an earlier session, and the artifact is graded by execution: the task's tests pass or they do not.
There is no LLM judge anywhere in the primary endpoint.
The site states the design and how a product gets an arm; the repository is where every claim can be re-derived. Start at the site if you want to know what this measures, at the repository if you want to check it.
corpus/ is a set of recorded Claude Code sessions in JSON Lines, one file per session:
{"role": "user", "content": "...", "ts": "2026-07-03T14:00:00Z"}
{"role": "assistant", "content": "", "tool_name": "Bash", "tool_input": "...", "tool_result": "...", "ts": "..."}
Two kinds of session, in a deliberate ratio:
| split | what it is | count |
|---|---|---|
sessions/<task_id>/ | signal: a session in which a governing fact for that task is established | 40 |
distractors/ | mundane sessions establishing no governing fact | 156 |
Measured 2026-09-01: 196 files in corpus/manifest.json, 40 under sessions/ and 156 under
distractors/, with manifest and disk in exact agreement in both directions. Two of the 40 are
sessions/smoke/, which are bring-up wiring rather than signal, so the distractor to signal ratio
is 4.11:1 counting the 38 real signal sessions and 3.90:1 counting all 40. (corpus/README.md
is shipped in this dataset and carries both figures: 39 signal sessions and 4.00:1 as measured
2026-08-29, and a dated correction to today's counts underneath it. The corpus gained one session
between those dates, so the older figure is dated rather than wrong, and it is left standing on
purpose.)
corpus/manifest.json carries the sha256 of every file, and a session on disk but absent from the
manifest is invisible to every arm, which once made six tasks unwinnable by retrieval for weeks.
Three properties are enforced by tooling rather than promised:
scripts/audit_corpus.py asserts
presence, containment and locus. Cross-session tasks distribute one fact across several of
their own sessions, one share each, and the audit asserts that too.It does not measure the write path, and that is half of every product being tested. The corpus is bulk ingested once, before the grid, and never written to again. The agent never forms a memory from its own work, so nothing here says whether a product captures what an agent learns or whether what it captured survives to the next session. Extraction and consolidation products get no credit for the thing they sell.
It is not a leaderboard. No multi-product run has happened. Four of the eight arms the harness reserves a row for have a package docstring and no adapter, and no third-party product is named here before it has been shown its own adapter and frozen configuration and given a right of reply.
It is not clean of its recording environment. Because content is verbatim, tool results carry the recording machine's paths and usernames. Sessions recorded on a Windows development machine are pipeline-validation recordings; the corpus for the preregistered run is recorded inside the Docker harness, where paths and users are neutral by construction. See the hygiene note below.
from datasets import load_dataset
sessions = load_dataset("Gde05/agent-memory-bench-corpus", "sessions", split="train")
distractors = load_dataset("Gde05/agent-memory-bench-corpus", "distractors", split="train")
To verify integrity against the manifest, clone the GitHub repository and run
python scripts/audit_corpus.py, which asserts presence, containment and locus rather than only
checksums.
This corpus is the input to the benchmark, not its answer key. Task statements, checkers and reference solutions live in the GitHub repository and are deliberately not mirrored here, so that a model trained on this dataset gains exposure to the haystack without gaining the graded artifacts.
Nothing prevents scraping the GitHub repository as well. If you are training a model and intend
this benchmark to remain informative about your model, exclude
github.com/GiulioDER/agent-memory-bench from your crawl.
docs/STATUS.md in the repository is the dated statement of what has been measured, what has been
built and not measured, and what is blocked. It carries the command that re-derives each claim.
@misc{agentmemorybench2026,
title = {agent-memory-bench: an execution-graded benchmark of memory layers for coding agents},
author = {{GiulioDER}},
year = {2026},
howpublished = {\url{https://github.com/GiulioDER/agent-memory-bench}}
}
Apache 2.0, matching the repository.
3 commits