π Dataset Β β’Β π€ Trained Models Β β’Β π Paper Β β’Β π» Repo

This repository contains code for the paper Rubrics as an Attack Surface: Stealthy Preference Drift in LLM Judges by Ruomeng Ding*, Yifei Pang*, He Sun, Yizhong Wang, Steven Wu, and Zhun Deng.
We study Rubric-Induced Preference Drift (RIPD) in LLM-based evaluation and alignment pipelines, showing that rubric edits which pass benchmark validation can nonetheless induce systematic, directional preference drift on target domains that are difficult to detect with standard metrics. We further demonstrate rubric-based preference attacks and show how the resulting bias propagates through downstream post-training, leading to persistent policy misalignment.
git clone https://github.com/ruomengd/Rubrics-as-an-Attack-Surface.git
cd Rubrics-as-an-Attack-Surface
conda create -n rubrics python=3.9
conda activate rubrics
pip install -r requirements.txt
We use five human-preference datasets (UltraFeedback, ChatbotArena, RMB, Anthropic hh-rlhf, PKU-SafeRLHF) to construct four benchmarkβtarget settings: Ultra-Real and Ultra-Creative for helpfulness (UltraFeedback β ChatbotArena), and SafeRLHFβRMB and AnthropicβSafeRLHF for harmlessness. All data is converted to a uniform pairwise preference format; benchmarks enforce rubric preservation, while targets measure deployment-relevant preference drift, with downstream policy experiments on Ultra-Real and AnthropicβSafeRLHF.
The full data pipeline (download, preprocessing, filtering, and domain splitting) is run with:
sh ./scripts/dataset.sh
Alternatively, you can download the data directly from Hugging Face.
After the pipeline completes, the directory layout is:
data/
βββ helpfulness/
β βββ Ultra-Real/
β β βββ Ultra-Real-Bench/
β β β βββ train.jsonl
β β β βββ val.jsonl
β β β βββ test.jsonl
β β βββ Ultra-Real-Target/
β β βββ train.jsonl
β β βββ val.jsonl
β β βββ test.jsonl
β βββ ...
βββ harmlessness/
β βββ Anthropic-SafeRLHF/
β β βββ Anthropic-SafeRLHF-Bench/
β β β βββ train.jsonl
β β β βββ val.jsonl
β β β βββ test.jsonl
β β βββ Anthropic-SafeRLHF-Target/
β β βββ train.jsonl
β β βββ val.jsonl
β β βββ test.jsonl
β βββ ...
Bench vs. Target.
For each dataset configuration, Bench denotes the benchmark domain used during rubric development, while Target denotes a held-out deployment domain used to evaluate generalization and preference drift. Rubric edits are validated exclusively on the Bench domain and never optimized using Target data.
Data splits and usage.
The rubric search code lives under rubrics_search/search/ and implements a population-based evolutionary procedure to find benchmark-preserving but target-biased rubric variants.
main.py.select_rubrics.py.select_final.py for later selection.To run the full rubric-search pipeline:
sh ./scripts/rubrics_search_helpfulness.sh
sh ./scripts/rubrics_search_harmlessness.sh
Rubrics are selected under a benchmark-preserving constraint: candidates must match or exceed the seed rubricβs agreement on a held-out benchmark validation split. Among feasible candidates, we choose the rubric that maximally degrades agreement on the target validation split.
sh ./scripts/rubrics_selection.sh
To assess the transferability of optimized rubrics, we provide scripts for cross-model evaluation. To take rubrics optimized on a source model (Model A) and test their performance on a target model (Model B):
sh ./scripts/rubrics_cross_model_eval.sh
For downstream policy misalignment experiments, we focus on Ultra-Real (helpfulness) and AnthropicβSafeRLHF (harmlessness), training policy models directly on preference labels generated by the selected rubrics.
sh scripts/dpo_labelling.sh
sh scripts/dpo_train.sh
Run the evaluation pipeline (you can execute any subset of steps) via:
sh scripts/dpo_eval.sh
The evaluation script supports the following stages:
@misc{ding2026rubricsattacksurfacestealthy,
title={Rubrics as an Attack Surface: Stealthy Preference Drift in LLM Judges},
author={Ruomeng Ding and Yifei Pang and He Sun and Yizhong Wang and Zhiwei Steven Wu and Zhun Deng},
year={2026},
eprint={2602.13576},
archivePrefix={arXiv},
primaryClass={cs.CR},
url={https://arxiv.org/abs/2602.13576},
}
16 commits
4 commits
Python
91.4%
Shell
8.6%
π Dataset Β β’Β π€ Trained Models Β β’Β π Paper Β β’Β π» Repo

This repository contains code for the paper Rubrics as an Attack Surface: Stealthy Preference Drift in LLM Judges by Ruomeng Ding*, Yifei Pang*, He Sun, Yizhong Wang, Steven Wu, and Zhun Deng.
We study Rubric-Induced Preference Drift (RIPD) in LLM-based evaluation and alignment pipelines, showing that rubric edits which pass benchmark validation can nonetheless induce systematic, directional preference drift on target domains that are difficult to detect with standard metrics. We further demonstrate rubric-based preference attacks and show how the resulting bias propagates through downstream post-training, leading to persistent policy misalignment.
git clone https://github.com/ruomengd/Rubrics-as-an-Attack-Surface.git
cd Rubrics-as-an-Attack-Surface
conda create -n rubrics python=3.9
conda activate rubrics
pip install -r requirements.txt
We use five human-preference datasets (UltraFeedback, ChatbotArena, RMB, Anthropic hh-rlhf, PKU-SafeRLHF) to construct four benchmarkβtarget settings: Ultra-Real and Ultra-Creative for helpfulness (UltraFeedback β ChatbotArena), and SafeRLHFβRMB and AnthropicβSafeRLHF for harmlessness. All data is converted to a uniform pairwise preference format; benchmarks enforce rubric preservation, while targets measure deployment-relevant preference drift, with downstream policy experiments on Ultra-Real and AnthropicβSafeRLHF.
The full data pipeline (download, preprocessing, filtering, and domain splitting) is run with:
sh ./scripts/dataset.sh
Alternatively, you can download the data directly from Hugging Face.
After the pipeline completes, the directory layout is:
data/
βββ helpfulness/
β βββ Ultra-Real/
β β βββ Ultra-Real-Bench/
β β β βββ train.jsonl
β β β βββ val.jsonl
β β β βββ test.jsonl
β β βββ Ultra-Real-Target/
β β βββ train.jsonl
β β βββ val.jsonl
β β βββ test.jsonl
β βββ ...
βββ harmlessness/
β βββ Anthropic-SafeRLHF/
β β βββ Anthropic-SafeRLHF-Bench/
β β β βββ train.jsonl
β β β βββ val.jsonl
β β β βββ test.jsonl
β β βββ Anthropic-SafeRLHF-Target/
β β βββ train.jsonl
β β βββ val.jsonl
β β βββ test.jsonl
β βββ ...
Bench vs. Target.
For each dataset configuration, Bench denotes the benchmark domain used during rubric development, while Target denotes a held-out deployment domain used to evaluate generalization and preference drift. Rubric edits are validated exclusively on the Bench domain and never optimized using Target data.
Data splits and usage.
The rubric search code lives under rubrics_search/search/ and implements a population-based evolutionary procedure to find benchmark-preserving but target-biased rubric variants.
main.py.select_rubrics.py.select_final.py for later selection.To run the full rubric-search pipeline:
sh ./scripts/rubrics_search_helpfulness.sh
sh ./scripts/rubrics_search_harmlessness.sh
Rubrics are selected under a benchmark-preserving constraint: candidates must match or exceed the seed rubricβs agreement on a held-out benchmark validation split. Among feasible candidates, we choose the rubric that maximally degrades agreement on the target validation split.
sh ./scripts/rubrics_selection.sh
To assess the transferability of optimized rubrics, we provide scripts for cross-model evaluation. To take rubrics optimized on a source model (Model A) and test their performance on a target model (Model B):
sh ./scripts/rubrics_cross_model_eval.sh
For downstream policy misalignment experiments, we focus on Ultra-Real (helpfulness) and AnthropicβSafeRLHF (harmlessness), training policy models directly on preference labels generated by the selected rubrics.
sh scripts/dpo_labelling.sh
sh scripts/dpo_train.sh
Run the evaluation pipeline (you can execute any subset of steps) via:
sh scripts/dpo_eval.sh
The evaluation script supports the following stages:
@misc{ding2026rubricsattacksurfacestealthy,
title={Rubrics as an Attack Surface: Stealthy Preference Drift in LLM Judges},
author={Ruomeng Ding and Yifei Pang and He Sun and Yizhong Wang and Zhiwei Steven Wu and Zhun Deng},
year={2026},
eprint={2602.13576},
archivePrefix={arXiv},
primaryClass={cs.CR},
url={https://arxiv.org/abs/2602.13576},
}
16 commits
4 commits
Python
91.4%
Shell
8.6%