SYNTOLOGY HomeExplorerAtlasCodeMethodologyAboutDevelopersFeedPricing
Paper · 2606.11712 · 2026

Substrate Asymmetry in User-Side Memory: A Diagnostic Framework

Youwang Deng

arXiv · PDF · Open in the Atlas

Code that ran

We lifted 26 functions out of this paper's own repositories and ran 15 of them in a sandbox. "Ran" means the function executed on a synthesized input and returned a value. It is not a reproduction of the paper's results.

RepositoryRoleRan
EpistemicaLab/substrate-asymmetry-memory canonical 15 of 26
FunctionStatusWhere it lives
chunk_backstory Ran EpistemicaLab/substrate-asymmetry-memory/bench/experiments/23_lora_persona.py
code served (permissive licence) · get_code("0756cc2191c41a2e")
chunk_text Ran EpistemicaLab/substrate-asymmetry-memory/bench/experiments/29_runner.py
code served (permissive licence) · get_code("95d1fe843991b562")
cluster_by_prompt Ran EpistemicaLab/substrate-asymmetry-memory/bench/experiments/28_data_prep.py
code served (permissive licence) · get_code("8515640d25718daa")
collate_lm Ran EpistemicaLab/substrate-asymmetry-memory/bench/experiments/28_runner.py
code served (permissive licence) · get_code("05dafa85be3fe1d0")
flatten_haystack Ran EpistemicaLab/substrate-asymmetry-memory/bench/experiments/19_lora_synthqa_eval_v3.py
code served (permissive licence) · get_code("d2ce62f7060ca318")
frob_decompose Ran EpistemicaLab/substrate-asymmetry-memory/bench/experiments/30_analyze.py
code served (permissive licence) · get_code("3b608312db6e6bbe")
generate_text Ran EpistemicaLab/substrate-asymmetry-memory/bench/experiments/31_runner.py
code served (permissive licence) · get_code("df6e69ae71000442")
gold_logprob Ran EpistemicaLab/substrate-asymmetry-memory/bench/experiments/28_runner.py
code served (permissive licence) · get_code("2fd6b9ea91919a52")
judge_call Ran EpistemicaLab/substrate-asymmetry-memory/bench/experiments/31_judge.py
code served (permissive licence) · get_code("e12f0bfef2402d6c")
judge_one Ran EpistemicaLab/substrate-asymmetry-memory/bench/experiments/31_judge.py
code served (permissive licence) · get_code("1fd356909e7eba2b")
load_bge Ran EpistemicaLab/substrate-asymmetry-memory/bench/experiments/29_runner.py
code served (permissive licence) · get_code("f2354ed5290e2fb4")
make_chunks_overlap Ran EpistemicaLab/substrate-asymmetry-memory/bench/experiments/19_lora_synthqa_eval_v3.py
code served (permissive licence) · get_code("1c7c3f18bbf27c32")
parse_lora_key Ran EpistemicaLab/substrate-asymmetry-memory/bench/experiments/30_analyze.py
code served (permissive licence) · get_code("b91629a745d69be5")
render_chunk Ran EpistemicaLab/substrate-asymmetry-memory/bench/experiments/19_lora_synthqa_eval_v3.py
code served (permissive licence) · get_code("e3c44c8ec5b5b317")
render_persona_chunk Ran EpistemicaLab/substrate-asymmetry-memory/bench/experiments/23_lora_persona.py
code served (permissive licence) · get_code("825bf367e7c798f6")
bge_encode Not yet run EpistemicaLab/substrate-asymmetry-memory/bench/experiments/29_runner.py
code served (permissive licence) · get_code("043c215ad4dd905f")
claude Not yet run EpistemicaLab/substrate-asymmetry-memory/bench/experiments/29_data_prep.py
code served (permissive licence) · get_code("727926efb50736e0")
extract_persona_pairs Not yet run EpistemicaLab/substrate-asymmetry-memory/bench/experiments/23_lora_persona.py
code served (permissive licence) · get_code("2bdb4a031ff824c1")
find_adapter_dir Not yet run EpistemicaLab/substrate-asymmetry-memory/bench/experiments/32_band_zero_intervention.py
code served (permissive licence) · get_code("f99247b72fe7f226")
find_probe2_eval Not yet run EpistemicaLab/substrate-asymmetry-memory/bench/experiments/32_band_zero_intervention.py
code served (permissive licence) · get_code("9fe8000e5ef166eb")
gen_absence_topics Not yet run EpistemicaLab/substrate-asymmetry-memory/bench/experiments/29_data_prep.py
code served (permissive licence) · get_code("e1ade8a5989853bc")
load_persona_with_adapter Not yet run EpistemicaLab/substrate-asymmetry-memory/bench/experiments/32_band_zero_intervention.py
code served (permissive licence) · get_code("221f48703ddb16d6")
paraphrase_to_present Not yet run EpistemicaLab/substrate-asymmetry-memory/bench/experiments/29_data_prep.py
code served (permissive licence) · get_code("7515dd748ca028e4")
parse_vote Not yet run EpistemicaLab/substrate-asymmetry-memory/bench/experiments/31_judge.py
code served (permissive licence) · get_code("33d1b183bb42ed1c")
run_dir Not yet run EpistemicaLab/substrate-asymmetry-memory/bench/experiments/_base_model.py
code served (permissive licence) · get_code("8f8458bc88465ce0")
train_lora_lm Not yet run EpistemicaLab/substrate-asymmetry-memory/bench/experiments/28_runner.py
code served (permissive licence) · get_code("c278e8b217470b0f")

