ScoreCrux

Context-Dependence Benchmark

Context

How much does an agent task depend on carried context — and how well does your memory/context backend supply it? Fingerprint any backend across sections by knowledge type, with published negative controls, a /100 composite, and a first-class context-token bill. Backend-agnostic: bring your own backend and your own model.

Context Dependence

Leaderboard

The /100 composite

Summed over the scored sections (S2–S6, 20 probes each), the S1 leak-gate excluded. The point is the fingerprint below, not one number — but this is the at-a-glance summary per backend, with the token bill it cost to supply the context.

BackendModelScoreContext tokens$ costcorrect / 1k-ctxProvenanceDriftAttribution
oraclesynthetic100/10020/2020/20self_reported
compactionclaude-sonnet-597/100920$4.3070105.4350/2020/20self_reported
vendor-nativeclaude-sonnet-597/1008428$4.470611.5090/2020/20self_reported
rag-bm25claude-sonnet-596/1001139$4.438484.2840/2020/20self_reported
sqlite-ftsclaude-sonnet-596/1001142$4.533584.0632/2020/20self_reported
cruxclaude-sonnet-595/1001263$4.088475.21820/2020/20self_reported
rag-bm25claude-haiku-4-520/20145$0.3267137.9316/205/20self_reported
sqlite-ftsclaude-haiku-4-520/20146$0.2561136.9868/2010/20self_reported
vendor-nativeclaude-haiku-4-520/20239$0.180483.6825/2020/20self_reported
cruxclaude-haiku-4-520/20265$0.130075.47220/2020/20self_reported
cruxclaude-sonnet-4-615/15$0.7102self_reported
vendor-nativeclaude-sonnet-4-615/15$0.8016self_reported
vendor-nativehaiku10/12self_reported
compactionclaude-haiku-4-510/20124$0.175280.6450/2020/20self_reported
cruxhaiku9/12self_reported
cruxsonnet9/9self_reported
vendor-nativesonnet9/9self_reported
noneclaude-haiku-4-55/20$0.79075/200/20self_reported
noneclaude-sonnet-4-62/15$1.2816self_reported
noneclaude-sonnet-50/100$5.48900/200/20self_reported
randomsynthetic0/1000/200/20self_reported
nonehaiku0/12self_reported
nonesonnet0/9self_reported

Fingerprint

Section × backend (correct / n)

Sectionnonevendor-nativecompactionrag-bm25sqlite-ftscruxoraclerandom
S1Rederivable leak gate8/88/85/55/55/58/85/50/5
S2Arbitrary decisions 0/3837/3819/2018/2018/2037/3820/200/20
S3Cross-session continuity 0/2322/2319/2019/2019/2022/2320/200/20
S4Causal / why-chains 2/2323/2320/2020/2020/2023/2320/200/20
S5Supersession control5/4947/4930/4040/4040/4049/4920/200/20
S6Scale / needle 0/2322/2319/2019/2019/2017/2320/200/20
S8Provenance / trust provenance axis5/405/400/406/4010/4040/4020/200/20
S9Drift / longitudinal drift axis0/4040/4040/4025/4030/4040/4020/200/20

Fairness invariants: S1 no-leak · oracle ceilings · random floors.

Runs

Every run

