CoolFace
Datasetpublic

Santhiyarajan/omission-detection-synthetic

Omission Detection — Synthetic Sweep What is Omission Detection? Large language models (LLMs) in agentic pipelines often omit information present in their context window — they fail to surface a relevant fact even when it is theoretically visible. This dataset captures 75,876 controlled trials designed to measure and attribute these omissions across 9 taxonomic layers (L0–L8). Each trial generates a synthetic clinical document, embeds a "needle" fact at a… See the full description on the dataset page: https://huggingface.co/datasets/Santhiyarajan/omission-detection-synthetic.

sourceHugging Facecc-by-4.0updated 2mo agoView on Hugging Face
0likes10downloads
Dataset Card

Omission Detection — Synthetic Sweep

What is Omission Detection?

Large language models (LLMs) in agentic pipelines often omit information present in their context window — they fail to surface a relevant fact even when it is theoretically visible. This dataset captures 75,876 controlled trials designed to measure and attribute these omissions across 9 taxonomic layers (L0–L8).

Each trial generates a synthetic clinical document, embeds a "needle" fact at a controlled depth, passes the document through deterministic pipeline layers (redaction, pagination, chat templating, orchestration), and optionally runs model inference to see whether the needle is retrieved.

Experiment Design

componentdescription
DocumentsSynthetic clinical notes generated from 8 noise-sentence pools (symptom reports, nursing notes, drug administration, imaging findings, etc.)
NeedlesInjected facts using 3 families: literal, paraphrase, conflict (8 templates each). Each needle has a unique canary string.
Models5 architectures: Full Attention, SWA-Hybrid, SSM-Hybrid, Gemma MoE, Qwen Linear MoE
Enginesllama.cpp (CPU quantised) and vLLM (GPU)
Layers (omission taxonomy)L0: redaction, L1: pagination, L2: chat template, L3: orchestration prompt, L4: sampler, L5: attention window, L6: position encoding, L7: MoE routing, L8: tool loop
PhasesA (pipeline audit), B/C (model inference), D (distractor sweep), E (orchestrator variation), F (framework: LangChain/ADK)

Configs

Each JSONL file is one (model, engine) config — load with:

python
from datasets import load_dataset

ds = load_dataset(
    "santhiyarajan/omission-detection-synthetic",
    "full_attn__llama_cpp",
    split="train",
)
print(len(ds))  # 13437
ConfigModelEngineRows
fullattnllamacppFull Attentionllama.cpp13,437
fullattn_vllmFull AttentionvLLM8,309
gemmamoellamacppGemma MoEllama.cpp10,223
gemmamoe_vllmGemma MoEvLLM5,342
qwenlinearmoe_llamacppQwen Linear MoEllama.cpp6,955
qwenlinearmoe__vllmQwen Linear MoEvLLM3,941
ssmhybridllamacppSSM-Hybridllama.cpp9,598
swahybridllamacppSWA-Hybridllama.cpp10,235
swahybrid_vllmSWA-HybridvLLM7,436
phaseffull_attnFull Attentionllama.cpp (F)50
phasefgemma_moeGemma MoEllama.cpp (F)50
phasefssm_hybridSSM-Hybridllama.cpp (F)50
phasefswa_hybridSWA-Hybridllama.cpp (F)50
phasefcomparisonAll (cross-model)llama.cpp (F)200

Fields

columntypedescription
trial_idstringunique identifier (phase + index)
phasestringA (pipeline audit), B/C (model inference), D (distractor), E (orchestrator), F (framework)
familystringneedle family: literal, paraphrase, conflict
needle_idstringneedle identifier
canarystringunique canary string embedded in the needle
depthfloatneedle injection depth (0.0–1.0, fraction of document)
distractorsboolwhether distractor values were added
size_tokensinttarget document size in tokens
page_tokensinttokens per page (for pagination layer)
redactionstringredaction mode: off, deid, aggressive
fetch_policystringpagination page-fetch policy
truncate_limitintcharacter truncation limit (0 = no truncation)
escape_specialboolwhether special tokens (<startofturn> etc.) were escaped
engine_eventsstringJSON list of engine events (token counts, timestamps)
responsestringmodel's answer text (empty string for Phase A — no inference)
retrievedboolwhether response matched the expected answer
latency_sfloatmodel inference latency (-1.0 if no inference occurred)
attributionstringomission classification: success, unsurfaced*, software, model_
logit_probestringJSON logit probe values (empty string if not probed)
seedintreproducibility seed
doc_textstringfull synthetic clinical document text (the model's context window)
expected_answerstringthe correct answer embedded in the needle
iterationsintnumber of inference iterations
frameworkstringnone (sweep), langchain, adk (Phase F)
sourcestringsynthetic
domainstringclinical
enginestringllama_cpp, vllm
tool_providerstringmockmcp, docmcp
max_iterationsintmaximum tool-call iterations

Null-value convention

Because Phase A trials have no model inference, some fields use sentinel values:

  • —response: "" (empty string) when no model was called
  • —retrieved: False when not applicable
  • —latency_s: -1.0 when no inference occurred
  • —logit_probe: "" (empty string) when not probed

Citation

bibtex
@inproceedings{rajan2026omission,
  title={Where Does the Information Go? Attribution of Omissions in
         Agentic LLM Pipelines},
  author={Rajan, Santhiya and ...},
  booktitle={Under review},
  year={2027}
}

License

CC-BY-4.0