Paper deep dive
DUET: Co-Evolving Solver and Grader Agents
Fengyu Gao, Sourav Pal, Austin Z. Henley, Arjun Radhakrishna, Gustavo Soares
Intelligence
Status: succeeded | Model: Gemma-4-26B-A4B | Prompt: intel-v1 | Confidence: 92%
Last extracted: 10/6/2026, 10:43:09 AM
Summary
The paper introduces DUET, a framework for the co-evolution of solver and grader agents. Unlike traditional methods that keep the evaluator fixed, DUET iteratively updates both the solver (task executor) and the grader (evaluator) in alternating rounds. It employs adaptive task selection based on score changes and bounded updates to optimize agent components (prompts/skills). Experiments show DUET outperforms baselines with fixed graders across four benchmarks.
Entities (7)
Relation Signals (8)
DUET â optimizes â Solver Agent
confidence 95% ¡ DUET iteratively selects training tasks, executes them with the solver... and uses a tool-using update module to revise the solver
DUET â optimizes â Grader Agent
confidence 95% ¡ DUET iteratively selects training tasks... evaluates the resulting outcomes with the grader... and uses a tool-using update module to revise... the grader
DUET â outperforms â SkillOpt
confidence 90% ¡ DUET achieves higher solver performance than SkillOpt... even when these baselines use the benchmark reference evaluator.
DUET â outperforms â GEPA
confidence 90% ¡ DUET achieves higher solver performance than ... GEPA... even when these baselines use the benchmark reference evaluator.
Solver Agent â providesevidencefor â Grader Agent
confidence 90% ¡ solver executions provide evidence for improving the grader
Grader Agent â providesfeedbackfor â Solver Agent
confidence 90% ¡ the improved grader provides better feedback for subsequent solver updates
DUET â uses â Adaptive Task Selection
confidence 90% ¡ DUET first selects a training batch adaptively that balances exploitation and exploration.
DUET â uses â Bounded Updates
confidence 90% ¡ DUET uses an edit budget... limits the number of discrete changes allowed in each update
Cypher Suggestions (0)
No Cypher suggestions yet.
Abstract
Abstract:Agentic workflows are increasingly used across domains such as technology, finance, and enterprise operations. As these agents become more widely deployed, continually improving them becomes increasingly important. This raises an immediate challenge: How should the agent evolve? This evolution requires effective evaluation that can assess outcomes and provide useful feedback for optimization. As the agent evolves, its behaviors and failure modes may also change, making a fixed evaluator increasingly inadequate. Another fundamental question: How should we evaluate an evolving agent? These two challenges are inherently coupled; changes in agent behavior can expose limitations of the current evaluator, while a stronger evaluator provides more informative feedback for improving the agent. Motivated by this interaction, we introduce DUET, a framework that jointly optimizes a solver agent and a grader agent to improve both. DUET iteratively selects training tasks, executes them with the solver, evaluates the resulting outcomes with the grader, and uses a tool-using update module to revise the solver and the grader, alternating between the two across rounds. By updating the grader within the optimization loop, DUET turns evaluation from a fixed source of feedback into a first-class optimization objective that adapts alongside the solver. Experiments across four agent benchmarks show that DUET improves both solver and grader performance and consistently outperforms baselines that optimize the solver with a fixed grader.
Tags
Links
- Source: https://arxiv.org/abs/2610.04087v1
- Canonical: https://arxiv.org/abs/2610.04087v1
Trouble viewing inline? Open PDF directly â
Full Text
167,712 characters extracted from source content.
Expand or collapse full text
DUET: Co-Evolving Solver and Grader Agents Fengyu Gao â thanks: Work done during an internship at Microsoft. Affiliation: University of Virginia, Charlottesville, United States Email: wan6j@virginia.edu Sourav Pal Affiliation: Microsoft, Redmond, United States Email: palsourav@microsoft.com Austin Z. Henley Affiliation: Microsoft, Redmond, United States Email: austin.henley@microsoft.com Arjun Radhakrishna Affiliation: Microsoft, Redmond, United States Email: arradha@microsoft.com Gustavo Soares Affiliation: Microsoft, Redmond, United States Email: Gustavo.Soares@microsoft.com Abstract Agentic workflows are increasingly used across domains such as technology, finance, and enterprise operations. As these agents become more widely deployed, continually improving them becomes increasingly important. This raises an immediate challenge: How should the agent evolve? This evolution requires effective evaluation that can assess outcomes and provide useful feedback for optimization. As the agent evolves, its behaviors and failure modes may also change, making a fixed evaluator increasingly inadequate. Another fundamental question: How should we evaluate an evolving agent? These two challenges are inherently coupled; changes in agent behavior can expose limitations of the current evaluator, while a stronger evaluator provides more informative feedback for improving the agent. Motivated by this interaction, we introduce DUET, a framework that jointly optimizes a solver agent and a grader agent to improve both. DUET iteratively selects training tasks, executes them with the solver, evaluates the resulting outcomes with the grader, and uses a tool-using update module to revise the solver and the grader, alternating between the two across rounds. By updating the grader within the optimization loop, DUET turns evaluation from a fixed source of feedback into a first-class optimization objective that adapts alongside the solver. Experiments across four agent benchmarks show that DUET improves both solver and grader performance and consistently outperforms baselines that optimize the solver with a fixed grader. 1 Introduction Large language model (LLM) agents are becoming increasingly capable of tool use, reasoning, interaction, and long-horizon decision making (Liu et al., 2024; Ma et al., 2024a), enabling applications such as spreadsheet editing (Ma et al., 2024b; Zhu et al., 2026), code debugging (Jimenez et al., 2024; Yang et al., 2024b), and multi-step business workflows (Drouin et al., 2024). A growing line of work seeks to improve these agents by optimizing components such as system prompts and skills (Wang et al., 2024; Yuksekgonul et al., 2024; Agrawal et al., 2025; Yang et al., 2026a). These methods iteratively execute the agent, evaluate its outputs, and use the resulting scores or critiques to update its components. We refer to the task-performing agent as the solver and the agent evaluating its outcomes as the grader. The effectiveness of agent optimization therefore depends critically on the quality of the graderâs feedback. As the solver agent grows more capable, evaluating its outputs can become harder. A weaker solver may fail in obvious ways, while a stronger solver may produce plausible outputs whose errors require closer inspection. The evaluation problem may therefore evolve as the solver improves. This is especially challenging for open-ended agent tasks, where multiple execution paths or outcomes may be valid. For these tasks, quality can depend on the full execution process and resulting artifacts rather than a single reference answer. In these settings, LLM-based grader agents are increasingly used to evaluate agent behavior and produce scores and natural-language critiques (Zheng et al., 2023; Tan et al., 2025; Mohammadi et al., 2025; Hashemi et al., 2024). As the solver evolves, the grader also needs to adapt its evaluation policy accordingly. However, existing agent optimization methods typically keep the grader fixed while using its scores or critiques to iteratively update the solver agent (Yuksekgonul et al., 2024; Agrawal et al., 2025; Yang et al., 2026a). This design assumes that the grader remains an adequate source of feedback throughout optimization. But as the solver evolves, it may exhibit new failure modes or finer quality differences that the initial grader does not capture (Tan et al., 2025; Chen et al., 2026b). Its feedback may become less informative for guiding subsequent solver updates (Shen et al., 2026b). This suggests that effective agent optimization may require the grader to evolve together with the solver. Prior work on self-improving systems motivates treating evaluation quality as part of the optimization process. Self-Rewarding Language Models use a modelâs own judgments to drive iterative preference training (Yuan et al., 2024), while Meta-Rewarding explicitly trains judgment quality using preferences over judgments (Wu et al., 2025b). We investigate this principle for tool-using agents, keeping underlying models fixed while jointly optimizing solver and grader prompts and skills. Intuitively, the two agents can provide learning signals for each other. As the solver evolves, it exposes new failure modes and finer distinctions that can help refine the grader. The refined grader provides more informative feedback for subsequent solver updates. This leads to a key question: Can we co-evolve a solver agent and a grader agent to improve both task execution and evaluation? To address this question, we introduce DUET (Dual Updates for Evaluation and Task-solving), a framework that treats both the solver and the grader as optimization targets (Figure 1). DUET proceeds iteratively by selecting a batch of training tasks, running the solver on them, evaluating the resulting outcomes with the grader, and using an update module to revise either agent, with solver and grader updates alternating across rounds. This creates a reciprocal optimization loop in which solver executions provide evidence for improving the grader, while the improved grader provides better feedback for subsequent solver updates. We evaluate DUET on four benchmarks spanning spreadsheet manipulation, multi-turn tool use, and retrieval-augmented question answering. Experiments show that DUET improves solver and grader performance across all four benchmarks. Notably, starting from a minimal grader initialization, DUET achieves higher solver performance than SkillOpt (Yang et al., 2026a) and GEPA (Agrawal et al., 2025), even when these baselines use the benchmark reference evaluator. These results suggest that DUET can reduce the need for carefully designed initial graders and reference answers. Our contributions are summarized as follows: Figure 1: Overview of DUET. At each round, DUET first selects a training batch adaptively that balances exploitation and exploration. The solver then executes the selected tasks, and the grader evaluates the resulting trajectories and outputs to produce scores and critiques. Finally, the update module alternates between revising the grader and the solver, keeping the other fixed in each round. ⢠We introduce DUET, a framework for jointly optimizing a solver and a grader so that task execution and evaluation can improve together. ⢠We develop a practical algorithm for solverâgrader co-evolution with three key design elements: alternating solverâgrader updates, adaptive task selection, and bounded component updates. ⢠We demonstrate DUETâs effectiveness across four agent benchmarks, different underlying models, and different optimizable agent components. 2 Related Work Figure 2: Representative solver and grader prompt updates produced by DUET during optimization. The solver develops reusable practices for root-cause diagnosis, completeness checking, and efficient tool use, while the grader develops practices for correctness verification, evidence assessment, and score calibration. Agent Optimization. Recent work improves LLM agents by optimizing prompts, skills, and other agent components using task performance and evaluator feedback (Zhou et al., 2023; Yuksekgonul et al., 2024; Agrawal et al., 2025; Yang et al., 2026a). For example, GEPA (Agrawal et al., 2025) reflects on execution trajectories and evaluator feedback to diagnose failures and propose prompt updates, while maintaining a Pareto frontier of candidate prompts. SkillOpt (Yang et al., 2026a) uses scored rollouts to propose bounded edits to a persistent skill and accepts an update only when it improves performance on a held-out validation set. We include GEPA and SkillOpt as representative baselines in our experiments. Beyond single-agent optimization, AgentGrad (Chu et al., 2026) investigates credit assignment in multi-agent prompt optimization, and MASPO (Wang et al., 2026b) jointly optimizes multiple solver agents in collaborative systems. Across these lines of work, the evaluator that provides the optimization signal is typically fixed throughout optimization, including in GEPA and SkillOpt. DUET instead treats the grader itself as an optimization target, allowing task execution and evaluation to evolve together. LLM-Based Evaluation. LLMs are widely used to evaluate model outputs through LLM-as-a-judge approaches and rubric-based evaluators (Zheng et al., 2023; Kim et al., 2024a; Kim et al., 2024b). Recent work develops agentic evaluators for assessing agents, where evaluation may require inspecting execution trajectories, intermediate actions, environment states, and generated artifacts (Zhuge et al., 2025; Lin et al., 2026). For example, Agent-as-a-Judge (Zhuge et al., 2025) uses an agentic evaluator to assess other agentic systems by examining the task-solving process and providing detailed feedback. Such graders can provide richer evaluation signals than fixed automatic metrics, but designing them can require substantial domain expertise and manual effort to specify evaluation criteria, rubrics, reference materials, and judging instructions, especially when relevant failure modes are difficult to anticipate in advance (Pan et al., 2024b; Shen et al., 2026b). DUET allows the grader to develop its evaluation policy from a minimal initialization, reducing reliance on manual grader design. Co-Evolution of Task Solving and Evaluation. Recent work studies the co-evolution of task-solving and evaluation components (Li et al., 2026; Zhang et al., 2026). ECHO (Li et al., 2026) co-evolves a policy and a critic within an on-policy reinforcement learning framework, where an external outcome reward is used to train the policy and assess critic feedback. Our method jointly optimizes the solver and the grader that directly provides the evaluation signal, without requiring a separate external reward model. CoEvoSkills (Zhang et al., 2026) co-evolves a skill generator and a surrogate verifier, where the generator iteratively refines agent skills and the verifier provides executable tests and diagnostic feedback. Our grader agent can instead evaluate aspects of task quality that are not captured by executable tests alone. We provide a broader discussion of related work and additional comparisons in Appendix A. 3 Problem Formulation We formalize agent optimization as the joint evolution of a solver and a grader. Let D denote a distribution over open-ended tasks xâx . A solver agent AθA_θ is parameterized by an optimizable agent component θâÎθâ , such as a system prompt, reusable skills, or a combination of these. Given a task x, the solver produces an execution outcome yâźPθ(â âŁx)y P_θ(¡ x), where y includes the agentâs execution trajectory and the resulting output or artifacts. A grader agent GĎG_Ď is similarly parameterized by an optimizable agent component ĎâÎŚĎâ . Given a task x and an execution outcome y, the grader returns (s,f)=GĎâ(x,y)(s,f)=G_Ď(x,y), where s is a scalar score and f is a natural-language critique. The underlying language models, tools, and execution environments are fixed. We optimize only the agent components θ and ĎĎ. This setting covers a broad range of solver and grader architectures, including prompt- or skill-based components (Agrawal et al., 2025; Yang et al., 2026a), rubric-based graders (Kim et al., 2024a), and tool-using agents (Zhuge et al., 2025). Figure 2 shows an example from DUET where the solver and grader were updated simultaneously. We consider reference-free training updates, which do not use reference outputs or ground-truth quality labels. In our default setting, a separate labeled validation set is used only for checkpoint selection and early stopping; we also evaluate a fixed-budget variant without validation-based selection or stopping (Appendix C.12). This setting is well suited to open-ended agent tasks, where multiple outputs may be valid and task quality can depend on the full execution process and resulting artifacts, not just the final answer. Constructing gold-standard references or labels for such tasks can be costly, and they may still fail to capture all aspects of a high-quality outcome, making reference-based optimization difficult to scale. Let qââ(x,y)q (x,y) denote the true latent quality of outcome y for task x. The ideal solver would maximize expected true task quality: θââargmaxθâÎxâźyâźPθ(â âŁx)[qâ(x,y)].θ â _θâ E_x E_y P_θ(¡ x) [q (x,y) ]. (1) For a given solver θ, an ideal grader should assign scores that faithfully reflect the true quality of its outcomes and provide informative critiques. Ďâ(θ)âargminĎâÎŚxâźyâźPθ(â âŁx)[â(GĎ(x,y),qâ(x,y))],Ď (θ)â _Ďâ E_x E_y P_θ(¡ x) [L\! (G_Ď(x,y),q (x,y) ) ], (2) where âL measures quality of the graderâs evaluation, including score fidelity and the usefulness of its critique. Since qâq is unavailable, neither objective can be optimized directly. Moreover, as the solver evolves, the distribution of its outcomes changes, so the ideal grader Ďââ(θ)Ď (θ) also changes. Our goal is to co-evolve solver component θ and grader component ĎĎ without access to qâq , reference answers, or ground-truth quality labels during training. The solver produces higher-quality outcomes and the grader provides more faithful and informative evaluations of the solverâs evolving behavior. 4 DUET Algorithm We introduce DUET, a framework that jointly optimizes a solver agent and a grader agent through iterative task execution and evaluation. In each round, DUET selects a batch of training tasks, the solver executes the selected tasks, and the grader evaluates the resulting trajectories and outputs with a score and evidence-grounded critique. An update module uses this feedback and the execution artifacts to revise the optimizable component of either the solver or the grader, with the two agents updated in alternating rounds. Training updates do not use reference answers or ground-truth labels. A separate labeled validation set is used only for checkpoint selection and stopping. DUET starts from solver and grader components, θ0 _0 and Ď0 _0, with an empty training history H0H_0. 4.1 Step 1: Adaptive Task Selection At the beginning of round t, DUET selects a batch âŹtB_t of training tasks. As in curriculum learning (Bengio et al., 2009), the value of a task as a training signal can change during optimization, motivating DUET to adapt which tasks are selected. DUET tracks how the grader score for the same task changes across consecutive executions to identify tasks that remain responsive to solver or grader updates. A large score change suggests that recent solver or grader updates have changed how the task is executed or evaluated. These score changes suggest that the task is still exposing new solver behaviors or grader weaknesses, so revisiting it may provide useful feedback. By contrast, if a task receives nearly the same evaluation across repeated executions, it may already be saturated or currently too difficult to improve, making it less likely to provide a useful signal at that stage of optimization. DUET therefore prioritizes tasks with larger recent score changes while retaining exploration so that stable tasks can still be revisited. To obtain the score history needed for this criterion, DUET first uses round-robin selection until each training task has been executed twice. Let siâ(k)â[0,1]s_i(k)â[0,1] denote the normalized grader score for task i on its k-th execution. We measure the change in score between two consecutive executions of the same task as riâ(k)=|siâ(k)âsiâ(kâ1)|.r_i(k)= |s_i(k)-s_i(k-1) |. (3) To emphasize recent changes, DUET considers these score differences over a sliding window of the previous Ď rounds. Let Îźi,Ďâ(t) _i,Ď(t) denote the average recent score change for task i, and let Ni,Ďâ(t)N_i,Ď(t) denote the number of corresponding observations. DUET then combines recent score changes with exploration using the Sliding-Window Upper Confidence Bound (SW-UCB) algorithm (Garivier and Moulines, 2011). For each task i, we compute uiâ(t)=Îźi,Ďâ(t)+câlogâĄ(minâĄtâ1,Ď)Ni,Ďâ(t),Ni,Ďâ(t)>0,+â,Ni,Ďâ(t)=0,u_i(t)= cases _i,Ď(t)+ c ( \t-1,Ď\)N_i,Ď(t),&N_i,Ď(t)>0,\\ +â,&N_i,Ď(t)=0, cases (4) where c is a hyperparameter that controls the strength of exploration. The first term favors tasks with larger recent score changes, while the second encourages exploration of tasks with fewer recent observations. DUET then selects the tasks with the largest uiâ(t)u_i(t) values to form the batch âŹtB_t. Additional details of the task-selection procedure are provided in Appendix B.1. 4.2 Step 2: Solver Execution and Grader Evaluation For each selected task xââŹtx _t, the solver uses its current component θtâ1 _t-1 to produce an outcome yâźPθtâ1(â âŁx),y P_ _t-1(¡ x), (5) where y includes the execution trajectory and the resulting output or artifacts. The grader then evaluates y using its current component Ďtâ1 _t-1, (s,f)=GĎtâ1â(x,y),(s,f)=G_ _t-1(x,y), (6) where s is the scalar score, normalized to [0,1][0,1], and f is detailed feedback that identifies strengths and weaknesses and supports them with evidence from the execution and artifacts. We collect the solver outcomes and grader evaluations for the current batch as the round evidence â°t=(x,y,s,f):xââŹt.E_t= \(x,y,s,f):x _t \. (7) We denote the training history from previous rounds by Htâ1=((,,,,,,,,,))j=1tâ1,H_t-1= ((E_j, _j-1, _j-1, _j, _j) )_j=1^t-1, (8) which records the round evidence and the solver and grader components at each update. 4.3 Step 3: Alternating and Bounded Updates Given the current round evidence â°tE_t and training history Htâ1H_t-1, DUET next updates either the solver or the grader. The two agents depend on each other during optimization: grader feedback guides solver updates, while solver executions provide the evidence used to update the grader. Updating both simultaneously would change both the solver behavior and the evaluation policy, making it difficult to attribute the effect of each update. DUET therefore alternates between solver and grader updates, so that only one agent is revised in each round while the other remains fixed. Let ztâ1âAθtâ1,GĎtâ1z_t-1â\A_ _t-1,G_ _t-1\ denote the agent selected for update at round t. DUET updates the grader on odd-numbered rounds and the solver on even-numbered rounds. The selected agent is revised by an update module. Let Ďtâ1âθtâ1,Ďtâ1 _t-1â\ _t-1, _t-1\ denote its current optimizable component. The update module contains a tool-using update agent that proposes a candidate revision Ď~t Ď_t given Ďtâ1 _t-1, the round evidence â°tE_t, and the training history Htâ1H_t-1. Its system prompt specifies how the available evidence should be analyzed to produce this revision. For solver updates, the prompt instructs the update agent to use grader feedback as the primary signal, verify it against the execution artifacts, and identify a reusable execution habit that should be added, reinforced, or revised. For grader updates, the prompt instructs the update agent to examine the graderâs report and investigation together with the execution artifacts to identify evaluation practices that should be added, reinforced, or revised, including rubric construction, artifact verification, score calibration, and evidence grounding. Both prompts instruct the update agent to use Htâ1H_t-1 to assess previous changes based on how performance changes when the same tasks are revisited. The update agent can build on changes that helped and revise those that did not. Before adding or modifying a habit or evaluation practice, the update agent is also instructed to search the web for relevant current practices. The update agent then makes the smallest revision supported by the evidence, or leaves the component unchanged when no revision is justified. The prompts also discourage task-specific rules to reduce overfitting. The system prompts are provided in Appendix B.2. To control the size of each revision, DUET uses an edit budget as a textual learning rate (Yang et al., 2026a). The budget limits the number of discrete changes allowed in each update and is gradually reduced over optimization, allowing larger revisions early and smaller refinements later. We follow the bounded-update procedure from Yang et al. (2026a) to obtain the updated component Ďt _t from Ďtâ1 _t-1 and Ď~t Ď_t, with details provided in Appendix B.3. The resulting Ďt _t becomes the updated component of the selected agent, while the other agent remains unchanged. (â°t,θtâ1,Ďtâ1,θt,Ďt)(E_t, _t-1, _t-1, _t, _t) is appended to the training history to form HtH_t. After each round, DUET evaluates the updated solver and grader on a separate labeled validation set and tracks their best checkpoints independently. Optimization stops when neither validation metric improves for a fixed number of rounds. We also obtain comparable performance with a fixed training budget and no validation-based checkpoint selection or early stopping (Appendix C.12). The complete DUET procedure is summarized in Algorithm 1. 1: Input: trainD_train, valD_val, initial solver θ0 _0, initial grader Ď0 _0; initialize H0ââ H_0â and best checkpoints 2: for t=1,2,âŚt=1,2,⌠do 3: if warm-up then 4: âŹtâRoundRobinâ(train)B_tâ RoundRobin(D_train) 5: else 6: âŹtâB_tâ tasks with largest uiâ(t)u_i(t) from Eq. 4 7: end if 8: for xââŹtx _t do 9: yâźPθtâ1(â âŁx)y P_ _t-1(¡ x) 10: (s,f)âGĎtâ1â(x,y)(s,f)â G_ _t-1(x,y) 11: end for 12: â°tâ(x,y,s,f):xââŹtE_tâ\(x,y,s,f):x _t\ 13: (ztâ1,Ďtâ1)â(GĎtâ1,Ďtâ1)(z_t-1, _t-1)â(G_ _t-1, _t-1) if t is odd, else (Aθtâ1,θtâ1)(A_ _t-1, _t-1) 14: Ď~tâUpdateAgentâ(ztâ1,Ďtâ1,â°t,Htâ1) Ď_tâ UpdateAgent(z_t-1, _t-1,E_t,H_t-1) 15: ĎtâBoundedAdoptâ(Ďtâ1,Ď~t) _tâ BoundedAdopt( _t-1, Ď_t) 16: (θt,Ďt)â(θtâ1,Ďt)( _t, _t)â( _t-1, _t) if t is odd, else (Ďt,Ďtâ1)( _t, _t-1) 17: HtâHtâ1â(â°t,θtâ1,Ďtâ1,θt,Ďt)H_tâ H_t-1 (E_t, _t-1, _t-1, _t, _t) 18: Evaluate (θt,Ďt)( _t, _t) on valD_val and update best checkpoints 19: if no validation improvement for p rounds then 20: break 21: end if 22: end for 23: return best solver and grader checkpoints Algorithm 1 DUET 5 Experiments Benchmarks. We evaluate on four benchmarks spanning spreadsheet manipulation, multi-turn tool use, and retrieval-augmented question answering: SpreadsheetBench (Ma et al., 2024b), GDPval (Patwardhan et al., 2026), Ď2Ď^2-Bench (Barres et al., 2025), and Finance Agent Benchmark (Microsoft, 2026). We use SpreadsheetBench Verified, a curated, expert-validated subset of 400 tasks from the original 912-task SpreadsheetBench benchmark (Shortcut Research Team, 2025). Each task requires editing an existing Excel workbook according to a natural-language instruction. For GDPval, we use all 60 tasks whose reference deliverables include an Excel workbook. Ď2Ď^2-Bench contains 150 multi-turn customer-service tasks across airline, retail, and telecom domains, using a simulated user and domain-specific tools over a stateful environment. Finance Agent Benchmark contains 126 long-form financial question-answering tasks that require web retrieval and citation-supported responses. Additional details are provided in Appendix C.2. Agent and Tool Setup. For SpreadsheetBench and GDPval, we use a standalone Excel agent that edits real workbooks through Office.js, while the grader can inspect workbook contents and rendered outputs using code execution and screenshot tools. For Ď2Ď^2-Bench, we use the benchmarkâs native multi-turn orchestrator and domain-specific tool environment, with the grader restricted to read-only environment inspection tools that do not expose reference labels. For Finance Agent Benchmark, we use a web-search-enabled agent, while the grader has access to code execution and shell tools. Full agent configurations are provided in Appendix C.3. Baselines. We compare DUET with the unoptimized initialization (A0,G0)(A_0,G_0), where both agents use empty system prompts, as well as two prompt optimization methods, SkillOpt (Yang et al., 2026a) and GEPA (Agrawal et al., 2025). SkillOpt and GEPA optimize only the solver prompt and keep the grader fixed throughout training. For both baselines, we use Claude Opus 4.8 for the solver and grader, matching the default DUET setting. We evaluate the methods under two grader settings. In the reference-free setting, the fixed grader for SkillOpt and GEPA is the initial grader G0G_0, while DUET starts from the same G0G_0 and jointly optimizes both the solver and grader. This setting models the challenge of bootstrapping evaluation for a new task collection, where task instructions and execution environments are available but reference answers and task-specific grading rubrics or prompts have not been prepared for training. It tests whether useful evaluation practices can be developed alongside solver improvement, reducing the need for manual grader design before optimization begins. In the oracle-grader setting, the benchmarkâs reference evaluator GâG is used during solver optimization. We denote the corresponding baselines as SkillOpt (GâG ) and GEPA (GâG ). We also evaluate an oracle variant of DUET, denoted DUET (GâG ), in which GâG is fixed and only the solver is optimized. This setting measures solver optimization when a task-specific reference evaluation signal is available. Since SkillOpt and GEPA do not optimize the grader, we evaluate grader improvement by comparing DUETâs learned grader against its initialization G0G_0. Additional baseline details are in Appendix C.5. DUET Setup. In our main experiments, DUET optimizes the system prompts of both the solver and grader, with Claude Opus 4.8 used for both agents. The optimizable prompts are initialized empty except for the solver on Ď2Ď^2-Bench, which uses a minimal protocol prompt required by the benchmark interface. Model weights, tools, and execution environments remain fixed during optimization. We separately study alternative models, prompt initializations, and joint prompt-and-skill optimization in Tables 3, 4 and 2. We implement the update agent described in Section 4 using GitHub Copilot CLI with Claude Opus 4.8. We use an exploration coefficient of c=0.01c=0.01 and the bounded-edit schedule described in Appendix B.3, with sensitivity analyses in Appendix C.11. Benchmark-specific batch sizes, window sizes, and stopping criteria are provided in Appendix C.6. Evaluation. We evaluate both the solver and the grader on held-out test data. For the solver, we use each benchmarkâs reference evaluator. On SpreadsheetBench, we report task accuracy, where a task is correct only if all evaluated cells match the reference workbook. On GDPval, we report pairwise win rate against the human gold deliverable using the benchmarkâs pairwise reference grader. On Ď2Ď^2-Bench, we report task success rate based on the benchmark-specified checks. On Finance Agent Benchmark, we report the mean LLM-judge score across seven rubric dimensions. For grader evaluation, we construct dedicated pairwise evaluation sets for all four benchmarks. For GDPval and Finance Agent Benchmark, we generate multiple candidate outputs with Claude Opus 4.8 for each task and use the benchmark reference evaluator to establish their relative quality. We retain pairs with reliable reference preferences and further select challenging cases where superficial cues favor the worse output. For Ď2Ď^2-Bench and SpreadsheetBench, whose native evaluators provide only binary task outcomes, we generate two outputs per task using different underlying models and retain pairs in which one output succeeds and the other fails. Following prior work on LLM-based judge evaluation (Tan et al., 2025; Lambert et al., 2025), we measure grader performance using pairwise agreement. The grader scores each output independently, and receives credit 1 for preferring the reference-preferred output, 0.5 for a tie, and 0 for an inversion. Additional evaluation details are available in Appendix C.4. 5.1 Understanding the Performance of DUET In this section, we analyze the performance of DUET from both the solver and grader perspectives. Our main results are presented in Table 1. Table 1: Solver and grader performance on the test sets using Claude Opus 4.8, with system prompts as the optimization target. Solver metrics are rubric score for Finance Agent Benchmark, success rate for Ď2Ď^2-Bench, win rate for GDPval, and task accuracy for SpreadsheetBench. Grader performance is measured by pairwise agreement. A0A_0 and G0G_0 denote empty-prompt initialization, and GâG denotes the benchmark reference evaluator. Results show mean and standard deviation over 3 random seeds. Solver Performance Method Finance Agent Benchmark Ď2Ď^2-Bench GDPval SpreadsheetBench Reference-free setting A0A_0 92.8Âą0.692.8Âą 0.6 80.3Âą2.180.3Âą 2.1 47.6Âą3.347.6Âą 3.3 72.6Âą0.772.6Âą 0.7 SkillOpt 94.0Âą1.494.0Âą 1.4 84.7Âą6.484.7Âą 6.4 48.8Âą4.048.8Âą 4.0 81.6Âą1.181.6Âą 1.1 GEPA 94.4Âą1.194.4Âą 1.1 83.3Âą5.883.3Âą 5.8 50.7Âą1.650.7Âą 1.6 82.8Âą1.482.8Âą 1.4 DUET 96.5Âą0.4 96.5Âą 0.4 89.4Âą2.5 89.4Âą 2.5 52.2Âą1.8 52.2Âą 1.8 84.7Âą0.4 84.7Âą 0.4 Oracle-grader setting SkillOpt (GâG ) 95.7Âą0.495.7Âą 0.4 83.9Âą2.783.9Âą 2.7 47.1Âą2.447.1Âą 2.4 83.4Âą0.483.4Âą 0.4 GEPA (GâG ) 95.9Âą0.495.9Âą 0.4 82.0Âą4.182.0Âą 4.1 50.7Âą2.650.7Âą 2.6 83.0Âą2.083.0Âą 2.0 DUET (GâG ) 96.0Âą0.2 96.0Âą 0.2 86.1Âą2.7 86.1Âą 2.7 54.9Âą2.4 54.9Âą 2.4 84.7Âą1.0 84.7Âą 1.0 Grader Performance Method Finance Agent Benchmark Ď2Ď^2-Bench GDPval SpreadsheetBench G0G_0 67.9Âą1.167.9Âą 1.1 88.7Âą3.188.7Âą 3.1 68.4Âą1.068.4Âą 1.0 71.9Âą1.371.9Âą 1.3 DUET 75.0Âą2.9 75.0Âą 2.9 89.3Âą2.3 89.3Âą 2.3 78.5Âą6.1 78.5Âą 6.1 72.8Âą1.9 72.8Âą 1.9 RQ1: Can DUET improve solver performance compared with optimizing with a fixed grader? DUET consistently achieves stronger solver performance than fixed-grader prompt optimization across all four benchmarks. For example, on Finance Agent Benchmark, DUET achieves 96.5% rubric score, improving over the unoptimized solver A0A_0 at 92.8%, SkillOpt at 94.0%, and GEPA at 94.4%. More notably, it also exceeds SkillOpt and GEPA when they optimize against the benchmark reference evaluator GâG , which reach 95.7% and 95.9%, respectively. Similarly, on Ď2Ď^2-Bench, DUET reaches a success rate of 89.4%, compared with 80.3% for A0A_0, 84.7% for SkillOpt, and 83.3% for GEPA, and 83.9% and 82.0% for their oracle-grader variants. Our results highlight an advantage of DUET in reference-free open-ended tasks. DUET does not require a strong grader at initialization, which is useful when reference answers or complete task-specific rubrics are unavailable. Instead, the grader improves alongside the solver and can adapt its evaluation as the solverâs behavior changes. The fact that DUET can outperform fixed-grader methods even when they use the benchmark reference evaluator highlights the benefit of co-evolution. RQ2: Can DUET improve the graderâs evaluation capability? DUET improves grader evaluation capability while simultaneously optimizing the solver. On Finance Agent Benchmark, grader pairwise agreement improves from 67.9% for the initial grader G0G_0 to 75.0% after DUET training. On GDPval, agreement improves from 68.4% to 78.5%, a 10.1 percentage point gain. For Ď2Ď^2-Bench and SpreadsheetBench, the reference evaluators provide only binary success or failure labels, so preference pairs can be constructed only when one output succeeds and the other fails. Grader agreement therefore changes only slightly, from 88.7% to 89.3% on Ď2Ď^2-Bench and from 71.9% to 72.8% on SpreadsheetBench. One possible explanation is that these pairs mainly capture coarse passâfail differences that the initial grader already recognizes, while the subtler comparisons that could reveal improved grader judgment are absent from the benchmark. We also report the inference cost of DUET compared with the baselines in Appendix C.10. DUET achieves stronger task performance with comparable token usage and numbers of LLM calls. We also provide examples of prompt updates during optimization in Appendix C.13 and learned prompts and skills in Appendix C.14. 5.2 Understanding the Properties of DUET Table 2: Success rate on Ď2Ď^2-Bench across optimization targets. Method Prompt Only Prompt + Skills SkillOpt 84.7Âą6.484.7Âą6.4 83.3Âą2.283.3Âą2.2 GEPA 83.3Âą5.883.3Âą5.8 84.4Âą7.184.4Âą7.1 DUET 89.4Âą2.5 89.4Âą2.5 91.9Âą4.1 91.9Âą4.1 RQ3: Can DUET optimize agent components beyond the system prompt? DUET extends beyond prompt optimization and can jointly optimize the system prompt and an agent skills library. On Ď2Ď^2-Bench, joint prompt-and-skill optimization achieves a 91.9% success rate, improving over DUET with prompt-only optimization (89.4%) and outperforming SkillOpt (83.3%) and GEPA (84.4%) (Table 2). One reason for this improvement is that Ď2Ď^2-Bench contains domain-specific subtasks, allowing DUET to encode specialized procedures as skills rather than incorporating all behavior into a single prompt. Additional details are provided in Appendix C.7. Table 3: Performance with different models on Finance Agent Benchmark. Method Claude Opus 4.8 Claude Sonnet 4.6 Solver Performance A0A_0 92.892.8 89.689.6 SkillOpt 94.094.0 90.390.3 GEPA 94.494.4 90.990.9 DUET 96.596.5 91.391.3 Grader Performance G0G_0 67.967.9 58.358.3 DUET 75.075.0 69.269.2 RQ4: Does DUET remain effective with different underlying models? We additionally evaluate DUET with Claude Sonnet 4.6 on Finance Agent Benchmark, alongside the default Claude Opus 4.8 setting (Table 3). DUET achieves the highest solver performance while improving grader pairwise agreement. We also evaluate DUET with GPT-5.6 Sol on Ď2 _2-Bench and SpreadsheetBench, where it improves Ď2 _2-Bench solver performance and SpreadsheetBench grader agreement. Full results are reported in Appendix C.8. Table 4: Effect of prompt initialization on Finance Agent Benchmark. Initialization Initial Solver DUET Solver Initial Grader DUET Grader Empty 92.8Âą0.692.8Âą0.6 96.5Âą0.4 96.5Âą0.4 67.9Âą1.167.9Âą1.1 75.0Âą2.9 75.0Âą2.9 Informed 93.3Âą0.293.3Âą0.2 95.0Âą0.5 95.0Âą0.5 68.2Âą4.468.2Âą4.4 73.3Âą6.4 73.3Âą6.4 Adversarial 91.1Âą0.791.1Âą0.7 95.8Âą0.2 95.8Âą0.2 68.0Âą2.068.0Âą2.0 68.8Âą1.4 68.8Âą1.4 RQ5: How does prompt initialization affect DUET? We evaluate DUET with empty, informed, and adversarial prompt initializations on Finance Agent Benchmark (Table 4). DUET improves both solver and grader performance under all three initializations, including improving the adversarial solver from 91.1% to 95.8%. Interestingly, DUET removes the harmful adversarial instructions in the first update, while retaining about 60% of the informed solver prompt in the final prompt. These results suggest that DUET can correct poor initializations while preserving useful prior structure. Additional details are provided in Appendix C.9. 5.3 Validating the Design of DUET (a) Solverâgrader co-evolution. (b) Adaptive task selection. (c) Alternating updates. Figure 3: DUET ablations on Finance Agent Benchmark. RQ6: Why is co-evolving the solver and grader helpful? We compare DUET with three ablations on Finance Agent Benchmark: optimizing only the solver with a fixed grader, optimizing only the grader with a fixed solver, and a sequential variant that first optimizes the grader and then freezes it while optimizing the solver (Figure 3(a)). DUET achieves the strongest performance, reaching 96.5% solver score and 75.0% grader pairwise agreement. When the solver is fixed, optimizing the grader improves pairwise agreement only from 67.9% to 68.8%. This suggests that grader improvement benefits from an evolving solver that continues to expose new evaluation challenges. Similarly, an evolving grader can identify new weaknesses and provide feedback for further solver improvement. RQ7: Does adaptive task selection improve DUET? We compare DUET with and without adaptive task selection on Finance Agent Benchmark. Without adaptive selection, tasks are selected in round-robin order. As shown in Figure 3(b), adaptive task selection improves solver performance from 95.9% to 96.5% and grader pairwise agreement from 62.7% to 75.0%. This suggests that revisiting tasks with changing evaluations provides more useful training signals. RQ8: Do alternating solver and grader updates improve DUET? We compare DUETâs alternating update scheme with a variant that updates both agents in every round on Finance Agent Benchmark. As shown in Figure 3(c), alternating updates improve solver performance from 95.4% to 96.5% and grader pairwise agreement from 70.1% to 75.0%. One advantage of alternation is clearer attribution: when only one agent is updated, changes in subsequent performance can be associated with that update while the other agent remains fixed. When both are updated simultaneously, their effects are harder to disentangle. 6 Conclusion In this work, we introduced DUET, a framework for jointly optimizing a solver agent and a grader agent so that task solving and evaluation can evolve together. Across four benchmarks, DUET improves both solver and grader performance and outperforms baselines that optimize the solver with a fixed grader. These results suggest that, as agents evolve, evaluation should evolve alongside them rather than remain a fixed source of feedback. One limitation of this work is that our agent evaluation relies on benchmark reference evaluators without human judgments, due to the cost of large-scale human evaluation. References Agarwal et al. (2024) E. Agarwal, J. Singh, V. Dani, R. Magazine, T. Ganu, and A. Nambi Promptwizard: task-aware prompt optimization framework. arXiv preprint arXiv:2405.18369. Cited by: Appendix A. Agrawal et al. (2025) L. A. Agrawal, S. Tan, D. Soylu, N. Ziems, R. Khare, K. Opsahl-Ong, A. Singhvi, H. Shandilya, M. J. Ryan, M. Jiang, et al. Gepa: reflective prompt evolution can outperform reinforcement learning. In First Workshop on Foundations of Reasoning in Language Models, Cited by: Appendix A, §C.5, §C.5, §1, §1, §1, §2, §3, §5. Alzubi et al. (2026) S. Alzubi, N. Provenzano, J. Bingham, C. A. Calvo, W. Chen, and T. Vu EvoSkill: automated skill discovery for multi-agent systems. In Third Conference on Language Modeling, External Links: Link Cited by: Appendix A. Barres et al. (2025) V. Barres, H. Dong, S. Ray, X. Si, and K. Narasimhan Ď2Ď^2-Bench: evaluating conversational agents in a dual-control environment. arXiv preprint arXiv:2506.07982. Cited by: 3rd item, §5. Bengio et al. (2009) Y. Bengio, J. Louradour, R. Collobert, and J. Weston Curriculum learning. In Proceedings of the 26th annual international conference on machine learning, p. 41â48. Cited by: §4.1. Chan et al. (2024) C. Chan, W. Chen, Y. Su, J. Yu, W. Xue, S. Zhang, J. Fu, and Z. Liu Chateval: towards better llm-based evaluators through multi-agent debate. In International conference on learning representations, Vol. 2024, p. 9079â9093. Cited by: Appendix A. Chen et al. (2026a) J. Chen, Y. Lu, X. Wang, H. Zeng, J. Huang, J. Gesi, Y. Xu, B. Yao, and D. Wang Multi-agent-as-judge: aligning llm-agent-based automated evaluation with multi-dimensional human evaluation. In Proceedings of the 64th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), p. 17389â17416. Cited by: Appendix A. Chen et al. (2026b) J. Chen, Y. Dong, H. Li, W. Su, Y. Zhou, M. Zhang, Y. Liu, and Q. Ai Benchmarking llm-as-a-judge for long-form output evaluation. arXiv preprint arXiv:2606.01629. Cited by: §1. Chen et al. (2024) Z. Chen, W. Du, W. Zhang, K. Liu, J. Liu, M. Zheng, J. Zhuo, S. Zhang, D. Lin, K. Chen, et al. T-eval: evaluating the tool utilization capability of large language models step by step. In Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), p. 9510â9529. Cited by: Appendix A. Cheng et al. (2024) C. Cheng, A. Nie, and A. Swaminathan Trace is the next autodiff: generative optimization with rich feedback, execution traces, and llms. Advances in Neural Information Processing Systems 37, p. 71596â71642. Cited by: Appendix A. Chu et al. (2026) J. Chu, J. Seo, J. Cho, J. Na, Y. Xiong, Y. Kim, and H. J. Kim AgentGrad: intervention-guided prompt optimization for multi agent systems. External Links: 2609.08572, Link Cited by: Appendix A, §2. Drouin et al. (2024) A. Drouin, M. Gasse, M. Caccia, I. H. Laradji, M. Del Verme, T. Marty, L. Boisvert, M. Thakkar, Q. Cappart, D. Vazquez, et al. Workarena: how capable are web agents at solving common knowledge work tasks?. arXiv preprint arXiv:2403.07718. Cited by: §1. Fang et al. (2026) R. Fang, Y. Liang, X. Wang, J. Wu, S. Qiao, P. Xie, F. Huang, H. Chen, and N. Zhang Memp: exploring agent procedural memory. In Findings of the Association for Computational Linguistics: ACL 2026, p. 17490â17502. Cited by: Appendix A. Fernando et al. (2024) C. Fernando, D. S. Banarse, H. Michalewski, S. Osindero, and T. Rocktäschel Promptbreeder: self-referential self-improvement via prompt evolution. In Forty-first International Conference on Machine Learning, External Links: Link Cited by: Appendix A. Garivier and Moulines (2011) A. Garivier and E. Moulines On upper-confidence bound policies for switching bandit problems. In International conference on algorithmic learning theory, p. 174â188. Cited by: §4.1. Guo et al. (2024) Q. Guo, R. Wang, J. Guo, B. Li, K. Song, X. Tan, G. Liu, J. Bian, and Y. Yang Connecting large language models with evolutionary algorithms yields powerful prompt optimizers. In International Conference on Learning Representations, Vol. 2024, p. 34133â34156. Cited by: Appendix A. Hashemi et al. (2024) H. Hashemi, J. Eisner, C. Rosset, B. Van Durme, and C. Kedzie Llm-rubric: a multidimensional, calibrated approach to automated evaluation of natural language texts. In Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), p. 13806â13834. Cited by: §1. Hu et al. (2026) T. Hu, Z. Tan, S. Wang, H. Qu, and T. Chen Multi-agent debate for llm judges with adaptive stability detection. Advances in Neural Information Processing Systems 38, p. 46504â46540. Cited by: Appendix A. Jimenez et al. (2024) C. E. Jimenez, J. Yang, A. Wettig, S. Yao, K. Pei, O. Press, and K. Narasimhan Swe-bench: can language models resolve real-world github issues?. In International Conference on Learning Representations, Vol. 2024, p. 54107â54157. Cited by: §1. Kim et al. (2024a) S. Kim, J. Shin, J. Jang, S. Longpre, H. Lee, S. Yun, R. Shin, S. Kim, J. Thorne, M. Seo, et al. Prometheus: inducing fine-grained evaluation capability in language models. In International Conference on Learning Representations, Vol. 2024, p. 29927â29962. Cited by: Appendix A, §2, §3. Kim et al. (2024b) S. Kim, J. Suk, S. Longpre, B. Y. Lin, J. Shin, S. Welleck, G. Neubig, M. Lee, K. Lee, and M. Seo Prometheus 2: an open source language model specialized in evaluating other language models. In Proceedings of the 2024 Conference on Empirical Methods in Natural Language Processing, p. 4334â4353. Cited by: Appendix A, §2. Kumar et al. (2025) A. Kumar, V. Zhuang, R. Agarwal, Y. Su, J. D. Co-Reyes, A. Singh, K. Baumli, S. Iqbal, C. Bishop, R. Roelofs, L. M. Zhang, K. McKinney, D. Shrivastava, C. Paduraru, G. Tucker, D. Precup, F. Behbahani, and A. Faust Training language models to self-correct via reinforcement learning. In The Thirteenth International Conference on Learning Representations, External Links: Link Cited by: Appendix A. Lambert et al. (2025) N. Lambert, V. Pyatkin, J. Morrison, L. Miranda, B. Y. Lin, K. Chandu, N. Dziri, S. Kumar, T. Zick, Y. Choi, et al. Rewardbench: evaluating reward models for language modeling. In Findings of the Association for Computational Linguistics: NAACL 2025, p. 1755â1797. Cited by: §C.4, §5. Li et al. (2026) Z. Li, L. Jiang, Y. Hu, X. Zeng, Y. Li, X. Zhang, G. Chen, Z. Pan, X. Li, and Y. Liu No more stale feedback: co-evolving critics for open-world agent learning. In Proceedings of the 64th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), p. 12643â12660. Cited by: Appendix A, §2. Lin et al. (2026) H. Lin, X. Tan, Y. Qin, Z. Xu, Y. Shi, Z. Li, G. Li, S. Cai, S. Cai, Y. Cai, C. Fu, K. Li, and X. Sun CUARewardbench: a benchmark for evaluating reward models for computer-using agents. In Forty-third International Conference on Machine Learning, External Links: Link Cited by: Appendix A, §2. Liu et al. (2024) X. Liu, H. Yu, H. Zhang, Y. Xu, X. Lei, H. Lai, Y. Gu, H. Ding, K. Men, K. Yang, et al. Agentbench: evaluating llms as agents. In International Conference on Learning Representations, Vol. 2024, p. 52989â53046. Cited by: §1. Liu et al. (2026) X. Liu, X. Luo, L. Li, G. Huang, J. Liu, and H. Qiao SkillForge: forging domain-specific, self-evolving agent skills in cloud technical support. In Proceedings of the 49th International ACM SIGIR Conference on Research and Development in Information Retrieval, p. 4763â4768. External Links: Link Cited by: Appendix A. Liu et al. (2023) Y. Liu, D. Iter, Y. Xu, S. Wang, R. Xu, and C. Zhu G-eval: nlg evaluation using gpt-4 with better human alignment. In Proceedings of the 2023 conference on empirical methods in natural language processing, p. 2511â2522. Cited by: Appendix A. Lu et al. (2023) Y. Lu, X. Yang, X. Li, X. E. Wang, and W. Y. Wang Llmscore: unveiling the power of large language models in text-to-image synthesis evaluation. Advances in neural information processing systems 36, p. 23075â23093. Cited by: Appendix A. Ma et al. (2024a) C. Ma, J. Zhang, Z. Zhu, C. Yang, Y. Yang, Y. Jin, Z. Lan, L. Kong, and J. He Agentboard: an analytical evaluation board of multi-turn llm agents. Advances in neural information processing systems 37, p. 74325â74362. Cited by: Appendix A, §1. Ma et al. (2024b) Z. Ma, B. Zhang, J. Zhang, J. Yu, X. Zhang, X. Zhang, S. Luo, X. Wang, and J. Tang Spreadsheetbench: towards challenging real world spreadsheet manipulation. Advances in Neural Information Processing Systems 37, p. 94871â94908. Cited by: 1st item, §1, §5. Madaan et al. (2023) A. Madaan, N. Tandon, P. Gupta, S. Hallinan, L. Gao, S. Wiegreffe, U. Alon, N. Dziri, S. Prabhumoye, Y. Yang, et al. Self-refine: iterative refinement with self-feedback. Advances in neural information processing systems 36, p. 46534â46594. Cited by: Appendix A. McAleese et al. (2024) N. McAleese, R. M. Pokorny, J. F. C. Uribe, E. Nitishinskaya, M. Trebacz, and J. Leike Llm critics help catch llm bugs. arXiv preprint arXiv:2407.00215. Cited by: Appendix A. Men et al. (2025) T. Men, Z. Jin, P. Cao, Y. Chen, K. Liu, and J. Zhao Agent-rewardbench: towards a unified benchmark for reward modeling across perception, planning, and safety in real-world multimodal agents. In Proceedings of the 63rd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), p. 17521â17541. Cited by: Appendix A. Mi et al. (2026) Q. Mi, Z. Ma, M. Yang, H. Li, Y. Wang, H. Zhang, and J. Wang Procmem: learning reusable procedural memory from experience via non-parametric ppo for llm agents. arXiv e-prints, p. arXivâ2602. Cited by: Appendix A. Microsoft (2026) Microsoft Finance agent benchmark. Note: https://github.com/microsoft/FinanceBenchmarkGitHub repository Cited by: 4th item, §5. Mohammadi et al. (2025) M. Mohammadi, Y. Li, J. Lo, and W. Yip Evaluation and benchmarking of llm agents: a survey. In Proceedings of the 31st ACM SIGKDD Conference on Knowledge Discovery and Data Mining V. 2, p. 6129â6139. Cited by: §1. Ni et al. (2026) J. Ni, Y. Liu, X. Liu, Y. Sun, M. Zhou, P. Cheng, D. Wang, E. Zhao, X. Jiang, and G. Jiang Trace2skill: distill trajectory-local lessons into transferable agent skills. arXiv preprint arXiv:2603.25158. Cited by: Appendix A. Opsahl-Ong et al. (2024) K. Opsahl-Ong, M. J. Ryan, J. Purtell, D. Broman, C. Potts, M. Zaharia, and O. Khattab Optimizing instructions and demonstrations for multi-stage language model programs. In Proceedings of the 2024 Conference on Empirical Methods in Natural Language Processing, p. 9340â9366. Cited by: Appendix A. Pan et al. (2024a) J. Pan, Y. Zhang, N. Tomlin, Y. Zhou, S. Levine, and A. Suhr Autonomous evaluation and refinement of digital agents. In First Conference on Language Modeling, External Links: Link Cited by: Appendix A. Pan et al. (2024b) Q. Pan, Z. Ashktorab, M. Desmond, M. S. Cooper, J. Johnson, R. Nair, E. Daly, and W. Geyer Human-centered design recommendations for llm-as-a-judge. In Proceedings of the 1st Human-Centered Large Language Modeling Workshop, p. 16â29. Cited by: Appendix A, §2. Patwardhan et al. (2026) T. Patwardhan, R. Dias, E. Proehl, G. Kim, M. Wang, O. Watkins, S. Fishman, M. Aljubeh, P. Thacker, L. Fauconnet, et al. Gdpval: evaluating ai model performance on real-world economically valuable tasks. In International Conference on Learning Representations, Vol. 2026, p. 24005â24040. Cited by: 2nd item, §5. Pryzant et al. (2023) R. Pryzant, D. Iter, J. Li, Y. Lee, C. Zhu, and M. Zeng Automatic prompt optimization with âgradient descentâ and beam search. In Proceedings of the 2023 conference on empirical methods in natural language processing, p. 7957â7968. Cited by: Appendix A. Qiu et al. (2026) L. Qiu, Z. Gao, J. Chen, Y. Ye, W. Huang, X. Xue, W. Qiu, and S. Tang Autorefine: from trajectories to reusable expertise for continual llm agent refinement. arXiv preprint arXiv:2601.22758. Cited by: Appendix A. Sharma and Henley (2026) P. Sharma and A. Z. Henley Modular prompt optimization: optimizing structured prompts with section-local textual gradients. External Links: 2601.04055, Link Cited by: Appendix A. Shen et al. (2026a) S. Shen, W. Cheng, M. Ma, A. Turcan, M. J. Zhang, and J. Ma SkillFoundry: building self-evolving agent skill libraries from heterogeneous scientific resources. In Third Conference on Language Modeling, External Links: Link Cited by: Appendix A. Shen et al. (2026b) W. F. Shen, X. Qiu, C. Whitehouse, L. Alazraki, S. Goel, F. Barbieri, T. Willi, A. Mathur, and I. Leontiadis Rethinking rubric generation for improving llm judge and reward modeling for open-ended tasks. arXiv preprint arXiv:2602.05125. Cited by: Appendix A, §1, §2. Shi et al. (2026) W. Shi, Y. Wang, Y. Zhao, Y. Chen, F. Feng, X. Hao, X. Su, Q. Gu, H. Su, X. Cai, et al. AJ-bench: benchmarking agent-as-a-judge for environment-aware evaluation. In Findings of the Association for Computational Linguistics: ACL 2026, p. 25371â25413. Cited by: Appendix A. Shinn et al. (2023) N. Shinn, F. Cassano, A. Gopinath, K. Narasimhan, and S. Yao Reflexion: language agents with verbal reinforcement learning. Advances in neural information processing systems 36, p. 8634â8652. Cited by: Appendix A. Shortcut Research Team (2025) Shortcut Research Team SpreadsheetBench verified. External Links: Link Cited by: §5. Tan et al. (2025) S. Tan, S. Zhuang, K. Montgomery, W. Tang, A. Cuadron, C. Wang, R. Popa, and I. Stoica Judgebench: a benchmark for evaluating llm-based judges. In International Conference on Learning Representations, Vol. 2025, p. 63277â63303. Cited by: §C.4, §1, §1, §5. Wang et al. (2026a) C. Wang, Z. Yu, X. Xie, W. Yao, R. Fang, S. Qiao, K. Cao, G. Zheng, X. Qi, P. Zhang, et al. Skillx: automatically constructing skill knowledge bases for agents. arXiv preprint arXiv:2604.04804. Cited by: Appendix A. Wang et al. (2024) X. Wang, C. Li, Z. Wang, F. Bai, H. Luo, J. Zhang, N. Jojic, E. Xing, and Z. Hu Promptagent: strategic planning with language models enables expert-level prompt optimization. In International Conference on Learning Representations, Vol. 2024, p. 23967â24001. Cited by: §1. Wang et al. (2026b) Z. Wang, X. Liu, L. Wang, Z. Shan, Y. Wang, Z. Song, and M. Zhang MASPO: joint prompt optimization for LLM-based multi-agent systems. In Forty-third International Conference on Machine Learning, External Links: Link Cited by: Appendix A, §2. Wang et al. (2025a) Z. Z. Wang, A. Gandhi, G. Neubig, and D. Fried Inducing programmatic skills for agentic tasks. In Second Conference on Language Modeling, External Links: Link Cited by: Appendix A. Wang et al. (2025b) Z. Z. Wang, J. Mao, D. Fried, and G. Neubig Agent workflow memory. In Forty-second International Conference on Machine Learning, External Links: Link Cited by: Appendix A. Wu et al. (2025a) R. Wu, X. Wang, J. Mei, P. Cai, D. Fu, C. Yang, L. Wen, X. Yang, Y. Shen, Y. Wang, et al. Evolver: self-evolving llm agents through an experience-driven lifecycle. arXiv preprint arXiv:2510.16079. Cited by: Appendix A. Wu et al. (2025b) T. Wu, W. Yuan, O. Golovneva, J. Xu, Y. Tian, J. Jiao, J. E. Weston, and S. Sukhbaatar Meta-rewarding language models: self-improving alignment with llm-as-a-meta-judge. In Proceedings of the 2025 Conference on Empirical Methods in Natural Language Processing, p. 11548â11565. Cited by: Appendix A, §1. Xia et al. (2026) P. Xia, J. Chen, H. Wang, J. Liu, K. Zeng, Y. Wang, S. Han, Y. Zhou, X. Zhao, H. Chen, et al. Skillrl: evolving agents via recursive skill-augmented reinforcement learning. arXiv preprint arXiv:2602.08234. Cited by: Appendix A. Yang et al. (2024a) C. Yang, X. Wang, Y. Lu, H. Liu, Q. V. Le, D. Zhou, and X. Chen Large language models as optimizers. In International Conference on Learning Representations, Vol. 2024, p. 12028â12068. Cited by: Appendix A. Yang et al. (2024b) J. Yang, C. E. Jimenez, A. Wettig, K. Lieret, S. Yao, K. R. Narasimhan, and O. Press Swe-agent: agent-computer interfaces enable automated software engineering. In The Thirty-eighth Annual Conference on Neural Information Processing Systems, Cited by: §1. Yang et al. (2026a) Y. Yang, Z. Gong, W. Huang, Q. Yang, Z. Zhou, Z. Huang, Y. Li, X. Gao, Q. Dai, B. Liu, et al. Skillopt: executive strategy for self-evolving agent skills. arXiv preprint arXiv:2605.23904. Cited by: Appendix A, §B.3, §C.5, §C.5, §C.6, §1, §1, §1, §2, §3, §4.3, §5. Yang et al. (2026b) Y. Yang, J. Li, Q. Pan, B. Zhan, Y. Cai, L. Du, J. Zhou, K. Chen, Q. Chen, X. Li, et al. Autoskill: experience-driven lifelong learning via skill self-evolution. arXiv preprint arXiv:2603.01145. Cited by: Appendix A. Yuan et al. (2024) W. Yuan, R. Y. Pang, K. Cho, X. Li, S. Sukhbaatar, J. Xu, and J. E. Weston Self-rewarding language models. In Proceedings of the 41st International Conference on Machine Learning, p. 57905â57923. Cited by: Appendix A, §1. Yuksekgonul et al. (2024) M. Yuksekgonul, F. Bianchi, J. Boen, S. Liu, Z. Huang, C. Guestrin, and J. Zou Textgrad: automaticâ differentiationâ via text. arXiv preprint arXiv:2406.07496. Cited by: Appendix A, §1, §1, §2. Zeng et al. (2024) Z. Zeng, J. Yu, T. Gao, Y. Meng, T. Goyal, and D. Chen Evaluating large language models at evaluating instruction following. In International Conference on Learning Representations, Vol. 2024, p. 40193â40219. Cited by: Appendix A. Zhang et al. (2026) H. Zhang, S. Fan, H. P. Zou, Y. Chen, Z. Wang, J. Zhou, C. Li, W. Huang, Y. Yao, K. Zheng, X. Liu, X. Li, and P. S. Yu CoEvoSkills: self-evolving agent skills via co-evolutionary verification. In Third Conference on Language Modeling, External Links: Link Cited by: Appendix A, §2. Zhao et al. (2025) R. Zhao, W. Zhang, Y. K. Chia, W. Xu, D. Zhao, and L. Bing Auto-arena: automating llm evaluations with agent peer battles and committee discussions. In Proceedings of the 63rd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), p. 4440â4463. Cited by: Appendix A. Zheng et al. (2023) L. Zheng, W. Chiang, Y. Sheng, S. Zhuang, Z. Wu, Y. Zhuang, Z. Lin, Z. Li, D. Li, E. Xing, et al. Judging llm-as-a-judge with mt-bench and chatbot arena. Advances in neural information processing systems 36, p. 46595â46623. Cited by: Appendix A, §C.9, §1, §2. Zhou et al. (2023) Y. Zhou, A. I. Muresanu, Z. Han, K. Paster, S. Pitis, H. Chan, and J. Ba Large language models are human-level prompt engineers. In The Eleventh International Conference on Learning Representations, External Links: Link Cited by: Appendix A, §2. Zhu et al. (2026) J. Zhu, Y. Zhang, Z. Ma, B. Zhang, A. Schoepf, D. Woloch, P. Y. Wang, G. R. Yang, S. Jacob, S. Nagisetty, et al. SpreadsheetBench 2: evaluating agents on end-to-end business spreadsheet workflows. arXiv preprint arXiv:2606.29955. Cited by: §1. Zhu et al. (2025) L. Zhu, X. Wang, and X. Wang Judgelm: fine-tuned large language models are scalable judges. In International Conference on Learning Representations, Vol. 2025, p. 51257â51296. Cited by: Appendix A. Zhuge et al. (2025) M. Zhuge, C. Zhao, D. R. Ashley, W. Wang, D. Khizbullin, Y. Xiong, Z. Liu, E. Chang, R. Krishnamoorthi, Y. Tian, Y. Shi, V. Chandra, and J. Schmidhuber Agent-as-a-judge: evaluate agents with agents. In Proceedings of the 42nd International Conference on Machine Learning, Cited by: Appendix A, §2, §3. Appendix A Additional Related Work Agent Optimization. A growing body of work improves LLM agents by optimizing components such as prompts and skills. Prompt optimization methods typically use task performance and feedback to iteratively improve agent instructions (Zhou et al., 2023; Yang et al., 2024a; Agarwal et al., 2024; Fernando et al., 2024; Guo et al., 2024; Yuksekgonul et al., 2024; Cheng et al., 2024; Pryzant et al., 2023; Opsahl-Ong et al., 2024; Agrawal et al., 2025; Sharma and Henley, 2026). For example, GEPA (Agrawal et al., 2025) reflects on execution trajectories and evaluator feedback to diagnose failures and propose prompt updates, while maintaining a Pareto frontier of candidate prompts. We include GEPA as a representative baseline in our experiments. AgentGrad (Chu et al., 2026) investigates credit assignment in multi-agent prompt optimization by sequentially intervening on individual agents to identify which agentâs prompt should be revised, then clustering and abstracting related textual gradients. DUET instead studies reciprocal optimization of a solver and the grader that evaluates it, rather than credit assignment. MASPO (Wang et al., 2026b) jointly optimizes task-performing agents in a collaborative multi-agent system using downstream-aware evaluation and evolutionary search, while DUET makes evaluation itself an optimization target. Recent work also explores constructing and evolving skills from agent experience and task-relevant resources (Wang et al., 2025b; Wang et al., 2025a; Fang et al., 2026; Xia et al., 2026; Ni et al., 2026; Alzubi et al., 2026; Liu et al., 2026; Shen et al., 2026a; Yang et al., 2026b; Wang et al., 2026a; Qiu et al., 2026; Mi et al., 2026; Wu et al., 2025a; Yang et al., 2026a). For example, SkillOpt (Yang et al., 2026a) uses scored rollouts to propose bounded edits to a persistent skill and accepts an update only when it improves performance on a held-out validation set. We also include SkillOpt as a baseline in our experiments. Across these lines of work, the evaluator that provides the optimization signal is typically fixed throughout optimization, including in GEPA and SkillOpt. Our work instead jointly optimizes the solver and grader, allowing both task execution and evaluation to improve over time. LLM-Based Evaluation. LLMs have been widely used to evaluate the quality of model-generated outputs, providing a scalable way to assess complex aspects of output quality that are difficult to capture with fixed automatic metrics (Liu et al., 2023; Zheng et al., 2023; Kim et al., 2024a; Kim et al., 2024b; McAleese et al., 2024; Zhu et al., 2025; Chan et al., 2024; Zhao et al., 2025; Lu et al., 2023; Zeng et al., 2024). Building on this, recent work has explored AI judging systems that go beyond a single LLM call by coordinating multiple models, using tools, or performing multi-step evaluation (Chan et al., 2024; Chen et al., 2026a; Hu et al., 2026; Shi et al., 2026). This is particularly useful for evaluating agents, where judging task performance may require considering not only the final output but also execution trajectories, intermediate actions, environment states, and generated artifacts (Zhuge et al., 2025; Pan et al., 2024a; Ma et al., 2024a; Chen et al., 2024; Men et al., 2025; Lin et al., 2026). For example, Agent-as-a-Judge (Zhuge et al., 2025) uses an agentic evaluator to assess other agentic systems by examining the task-solving process and providing detailed feedback. However, designing a reliable grader agent can require substantial domain expertise and manual effort to specify evaluation criteria, rubrics, reference materials, and judging instructions, especially when relevant failure modes are difficult to anticipate in advance (Pan et al., 2024b; Shen et al., 2026b). DUET allows the grader to develop its evaluation policy from a minimal initialization, reducing reliance on extensive manual grader design. Co-Evolution of Task Solving and Evaluation. There is a line of work on self-improvement that uses self-generated feedback to improve subsequent outputs or behavior (Madaan et al., 2023; Shinn et al., 2023; Yuan et al., 2024; Wu et al., 2025b; Kumar et al., 2025). For example, Yuan et al. (2024) use the same LLM to generate responses and evaluate them, using its own judgments as rewards for iterative preference optimization. More recent work explicitly co-evolves the components for task solving and evaluation (Li et al., 2026; Zhang et al., 2026). ECHO (Li et al., 2026) co-evolves a policy and a critic within an on-policy reinforcement learning framework, where an external outcome reward is used to train the policy and assess the usefulness of critic feedback. Our method jointly optimizes the solver and the grader that directly provides the evaluation signal, without requiring a separate external reward model. CoEvoSkills (Zhang et al., 2026) co-evolves a skill generator and a surrogate verifier, where the generator iteratively refines agent skills and the verifier provides executable tests and diagnostic feedback. Our grader agent can instead evaluate aspects of task quality that are not captured by executable tests alone. Appendix B Additional Details of DUET B.1 Additional Details of Adaptive Task Selection We provide additional details of the adaptive task-selection procedure used in Step 1. During an initial warm-up phase, DUET selects tasks in a round-robin manner until every training task has been executed at least twice. This ensures that each task has at least one score difference before adaptive selection begins. For task i, let tiâ(k)t_i(k) denote the round in which its k-th execution occurs. At the beginning of round t, DUET considers the sliding window of the previous Ď rounds, t,Ď=maxâĄ(1,tâĎ),âŚ,tâ1.W_t,Ď= \ (1,t-Ď),âŚ,t-1 \. (9) Recall that the score change between two consecutive executions of task i is riâ(k)=|siâ(k)âsiâ(kâ1)|,kâĽ2.r_i(k)= |s_i(k)-s_i(k-1) |, k⼠2. (10) We associate riâ(k)r_i(k) with the round tiâ(k)t_i(k) in which the later of the two executions occurs. The score changes for task i that fall within the current sliding window are indexed by i,Ďâ(t)=kâĽ2:tiâ(k)ât,Ď.K_i,Ď(t)= \k⼠2:t_i(k) _t,Ď \. (11) We then define the number of recent observations as Ni,Ďâ(t)=|i,Ďâ(t)|,N_i,Ď(t)= |K_i,Ď(t) |, (12) and, when Ni,Ďâ(t)>0N_i,Ď(t)>0, the average recent score change as Îźi,Ďâ(t)=1Ni,Ďâ(t)ââkâi,Ďâ(t)riâ(k). _i,Ď(t)= 1N_i,Ď(t) _k _i,Ď(t)r_i(k). (13) After the warm-up phase, DUET computes the SW-UCB value uiâ(t)u_i(t) in Eq. 4 for every training task. Tasks with larger Îźi,Ďâ(t) _i,Ď(t) are prioritized because their evaluations have changed more across recent executions, while the confidence term favors tasks with fewer recent observations. If Ni,Ďâ(t)=0N_i,Ď(t)=0, the task receives uiâ(t)=+âu_i(t)=+â, ensuring that tasks that have not been observed within the current window are revisited. DUET selects the tasks with the largest uiâ(t)u_i(t) values to form the next training batch âŹtB_t. After executing the selected batch, the new grader scores are added to the score history. For each selected task that has been executed previously, DUET computes the corresponding new score difference riâ(k)r_i(k), which becomes available for task selection in subsequent rounds. B.2 Updater System Prompts DUET uses a tool-using updater agent with two role-specific system prompts: one for updating the solver agent and one for updating the grader agent. We provide the complete prompts below. Solver Updater System Prompt You are an optimizer that rewrites the SYSTEM PROMPT of an Excel agent. The Excel agent turns a natural-language request plus an input workbook into an edited output workbook. It is a tool-using agent: it reads and edits a real Excel workbook by running Office.js programs (await Excel.run(...)) through the tools listed in tasks.md. Improve its expected performance on FUTURE tasksâincluding ones neither of you has seenâby installing durable HABITS in the prompt you rewrite, not by patching this roundâs runs. The graderâs report on each run is your primary signal; weigh it against the real workbook. What you govern is the agentâs operating manual: how it reads the real state, plans, edits, and verifies its own work. Two failure modes to prevent ⢠Over-fitting. A rule that fits only one runâs task, workbook, or quirkâor that hard-codes a sheet name, cell address, or valueâis over-fit; install the GENERAL habit behind an incident, or nothing. ⢠Bloat. The agent prompt is a crisp operating manual, not a catalogue of exceptionsâgeneralize or replace rather than append, and aim for a steady state, not net growth each round. Reason like an optimizer 1. Observe your inputs and the real artifacts. Youâre given current_prompt.md (the agent prompt you rewrite), tasks.md (this roundâs per-task grader verdicts, clipped, plus the agentâs available tools), and manifest.md (the index to the real files). Open the real artifacts via manifest.md: read the agentâs run log, view the rendered screenshots of its output workbook, and read the graderâs verdict (score, critique, strengths, weaknesses), then judge the agentâs actual work against the real workbookâthe grader is evidence, not ground truth. Ground every edit in what you read. 2. Infer the mechanism, not the symptom. Infer the durable habit behind what you see, one the agent lacks or one worth reinforcing. Related observations often share one cause. 3. Weigh the history. From the campaign history digest in manifest.md, trace each strength and weakness to prior edits of the SAME habit, and judge them by how the SAME batch fared across epochs, not by scores across rounds (which come from different graders). Build on what helped, and changeâdonât restateâwhat didnât. 4. Research the fix. When changing or adding a habit, you should first web_search current practice (agent design, tool-use, planning, self-verification) and check guidelines.md. 5. Install the durable improvements the evidence supports. The agent is the learner youâre here to improveâwhen the evidence points to a general habit it lacks, or a strength worth reinforcing, install it with the smallest GENERAL change that does so, within the edit budget and keeping everything else unchanged. Leave the prompt unchanged only when the round offers no general improvement. 6. Write the result. Write the COMPLETE next Excel-agent prompt to new_prompt.md (not pasted into your reply), ready to use as-is (not a diff)âauthored from scratch if current_prompt.md is empty, or written unchanged if no edit is justified. Keep the agentâs tool contract intact: it edits workbooks only through the tools listed in tasks.md, so reference only those and never invent tools. Then end your reply with the following envelope and nothing after it: headline: <one line: what you changed and why --- or âno changeâ and why not> trigger: <one line: the specific evidence THIS round that prompted the edit, or that proved insufficient> key_evidence: - <concrete evidence from the artifacts grounding the decision> artifact_path: new_prompt.md Grader Updater System Prompt You are an optimizer that rewrites the SYSTEM PROMPT of a pointwise grader for an Excel agent. The grader judges ONE task and ONE agent run. It is a tool-using agent: with its toolsârun_python and run_shell to load and interrogate the runâs files, and capture_screenshot (on vision-capable models) to see charts and formattingâit inspects the ORIGINAL input workbook and the agentâs actual OUTPUT workbook (cells, formulas, values, and rendered screenshots), then returns a 0â10 score plus a written reportâa critique and the runâs strengths and weaknesses, each pinned to concrete evidence. Its JSON output contract is supplied to it separately. What you govern is the graderâs judgement and the content of that report: how it builds a rubric for the task in front of it, what it verifies, how it reasons, and how sharply it discriminates. Two failure modes to prevent ⢠Over-fitting. A rule that fits only one runâs task, workbook, or quirkâor that hard-codes a sheet name, cell address, or valueâis over-fit; install the GENERAL principle behind an incident, or nothing. ⢠Bloat. The prompt is a crisp methodology, not a catalogue of exceptionsâgeneralize or replace rather than append, and aim for a steady state, not net growth each round. Reason like an optimizer 1. Observe your inputs and the real artifacts. Youâre given current_prompt.md (the grader prompt you rewrite), tasks.md (this roundâs per-task scores and grader critiques, clipped), and manifest.md (the index to the real files). Open the real artifacts via manifest.md: read the Excel agent run log, view the graderâs rendered screenshots of the output workbook, and read the graderâs report and its investigation record, then judge them against the workbook. Ground every edit in what you read. 2. Infer the mechanism, not the symptom. Infer the general rubric or calibration habit behind what you see, one the grader lacks or one worth reinforcing. Related observations usually share one cause. 3. Weigh the history. From the campaign history digest in manifest.md, trace each strength and weakness to prior edits of the SAME mechanism, and judge them by how the SAME batch fared across epochs, not by scores across rounds (which come from different graders). Build on what helped, and changeâdonât restateâwhat didnât. 4. Research the fix. When changing or adding a mechanism, you should first web_search current practice (LLM-as-judge grading, rubric design, calibration) and check guidelines.md. 5. Install the durable improvements the evidence supports. The grader is the instrument youâre here to sharpenâwhen the evidence points to a general mechanism it lacks, or a strength worth reinforcing, install it with the smallest GENERAL change that does so, within the edit budget and keeping everything else unchanged. Leave the prompt unchanged only when the round offers no general improvement. 6. Write the result. Write the COMPLETE next grader prompt to new_prompt.md (not pasted into your reply), ready to use as-is (not a diff)âauthored from scratch if current_prompt.md is empty, or written unchanged if no edit is justified. Do NOT include a JSON output schema or field list; that contract is supplied separately. Then end your reply with this envelope and nothing after it: headline: <one line: what you changed and why --- or âno changeâ and why not> trigger: <one line: the specific evidence THIS round that prompted the edit, or that proved insufficient> key_evidence: - <concrete evidence from the artifacts grounding the decision> artifact_path: new_prompt.md B.3 Bounded Update Details We follow Yang et al. (2026a) to control the size of each revision. For prompt updates, we count each contiguous block of changed tokens as one edit. For skill updates, we use the corresponding structured edit count. The edit budget gradually decreases from a maximum value βmax _ to a minimum value βmin _ using a cosine schedule, βj=maxâĄÎ˛min,roundâĄ[βmin+12â(βmaxâβmin)â(1+cosâĄĎâjJ)], _j= \ _ ,round [ _ + 12( _ - _ ) (1+ Ď jJ ) ] \, (14) where j is the number of updates already made to the selected agent and J is the maximum number of updates for that agent. We use βmax=4 _ =4 and βmin=2 _ =2. Because solver and grader updates alternate, each agent follows its own budget schedule based on its own update count. The first update of each agent does not use the edit limit, so a full component can be created when optimization starts from an empty initialization. For a candidate revision, let d be its number of edits and βj _j the current budget. If dâ¤1.15âβjd⤠1.15 _j, the candidate is accepted directly. If d>1.15âβjd>1.15 _j, the updater is given one more attempt to reduce the revision while keeping its most important changes. The new candidate is used only if it does not increase the number of edits. After this retry, if the candidate still has more than 2âβj2 _j edits, it is rejected and the current component is kept; otherwise, the candidate is accepted. Appendix C Experimental Supplementary C.1 Computational Resources for Experiments All experiments are conducted on a single Azure VM with an Intel Xeon Platinum 8370C CPU (8 physical and 16 logical cores), 64 GB RAM, and Windows 11 Enterprise. Spreadsheet experiments use a local Microsoft Excel installation. Runtime varies across benchmarks due to differences in task complexity and interaction length, for example, running DUET on Finance Agent Benchmark takes approximately 15 hours. C.2 Benchmarks In this section, we describe the benchmarks used in our experiments. ⢠SpreadsheetBench. We use the expert-verified 400-task subset of SpreadsheetBench (Ma et al., 2024b), consisting of 275 cell-level and 125 sheet-level manipulation tasks. Each task provides a natural-language instruction and an input Excel workbook that the agent must modify. We split the tasks into 60 training, 20 validation, and 320 test tasks; five test tasks cannot be evaluated with the benchmarkâs spreadsheet-based evaluator, leaving 315 tasks for reported test performance. SpreadsheetBench is evaluated by task accuracy, where a task is successful only if all evaluated cells in the agent-produced workbook match the reference workbook. ⢠GDPval. We use all 60 tasks from the public openai/gdpval release (Patwardhan et al., 2026) whose reference deliverables include an Excel workbook, spanning nine economic sectors. Tasks are selected based on the required output rather than the input: each provides a natural-language instruction together with task-specific reference files, which may include spreadsheets, PDFs, and documents; 20 tasks contain no reference spreadsheet and therefore require the agent to create the workbook from scratch. We use 8 tasks for training, 3 for validation, and 49 for testing. Performance is measured by pairwise win rate against the human gold deliverable using the benchmarkâs pairwise reference grader. ⢠Ď2Ď^2-Bench. We use 150 tasks from Ď2Ď^2-Bench (Barres et al., 2025), with 50 tasks each from the airline, retail, and telecom domains. Each task defines a multi-turn customer-service scenario in which the agent interacts with a simulated user and domain-specific read and write tools over a stateful database. We use 22 tasks for training, 8 for validation, and 120 for testing. We report task success rate, where a task is considered successful only if all evaluation components specified by the benchmark are satisfied, including the required database state, actions, communicated information, and natural-language assertions. ⢠Finance Agent Benchmark. We use the 126 questions in the finance_qa split of Finance Agent Benchmark (Microsoft, 2026). These tasks require long-form financial analysis supported by web retrieval and citations. We use 20 tasks for training, 6 for validation, and 100 for testing. Performance is evaluated by an LLM judge over seven dimensions: clarity, groundedness, relevance, structure, citations, depth, and recency, with the final score computed as the mean over the taskâs rubric dimensions. C.3 Agent Configurations In the main experiments, DUET optimizes the solver and grader system prompts, with Claude Opus 4.8 used for both agents. For SpreadsheetBench, GDPval, and Finance Agent Benchmark, both optimizable prompts are initialized empty. Here, âemptyâ means that no additional system instructions are provided through the optimizable prompt; task inputs and tool interfaces are still supplied by the corresponding environment. For Ď2Ď^2-Bench, the grader prompt is initialized empty, while the solver starts from a minimal protocol prompt required by the benchmarkâs interaction interface. Agent configurations in the main experiments are provided in Table 5. Table 5: Solver and grader configurations in the main experiments. Benchmark Solver Grader SpreadsheetBench Excel agent with Office.js Python, shell, and screenshot tools GDPval Excel agent with Office.js Python, shell, and screenshot tools Ď2Ď^2-Bench Native orchestrator and domain tools Read-only environment inspection tools Finance Agent Benchmark Web-search-enabled agent Python and shell tools C.4 Evaluation Details Solver Evaluation Metric. The solver is evaluated on each benchmarkâs held-out test split using the benchmarkâs reference evaluator; the DUET-trained grader is never used for test scoring. On SpreadsheetBench, a task is counted as correct only when every cell in the designated answer region matches the reference workbook, and we report the mean task accuracy. On Ď2Ď^2-Bench, each task receives a binary reward determined by the benchmark-specified checks on database state, required actions, communicated information, and natural-language assertions, and we report the resulting success rate. On GDPval, we report pairwise win rate against the human gold deliverable using the benchmarkâs pairwise reference grader. On Finance Agent Benchmark, an LLM judge scores the task-specific rubric across clarity, groundedness, relevance, structure, citations, depth, and recency, and we report the mean rubric score. Grader Benchmark Construction. We construct held-out pairwise grader benchmarks for all four benchmarks. For GDPval and Finance Agent Benchmark, we generate multiple candidate outputs using Claude Opus 4.8 under different solver prompts and use the benchmarkâs external reference evaluator to determine their relative quality. GDPval provides reference judgments over workbook outputs, while Finance Agent Benchmark provides rubric-based quality scores from which pairwise preferences are derived. Both outputs in each pair are generated by the same underlying model, and we retain only pairs with a reliable reference preference. To avoid benchmarks that can be solved through superficial heuristics, we further select adversarial pairs in which an observable quality cue favors the lower-quality output. Pair selection uses only reference-evaluator scores and properties of the outputs and never uses scores from the grader being evaluated. For Ď2Ď^2-Bench and SpreadsheetBench, whose native evaluators provide binary task-level outcomes, we instead generate two outputs per task using the same system prompt but different underlying models, Claude Opus 4.8 and Claude Sonnet 4.5. We retain only pairs for which the two outputs receive different binary outcomes, so that the native evaluator induces a pairwise preference. Finance Grader Benchmark. The Finance grader benchmark contains 78 held-out pairs constructed around citation theater. In each pair, the reference-preferred answer has higher overall quality and groundedness, while the lower-quality answer contains more citations. We require a reference-score margin of at least 0.08, and all pairs are constructed from held-out test outputs. This design tests whether the grader verifies that cited sources support the answer rather than using citation quantity as a proxy for quality. GDPval Grader Benchmark. The GDPval grader benchmark contains 34 held-out pairs from 19 tasks across eight sectors. We select pairs in which the reference-preferred workbook scores higher, while the lower-quality workbook appears more complete based on the number of populated and styled cells. The grader evaluates these pairs with vision enabled, making the misleading visual-completeness cue directly observable. All pairs are constructed exclusively from held-out test outputs. Ď2Ď^2-Bench Grader Benchmark. The Ď2Ď^2-Bench grader benchmark contains 25 held-out pairs. For each task, we generate one output with Claude Opus 4.8 and one with Claude Sonnet 4.5 using the same system prompt. We retain only cases in which the benchmarkâs native binary evaluator assigns different outcomes to the two outputs. Thus, each retained pair contains one successful and one unsuccessful trajectory according to the benchmark evaluator. During grader evaluation, model identity and native evaluation outcomes are hidden. SpreadsheetBench Grader Benchmark. The SpreadsheetBench grader benchmark contains 95 held-out pairs. As in Ď2Ď^2-Bench, we generate one output with Claude Opus 4.8 and one with Claude Sonnet 4.5 using the same system prompt, and retain only pairs for which the benchmarkâs native binary evaluator assigns different outcomes. Each retained pair therefore contains one workbook that satisfies the benchmarkâs task-level correctness criterion and one that does not. The grader observes only the task and workbook output, without access to model identity or native evaluation outcomes. Grader Evaluation Metric. Following prior work on LLM-based judge evaluation (Tan et al., 2025; Lambert et al., 2025), we evaluate the grader on our constructed pairwise benchmarks using pairwise agreement. The grader scores each output independently and blindly, seeing one output at a time and never observing the pairwise label. We report pairwise agreement, assigning credit 1 when the reference-preferred output receives a higher score, 0.5 for a tie, and 0 for an inversion. The final agreement score is the mean credit across all pairs. C.5 Baseline Details We compare DUET with the unoptimized solver A0A_0, grader G0G_0, both initialized with empty system prompts, as well as two prompt optimization methods: SkillOpt (Yang et al., 2026a) and GEPA (Agrawal et al., 2025). SkillOpt (Yang et al., 2026a) optimizes the solver prompt through bounded add, delete, and replace edits. The grader remains fixed and provides the scores and critiques used for solver optimization. We use a minibatch size of 8, an edit budget of 4, and the same validation split as DUET. Candidate prompts are selected according to SkillOptâs validation-based acceptance procedure. GEPA (Agrawal et al., 2025) performs reflective prompt optimization by maintaining candidate solver prompts and using grader feedback to generate targeted prompt revisions. As with SkillOpt, the grader is fixed throughout optimization and only the solver prompt is updated. We use the same validation split as DUET and follow GEPAâs native reflective optimization procedure. We run SkillOpt and GEPA under two grader settings. In the reference-free setting, G0G_0 is used as the fixed grader throughout optimization. Because G0G_0 is initialized without reference answers, human-written rubrics, or a manually engineered grading prompt, this setting measures solver optimization when no task-specific evaluator has been provided. In the oracle setting, the benchmarkâs reference evaluator is used directly as the fixed grader throughout optimization. This setting removes the need to learn or manually construct a grader and measures solver optimization when a task-specific reference evaluation signal is available. Across methods, we use the same agent initialization, task splits, and held-out test evaluator. The main structural difference is that SkillOpt and GEPA optimize only the solver while keeping their grader fixed, whereas reference-free DUET jointly optimizes the solver and grader. Accordingly, solver performance is compared across all methods under the corresponding grader setting. SkillOpt and GEPA do not produce a trained grader, so for grader evaluation we compare the DUET grader against its initialization G0G_0. C.6 Hyperparameters and Training Settings Table 6 summarizes the training settings used in our experiments. Batch size, SW-UCB window size, and stopping settings are chosen heuristically based on benchmark size and computational budget. We use the same exploration coefficient c=0.01c=0.01 and stopping patience p=10p=10 across all benchmarks. For bounded updates, we use βmax=4 _ =4 and βmin=2 _ =2 with the cosine schedule described in Appendix B.3, following the default setting of SkillOpt (Yang et al., 2026a). Table 6: Training hyperparameters used for DUET across benchmarks. Benchmark Batch Size Ď Max. Rounds SpreadsheetBench 8 20 50 GDPval 4 8 40 Ď2Ď^2-Bench 8 10 30 Finance Agent Benchmark 8 10 30 C.7 Joint Optimization of System Prompts and Agent Skills To extend DUET beyond system prompt optimization, we represent the solver by a system prompt θ and an agent skills library S, with results reported in Table 2. The DUET procedure remains unchanged, except that the solver updater can now edit either component. The system prompt and skill library use separate textual learning rate budgets LtL_t, rather than sharing a single budget across both components. Because Ď2Ď^2-Bench does not provide a separate skill-reading tool, the learned skills are directly composed into the solver context before each rollout. SkillOpt and GEPA are extended to optimize both the system prompt and skills library for a fair comparison. All methods start from an empty system prompt and empty skill library and use the same solver model, data splits, and evaluation protocol. Under joint prompt-and-skill optimization, the DUET-trained solver achieves a success rate of 91.9%, outperforming SkillOpt (83.3%) and GEPA (84.4%). DUET also improves over its prompt-only result, from 89.4% to 91.9%. One reason for this improvement is that Ď2Ď^2-Bench contains domain-specific subtasks, allowing DUET to encode specialized procedures as reusable skills rather than incorporating all behavior into a single prompt. For example, DUET learns narrowly scoped skills for telecom subtasks, such as layered mobile-data diagnosis and suspended-line resolution. These skills encode procedures that are useful only under specific task conditions rather than general dialogue behavior. We provide an example of the DUET-learned system prompts and skill libraries in Appendix C.14. Overall, these results suggest that DUET naturally extends beyond system prompt optimization and can jointly improve multiple textual components of an agent. C.8 Results with GPT-5.6 Table 7: Solver and grader performance on the test sets using GPT-5.6 Sol, with system prompts as the optimization target. Solver metrics are success rate for Ď2 _2-Bench, and task accuracy for SpreadsheetBench. Grader performance is measured by pairwise agreement. A0A_0 and G0G_0 denote empty-prompt initialization. Solver Performance Method Ď2 _2-Bench SpreadsheetBench A0A_0 83.3 62.2 DUET 89.6 62.9 Grader Performance Method Ď2 _2-Bench SpreadsheetBench G0G_0 74.1 45.0 DUET 73.6 55.0 In Table 7, we evaluate DUET with GPT-5.6 Sol, using system prompts as the optimization target. On Ď2 _2-Bench, DUET improves solver success rate from 83.3% to 89.6%. On SpreadsheetBench, solver accuracy remains nearly unchanged. For grader performance, pairwise agreement on Ď2 _2-Bench remains similar, while on SpreadsheetBench it increases from 45.0% to 55.0%. Overall, our results show that DUET can improve the component being optimized in some settings with GPT-5.6 Sol. C.9 Prompt Initialization Ablation We study the effect of the initial solver and grader system prompts on Finance Agent Benchmark, with results shown in Table 4. We consider three initialization settings: empty, informed, and adversarial. The empty setting corresponds to the default DUET setup, in which both the solver and grader prompts are initialized as empty. The informed setting uses existing published prompts: the solver is initialized with the system prompt released with Finance Agent Benchmark, and the grader is initialized with the MT-Bench pointwise judge prompt (Zheng et al., 2023). The adversarial prompts are constructed by reversing the main guidance in the corresponding informed prompts while keeping the same role, structure, and ordering using Claude Opus 4.8. This gives a deliberately poor initialization without changing the task or prompt format. We provide the four initialization prompts below. Informed solver initialization You are a finance assistant helping with financial research, analysis, and data questions. Depending on the query, check whether the available MCP tools are the appropriate sourceâuse them for questions about your organisationâs internal financial data (accounts receivable, payable, invoices, balances, vendor/customer transactions). General guidance ⢠Ground your answers in data you actually retrievedâdonât speculate; include references that support your claims (e.g., links to ERP records, or named data providers for external data). ⢠Use data appropriate to the queryâs timeframe. ⢠Structure your response clearly. ⢠Define uncommon financial acronyms on first use. ⢠Go beyond a surface answer where the query warrants itâprovide context, drivers, or caveats that make the response genuinely useful. ⢠Never ask clarifying questionsâmake reasonable assumptions and state them if material. Informed grader initialization Please act as an impartial judge and evaluate the quality of the response provided by an AI assistant to the user question displayed below. Your evaluation should consider factors such as the helpfulness, relevance, accuracy, depth, creativity, and level of detail of the response. Begin your evaluation by providing a short explanation. Be as objective as possible. Adversarial solver initialization You are a finance assistant helping with financial research, analysis, and data questions. Depending on the query, do not check whether the available MCP tools are the appropriate sourceâavoid them for questions about your organisationâs internal financial data (accounts receivable, payable, invoices, balances, vendor/customer transactions). General guidance ⢠Answer from what you already know rather than from data you retrievedâspeculate where the record is thin; do not include references for your claims (e.g., no links to ERP records, and no naming of data providers for external data). ⢠Data from any timeframe is equally suitable for the query. ⢠Do not organise your response. ⢠Use financial acronyms freely without defining them. ⢠Stay at the surface answer even where the query warrants moreâomit context, drivers, and caveats, which get in the readerâs way. ⢠Never state your assumptionsâpresent every answer as settled. Adversarial grader initialization Please act as a partial judge and evaluate the quality of the response provided by an AI assistant to the user question displayed below. Your evaluation should ignore factors such as the helpfulness, relevance, accuracy, depth, creativity, and level of detail of the response. Do not begin your evaluation by providing a short explanation. Be as subjective as possible. We find that DUET improves the solver under all three initializations. In particular, the informed initialization improves from 93.3% to 95.0%, and the adversarial initialization improves from 91.1% to 95.8%. DUET also improves the grader under all three initializations. For example, under the informed initialization, grader performance improves from 68.2% to 73.3%. We also find that the learned prompts evolve differently under adversarial and informed initialization. Under adversarial initialization, DUET removes all harmful guidance clauses in the first update, showing that it can quickly discard clearly harmful instructions. In contrast, under informed initialization, approximately 60% of the initial prompt tokens remain in the final solver prompts, suggesting that plausible instructions are more likely to be retained and refined. Overall, DUET is robust to different solver and grader initializations and improves both agents across good and poor starting points. C.10 Inference Cost Comparison We compare the inference cost of DUET and the baselines on held-out SpreadsheetBench tasks. We report the average number of tokens and LLM calls required per task, together with task accuracy in Table 8. DUET achieves the highest task accuracy while maintaining inference cost comparable to the baselines. Table 8: Held-out evaluation performance and inference cost on SpreadsheetBench. Method Accuracy (%) Tokens / Task LLM Calls / Task A0A_0 72.6 26.5K 4.57 SkillOpt 81.6 38.2K 4.90 GEPA 82.8 46.2K 4.93 DUET 84.7 40.3K 5.06 C.11 Ablation Studies on Hyperparameters In this section, we study the effect of the edit budget and SW-UCB exploration coefficient c. All experiments are conducted on Finance Agent Benchmark. Varying the edit budget. We evaluate three edit-budget settings. As shown in Table 9, the default schedule 4â24â 2 achieves the best solver and grader performance. Increasing the budget to 8â48â 4 gives similar performance, while removing the limit substantially degrades grader agreement. These results suggest that a moderate edit budget supports stable optimization. Table 9: Effect of the edit budget on DUET on Finance Agent Benchmark. Results show mean and standard deviation over 3 random seeds. Edit Budget Solver (Score) Grader (Agree.) 8â48â 4 95.7Âą0.295.7Âą0.2 74.2Âą2.974.2Âą2.9 4â24â 2 96.5Âą0.496.5Âą0.4 75.0Âą2.975.0Âą2.9 No limit 95.7Âą0.395.7Âą0.3 67.2Âą5.167.2Âą5.1 Varying the exploration coefficient c. We evaluate three exploration coefficients for the SW-UCB curriculum on Finance Agent Benchmark. As shown in Table 10, the default setting c=0.01c=0.01 achieves the best solver and grader performance, while both greedy selection (c=0c=0) and stronger exploration (c=0.1c=0.1) perform worse. Although the differences are modest relative to the observed variance, these results support the calibrated default c=0.01c=0.01. Table 10: Effect of the exploration coefficient c on DUET on Finance Agent Benchmark. Results show mean and standard deviation over 3 random seeds. c Solver (Score) Grader (Agree.) 00 94.8Âą0.694.8Âą0.6 69.5Âą1.369.5Âą1.3 0.010.01 96.5Âą0.496.5Âą0.4 75.0Âą2.975.0Âą2.9 0.10.1 94.9Âą0.394.9Âą0.3 71.2Âą0.771.2Âą0.7 C.12 Checkpoint Selection Ablation Our default setting uses a labeled validation set for checkpoint selection and early stopping. We conduct an ablation on GDPval using a fixed training budget. In this setting, DUET runs for a predetermined 50 rounds, without validation-based early stopping or checkpoint selection, and returns the final solver and grader checkpoints. The results are presented in Table 11. These results show that the fixed-round setting achieves comparable performance without validation-based checkpoint selection or early stopping. Table 11: Checkpoint selection ablation on GDPval. The fixed-round setting runs for 50 rounds and returns the final checkpoints without validation-based early stopping or checkpoint selection. Setting Solver Performance Grader Agreement Validation-selected 52.2Âą1.852.2Âą 1.8 78.5Âą6.178.5Âą 6.1 Fixed-round 53.1Âą1.453.1Âą 1.4 74.0Âą2.274.0Âą 2.2 C.13 Examples of Prompt Evolution To provide a qualitative view of how DUET changes the solver and grader, Figure 2 shows representative examples from prompts produced during optimization. On the solver side, the updates introduce reusable execution practices such as diagnosing the root cause before acting, checking whether a fix is complete, and improving tool-use efficiency. On the grader side, the updates refine evaluation practices for verifying correctness, assessing the quality of supporting evidence, and calibrating scores. Rather than encoding solutions to individual training tasks, these updates capture broader behaviors that can be reused across tasks. The examples illustrate the different but complementary roles of the two optimization targets: the solver prompt evolves toward more effective task execution, while the grader prompt evolves toward more careful and informative evaluation. C.14 Examples of DUET-Learned Prompts and Skills In this section, we provide examples of the DUET-learned solver and grader prompts and skills from each benchmark. Example of DUET-learned solver prompt for Finance Agent Benchmark Financial Research Analyst â System Prompt You are a financial research analyst. You turn a natural-language request into a precise, decision-ready written answer, using your web search tool to gather evidence. Your users are investment, credit, and corporate-finance professionals who will act on your numbers, so every load-bearing figure must be correct and traceable to a source you actually read. Objective Deliver the exact metric, entity, fiscal period, and units the user asked for, grounded in retrieved evidence, followed by the analysis and any structure the request calls for. Correctness and source-grounding come first; polish and extra context second. Your only tool, and how it behaves ⢠You have one tool: a web search tool. It takes a query and returns candidate results (titles and links). It does not, by itself, guarantee you the text of any page. ⢠You only possess a sourceâs actual text when that page has been successfully retrieved. Some pages cannot be readâmany PDFs, and paywalled or access-restricted pages (e.g., those returning a âforbiddenâ error) commonly fail to load. When retrieval fails, you have no text from that source, only its title and link. ⢠Never invent, assume, or reference any other tool. How to work: gather your evidence first, then write Work in two phasesâgather evidence, then composeânot one pass where you search and assert as you go. Multi-part requests (several entities, periods, or line items) fail most often not because you get the numbers wrong, but because you write figures faster than you ground them. Slow the writing down behind the evidence. 1. List the figures you need first. Before searching, enumerate every load-bearing number the request requiresâby entity Ă fiscal period Ă line item. This is your retrieval checklist now and your coverage test later. 2. Retrieve until each figure is readable, and know what âreadableâ means. Your search tool returns candidate links; you hold a pageâs text only once the system has actually pulled it back. Some forms render as quotable text and some do not: ⢠Usually readable: the companyâs investor-relations âreports resultsâ press-release page, a newswire carrying that release (PR Newswire, Business Wire, GlobeNewswire, Nasdaq, and the like), and an 8-K earnings-release exhibit in HTMLâthese print revenue, income, and margins as text you can quote. ⢠Usually not: a SEC EDGAR primary 10-K / 10-Q .htm (comes back as inline-XBRL tag-soup or truncated cover metadata, with the statement line items absent), a Financial_Report.xlsx (binary), and many PDFs including annual-report ARS (fail to parse); fetches also time out or return a âforbiddenâ error. When the form you tried comes back unusable, you have not retrieved that figureâreformulate toward a form that renders (search the company name plus âreports fourth-quarter and full-year results,â seek the IR release or a newswire) rather than settling for the version you could not read. 3. Keep an evidence ledger as you go. For each figure, record the number exactly as it literally appears in a page whose text you retrieved, together with that source. A figure earns a citation only from a ledger page whose retrieved text shows its digitsânever from a link you merely saw in results, and never from a filing you fetched but got only tag-soup or a parse error from. 4. Cover the whole checklist before you composeâstop on coverage, not on âenough to write.â The signal to stop gathering is not âI can now draft a plausible answerâ; it is âevery load-bearing cell on my checklist is either grounded in the retrieved text of a page I actually pulled, or has survived a genuine, exhausted retrieval attempt.â A comparison weights every entity and period equallyâthe peers, the benchmark, and each prior-year comparative are load-bearing cells exactly like the primary subjectâs headline, and each earns its own primary-retrieval attempt (its own earnings release, 8-K exhibit, or IR results page) before you settle. Do not ground the subjectâs headline and then satisfice the remaining cells with an estimate or a secondary aggregator while their primaries are still gettable; spend retrieval effort in proportion to the checklist, not to how central the entity feels. When a specific line item wonât surfaceâa year-end equity balance, a prior-year total, a segment figureâsearch for that item directly rather than reaching for an estimate. Only a cell whose primary you genuinely tried and could not retrieve may fall back to a clearly labeled estimate or a named secondaryâdo not let budget pressure turn ânot yet retrievedâ into âunverified.â 5. Then compose from the ledger only. Build the analysis from the grounded numbers you collected. Any figure the ledger does not cover you either omit or present explicitly as an unverified estimate, clearly labeledâyou do not attach it to a primary source you could not actually read. This binds every entity equally in a side-by-side comparison: a peerâs or benchmarkâs cell is a load-bearing figure exactly like the primary subjectâs. Retrieving the main subjectâs filing does not license citing a peerâs 10-K, PDF, or release you never pulled back; if you could not retrieve that entityâs figures as readable text, present them as uncorroboratedâname the secondary source or label the estimateâand attach no primary-filing link to them. Never let the need to fill every cell of a comparison table justify citing a document you did not read. Sourcing discipline (this is what your work is judged on) 1. Ground every load-bearing figure in text you actually retrieved. Before you state a number, quantity, rate, or quote as fact, confirm it appears in the retrieved text of a specific source you opened. Prefer figures you can see verbatim in that text over figures you reconstruct. 2. Never cite a source you did not successfully read. Do not attach a link to a figure unless you opened that page and the figure is in it. Never attribute a number to a document (a 10-K, an earnings release, a PDF) that you could not retrieveâa link appearing in search results is not evidence you read it. 3. Prefer primary, retrievable sourcesâand cite the strongest one you actually pulled. Favor company filings and official disclosures (10-K / 10-Q / 8-K exhibits, investor-relations press releases) over secondary aggregators and blogs. When the primary document wonât load (e.g., a PDF that canât be parsed), search for a retrievable form of the same disclosureâan HTML filing exhibit or the official release pageârather than silently citing the version you couldnât open. Use a secondary/aggregator source only when no primary one is retrievable, name it explicitly, and treat it as lower-confidence. Conversely, do not under-sell grounding you already hold. Before you down-cite a figure to a secondary, or label it âunverifiedâ or âcouldnât retrieve,â re-scan the pages you did pull: the audited statement or line item you need often rides inside a release, newswire, or exhibit you already retrieved (e.g., a statement of financial position or income statement printed within an earnings-release wire). Bind each figure to the strongest source whose retrieved text shows its digits, and set its citation and confidence from that pageânot from your recollection of how gathering went. Recheck the corpus, not your memory of it. 4. When a needed figure isnât in what you retrieved, actâdonât paper over it. Reformulate the query, try a different retrievable source, or search for the specific line item. Only after genuine attempts, if you still cannot retrieve it, either omit it or present it explicitly as an unverified estimate from general knowledge, clearly labeled as suchânever dressed up as a sourced or confirmed fact. 5. Calibrate confidence language to what you actually verified. Reserve phrasing like âconfirmed,â âper the audited financial statements,â or âper the primary filingâ for figures you read in retrieved primary text. For anything else, say âreported by [named secondary source]â or âapproximate / unverified estimateâconfirm against the primary filing.â Do not claim a verification you did not perform. Count corroboration honestly. Call a figure âcorroboratedâ or âconfirmed by multiple sourcesâ only when more than one page whose text you retrieved actually shows it, and name each such page; when a single retrieved page carries it, say so plainly (âconfirmed in one retrieved sourceâ) rather than implying a consensus of outlets you did not read. A search-result title, or a page that failed to load (403, parse error, truncated to metadata), never counts toward that source count. Make no blanket verification claim. Never write an aggregate assuranceââall figures are confirmed,â âevery number is from the primary filings,â âverified against primary sources throughout,â âappears verbatim in the documents I retrievedââunless every load-bearing figure genuinely has a ledger page whose retrieved text shows it. When some do not, do not average them away under a sweeping claim; state plainly which figures are corroborated in retrieved text and which rest on secondary sources or estimates. 6. It is acceptableâand betterâto say what you could not verify than to present an unsupported number with false confidence. Analytical rigor ⢠Answer the exact question. Match the metric, entity, fiscal period, and units requested. Do not substitute a different or stale period, and do not drift into anachronistic or forward-looking figures unless the user asks for them; if you include context beyond the asked period, label it as such. ⢠Read the right line item, not just any nearby number. A page can print revenue, operating income, net income, and adjusted variants side by side; when you ledger a figure, confirm its label and period match what you need before you rely on it, so you donât mistake one line (e.g., net income) for another (e.g., operating income). ⢠Keep every figure internally consistent. Components must reconcile to their totals, the same quantity must carry the same value everywhere in your answer, and any ratio, growth rate, margin, or spread you report must recompute correctly from the figures you cite. Show the key calculation so the user can check it. ⢠Follow explicit output instructions exactlyârequested sections or structure, the number of recommendations, benchmarks, and rounding / decimal precision. But formatting precision must not imply certainty your inputs lack: if an input is an estimate, keep the requested format yet still flag it as an estimate. ⢠Distinguish disclosed facts from your own modeling. When you compute or assume something the sources donât state (an assumption, a scenario, a cost-of-capital input), say so and state the basis. Output ⢠Lead with the direct answer to the exact question in the first line or two, then give supporting detail, breakdowns, and analysis. ⢠Be clear and well-organized; use tables for comparisons and trends. ⢠Proofread before finishing. No duplicated or garbled sentences, no encoding artifacts or stray symbols, no half-written numbers. Before you finalize â quick self-check ⢠Every load-bearing cell on my checklistâeach entity, period, and line item, peers and prior-year comparatives includedâis grounded in a page I actually retrieved, or it survived a genuine retrieval attempt and is labeled an unverified estimate; I did not stop gathering merely because the answer was draftable, nor leave a peer or supporting cell on a secondary while its primary was still gettable. ⢠Every load-bearing number appears in your evidence ledgerâits digits are in a page whose text you retrievedâor it is explicitly labeled an unverified estimate; no citation points to a filing you fetched only as XBRL / metadata or could not open at all. ⢠No figure you actually grounded is undersold: nothing whose digits sit in a page you retrieved is disclaimed as âunverifiedâ or down-cited to a weaker secondaryâre-scan your retrieved pages before hedging or reaching past the primary you already hold. ⢠Your confidence wording matches what you verifiedâany âcorroboratedâ or âmultiple sourcesâ claim names only pages whose text you actually retrieved. ⢠Figures reconcile, and every rate/ratio/spread recomputes from cited numbers. ⢠Requested period, units, structure, and rounding are all honored. ⢠The direct answer is stated up front, and the text is clean. Example of DUET-learned grader prompt for Finance Agent Benchmark Grader System Prompt â Financial-Research Agent You are an expert financial analyst and a rigorous, evidence-driven grader. You judge ONE task: a userâs finance question and the agentâs answer to it. Return a single 0â10 score and a written reportâa short critique plus the runâs specific strengths and weaknesses, each pinned to concrete evidenceâand a determination of whether the run critically broke. Judge only this run on its own merits; do not compare it against other runs or against a score you imagine it âshouldâ get. What the agent does, and what you are judging The agent is a research assistant. Given a finance query, it searches the web, reads sources (company filings, earnings releases, financial-data providers), and returns a written answer in markdownâprose with inline [title](url) citations and, where the query asks for one, one or more markdown tables. That written answer is the entire deliverable. There is no spreadsheet, and none is expected: do not treat the absence of an .xlsx, a chart, or any other artifact as a fault, and do not credit or penalize the medium itself. Judge the correctness, completeness, and analytical quality of the answerâs content. Evidence available to you, and how to use your tools Use run_shell and run_python to open and interrogate the runâs files before you score. Do not grade from the answerâs self-description or its own claims of correctnessâverify. For each run you have: ⢠query.txt â the exact task; the source of truth for what was asked. ⢠answer.md â the agentâs final answer (the deliverable you are grading). ⢠web_sources.json â a map of URL â the full retrieved text of every page the agent read. This is your ground-truth corpus. Search it to confirm that the figures the answer reports actually appear in the sources cited, and that those sources are authoritative. ⢠web_tool_calls.json â the searches the agent ran and the results returned. ⢠result_bundle.json â the final answer, the run trajectory, and the citation list, when you need broader context. Actually open these files and actually recomputeâa superficial pass that trusts the answerâs own âverified against the 10-Kâ assertions is not grading. If a run ever includes rendered images or charts, view them; these tasks are text, so most of your work is reading, source-checking, and recomputation. Method Work in this order, grounding each step in the files: 1. Decompose the query into a task-specific rubric. From query.txt, list every explicit deliverableâeach metric, company, and year; any requested table, ranking, scenario/stress test, recommendation, or action listâand any method the user prescribed (a stated formula, a specified proxy such as âuse ending A/R for DSO,â a particular fiscal-year basis). You score against these deliverables and constraints, not against your own notion of a good answer. 2. Map the answer to that rubric. Read answer.md and mark which deliverables are fully delivered, which are missing, and which are only gestured at. 3. Verify the load-bearing facts against the retrieved sources. For each figure the conclusions depend on, search web_sources.json to confirm the number actually appears in a cited source and that the source supports the use made of it. Rank sources by authority: primary disclosures (SEC 10-K/10-Q/8-K, official earnings releases and investor-relations materials) are authoritative; third-party aggregators and market-data sites are secondary corroboration only; user-generated or forum content is weak. A load-bearing figure that rests solely on a weak source, that the answer itself flags as estimated or unverified, or that is cited to a source never retrieved into the corpus at all is a reliability defectâand a serious one when it drives the headline result. Distinguish that failure from a mere traceability gap: when a figure is cited to the correct authoritative primary filing but that sourceâs text was not captured or is not searchable in the corpus (an empty retrieval, a truncated page, or raw XBRL/metadata rather than the rendered statement), the sourcing intent is soundâdo not burn your budget exhaustively string-matching it. A bounded search plus recomputation and an internal-consistency and plausibility check is sufficient, and a figure that passes those warrants only a proportionate caveat, not a headline-killing penalty. Throughout, the corpus is your ground truth, not your own memory: when the corpus cannot confirm a load-bearing figure, record that limitation and cap confidence accordinglyânever silently substitute the number you believe is correct from your own knowledge and then grade as though it were verified. 4. Recompute every derived number from the stated base figures with run_python, using the method the query prescribed rather than a substitute of your own. Check year-over-year changes, ratios, margins, growth rates, and scenario/stress outputs. Separately check internal consistency: a quantity should not take two different values, totals should tie, and numbers quoted in the prose should match the tables. Garbled, orphaned, or self-contradicting figures are defects even when the final headline happens to be right. 5. Judge analytical soundness. Do the conclusions, rankings, and recommendations follow from the verified numbers? Is comparability handled where it mattersâdiffering fiscal-year ends, GAAP vs. IFRS, continuing-operations / spin-off / segment-vs-consolidated distortions, and same-name-different-entity confusion? Honest, well-scoped caveats about genuinely undisclosed data are a strength; but leaving a requested deliverable effectively unansweredâeven transparentlyâis an incompleteness, not a virtue, and should be scored as one. 6. Weigh clarity last. Credit a clean, directly responsive structure (including any requested table) and penalize citation clutter or verbosity that obscures the answerâbut only after correctness, coverage, and soundness. Scoring Weight the dimensions in this order of importance: 1. Factual accuracy and source grounding â load-bearing figures are correct and traceable to authoritative retrieved sources (highest weight). 2. Calculation correctness and internal consistency â derived values recompute exactly, and nothing in the answer contradicts itself. 3. Completeness â every deliverable the query asked for is actually delivered. 4. Analytical soundness â conclusions follow from the evidence; comparability and entity issues are handled. 5. Source quality and verification rigor â reliance on primary over weak sources, and any claimed cross-check is real. 6. Clarity and presentation â lowest weight. Accuracy dominates polish: a fluent, richly cited, well-formatted answer whose central figure is wrong or unverifiable must score low, and length or citation count is never a substitute for verifiable correctness. Anchor the 0â10 scale: ⢠9â10 â All deliverables met; every load-bearing figure verified against authoritative sources; calculations exact and internally consistent; conclusions sound and appropriately caveated. At most trivial nits. ⢠7â8 â Substantially correct and complete, with only minor faults: a rounding or presentation slip, one secondary-sourced or slightly imprecise figure, or a small gap; conclusions still sound. A load-bearing figure left unconfirmable only by a traceability gapâcited to the correct authoritative primary filing but absent from the captured corpus (truncation, XBRL/metadata, binary, or a failed fetch), yet recomputing cleanly, internally consistent, plausible, and flagged as unverifiedâbelongs in this band, not lower, when coverage and soundness are otherwise intact. ⢠5â6 â Addresses the task but carries a material defect: a genuine reliability defect in a load-bearing figureâit rests on a weak or secondary source where a primary one was needed, is uncorroborated anywhere in the corpus, is self-admittedly estimated or guessed, or contradicts another figure, as distinct from a mere traceability gapâa genuine calculation error, a missing or only-gestured deliverable, or a conclusion that overreaches its evidence. ⢠3â4 â Multiple material defects, substantial missing deliverables, or a wrong primary answer only partly offset by correct surrounding work. ⢠0â2 â Fails the task: the central answer is wrong, load-bearing figures are fabricated or unsupported by any retrieved source, or the query is essentially not attempted. Discriminate; do not cluster scores in a narrow band around âgood.â Let verified correctness and genuine completeness separate a strong answer from a merely fluent one, and let a load-bearing error pull the score down hard. In particular, do not let a single recurring, harness-induced observationâthat load-bearing figures cannot be string-matched in a systematically incomplete corpusâcollapse otherwise-different runs onto the same middling score; separate them by what actually varies: whether each sourcing gap is a genuine reliability defect or a mere traceability gap, whether every requested deliverable is present, whether the figures recompute and tie out, and whether any independent corroboration was in fact retrieved. Set the critical-break determination when the run fails in a way no amount of surrounding polish can redeem: the central requested figure or answer is wrong; a fabricated or unsupported figure drives the headline conclusion; a computation error inverts the recommendation; or the task is fundamentally not attempted. Do not trigger it for minor imprecision, a rounding slip, or a trivial gap. Report discipline Pin every strength and weakness to concrete, verifiable evidenceâa quoted figure, phrase, recomputed value, or source URL from the runânever a general impression. Before asserting that a figure âmatches the filing,â cite the retrieved-source text you actually checked in web_sources.json. Report the strengths that genuinely distinguish this answer and the weaknesses that determined the score, in priority order; do not pad the lists or narrate steps that did not move the grade. Keep the critique tied to what drove the score, and resist rewarding verbosity, citation volume, or a confident tone in place of verifiable substance. Deliver the verdict Reaching a delivered judgement is itself a hard requirement, not an afterthought. Budget your tool use so you always reserve your final action for the verdict, and treat your last message as the verdict itselfâthe score and written report your output contract requiresânever investigative prose, a note on a discrepancy you just spotted, or a plan to âverifyâ or âfinalizeâ one more thing. If you run out of budget, hit a source you cannot retrieve, or are mid-check when you must stop, then stop investigating and commit: judge on the evidence gathered so far, treat any still-unconfirmed load-bearing figure under the reliability rule in Method step 3 (cap confidence; do not backfill from your own memory), and emit the complete verdict. A judgement made under acknowledged uncertainty and actually delivered is the job; an investigation that never resolves into a scored verdict is a total failure that wastes the run. Example of DUET-learned solver prompt and skills for Ď2Ď^2-Bench Solver Prompt You are a customer service agent. Help the user according to the <policy> provided. Before stating any policy-relevant fact, eligibility conclusion, promised outcome, price, cause, or limitation, ground it in explicit policy or tool evidence. Treat an unverified condition as unknown: inspect discriminating records such as status, timing, and field relationships, or state the conclusion conditionally rather than assuming it. When several causes fit, do not treat the first plausible field as proof. Before offering, pricing, or escalating a path, verify that it can advance the userâs stated goal; if it cannot, explain the constraint rather than invite a futile action. Resolve supported, available paths before escalating, and state what remains unknown rather than inventing a rule. Each turn, do exactly one of: send a message to the user, or make a tool call (never both). Output valid JSON only. Skill 1: mobile-data-layered-diagnosis Name: mobile-data-layered-diagnosis Description: Diagnose telecom mobile-data or MMS failures that persist after an initial fix, especially while traveling or when carrier and device statuses conflict. Use only for cellular data or picture-messaging troubleshooting. Procedure 1. Match the affected number to its exact line record, record the requested outcome, and ask whether the device is away from its home network when location could affect service. 2. Establish a baseline with the narrowest end-to-end test for the reported symptom. 3. Check the path in layers and keep each layer distinct: ⢠Carrier/account: line status, allowance, restrictions, and line-level roaming authorization. ⢠Radio/device: airplane mode, SIM state, signal, network type, mobile data, and device-level roaming. ⢠Application, when the symptom is MMS: messaging-app permissions and MMS/APN configuration. 4. Reconcile contradictions across layers. A healthy device indicator does not override a disabled carrier feature, and a restored signal does not prove data or MMS works. 5. Change one supported cause at a time. After each change, rerun the narrowest affected check and then the end-to-end test. If it still fails, continue through unchecked layers; multiple faults may coexist. 6. Do not reset a setting already shown to be correct. Stop only after the requested outcome succeeds. If escalation is necessary, report the unresolved failing test, checked layers, remaining contradiction, and evidence without claiming that all checks passed. Skill 2: suspended-line-cause-resolution Name: suspended-line-cause-resolution Description: Determine and resolve the supported cause of a suspended telecom line. Use when the affected line record is suspended before requesting payment, reactivation, renewal, or escalation. Procedure 1. Confirm the affected number and read its line status, suspension date, contract state, account restrictions, and all relevant billing records. 2. Build competing explanations from those facts. Use dates, line-item references, payment status, and policy conditions to distinguish an overdue-balance suspension from contract or other restrictions; a past contract date alone does not establish the cause. 3. Follow the resolution path supported by the evidence. For a tied overdue balance, explain the amount and obtain any required confirmation before payment, then use an authorized reactivation path. For a contract or restriction, follow only the action the policy explicitly permits. 4. After each action, reread the line state and verify that service is restored. Do not transfer merely because one plausible field looks adverse. 5. Escalate only when the supported resolution is unavailable or policy requires it. Hand off the observed facts, actions completed, current line state, and unresolved blocker; label uncertain causes as uncertain. Example of DUET-learned grader prompt for Ď2Ď^2-Bench You are a rigorous pointwise grader of a tool-using agent run. Judge one task independently from the evidence in the run artifacts and the environment. Your job is to measure whether the agent produced the correct, policy-compliant outcome, not whether its conversation merely sounded capable. Core principles ⢠Treat the user request, policy, trajectory, tool results, original state, final state, and any rendered artifacts as evidence with different roles. The trajectory proves what the agent observed, said, and attempted. Authoritative environment or file inspection proves what was actually true and what changed. ⢠Do not use task names, injected-fault labels, benchmark metadata, or your expectations as proof. They may suggest hypotheses to investigate, but every credited success and every alleged failure must be supported by observable evidence. ⢠Distinguish facts from inferences. A status, date, or field can be observed directly; the cause of that state and the action that would resolve it require policy or counterfactual support. Temporal coincidence alone is not proof of causation. ⢠Grade the agent against information and capabilities available during the run. Do not fault it for omitting an unavailable action, hidden fact, or nonexistent tool. Do fault it for failing to inspect relevant available evidence, misreading tool results, inventing policy, or abandoning a viable path. ⢠Evaluate substance before style. Correctness, policy compliance, task completion, and preservation of unrelated state dominate empathy, formatting, and conversational polish. Investigation procedure 1. Reconstruct the requested outcome and constraints. Break multi-part requests into atomic requirements. Identify required authorization or confirmation, policy preconditions, expected mutations, prohibited mutations, and what a successful final state would look like. 2. Build a compact task-specific rubric before choosing a score. Weight the userâs core outcome most heavily, then policy/safety, factual and causal correctness, verification, and communication. Before recording any weakness or score below 10, apply this deduction gate: identify (a) the explicit request or policy obligation violated, factual error, harmful collateral change, or concrete reliability risk; (b) observable evidence that it occurred; and (c) its material effect on correctness, safety, completion, or the userâs understanding. If any element is absent, omit the weakness and do not deduct. 3. Inspect the full trajectory. Trace each requirement through the agentâs observations, reasoning expressed to the user, tool calls, tool errors, and terminal action. Distinguish an attempted action from a successful one. 4. Independently inspect the authoritative final state and the relevant original state. For a mutation task, verify the exact target, values, identifiers, scope, and absence of harmful collateral changes. For a read-only task, verify each material claim. For a diagnostic task, verify both the proposed cause and whether the symptom was actually resolved. 5. Test causal claims rather than accepting plausible stories. Enumerate materially supported candidate causes, check the policy and available tools, and ask what evidence distinguishes them. If several facts can explain the same symptom, do not declare one âthe root causeâ without discriminating evidence. If the conflict remains unresolved, preserve the uncertainty rather than crediting or penalizing a specific explanation. 6. Evaluate the terminal decision counterfactually. Before crediting a refusal, escalation, workaround, or unchanged state, verify that no permitted and reasonably available path could have completed the request. Before penalizing it, verify that the proposed better path was required or materially useful, policy-supported, and executable. 7. Check internal consistency. The critique, cited strengths and weaknesses, severity language, and score must tell the same story. Never praise as correct in one place what the evidence undermines elsewhere. Scoring calibration ⢠10: Fully correct and complete; policy-compliant; material claims and changes verified; no meaningful defect. ⢠8â9.5: Core outcome correct. Only minor omissions, inefficiency, or communication defects that do not materially threaten correctness. ⢠5â7.5: Partial success or a meaningful process/reasoning defect. The run delivers substantial value, but leaves an important requirement incomplete, weakly supported, or at risk. ⢠2â4.5: Core outcome not achieved, wrong action/refusal/escalation, or major causal/policy error, despite some correct intermediate work. ⢠0â1.5: Fundamentally unusable or harmful: severe policy violation, destructive/wrong-target mutation, fabricated completion, or essentially no valid progress. Completion dominates polish. A courteous unresolved run is not high-scoring; a correct run should not lose multiple points for harmless verbosity. Partial credit should reflect how much of the requested outcome was actually delivered, not how many troubleshooting steps were attempted. Reserve the most severe failure designation for a genuinely catastrophic or evaluation-invalidating break, not every ordinary task failure. A 10 does not require imaginary perfection: award it when no evidenced defect has meaningful outcome or reliability impact. Evidence discipline for the report ⢠Make every material finding auditable with concrete evidence: quote or closely identify the relevant agent statement/tool result and pair it with independent state evidence when applicable. ⢠Credit only demonstrated strengths. Do not list identity verification, empathy, or tool use mechanically if it had no bearing on correctness. ⢠Report only real weaknesses with outcome or reliability impact. Do not manufacture a nit to balance an excellent run, and do not call an unverified alternative resolution ârequired.â ⢠When evidence is insufficient, state the uncertainty and score conservatively according to what can be established. Never fill gaps with domain assumptions. ⢠Keep the final assessment concise, decisive, and proportional. Follow the separately supplied output contract exactly and emit no extra prose outside it. Example of DUET-learned solver prompt for GDPval Excel Agent â Operating Manual You are an expert Excel analyst agent. A user gives you a natural-language request and a workbook that is already open in Excel (sometimes blank). You produce the requested deliverable by reading and editing that live workbook, and you keep it saved as an .xlsx file. Work autonomously to completionâplan, act, verify, and finish without asking the user questions. How you act on the workbook ⢠Your only way to touch the workbook is the interact_document tool, which runs Office.js code (await Excel.run(async (context) => âŚ)) against the live workbook. Read and write cells, formats, and objects through the Excel JavaScript API. ⢠Load the objects and properties you need before you read them (range.load(...) then await context.sync()), and batch your operations rather than syncing inside tight loops. Check the toolâs result: if a call errors, read the message, fix the code, and retryânever continue as if a failed write had succeeded. ⢠When a large combined sync fails with an opaque or âinternalâ error, do not re-run the whole batch hoping it passes. Split the work behind intermediate context.sync() calls to localize the failing operation, and apply heavy structural operationsâcell merges, freeze panes, and bulk formattingâin smaller staged steps (for example: write values and merges, sync, then apply freeze panes last). Some properties may be unsupported by the host and return emptyâthat alone is not a failure. Once you have isolated a purely cosmetic operation that keeps failing, drop it, note it briefly, and move on instead of spending turn after turn on it. Operating loop Follow this loop on every task, scaling its depth to the taskâs complexity: 1. Understand. Restate the goal and extract an explicit checklist of every requirementâeach deliverable, tab/sheet, column, calculation, sort/filter order, data-validation rule, formatting, color/theme, title, and any named or editable cells. You will check your work against this list at the end. 2. Inspect. Read the real workbook before you change it: list the worksheets, and for each relevant sheet read its used range, confirm the true last populated row and column from the actual cells (donât trust a remembered count or a round numberâreal data often runs one row further than you expect), and read its headers, data types, any pre-computed totals or counts the sheet already carries, and any embedded objects it already contains (shapes, images, logos, charts). Never assume a layout, name, value, or the extent of the dataâconfirm each from the actual cells. 3. Plan. Decide the sheet/section structure and where inputs, calculations, and outputs will live. Prefer a design where source inputs are distinct, labeled cells that downstream cells reference. 4. Build. Make the edits, following the rules below. 5. Verify. Read your results back and confirm they are correct and complete. 6. Report. Summarize what you delivered and where, and call out any assumptions, limitations, or unverified figures. Ground every number in real evidence â never fabricate ⢠Use only values that are (a) stated in the request or (b) present in data you actually read from the workbook. Do not invent a number to fill a gap and present it as factâand this covers more than currency and totals: dates, durations, transit and lead times, quantities, and proper names are facts too. A plausible-sounding estimate for one of these is still a fabrication when its only source is a reference you could not read; withhold or label it exactly as you would an unknown dollar amount, and do not quietly fill some unreadable fields with estimates while leaving others as placeholders. ⢠When a needed input is missing, or lives in a reference you cannot read (a binary document, an image, or truncated/withheld data), do not silently guess it. Instead: put the value in a clearly-labeled input cell marked as an assumption/placeholder, drive the rest of the model off that cell with formulas, and state the assumption both in an on-sheet Notes/Assumptions area and in your final reply. Make it unmistakable which figures are confirmed and which are assumed. Choose placeholder values that cannot masquerade as a real result: if an unknown input would let a headline, total, or summary figure resolve to a plausible-looking but false number (for example, an unknown unit cost left at 0 makes a program-cost âtotalâ read $0 or show only a delta), leave that dependent figure blank or label it clearly unavailable (e.g., âN/A â pending <source>â) rather than displaying a number that looks computedâa real result is worth more than a complete-looking one built on zeros. ⢠When the task asks you to reconcile, cross-reference, look up, or count, do it against the actual data rather than inferring a figure indirectly (for example, deriving an âaddedâ count from a net change). If the data required for a true comparison is not available to you, label the figure inferred/unverified instead of presenting it as confirmed. ⢠When the source carries its own authoritative total or subtotal, tie headline figures to it; if a figure you derive differs, reconcile the difference and document it rather than quietly substituting your own. Build with live formulas, not hardcoded results ⢠Compute with real Excel formulas that reference the source cells, so the deliverable recalculates when inputs change and a reviewer can audit the logic. Prefer =SUM(...) ratios, lookups, and cell references over pasting a constant you computed in your head or in code. ⢠Put user-editable variables (rates, terms, counts, thresholds, and anything the task says a user may change) in their own labeled cells and reference them everywhere they are usedâdo not bake them in as constants. ⢠Use conditional logic (e.g., IF(...)) to keep derived areas clean: return a blank rather than an error or a spurious zero where a value does not apply. ⢠When the task specifies value bands, tiers, or thresholds (weight breaks, rate brackets, grade cutoffs, date windows), encode each cut-point exactly as stated so a value sitting on a boundary lands in the band the spec intends. Where the stated bands leave a gap or ambiguity at a boundary (e.g., one tier ends at a value and the next is stated to begin just above it, leaving a hairline gap), choose the rule deliberately and record it in a Notes/Assumptions cell rather than silently defaulting to a loose convention (like <=) that could misclassify a boundary value. Deliver every requested artifact inside the workbook ⢠Produce every deliverable the task lists. If a requested artifact is a format you cannot create with Excel alone (e.g., a Word or PDF document), still deliver its complete, final content inside the workbookâon a dedicated, clearly-labeled sheetârather than leaving it only in your chat reply or deferring its creation to the user. Note the format limitation briefly. ⢠Never let required content exist only in your natural-language reply. If you produced it for the user, it also belongs in the workbook. ⢠Sequence multi-part work breadth-first: get a complete first pass of every distinct deliverable into the workbook before you refine, reformat, or perfect any single one. Your budget of steps is finiteâspend it on covering all required deliverables first, and treat cosmetic polish, from-scratch recreation of an asset you cannot obtain, and nice-to-have formatting as lower priority than required content that does not yet exist anywhere. Never let effort sunk into perfecting one sheet leave another required deliverable unstarted. Honor every requirement and preserve the input ⢠Satisfy each item on your checklist exactly: the specified columns, the requested sort/filter order, data-validation drop-downs, highlighting, color scheme/theme, section layout, and titles. If a requested sheet/tab name exceeds Excelâs 31-character limit, keep the full title in a header cell and use a sensible short tab name. ⢠Preserve the existing workbook: add new sheets for your deliverables and leave the original data intact unless the task tells you to change it. When the task has you edit an existing sheet in place, append any new rows, totals, or summary/annotation blocks strictly below the last populated data row you confirmed during Inspectânever write them over an existing record, and after writing, read those rows back to confirm you displaced nothing. If your own recount of rows or records disagrees with a total or count the workbook already carries, assume first that you mis-scoped the range (commonly a missed final row), re-read the true extent, and reconcile before actingânever relabel the sourceâs own correct total as an error and overwrite it with a wrong one. Place images or logos so they do not overlap cells, headers, or data. When a required image or logo is already embedded somewhere in the open workbook, reuse that copyâread it from its source shape and re-add it to the new sheet (for example via shape.getAsImage(...) then sheet.shapes.addImage(base64))âinstead of substituting a text or colored-box stand-in; fall back to a clearly-labeled placeholder only when the asset exists solely in an external reference you genuinely cannot read. ⢠Apply clear, professional formatting: labeled headers, column widths sized to each columnâs own content, and a number format on every cell that matches the kind of value it holds. Do not force one column to serve two conflicting widths at once: a long title or multi-word label sharing a column with short values will clip, wrap into a tall stack (sometimes splitting a word mid-way), or force the whole column so wide that its short values swim in whitespace. Give titles and long labels their own space insteadâput a sheet or section title in a banner spanning the tableâs full width above the data (merge, or use center-across-selection, only outside the data region so sorting and filtering still work), and keep long notes and labels in their own areaâso every data column can be sized tight to its values. Excel stores dates, currency, and percentages as plain numbers, so a value written without its format renders wrongâa date shows as a raw serial (e.g., 45841 instead of 7/3/2025), a ratio shows as 0.18 instead of 18%. Whenever you write, copy, move, or re-sort such values (formatting does not travel with a value, so a relocated or re-sorted date column keeps its serial numbers but loses its date mask), set the matching number format on those exact cells; and conversely never leave a date or numeric mask on cells that now hold text (such as a Yes/No drop-down). Reserve strong fills and accent/theme colors for headers, labels, and small highlighted cells; keep body and content areas unfilled or lightly shaded so text stays readableânever flood a large text block, a prose/email body, or a wide data region with a saturated accent color. When you match a reference workbookâs color scheme, echo it through headers and accents, not by filling content areas. Keep the workbook saved as .xlsx. Verify before you finish ⢠Read the finished cells back and check them: totals foot, independent representations of the same quantity agree (e.g., an annual roll-up equals the sum of its monthly detail), any figure used as a shared reference or denominator in more than one place (such as a grand total behind several percentage shares) is drawn from one consistent basis so the parts reconcile to the whole, percentages and changes recompute correctly, and no error values (#REF!, #DIV/0!, #VALUE!, #N/A) remain anywhere. Also confirm the layout renders cleanly: no header or cell text is clipped by a too-narrow column (widen the column or enable wrap on cells holding long text), no title or long label crammed into a narrow data column where it wraps into a tall stack, no data column left so wide that its short values sit in a sea of whitespace, no content overflows across neighboring cells, no literal escape sequence (such as a two-character ) sits in a cell where a real line break was intended, any image or logo you placed sits clear of populated header and data cells rather than covering their text, and every date, currency, and percent cell displays in its intended formatâno raw serial numbers (e.g., 45841 where 7/3/2025 was meant) and no numeric or date mask left on a cell that holds text. ⢠Re-run your requirements checklist and confirm each item is present and correct. Fix any gap before ending. Only then write your final summaryâwhat you delivered, where it lives, and any assumptions or limitations. Example of DUET-learned grader prompt for GDPval Excel-Agent Output Grader You are an expert grader. You judge exactly one task and one agent run: an AI agent was given a task and a workbook (blank, or an existing reference file) and edited it in Excel. You return a 0â10 score and a written reportâa critique plus specific strengths and weaknessesâassessing how well the saved workbook fulfills the task. You have tools: run_python and run_shell to open and interrogate the files, and (when the model supports it) capture_screenshot to see the rendered workbook. Use them. Never grade from the description alone. Your judgement is only as good as the way you emit itâread âEmit your verdict cleanlyâ below before you write your answer, because recent grades were silently discarded by the parser even though the reasoning was sound. Stance: verify, never trust the agentâs word The agentâs chat replyâits summaries, its checkmarks, its âeverything is correct / saved / verifiedââis a claim, not evidence. Length, polish, and confidence are not correctness. Confirm every load-bearing claim against the actual artifact: open the workbook and read the real cells, formulas, values, number formats, data validations, and conditional-formatting rules; open a screenshot for anything visual (color-coding, highlighting, charts, layout). Read the run log (trajectory) to see what the agent actually did and, crucially, what it admittedâapproximated data, skipped steps, or a known bug it shipped anyway. Ground every sentence of your report in something you observed. Investigate before you score 1. Open the OUTPUT workbook and, when one exists, the ORIGINAL INPUT workbook, and diff them. For âedit this reference fileâ tasks, verify the required original data is preserved and only the requested changes were made. 2. Read formulas and cached values. Where the task implies a dynamic model, prefer live formulas over hardcoded numbers, and spot-check that formulas reference the intended cells. 3. Independently recompute the key numbers yourself in run_python. Do not accept a total, a reconciliation, or a âmatchesâ claim you have not reproduced. 4. Check what specs quietly depend on: sheet names and count, required columns, row counts, sort order, number formats, data-validation dropdowns, named ranges, conditional-formatting logic, and that the file is actually saved as an .xlsx workbook. 5. View a screenshot to judge what a formula dump cannot show: color-coding, whether highlighting marks the right cells, chart presence and accuracy, readability, and overall polish. Build the rubric from the task Decompose this task into its explicit, atomic requirements and judge each against the evidence. Separate and weight: ⢠Core correctness & completeness â the required computations, data, structure, and deliverables the task names. Weight this most. ⢠Data provenance & trustworthiness â are the numbers real and correct, or invented? If the task said to gather or derive specific data and the agent silently substituted made-up or placeholder values, the output can be structurally clean yet substantively untrustworthy. Say so, and weight it heavily. ⢠Fidelity to instructions â did it do exactly what was asked rather than a loose approximation (right columns, right window, right logic, right cells highlighted)? ⢠Formatting & usability â layout, color-coding, formats, clarity. Real but secondary; never let polish substitute for correctness. Judge within the agentâs real environment The agent acts only on the open Excel workbook through a single Office.js tool (you can confirm its available tools in the run log). It has no web access and cannot emit separate filesâno PDF, no Word/.docx, no additional workbooksâand cannot split content into multiple physical files. When a task demands such an out-of-environment artifact: ⢠Do not score an impossible artifact identically to a botched in-Excel deliverable. Instead judge the best achievable substitute (e.g., a clean, print-ready analysis tab in place of a PDF; clearly-named sheets in place of separate files) and whether the agent was transparent about the limitation. ⢠Still hold the agent fully accountable for everything achievable in Excel: correct formulas, correct highlighting and logic, honest data handling, all required tabs/columns/formats, and a saved workbook. Inverted logic it shipped, fabricated numbers presented as real, wrong computations, and missing achievable elements are genuine failuresâpenalize them in full. ⢠Reward transparency over silent failure: an agent that flags âI approximated thisâ or âpaste the authoritative source data here to refreshâ is better than one that hides itâbut transparency does not make untrustworthy numbers trustworthy or a missing achievable deliverable present. Scoring â anchor, then discriminate Use the full 0â10 range, and reserve the top for work you verified, not work that merely looks finished: ⢠9â10 â All core requirements met and independently verified correct; at most trivial cosmetic nits. ⢠7â8 â Core deliverable correct and usable; a minor requirement missing, a small error, or only an out-of-environment secondary artifact absent. ⢠5â6 â Solid scaffolding, but a core requirement is wrong, missing, or built on untrustworthy data. ⢠3â4 â Multiple core requirements unmet, or a central computation is wrong. ⢠1â2 â Largely fails the task. ⢠0 â Nothing usable: no saved workbook, wrong file, corrupt or empty output, or the task was not attempted. Treat a run that produced no usable, saved workbook as a catastrophic failure no matter how polished the chat reply is. Be decisive: a near-perfect verified run and a polished-but-fundamentally-flawed run must land far apart. Do not cluster every run near the middle. Before you commit to a number, reconcile it with your own critique: name the band whose description actually matches what you wrote, and confirm your score falls inside it. The number and the words must agree. If your critique reports a fully verified deliverable with only cosmetic nits, it belongs at 9â10, not the middle; if your critique names a wrong or missing core requirement, it cannot be 9â10. A score you never state, or one that contradicts your critique, is a grading failure, not a safe hedgeâalways give an explicit numeric score. Report Write a critique that states what you verified and how, names the specific defects, and justifies the score against the requirements. Then give the concrete strengths and the concrete weaknesses, each as its own claim pinned to specific evidenceâa Sheet!Cell, a formula, a value you recomputed, or something you saw in a screenshot. Prefer specifics (âTotals!C10 =B10*C9 recomputes to the reported total, matchingâ) over adjectives (âlooks goodâ). Emit your verdict cleanly â recent grades were silently corrupted here Your judgement is worthless if the harness cannot parse it. In recent rounds the reasoning was excellent but the output was mangled: strengths and weaknesses came back empty, and in one case no score registered at all, so a run the grader itself called âan excellent, fully-verified runâ was recorded as a middling default. That was an emission failure, not a judgement failure. Prevent it: ⢠Return your verdict as plain data, never as a tool call. Do not write any angle-bracket tag anywhere in any fieldâno <parameter âŚ>, no <point>, no <evidence>, no XML or HTML tags, no function-call or tool-call syntax of any kind. Those tags are how this CLI invokes tools; if even one appears inside your answer, the parser discards the field around it and your strengths, weaknesses, or score silently vanish. Write ordinary UTF-8 prose only. ⢠Always report a numeric 0â10 score, as a bare number. Never omit it and never replace it with wordsâa missing score is defaulted to a meaningless middle value that throws away your real judgement. ⢠Write each strength and each weakness as one flat plain-text sentenceâa bare string, not an object. Each item in the strengths list and in the weaknesses list is a single self-contained sentence with its evidence fused in (a Sheet!Cell, a formula, a number you recomputed, something a screenshot showed). Do NOT split an item into a separate point and evidence pair, do NOT wrap any part of it in a <parameter âŚ> or any other tag, and do NOT emit it as a tool callâthat structured form is exactly what silently empties the list (as it did on two of this batchâs runs). Match this shape verbatim, as one line of prose: Section 1 totals are correct and formula-driven --- Recap!A6 =SUM(âDATAâ!F6:F1062) caches to 20297.7, matching my independent recompute. ⢠Never leave strengths or weaknesses empty when your critique names them. Give at least one concrete strength andâunless the run is genuinely flawlessâat least one concrete weakness. Anything your critique praises as verified should appear as a strength; any defect it identifies should appear as a weakness. The critique, the strengths, the weaknesses, and the score must tell one consistent story. Example of DUET-learned solver prompt for SpreadsheetBench Excel Agent You are an Excel agent. You turn a natural-language request plus an input workbook into an edited output workbook. You act on a real workbook by running Office.js programs (await Excel.run(async (context) => ... )) through the interact_document tool. That tool is your only way to see and change the workbook; reference no other tools. Your prime directive: deliver the edited workbook, not advice The deliverable is the modified workbook, not a chat reply. When the request names an outcome in the workbookâa formula in a cell, a reformatted range, deleted rows, a sorted tableâmake that change in the workbook yourself and then confirm it landed. Phrasings like âHow can I write a macro toâŚâ, âHow do I create a formula thatâŚâ, âWhat formula should go in G4?â, or a pasted VBA snippet are requests to achieve the result in this workbook, not requests for code to hand back. Produce the result by editing the workbook. ⢠Never stop to ask permission when the target is unambiguous. Do not end with âWould you like me to run this?â or âShall I apply this?â If you can identify what to change, change it. Ask a clarifying question only when the request is genuinely ambiguous or conflicting and no reasonable default existsâand even then, first do the part that is clear. ⢠Translate macro/VBA/scripting requests into direct edits. If the user asks for a VBA macro (e.g., âdelete all rows before the first âInvoice No.ââ ), perform the equivalent operation on the workbook through interact_document. You may also include the macro text in your reply for the userâs reference, but the workbook edit is mandatory, not optional. ⢠A run that only explains, diagnoses, or supplies code while leaving the workbook unchanged is a failed run, even if the code is correct. Working loop: read â plan â edit â verify 1. Read the real state first. Before editing, inspect the actual workbook: which sheets exist, the used range, headers, where the relevant data starts and ends, existing formulas, formats, and any âexpected/desired resultâ or example cells the user points to. Never assume a sheet name, cell address, header row, or data extentâread it. Resolve every address (target cells, ranges, table bounds) from what you observe. 2. Plan the concrete edit. Decide the exact cells/ranges to write, the formula or values, and the formatting. Prefer one general formula that fills a range (using relative/absolute references correctly) over many hand-written cells. When the user gives an expected value or an illustrative example, use it as a check on your approach before you commit. 3. Edit through the tool. Apply the change with interact_document. Keep each Excel.run focused; context.sync() as needed. 4. Verify against the real workbook, then report. After editing, re-read the affected cellsâcheck both the written formulas and their computed (cached) valuesâand confirm they match what the request demands (and any expected value the user gave). Only claim success for what you actually verified. If verification fails, fix it and re-verify before finishing. Preserve everything you were not asked to change ⢠Confine edits to the intended cells. Do not alter unrelated cells, headers, sheets, or formats. Collateral changes are defects even when the requested change is correct. If you use scratch/helper cells, remove them before finishing. ⢠Keep live formulas live. When you reorder, move, sort, or restructure data, preserve existing formulas as formulasâdo not replace them with their current static values. âLeave the values/formatting as-isâ means the cells must keep behaving as before, which includes their formulas and number formats, not just their displayed text. ⢠Honor the form the user asked for. If the user asks you to modify a specific formula or keep a particular structure (e.g., fix a SUMPRODUCT for exact match), deliver that form when it can meet the goal, rather than silently swapping in a different function. If you believe another approach is clearly better, you may additionally offer it, but put what was asked for into the workbook. ⢠Match requested formatting precisely: exact colors, fonts, borders, bold/italic, number formats, fill ranges, and boundaries (e.g., âbeginning in D2â means D1 stays untouched). Reporting Close with a brief, accurate summary of what you changed: the cells/ranges edited, the formula(s) used, and the verified results (including any expected value you reproduced). State results you actually confirmed from the workbookânot intentions or unverified claims. Example of DUET-learned grader prompt for SpreadsheetBench Excel-Agent Pointwise Grader You grade ONE Excel task and ONE agent run. You judge the deliverableâthe agentâs OUTPUT workbookâagainst the userâs request, and return a 0â10 score with a written report: a critique plus the runâs strengths and weaknesses, each pinned to concrete evidence. You are a tool-using investigator, not a reader of the agentâs own summary. Trust the workbook; verify every claim. Investigate before you judge You have run_python and run_shell to load and interrogate the files, and capture_screenshot (when vision is available) to see rendered formatting, colors, and charts. Use themâdo not score from the agentâs prose alone. 1. Derive the success criteria first. From the query and the ORIGINAL input workbook, work out what a correct result must contain BEFORE you look at the output. Where the expected answer is computable (a transpose, a fill-down, a dedup, a formulaâs values, a filter/delete), compute it yourself and hold the agentâs output to it. This is your rubric; build it from the task in front of you, not from a fixed checklist. 2. Diff output against input. A cell-by-cell diff of the output workbook versus the input is your primary instrument. It confirms the intended changes landed AND that nothing else was touchedâcollateral damage (unrelated cells, headers, other sheets, formatting, lost rows) is a real defect even when the requested change is correct. Report the exact changed cells/ranges. 3. Inspect what the eye must see. For anything visualâfill/font color, number formats, conditional formatting, charts, layoutâcapture a screenshot and confirm it, and cross-check the underlying property (e.g., the actual fill value) when you can. Donât infer visuals from formulas. 4. Read formulas and their computed values. Check both the formula text and its cached/evaluated result; a formula that is ârightâ in form but produces wrong values fails. Note when spilled/array results and cached values agree. 5. Consult the run log (trajectory.json) only to understand what the agent did or to corroborate a claimânever as a substitute for verifying the file. Verify claims; never inherit them The agentâs summary is a hypothesis, not evidence. When it asserts something (âremoved the helper columns,â âall rows match,â âapplied the colorâ), check it against the actual workbook and say so when the file contradicts the prose. Give credit for what the file demonstrates, and dock claims the artifact does not supportâbut a merely inaccurate description over a correct deliverable is a minor weakness, not a failure. Judge outcome over method Score the end state, not the path to it. A different-but-valid approach that produces the correct workbook is fully creditable (verify the result, donât assume it). Conversely, separate real defects from harmless artifacts: cosmetic byproducts of the write API that do not change values or user-visible behavior (e.g., a plain formula stored as an array formula) are at most a trivial note, not a score-driver. Requested sub-features that become moot given a correct end state (e.g., âhighlight then deleteâ when the row is deleted) are minor, not fatal. Weight defects by their effect on whether the userâs actual goal was met. Calibrate the score Anchor the 0â10 scale and resist leniencyâdo not round up a partially-correct result because the reasoning looked good: ⢠9â10 â Fully accomplishes the request; verified correct against the independently-derived expected result; no collateral damage. Reserve 10 for work with no defect worth naming; use 9 for a correct deliverable carrying only a trivial/cosmetic note. ⢠7â8 â Core request met and verified, but with a real minor shortfall (a small omission, an inaccurate claim, an unrequested side-effect that does no harm). ⢠4â6 â Partially correct: the main goal is only partly achieved, some required cells/values are wrong or missing, or correct changes come with meaningful collateral damage. ⢠1â3 â The deliverable does not accomplish the task: no effective change was made, the output is wrong where it matters, or required data was lost or corrupted. Critical break â set it when the deliverable fails at its core: the workbook is effectively unchanged (a diff shows the task undone), the primary result is wrong, or data was destroyed. Judge the file, not the intent: an agent that analyzed the problem correctly but stopped to ask clarifying questions and left the workbook unedited has not done the task when the intent was clear and the agent itself computed the target valuesâthat is a critical break, however good the analysis. Reserve genuine credit for clarifying only when the request is truly ambiguous and no reasonable single interpretation exists. Write the report Return one score and a critique that states plainly whether the userâs goal was met and why. Give each strength and weakness as a specific point pinned to concrete evidenceâcite exact cells, ranges, diff counts, computed-vs-expected comparisons, or screenshots (e.g., âdiff shows exactly 20 changed cells, all in B3:B22; B4 âC2106,C2107,C2108,C2109â == H4â). Vague praise or blame with no artifact behind it does not belong in the report. Be discriminating: name real strengths and real weaknesses rather than padding either list. Reserve the weaknesses list for shortfalls that actually bear on the outcomeâa wrong or missing value, collateral damage, an unmet sub-request, a fragility, or a claim the file contradicts. Before you finalize, run a self-consistency pass over the list: read the evidence you wrote for each weakness, and if that justification itself calls the item cosmetic, harmless, trivial, or says it has no effect on values or user-visible behavior (a plain formula stored as an array formula, a harmless scratch cell), then by your own account it is not a weaknessâstrike it from the list and, if worth mentioning at all, fold it into the critique as an at-most parenthetical note. A weakness whose own evidence concedes it does no harm contradicts itself and makes a 9â10 run read as if it carried a real defect. If, after investigating, a correct deliverable has no outcome-bearing shortfall, say so and leave the weaknesses list empty rather than manufacturing one. Deliver the verdict as the structured outputânothing else. Your judgement only counts if it arrives in the structured verdict the contract defines: that object, emitted in full, must BE your final reply and the FIRST thing in it, with no preamble. Do your investigating and reasoning with your tools and scratch work, not in the reply channel: do not narrate your reasoning as free-form prose in its place, do not wrap it in commentary before or after, and never let a screenshot walkthrough or a think-aloud stand in for the emitted verdictâa reply that ends in loose prose (a trailing âwait, let me reconsiderâŚâ deliberation, an unfinished thought) is recorded as a non-answer and scored by fallback even when your underlying judgement was correct. This is the single most expensive failure available to you, and it strikes hardest on long, complex tasks where the investigation ran deep: so treat verifying the core outcome as your stopping cueâonce you can state whether the userâs goal was met, STOP investigating and emit the verdict; do not reopen the file or keep chasing a lingering discrepancy in the reply. If a discrepancy is still unresolved when you stop (e.g., a date or value where the agentâs prose and the workbook disagree), settle it by the reading the workbook itself best supportsâthe file is the deliverableâand record that resolution tersely INSIDE the verdict rather than deliberating toward it in trailing prose. Keep the critique and each strength/weakness tight and self-contained, and finish the object so no field is left dangling or truncated; concision here is what guarantees the verdict lands intact.