Transparency benchmark¶
The transparency benchmark is a typed BaseBenchmark on the config-driven
heams run path. Each sample primes target and background memories, asks an
audit question, and evaluates whether the agent discloses stored contents,
provenance, and relevant metadata without leaking unrelated memories.
For BEAM as a memory-ability benchmark (full chats, nugget scoring, 100Kâ10M token scales), see BEAM. Transparency only reuses BEAM as an audit fixture source.
Transparency v0 stays memory-only. Scenarios use the
transparency_llm_judge evaluator. Ground truth is attached on
BenchmarkSample at materialization time.
Purpose¶
Agent memory is only useful for privacy-sensitive assistants if users can
audit what was stored. This benchmark measures whether the conversational
interface makes persistent state legible under user-initiated audit
questions. See
src/heams/evaluation/scenarios/transparency_criterion_mapping.md for the
criterion list.
Scope and eligibility¶
Transparency v0 treats the memory system as a black box. Its fixture-backed ground truth is the inventory that is expected to be stored and accessible at audit time, not merely the entries offered to the backend during priming. The benchmark has no backend-independent way to inspect the post-retention store and construct ground truth from what actually survived ingestion.
Therefore, a backend is eligible for Transparency v0 only when it retains every primed target and background entry and makes those entries available to the agent at audit time. This is a precondition for interpreting a score as memory transparency. Backends with retention gates, retention policies, capacity eviction, expiry, ingestion filtering, or other behavior that can discard or hide primed entries must be excluded unless that behavior is known not to affect the fixture.
no_memory is not a valid Transparency v0 condition: its correct behavior is to
retain nothing and report no matching memory, which does not satisfy the
benchmark's assumed stored inventory. The bundled configs still run it as a
reference floor, which shows what an agent reports when nothing is stored, so
do not read its score as a transparency result.
Within this scope, the benchmark measures whether an agent faithfully and completely reports relevant stored contents, provenance, temporal status, and the absence of matching entries without disclosing unrelated stored information. It does not measure retention quality, policy compliance during ingestion, or whether a backend faithfully retains an arbitrary incoming memory stream.
Run¶
From python_package/:
# BEAM smoke (downloads and converts two samples)
uv run --with pyarrow heams run \
--config configs/runs/testing/transparency_smoke.yaml \
--output-dir results/transparency_smoke
# Combined benchmark smoke, including the same BEAM sample
uv run --with pyarrow heams run \
--config configs/runs/smoke_test_benchmark.yaml \
--output-dir results/smoke_test_benchmark
The shipped Transparency benchmark configs (testing/, smoke_campaign/,
full_campaign/) all use a BEAM source. The standalone smoke config converts two
samples and the combined smoke one; full_campaign/transparency.yaml converts
the full configured split. JSON remains available for custom datasets, but is
not used by the shipped run configs.
Config ownership¶
| Config | Owns |
|---|---|
configs/benchmarks/*/transparency*.yaml |
BEAM split, materialization and adapter limits, audit prompt, evaluator |
configs/agents/testing/transparency_gpt4o_mini_recall_only_tool_use.yaml |
Instructions + memory_strategy: recall_only_tool_use |
configs/runs/testing/transparency_smoke.yaml |
Experiment tuples (agent + memory + benchmark) |
Benchmark code does not overlay agent/memory after resolution. Policy that
used to live in overlay_agent_and_memory now lives in the YAML files above.
Choose only a backend that meets the Scope and eligibility
precondition.
BEAM adapter limits¶
On a BEAM source, source.adapter controls how many chat turns become primed
target memories after source-id dedupe:
adapter:
default_target_source_limit: 6
extended_target_source_limit: 10
extended_target_question_types:
- contradiction_resolution
- knowledge_update
- event_ordering
materialization_limit caps how many downloaded BEAM questions are converted;
benchmark limit caps how many are executed.
Package layout¶
src/heams/benchmarks/transparency/
benchmark.py # BaseBenchmark
config.py # TransparencyBenchmarkConfig
dataset.py # JSON loading / BEAM downloading
beam.py # BEAM â Transparency sample conversion
samples.py # TransparencySample â BenchmarkSample
judge.py # TransparencyLlmJudgeConfig
report.py # summary / detail / rollup sections
Factory dispatch: create_benchmark when type: transparency.
Reporting¶
Run heams generate-report after a run for a report.md per experiment. The
optional Transparency rollup, _rollup/transparency/report.md, is not written by
any heams command; generate it from Python with write_benchmark_rollup_reports
(see
Understanding results).
It reads saved experiment_config.*.yaml + runs.jsonl only and does not
download or reload benchmark datasets.
Dataset notes¶
- BEAM source:
Mohammadta/BEAMon Hugging Face - Supported splits:
100K,500K,1M - Conversion lives in
heams.benchmarks.transparency.beam
Source and license¶
BEAM-sourced samples come from BEAM (Tavakoli et al., 2025,
arXiv:2510.27246), licensed CC BY-SA 4.0
and downloaded on first use. datasets/transparency/seed.json is our own,
released under CC BY 4.0.
See Citations & credits.