Real users miscommunicate, change their minds mid-conversation, and run out of patience. Drift-Bench++ drops the oracle-communication assumption: every task carries a verified miscommunicated request, an executable graph of alternative goals the user may silently drift to, and a finite patience budget — scored by GRIP, an eleven-metric protocol for grounding, role-realism, inquiry, and persistence.
An LLM asked to write a "flawed request" often produces a different flaw — or none. Every Drift-Bench++ opening is generate-then-verify: two independent extractor models must agree on what the text actually miscommunicates, and the recovered fault must provably change the executable answer.
Goals move mid-conversation over an executable intent graph — refined, relaxed, substituted, or pivoted — without announcement. Some shifts are scheduled on the patience axis; others are triggered by the agent's own clarifying question prompting the user to reconsider.
Questions cost 2, rejected proposals cost 4, from a persona-scaled budget of 10. When the budget runs out the agent must commit. Clarification stops being free — it becomes a spending decision.
Drift-Bench++ builds on executable host benchmarks — every latent intent, every alternative goal, and every adjudication is executable, so ground truth never depends on a judge model.

Native tasks become executable condition sets; validated retrieval and witness-guided synthesis add typed alternatives (refine / relax / substitute / pivot), each with recomputed ground truth.
A writer model renders the true intent into a request carrying exactly one taxonomy fault — free-form, so the flaw reads like a real person wrote it.
Two extractor models from different families independently recover the structured edit the text expresses; the candidate survives only if they agree on the fault family and its target.
The literal reading is executed against the environment: a substitution must move the answer, a withholding must widen it, an ambiguity must split it. No consequence, no instance.
| Benchmark | Tasks | Graphs | Rejection rate | Samples |
|---|---|---|---|---|
| WebShop | 500 | 257 | 31% | 1,780 |
| τ²-Retail | 114 | 98 | 47% | 555 |
| τ²-Airline | 50 | 40 | 48% | 208 |
Eleven fault types across four families, inherited from communication theory and operationalized as executable edits. Each released instance carries one verified fault (or a composed set at k = 2, 4).
A state machine owns everything true — intents, disclosures, budgets, shifts, adjudication. The language model only voices replies, so simulated users sound natural but can never bend the task.
Every user-facing action spends the budget. Scheduled shift opportunities sit at persona-specific marks and fire silently with probability 0.6 when crossed. Spend the budget and see what the agent lives with.
Click a persona to see its configuration. Bios are inherited from the source benchmark; the behavioral parameters — disclosure, refusal, patience multiplier, hint probability, shift placements, suggestibility — are Drift-Bench++'s.
Three unedited episodes from the released evaluation runs — every quote verbatim, every event machine-checked. Watch the fault land, the questions earn their cost, and the intent move silently.
A single success rate cannot separate an agent that understood the user from one that guessed. GRIP reports each dimension with its own denominator and never collapses them — a bad score names the fault. Click a dimension for its metrics.
Six experiment lines from the paper: the capability landscape across eleven methods, then how it holds up across model backbones, composed faults, silent intent shifts, and user personas — plus a validation that the simulated users are worth believing. Dots mark the best value per column; underlines the second best.
@inproceedings{driftbenchpp2027,
title = {Beyond Oracle Communication: Benchmarking Interactive
Intent Alignment Under Miscommunication and Evolving
User Intent},
author = {Anonymous},
booktitle = {Under review},
year = {2027},
url = {https://drift-bench-plus.github.io/}
}