Repositories linked to this paper

Some links come from the archived Papers with Code dataset (CC BY-SA 4.0): attribution and licence.

Abstract

User-side memory in LLMs is typically scored as a single "personalization" capability -given a user's history, is the output more user-aware? We show this aggregate metric hides opposite-direction failures. Memory factorises into at least three orthogonal axes -behavioral consistency (style, voice), factual presence (recall facts in the history), and factual absence (abstain when a fact is absent) -and no single substrate wins all three. Comparing per-user γ-LoRA (a small LoRA adapter trained on each user's history; γ denotes per-user, not per-task) against BGE-large dense top-K retrieval on a controlled 50-user synthetic corpus and a real-data probe (Salemi et al., 2024), we find γ-LoRA decisively wins behavioral style while RAG decisively wins factual absence -and the same query-projection cells in attention layers 21-35 causally load-bear both effects in opposite directions (zeroing those LoRA weights raises absenceprobe true-positive rate by +33 percentage points and drops presence-probe TPR by 20 pp). On the more heavily RLHF-tuned Llama-3.1-8B-Instruct the asymmetry strengthens, not heals: parametric memory's behavioral advantage collapses while its absence-calibration deficit against retrieval widens -an alignment tax on parametric user-memory. On real-data LaMP-3, γ-LoRA underperforms a majority baseline; a 9-condition mitigation sweep diagnoses this as instruction-following collapse, not substrate failure (a 9 × 2 mitigation crossproduct shows the eval-time {1..5} logit mask drives main_acc to ≥0.995 on every training recipe -recipe choice does not escape the collapse, and the residual probe2 ceiling 0.605-0.660 is task-structural, not recipe-tunable), and the best training-time fix replicates bit-identically on Llama. Finally, substrate-selection routing is question-classification, not calibration: a 110M DistilBERT on the question text alone beats every logit-based router. We contribute the diagnostic framework, the diagnosed real-data negative, the alignment-tax replication, and the routing-as-classification finding.

For agents

The same record, over MCP at https://syntology.ai/mcp:

get_harvested_code_for_paper("2606.11712")
get_code_for_paper("2606.11712")
have("2606.11712")

Connect an agent — have() is free.