SectionBackendModelCorrectΔ vs vendorCtx tokLatencyRuns
S1compactionclaude-sonnet-55/50406723ms1
S1cruxclaude-sonnet-55/5486019ms1
S1noneclaude-sonnet-55/5008744ms1
S1oraclesynthetic5/502
S1rag-bm25claude-sonnet-55/50517910ms1
S1sqlite-ftsclaude-sonnet-55/50519370ms1
S1vendor-nativeclaude-sonnet-55/50427527ms1
S1cruxclaude-sonnet-4-63/301
S1noneclaude-sonnet-4-63/301
S1vendor-nativeclaude-sonnet-4-63/301
S1randomsynthetic0/502
S2oraclesynthetic20/2004
S2compactionclaude-sonnet-519/20013935707ms1
S2cruxclaude-sonnet-519/2015820991ms1
S2vendor-nativeclaude-sonnet-519/20014131825ms1
S2rag-bm25claude-sonnet-518/20-115626163ms1
S2sqlite-ftsclaude-sonnet-518/20-115629542ms1
S2cruxclaude-sonnet-4-66/601
S2cruxhaiku6/603
S2cruxsonnet6/601
S2vendor-nativeclaude-sonnet-4-66/601
S2vendor-nativehaiku6/603
S2vendor-nativesonnet6/601
S2noneclaude-sonnet-4-60/6-61
S2noneclaude-sonnet-50/20-19057205ms1
S2nonehaiku0/6-63
S2nonesonnet0/6-61
S2randomsynthetic0/2004
S3oraclesynthetic20/2002
S3compactionclaude-sonnet-519/20019128436ms1
S3cruxclaude-sonnet-519/2021023061ms1
S3rag-bm25claude-sonnet-519/20021322668ms1
S3sqlite-ftsclaude-sonnet-519/20021326659ms1
S3vendor-nativeclaude-sonnet-519/20019329579ms1
S3cruxclaude-sonnet-4-63/301
S3vendor-nativeclaude-sonnet-4-63/301
S3noneclaude-sonnet-4-60/3-31
S3noneclaude-sonnet-50/20-19053832ms1
S3randomsynthetic0/2002
S4compactionclaude-sonnet-520/20028035936ms1
S4cruxclaude-sonnet-520/2029819710ms1
S4oraclesynthetic20/2002
S4rag-bm25claude-sonnet-520/20030131662ms1
S4sqlite-ftsclaude-sonnet-520/20030231703ms1
S4vendor-nativeclaude-sonnet-520/20028119747ms1
S4cruxclaude-sonnet-4-63/301
S4vendor-nativeclaude-sonnet-4-63/301
S4noneclaude-sonnet-4-62/3-11
S4noneclaude-sonnet-50/20-20065289ms1
S4randomsynthetic0/2002
S5compactionclaude-sonnet-520/20012430110ms1
S5cruxclaude-haiku-4-520/20026533724ms1
S5cruxclaude-sonnet-520/2026521129ms1
S5oraclesynthetic20/20004
S5rag-bm25claude-haiku-4-520/20014566328ms1
S5rag-bm25claude-sonnet-520/20014546887ms1
S5sqlite-ftsclaude-haiku-4-520/20014699178ms1
S5sqlite-ftsclaude-sonnet-520/20014659211ms1
S5vendor-nativeclaude-haiku-4-520/20023980589ms1
S5vendor-nativeclaude-sonnet-520/20023833444ms1
S5compactionclaude-haiku-4-510/20-1012458923ms1
S5noneclaude-haiku-4-55/20-150225354ms1
S5cruxclaude-sonnet-4-63/301
S5cruxhaiku3/3+23
S5cruxsonnet3/301
S5vendor-nativeclaude-sonnet-4-63/301
S5vendor-nativesonnet3/301
S5vendor-nativehaiku1/303
S5noneclaude-sonnet-4-60/3-31
S5noneclaude-sonnet-50/20-20083665ms1
S5nonehaiku0/3-13
S5nonesonnet0/3-31
S5randomsynthetic0/20-2004
S6oraclesynthetic20/2002
S6compactionclaude-sonnet-519/20018629328ms1
S6rag-bm25claude-sonnet-519/20032427086ms1
S6sqlite-ftsclaude-sonnet-519/20032528866ms1
S6vendor-nativeclaude-sonnet-519/200757529252ms1
S6cruxclaude-sonnet-517/2033229026ms1
S6vendor-nativehaiku3/301
S6cruxhaiku0/3-31
S6noneclaude-sonnet-50/20-19049889ms1
S6nonehaiku0/3-31
S6randomsynthetic0/2002
S8cruxclaude-haiku-4-520/20+1549045698ms1
S8cruxclaude-sonnet-520/2049032303ms1
S8oraclesynthetic20/20+1501
S8sqlite-ftsclaude-haiku-4-58/20+3370110102ms1
S8rag-bm25claude-haiku-4-56/20+1370116938ms1
S8noneclaude-haiku-4-55/2000230592ms1
S8vendor-nativeclaude-haiku-4-55/200336207163ms1
S8sqlite-ftsclaude-sonnet-52/20+2370111644ms1
S8compactionclaude-haiku-4-50/20-5333178605ms1
S8compactionclaude-sonnet-50/200333195531ms1
S8noneclaude-sonnet-50/200064604ms1
S8rag-bm25claude-sonnet-50/200370117564ms1
S8randomsynthetic0/20-501
S8vendor-nativeclaude-sonnet-50/200335212482ms1
S9compactionclaude-haiku-4-520/20015265678ms1
S9compactionclaude-sonnet-520/20015216995ms1
S9cruxclaude-haiku-4-520/20029439303ms1
S9cruxclaude-sonnet-520/20029422398ms1
S9oraclesynthetic20/20001
S9rag-bm25claude-sonnet-520/20017446339ms1
S9sqlite-ftsclaude-sonnet-520/20017538790ms1
S9vendor-nativeclaude-haiku-4-520/200858113261ms1
S9vendor-nativeclaude-sonnet-520/20085871761ms1
S9sqlite-ftsclaude-haiku-4-510/20-10175137292ms1
S9rag-bm25claude-haiku-4-55/20-15174189822ms1
S9noneclaude-haiku-4-50/20-200223428ms1
S9noneclaude-sonnet-50/20-20040943ms1
S9randomsynthetic0/20-2001

Sections

What each section measures

S1Rederivable leak gate

The answer is in a sandbox file any backend can read.

e.g. Internal port configured? (check the repo)

Win/loss: Everyone should tie `none`. A lift here means the backend LEAKED the gold — it fails the build. Excluded from the /100.

S2Arbitrary decisions

A non-rederivable codename / port / flag, knowable only from prior knowledge.

e.g. Internal port assigned (no derivable pattern)?

Win/loss: Memory beats cold. A dump and a retriever both supply the value.

S3Cross-session continuity

A prior session’s decision must govern the current task.

e.g. Continuing the prior session — which storage engine was chosen?

Win/loss: Memory beats cold; correctness only if the prior decision is respected.

S4Causal / why-chains

The rationale (“why X over Y”) exists only in recorded prior knowledge.

e.g. Why was cbor chosen over protobuf for the wire format?

Win/loss: Memory beats cold on rationale, not just values.

S5Supersession control

A fact was changed; only the CURRENT value is correct. The dump lists both, unresolved.

e.g. What is the CURRENT internal port (it was changed)?

Win/loss: Naive memory surfaces stale and fails; only a freshness-aware backend wins — decisively for weak models.

S6Scale / needle

A needle among N distractors. The dump is O(N) tokens; retrieval is O(k).

e.g. What internal port was recorded in the notes?

Win/loss: Same accuracy, a fraction of the token bill — until the dump breaks the window (see Scale).

S8Provenance / trust provenance axis

Two sources disagree; only the confidence tells you which to trust. Arbitrary values, so guessing = 50%. Scored separately — NOT in the /100.

e.g. Two sources disagree on the datacenter — use the more confident one. What is it?

Win/loss: Backends that carry confidence (crux) pick the trusted value; ones that drop it (vendor-native, rag-bm25) can only guess. This is where provenance earns its tokens.

S9Drift / longitudinal drift axis

Each key is updated K times over a session (v1 → … → vK); only vK is current. Scored separately — NOT in the /100.

e.g. The rate_limit was updated 6 times this session — what is its CURRENT value?

Win/loss: A backend that RESOLVES to current (crux, and retrievers that store the current value) tracks the latest cheaply; a raw accumulating dump (vendor-native) makes the model find the latest among the interleaved log and drifts — worse the longer the session runs.

Backends

The backends, and what each does better

none

Empty context — the floor.

observed: 12/236 (5%)

vendor-native

A full CLAUDE.md-style rules dump, S5 history unresolved. The honest baseline; O(N) tokens.

observed: 196/236 (83%) · 11054 ctx tok

compaction

Current-value-only dump, routine notes elided. “Summarise your CLAUDE.md.”

observed: 147/200 (74%) · 2014 ctx tok

rag-bm25

In-process BM25 retrieval, top-k per probe. No infra; resolves S5; O(k) tokens.

observed: 147/200 (74%) · 2372 ctx tok

sqlite-fts

Stdlib sqlite3 FTS5 retrieval — the neutral worked example to copy.

observed: 156/200 (78%) · 2378 ctx tok

crux

The Crux daemon: freshness-resolved / retrieved slice. One row among the rest.

observed: 228/236 (97%) · 3096 ctx tok

Add yours: implement (plant, assemble) in adapters.py per BACKENDS.md, or POST results to /api/context/submit with your gold_sha256.