{"id":103948,"date":"2026-07-13T19:15:41","date_gmt":"2026-07-13T19:15:41","guid":{"rendered":"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/"},"modified":"2026-07-13T19:15:41","modified_gmt":"2026-07-13T19:15:41","slug":"prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations","status":"publish","type":"post","link":"https:\/\/youzum.net\/fr\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/","title":{"rendered":"Prime Intellect Releases Verifiers v1: Composable Tasksets, Harnesses, and Runtimes for Agentic RL Training and Evaluations"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Prime Intellect launched <strong><a href=\"https:\/\/www.primeintellect.ai\/blog\/verifiers-v1\" target=\"_blank\" rel=\"noreferrer noopener\">verifiers <code>0.2.0<\/code><\/a><\/strong>. It previews a rewritten core, shipped under the new <code><a href=\"https:\/\/www.primeintellect.ai\/blog\/verifiers-v1\" target=\"_blank\" rel=\"noreferrer noopener\">verifiers.v1<\/a><\/code> namespace. Modern evaluations now run coding agents with tools, compaction, and subagents. Accordingly, v1 rebuilds environments to run these agentic workloads at scale.<\/p>\n<h2 class=\"wp-block-heading\"><strong>What is verifiers v1?<\/strong><\/h2>\n<p class=\"wp-block-paragraph\">First, consider what verifiers is: Prime Intellect\u2019s environment stack for agentic reinforcement learning and evaluations. Previously, an environment bundled its data, agent logic, and infrastructure together. In contrast, v1 breaks that bundle into three composable pieces.<\/p>\n<p class=\"wp-block-paragraph\">A <strong>taskset<\/strong> defines the work: the data, tools, and scoring. A <strong>harness<\/strong> solves the task and produces a rollout. That harness can be a ReAct loop, a CLI agent, or your own. The rollout then runs inside a <strong>runtime<\/strong>, either local or in a sandbox. Because the pieces decouple, any taskset runs under any compatible harness.<\/p>\n<h2 class=\"wp-block-heading\"><strong>How the Architecture Works<\/strong>?<\/h2>\n<p class=\"wp-block-paragraph\">With those pieces defined, the next question is how they communicate. The central piece is the verifiers-managed <strong>interception server<\/strong>. It sits between the agent\u2019s runtime and the inference server. Specifically, it proxies requests to, and responses from, inference. Meanwhile, it records the trace, sets sampling parameters, and can rewrite tool responses. That rewriting helps mitigate reward hacks during training.<\/p>\n<p class=\"wp-block-paragraph\">For scale, each server multiplexes a constant number of rollouts, defaulting to 32. A pool then scales elastically with observed concurrency. The server also owns a <strong>client<\/strong> that relays those requests. During evaluation, an <code>EvalClient<\/code> acts as a blind HTTP proxy. During training, a <code>TrainClient<\/code> wraps <code>renderers<\/code> for faithful token-in RL training.<\/p>\n<p class=\"wp-block-paragraph\">Because harnesses speak different <strong>dialects<\/strong>, verifiers supports three as of now. These are OpenAI Chat Completions, OpenAI Responses, and Anthropic Messages. A dialect adapter normalizes each wire format into canonical <code>vf.types<\/code>. Consequently, your scoring logic stays independent of the agent tested.<\/p>\n<p><!-- verifiers v1 interactive explainer \u2014 paste into a WordPress \"Custom HTML\" block --><br \/>\n Run rollout&lt;\/button&gt;<br \/>\n    &lt;button id=&#8221;vf-reset&#8221; class=&#8221;vf-ghost&#8221;&gt;Reset&lt;\/button&gt;<br \/>\n    &lt;span class=&quot;&rdquo;vf-lab&rdquo;&quot;&gt;Harness dialect:&lt;\/span&gt;<br \/>\n    &lt;select id=&#8221;vf-dialect&#8221;&gt;<br \/>\n      &lt;option value=&#8221;Chat&#8221;&gt;OpenAI Chat Completions&lt;\/option&gt;<br \/>\n      &lt;option value=&#8221;Resp&#8221;&gt;OpenAI Responses&lt;\/option&gt;<br \/>\n      &lt;option value=&#8221;Msg&#8221;&gt;Anthropic Messages&lt;\/option&gt;<br \/>\n    &lt;\/select&gt;<br \/>\n  &lt;\/div&gt;<\/p>\n<p>  &lt;div class=&quot;&rdquo;vf-stage&rdquo;&quot;&gt;<br \/>\n    &lt;div class=&quot;&rdquo;vf-row&rdquo;&quot; style=&quot;&rdquo;margin-bottom:14px&rdquo;&quot;&gt;<br \/>\n      &lt;div class=&quot;&rdquo;vf-node&quot; vf-taskset&rdquo; id=&quot;&rdquo;n-taskset&rdquo;&quot;&gt;<br \/>\n        &lt;div class=&quot;&rdquo;vf-nt&rdquo;&quot;&gt;Taskset&lt;\/div&gt;<br \/>\n        &lt;div class=&quot;&rdquo;vf-nd&rdquo;&quot;&gt;what &middot; data &middot; tools &middot; scoring&lt;\/div&gt;<br \/>\n      &lt;\/div&gt;<br \/>\n    &lt;\/div&gt;<\/p>\n<p>    &lt;div class=&quot;&rdquo;vf-runtime-wrap&rdquo;&quot;&gt;<br \/>\n      &lt;span class=&quot;&rdquo;vf-runtime-tag&rdquo;&quot;&gt;RUNTIME &middot; where (subprocess &middot; Docker &middot; sandbox)&lt;\/span&gt;<br \/>\n      &lt;div class=&quot;&rdquo;vf-row&rdquo;&quot; id=&quot;&rdquo;vf-flow&rdquo;&quot;&gt;<br \/>\n        &lt;div class=&quot;&rdquo;vf-node&quot; vf-harness&rdquo; id=&quot;&rdquo;n-harness&rdquo;&quot;&gt;<br \/>\n          &lt;div class=&quot;&rdquo;vf-nt&rdquo;&quot;&gt;Harness&lt;\/div&gt;<br \/>\n          &lt;div class=&quot;&rdquo;vf-nd&rdquo;&quot;&gt;how &middot; Codex &middot; Terminus 2 &middot; ReAct&lt;\/div&gt;<br \/>\n        &lt;\/div&gt;<br \/>\n        &lt;div class=&quot;&rdquo;vf-arrow&rdquo;&quot;&gt;&rarr;&lt;\/div&gt;<br \/>\n        &lt;div class=&quot;&rdquo;vf-node&quot; vf-intercept&rdquo; id=&quot;&rdquo;n-intercept&rdquo;&quot;&gt;<br \/>\n          &lt;div class=&quot;&rdquo;vf-nt&rdquo;&quot;&gt;Interception Server&lt;\/div&gt;<br \/>\n          &lt;div class=&quot;&rdquo;vf-nd&rdquo;&quot;&gt;proxy &middot; records trace&lt;\/div&gt;<br \/>\n        &lt;\/div&gt;<br \/>\n        &lt;div class=&quot;&rdquo;vf-arrow&rdquo;&quot;&gt;&rarr;&lt;\/div&gt;<br \/>\n        &lt;div class=&quot;&rdquo;vf-node&quot; vf-infer&rdquo; id=&quot;&rdquo;n-infer&rdquo;&quot;&gt;<br \/>\n          &lt;div class=&quot;&rdquo;vf-nt&rdquo;&quot;&gt;Inference Server&lt;\/div&gt;<br \/>\n          &lt;div class=&quot;&rdquo;vf-nd&rdquo;&quot;&gt;vLLM &middot; model&lt;\/div&gt;<br \/>\n        &lt;\/div&gt;<br \/>\n        &lt;div class=&quot;&rdquo;vf-packet&rdquo;&quot; id=&quot;&rdquo;vf-packet&rdquo;&quot;&gt;req&lt;\/div&gt;<br \/>\n      &lt;\/div&gt;<br \/>\n    &lt;\/div&gt;<\/p>\n<p>    &lt;div class=&quot;&rdquo;vf-status&rdquo;&quot; id=&quot;&rdquo;vf-status&rdquo;&quot;&gt;Press &ldquo;Run rollout&rdquo; to send a request through the interception server.&lt;\/div&gt;<br \/>\n  &lt;\/div&gt;<\/p>\n<p>  &lt;div class=&quot;&rdquo;vf-grid&rdquo;&quot;&gt;<br \/>\n    &lt;div class=&quot;&rdquo;vf-panel&rdquo;&quot;&gt;<br \/>\n      &lt;h3&gt;Trace &middot; message graph (v1)&lt;\/h3&gt;<br \/>\n      &lt;div class=&quot;&rdquo;vf-hint&rdquo;&quot;&gt;Each message is a unique node. Size grows linearly in turns.&lt;\/div&gt;<br \/>\n      &lt;div class=&quot;&rdquo;vf-graph&rdquo;&quot; id=&quot;&rdquo;vf-graph&rdquo;&quot;&gt;<br \/>\n        &lt;div class=&quot;&rdquo;vf-empty&rdquo;&quot;&gt;No messages recorded yet.&lt;\/div&gt;<br \/>\n      &lt;\/div&gt;<br \/>\n    &lt;\/div&gt;<\/p>\n<p>    &lt;div class=&quot;&rdquo;vf-panel&rdquo;&quot;&gt;<br \/>\n      &lt;h3&gt;Trace size: v0 vs v1&lt;\/h3&gt;<br \/>\n      &lt;div class=&quot;&rdquo;vf-hint&rdquo;&quot;&gt;Drag to change turns. v0 repeats prompt-completion pairs; v1 stores unique nodes.&lt;\/div&gt;<br \/>\n      &lt;div class=&quot;&rdquo;vf-chart&rdquo;&quot;&gt;<br \/>\n        &lt;svg viewBox=&#8221;0 0 260 150&#8243; id=&#8221;vf-svg&#8221;&gt;<br \/>\n          &lt;line x1=&#8221;30&#8243; y1=&#8221;130&#8243; x2=&#8221;255&#8243; y2=&#8221;130&#8243; stroke=&#8221;#dfe6ef&#8221; stroke-width=&#8221;1.5&#8243;\/&gt;<br \/>\n          &lt;line x1=&#8221;30&#8243; y1=&#8221;10&#8243; x2=&#8221;30&#8243; y2=&#8221;130&#8243; stroke=&#8221;#dfe6ef&#8221; stroke-width=&#8221;1.5&#8243;\/&gt;<br \/>\n          &lt;path id=&#8221;vf-v0&#8243; fill=&#8221;none&#8221; stroke=&#8221;#d1477a&#8221; stroke-width=&#8221;2.5&#8243;\/&gt;<br \/>\n          &lt;path id=&#8221;vf-v1&#8243; fill=&#8221;none&#8221; stroke=&#8221;#0b8f8f&#8221; stroke-width=&#8221;2.5&#8243;\/&gt;<br \/>\n          &lt;text x=&#8221;140&#8243; y=&#8221;147&#8243; font-size=&#8221;9&#8243; fill=&#8221;#94a3b8&#8243; text-anchor=&#8221;middle&#8221;&gt;turns \u2192&lt;\/text&gt;<br \/>\n        &lt;\/svg&gt;<br \/>\n      &lt;\/div&gt;<br \/>\n      &lt;div class=&quot;&rdquo;vf-legend&rdquo;&quot;&gt;<br \/>\n        &lt;span&gt;&lt;i style=&quot;&rdquo;background:#d1477a&rdquo;&quot;&gt;&lt;\/i&gt; v0 &middot; quadratic&lt;\/span&gt;<br \/>\n        &lt;span&gt;&lt;i style=&quot;&rdquo;background:#0b8f8f&rdquo;&quot;&gt;&lt;\/i&gt; v1 &middot; linear&lt;\/span&gt;<br \/>\n      &lt;\/div&gt;<br \/>\n      &lt;div class=&quot;&rdquo;vf-slider-row&rdquo;&quot;&gt;<br \/>\n        &lt;span&gt;Turns&lt;\/span&gt;<br \/>\n        &lt;input type=&#8221;range&#8221; id=&#8221;vf-turns&#8221; min=&#8221;4&#8243; max=&#8221;60&#8243; value=&#8221;24&#8243;&gt;<br \/>\n        &lt;span id=&quot;&rdquo;vf-turns-val&rdquo;&quot; style=&quot;&rdquo;width:26px;text-align:right&rdquo;&quot;&gt;24&lt;\/span&gt;<br \/>\n      &lt;\/div&gt;<br \/>\n    &lt;\/div&gt;<br \/>\n  &lt;\/div&gt;<\/p>\n<p>  &lt;div class=&quot;&rdquo;vf-foot&rdquo;&quot;&gt;<br \/>\n    Illustrative demo of the verifiers v1 architecture &middot; Built by &lt;b&gt;Marktechpost&lt;\/b&gt;<br \/>\n  &lt;\/div&gt;<br \/>\n&lt;\/div&gt;<\/p>\n<p>&lt;script&gt;<br \/>\n(function(){<br \/>\n  var root=document.getElementById(&#8220;vfv1-demo&#8221;);<br \/>\n  var packet=document.getElementById(&#8220;vf-packet&#8221;);<br \/>\n  var status=document.getElementById(&#8220;vf-status&#8221;);<br \/>\n  var graph=document.getElementById(&#8220;vf-graph&#8221;);<br \/>\n  var runBtn=document.getElementById(&#8220;vf-run&#8221;);<br \/>\n  var resetBtn=document.getElementById(&#8220;vf-reset&#8221;);<br \/>\n  var dialectSel=document.getElementById(&#8220;vf-dialect&#8221;);<br \/>\n  var nHarness=document.getElementById(&#8220;n-harness&#8221;);<br \/>\n  var nIntercept=document.getElementById(&#8220;n-intercept&#8221;);<br \/>\n  var nInfer=document.getElementById(&#8220;n-infer&#8221;);<br \/>\n  var flow=document.getElementById(&#8220;vf-flow&#8221;);<\/p>\n<p>  var turn=0, running=false;<br \/>\n  var msgs=[]; \/\/ recorded nodes<br \/>\n  var dialectLabel={Chat:&#8221;Chat&#8221;,Resp:&#8221;Resp&#8221;,Msg:&#8221;Msg&#8221;};<\/p>\n<p>  function pos(el){ \/\/ center x relative to flow<br \/>\n    var f=flow.getBoundingClientRect();<br \/>\n    var r=el.getBoundingClientRect();<br \/>\n    return (r.left &#8211; f.left) + r.width\/2 &#8211; 32;<br \/>\n  }<br \/>\n  function clearActive(){ [nHarness,nIntercept,nInfer].forEach(function(n){n.classList.remove(&#8220;vf-active&#8221;);}); }<\/p>\n<p>  function movePacket(fromEl,toEl,ms,label,isResp){<br \/>\n    return new Promise(function(res){<br \/>\n      packet.textContent=label;<br \/>\n      packet.classList.toggle(&#8220;vf-resp&#8221;,!!isResp);<br \/>\n      packet.style.transition=&#8221;none&#8221;;<br \/>\n      packet.style.left=pos(fromEl)+&#8221;px&#8221;;<br \/>\n      packet.style.opacity=&#8221;1&#8243;;<br \/>\n      void packet.offsetWidth;<br \/>\n      packet.style.transition=&#8221;left &#8220;+ms+&#8221;ms cubic-bezier(.45,.05,.35,1)&#8221;;<br \/>\n      packet.style.left=pos(toEl)+&#8221;px&#8221;;<br \/>\n      setTimeout(res,ms);<br \/>\n    });<br \/>\n  }<\/p>\n<p>  function addNode(role,label,color){<br \/>\n    if(msgs.length===0){ graph.innerHTML=&#8221;&#8221;; }<br \/>\n    var d=document.createElement(&#8220;div&#8221;);<br \/>\n    d.className=&#8221;vf-msg&#8221;;<br \/>\n    d.innerHTML=&#039;&lt;span class=&quot;&rdquo;vf-dot&rdquo;&quot; style=&quot;&rdquo;background:&rsquo;+color+&#039;&rdquo;&quot;&gt;&lt;\/span&gt;&lt;code&gt;&rsquo;+label+&#039;&lt;\/code&gt;&lt;span class=&quot;&rdquo;vf-role&rdquo;&quot;&gt;&rsquo;+role+&#039;&lt;\/span&gt;&rsquo;;<br \/>\n    graph.appendChild(d);<br \/>\n    graph.scrollTop=graph.scrollHeight;<br \/>\n    msgs.push(label);<br \/>\n  }<\/p>\n<p>  function sleep(ms){return new Promise(function(r){setTimeout(r,ms);});}<\/p>\n<p>  async function runTurn(){<br \/>\n    if(running) return;<br \/>\n    running=true; runBtn.disabled=true;<br \/>\n    turn++;<br \/>\n    var dl=dialectLabel[dialectSel.value];<\/p>\n<p>    \/\/ seed system + user on first turn<br \/>\n    if(turn===1){<br \/>\n      addNode(&#8220;system&#8221;,&#8221;S1&#8243;,&#8221;#6366f1&#8243;); await sleep(160);<br \/>\n      addNode(&#8220;user&#8221;,&#8221;U1&#8243;,&#8221;#6366f1&#8243;);<br \/>\n    }<\/p>\n<p>    clearActive();<br \/>\n    nHarness.classList.add(&#8220;vf-active&#8221;);<br \/>\n    status.textContent=&#8221;Harness builds a &#8220;+dl+&#8221; request\u2026&#8221;;<br \/>\n    await sleep(350);<\/p>\n<p>    \/\/ harness -&gt; interception<br \/>\n    nIntercept.classList.add(&#8220;vf-active&#8221;);<br \/>\n    status.textContent=&#8221;Interception server proxies the request \u2192 inference.&#8221;;<br \/>\n    await movePacket(nHarness,nInfer,850,dl+&#8221; req&#8221;);<br \/>\n    clearActive(); nInfer.classList.add(&#8220;vf-active&#8221;);<br \/>\n    status.textContent=&#8221;Inference server generates the reply (vLLM).&#8221;;<br \/>\n    await sleep(350);<\/p>\n<p>    \/\/ inference -&gt; interception (records) -&gt; harness<br \/>\n    nIntercept.classList.add(&#8220;vf-active&#8221;);<br \/>\n    status.textContent=&#8221;Interception server records the trace, relays the response.&#8221;;<br \/>\n    await movePacket(nInfer,nHarness,850,&#8221;resp&#8221;,true);<br \/>\n    packet.style.opacity=&#8221;0&#8243;;<br \/>\n    clearActive();<\/p>\n<p>    \/\/ record assistant node (+ occasional tool)<br \/>\n    addNode(&#8220;assistant&#8221;,&#8221;A&#8221;+turn,&#8221;#0b8f8f&#8221;); await sleep(150);<br \/>\n    if(turn%2===0){ addNode(&#8220;tool&#8221;,&#8221;T&#8221;+turn,&#8221;#e0a800&#8243;); }<\/p>\n<p>    status.textContent=&#8221;Turn &#8220;+turn+&#8221; recorded as a unique node in the message graph.&#8221;;<br \/>\n    running=false; runBtn.disabled=false;<br \/>\n  }<\/p>\n<p>  function reset(){<br \/>\n    turn=0; msgs=[]; running=false; runBtn.disabled=false;<br \/>\n    clearActive(); packet.style.opacity=&#8221;0&#8243;;<br \/>\n    graph.innerHTML=&#039;&lt;div class=&quot;&rdquo;vf-empty&rdquo;&quot;&gt;No messages recorded yet.&lt;\/div&gt;&rsquo;;<br \/>\n    status.textContent=&#8221;Press \u201cRun rollout\u201d to send a request through the interception server.&#8221;;<br \/>\n  }<\/p>\n<p>  runBtn.addEventListener(&#8220;click&#8221;,runTurn);<br \/>\n  resetBtn.addEventListener(&#8220;click&#8221;,reset);<\/p>\n<p>  \/\/ &#8212;- v0 vs v1 growth chart &#8212;-<br \/>\n  var v0=document.getElementById(&#8220;vf-v0&#8221;);<br \/>\n  var v1=document.getElementById(&#8220;vf-v1&#8221;);<br \/>\n  var turnsR=document.getElementById(&#8220;vf-turns&#8221;);<br \/>\n  var turnsV=document.getElementById(&#8220;vf-turns-val&#8221;);<\/p>\n<p>  function drawChart(N){<br \/>\n    var x0=30,x1=255,y0=130,y1=12,W=x1-x0,H=y0-y1;<br \/>\n    var maxV0=N*N; \/\/ quadratic reference<br \/>\n    function ptV0(i){var x=x0+(i\/N)*W;var y=y0-((i*i)\/maxV0)*H;return x+&#8221;,&#8221;+y;}<br \/>\n    function ptV1(i){var x=x0+(i\/N)*W;var y=y0-((i\/N)*H);return x+&#8221;,&#8221;+y;} \/\/ linear<br \/>\n    var p0=&#8221;M&#8221;,p1=&#8221;M&#8221;;<br \/>\n    for(var i=0;i&lt;=N;i++){ p0+=(i?&#8221; L&#8221;:&#8221;&#8221;)+ptV0(i); p1+=(i?&#8221; L&#8221;:&#8221;&#8221;)+ptV1(i); }<br \/>\n    v0.setAttribute(&#8220;d&#8221;,p0); v1.setAttribute(&#8220;d&#8221;,p1);<br \/>\n  }<br \/>\n  turnsR.addEventListener(&#8220;input&#8221;,function(){ turnsV.textContent=turnsR.value; drawChart(+turnsR.value); });<br \/>\n  drawChart(+turnsR.value);<\/p>\n<p>  \/\/ &#8212;- auto-resize for WordPress iframe embedding &#8212;-<br \/>\n  function sendHeight(){<br \/>\n    var h=document.getElementById(&#8220;vfv1-demo&#8221;).offsetHeight+40;<br \/>\n    if(window.parent){ window.parent.postMessage({vfv1Height:h},&#8221;*&#8221;); }<br \/>\n  }<br \/>\n  window.addEventListener(&#8220;load&#8221;,sendHeight);<br \/>\n  window.addEventListener(&#8220;resize&#8221;,sendHeight);<br \/>\n  new MutationObserver(sendHeight).observe(document.getElementById(&#8220;vf-graph&#8221;),{childList:true});<br \/>\n  setInterval(sendHeight,1200);<br \/>\n})();<br \/>\n&lt;\/script&gt;<br \/>\n&lt;\/body&gt;<br \/>\n&lt;\/html&gt;<br \/>\n&#8220;&gt;<\/p>\n<p class=\"wp-block-paragraph\">\n<h2 class=\"wp-block-heading\"><strong>v0 vs v1: A Quick Comparison<\/strong><\/h2>\n<\/p><p class=\"wp-block-paragraph\">These changes separate v1 from v0.<\/p>\n<figure class=\"wp-block-table\">\n<table class=\"has-fixed-layout\">\n<thead>\n<tr>\n<th>Aspect<\/th>\n<th>verifiers v0<\/th>\n<th>verifiers v1<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Environment model<\/td>\n<td>Data, logic, and infra bundled together<\/td>\n<td>Split into taskset, harness, runtime<\/td>\n<\/tr>\n<tr>\n<td>Trace growth<\/td>\n<td>Quadratic in turns (repeated pairs)<\/td>\n<td>Linear in turns (unique nodes)<\/td>\n<\/tr>\n<tr>\n<td>Non-linear rollouts<\/td>\n<td>Assumed linear<\/td>\n<td>Native compaction and subagents via branches<\/td>\n<\/tr>\n<tr>\n<td>Runtime handling<\/td>\n<td>Builder manages lifecycle<\/td>\n<td>Framework-managed <code>run<\/code> \/ <code>read<\/code> \/ <code>write<\/code><\/td>\n<\/tr>\n<tr>\n<td>Harness coupling<\/td>\n<td>Tightly coupled to the environment<\/td>\n<td>Any compatible harness (Codex, Terminus 2)<\/td>\n<\/tr>\n<tr>\n<td>Training data<\/td>\n<td>Recomputed for prime-rl<\/td>\n<td>Consumed directly from the trace<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<h2 class=\"wp-block-heading\"><strong>Use Cases with Examples<\/strong><\/h2>\n<p class=\"wp-block-paragraph\">With the architecture clear, consider how teams use it. For example, you can run Nemotron 3 Ultra on Terminal-Bench 2 under Codex.<\/p>\n<p class=\"wp-block-paragraph\">Similarly, teams can reuse <strong>Harbor<\/strong> datasets without rewriting reward logic. Prime Intellect ported Terminal Bench 2 into v1 with only a small class. In its internal testing, verifiers matched Harbor\u2019s performance on the same tasks. Harbor is the first fully-supported third-party format; NeMo Gym and OpenEnv have alpha support.<\/p>\n<p class=\"wp-block-paragraph\">On the training side, the same environments plug into prime-rl directly. In a length-penalty ablation, GLM-4.5-Air trained on ScaleSWE across six H200 nodes. That run took two days and evaluated on SWE-Bench-Verified, showing stable agentic training.<\/p>\n<h2 class=\"wp-block-heading\"><strong>A Minimal Taskset and Launch<\/strong><\/h2>\n<p class=\"wp-block-paragraph\">Each run starts from a taskset that defines data and scoring, independent of any harness:<\/p>\n<div class=\"dm-code-snippet dark dm-normal-version default no-background-mobile\">\n<div class=\"control-language\">\n<div class=\"dm-buttons\">\n<div class=\"dm-buttons-left\">\n<div class=\"dm-button-snippet red-button\"><\/div>\n<div class=\"dm-button-snippet orange-button\"><\/div>\n<div class=\"dm-button-snippet green-button\"><\/div>\n<\/div>\n<div class=\"dm-buttons-right\"><a><span class=\"dm-copy-text\">Copy Code<\/span><span class=\"dm-copy-confirmed\">Copied<\/span><span class=\"dm-error-message\">Use a different Browser<\/span><\/a><\/div>\n<\/div>\n<pre class=\"no-line-numbers\"><code class=\"no-wrap language-php\">import verifiers.v1 as vf\n\nclass AdditionData(vf.TaskData):\n    answer: int\n\nclass AdditionTask(vf.Task[AdditionData]):\n    @vf.reward\n    async def exact_match(self, trace: vf.Trace) -&gt; float:\n        return float(trace.last_reply == str(self.data.answer))\n\nclass AdditionTaskset(vf.Taskset[AdditionTask, vf.TasksetConfig]):\n    def load(self) -&gt; list[AdditionTask]:\n        return [\n            AdditionTask(\n                AdditionData(idx=i, prompt=f\"What is {i} + {i}?\", answer=2 * i),\n                self.config.task,\n            )\n            for i in range(100)\n        ]\n\n__all__ = [\"AdditionTaskset\"]<\/code><\/pre>\n<\/div>\n<\/div>\n<p class=\"wp-block-paragraph\">Any taskset then runs under a chosen harness via TOML and the CLI:<\/p>\n<div class=\"dm-code-snippet dark dm-normal-version default no-background-mobile\">\n<div class=\"control-language\">\n<div class=\"dm-buttons\">\n<div class=\"dm-buttons-left\">\n<div class=\"dm-button-snippet red-button\"><\/div>\n<div class=\"dm-button-snippet orange-button\"><\/div>\n<div class=\"dm-button-snippet green-button\"><\/div>\n<\/div>\n<div class=\"dm-buttons-right\"><a><span class=\"dm-copy-text\">Copy Code<\/span><span class=\"dm-copy-confirmed\">Copied<\/span><span class=\"dm-error-message\">Use a different Browser<\/span><\/a><\/div>\n<\/div>\n<pre class=\"no-line-numbers\"><code class=\"no-wrap language-php\">model = \"nvidia\/NVIDIA-Nemotron-3-Ultra-550B-A55B\"\n\n[taskset]\nid = \"primeintellect\/terminal-bench-2\"\n\n[harness]\nid = \"codex\"\nversion = \"0.116.0\"<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"dm-code-snippet dark dm-normal-version default no-background-mobile\">\n<div class=\"control-language\">\n<div class=\"dm-buttons\">\n<div class=\"dm-buttons-left\">\n<div class=\"dm-button-snippet red-button\"><\/div>\n<div class=\"dm-button-snippet orange-button\"><\/div>\n<div class=\"dm-button-snippet green-button\"><\/div>\n<\/div>\n<div class=\"dm-buttons-right\"><a><span class=\"dm-copy-text\">Copy Code<\/span><span class=\"dm-copy-confirmed\">Copied<\/span><span class=\"dm-error-message\">Use a different Browser<\/span><\/a><\/div>\n<\/div>\n<pre class=\"no-line-numbers\"><code class=\"no-wrap language-php\">uv run eval @ path\/to\/config.toml<\/code><\/pre>\n<\/div>\n<\/div>\n<h2 class=\"wp-block-heading\"><strong>Key Takeaways<\/strong><\/h2>\n<ul class=\"wp-block-list\">\n<li>verifiers v1 splits an environment into a <strong>taskset<\/strong> (what), a <strong>harness<\/strong> (how), and a <strong>runtime<\/strong> (where).<\/li>\n<li>A verifiers-managed <strong>interception server<\/strong> proxies harness\u2013inference requests and records traces on the fly.<\/li>\n<li>A linear <strong>message-graph<\/strong> trace replaces v0\u2019s quadratic prompt-completion pairs, enabling long-horizon training.<\/li>\n<li>It ships with full <strong>prime-rl<\/strong> training support; the legacy code path is now frozen.<\/li>\n<li><strong>Harbor<\/strong> datasets and harnesses like <strong>Codex<\/strong> and <strong>Terminus 2<\/strong> work out of the box.<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<\/p><p class=\"wp-block-paragraph\">Check out the\u00a0<strong><a href=\"https:\/\/www.primeintellect.ai\/blog\/verifiers-v1\" target=\"_blank\" rel=\"noreferrer noopener\">Technical details<\/a>.\u00a0<\/strong>Also,\u00a0feel free to follow us on\u00a0<strong><a href=\"https:\/\/x.com\/intent\/follow?screen_name=marktechpost\" target=\"_blank\" rel=\"noreferrer noopener\"><mark>Twitter<\/mark><\/a><\/strong>\u00a0and don\u2019t forget to join our\u00a0<strong><a href=\"https:\/\/www.reddit.com\/r\/machinelearningnews\/\" target=\"_blank\" rel=\"noreferrer noopener\">150k+ML SubReddit<\/a><\/strong>\u00a0and Subscribe to\u00a0<strong><a href=\"https:\/\/www.aidevsignals.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">our Newsletter<\/a><\/strong>. Wait! are you on telegram?\u00a0<strong><a href=\"https:\/\/t.me\/machinelearningresearchnews\" target=\"_blank\" rel=\"noreferrer noopener\">now you can join us on telegram as well.<\/a><\/strong><\/p>\n<p class=\"wp-block-paragraph\">Need to partner with us for promoting your GitHub Repo OR Hugging Face Page OR Product Release OR Webinar etc.?\u00a0<strong><a href=\"https:\/\/forms.gle\/wbash1wF6efRj8G58\" target=\"_blank\" rel=\"noreferrer noopener\"><mark>Connect with us<\/mark><\/a><\/strong><\/p>\n<p>The post <a href=\"https:\/\/www.marktechpost.com\/2026\/07\/13\/prime-intellect-releases-verifiers-v1\/\">Prime Intellect Releases Verifiers v1: Composable Tasksets, Harnesses, and Runtimes for Agentic RL Training and Evaluations<\/a> appeared first on <a href=\"https:\/\/www.marktechpost.com\/\">MarkTechPost<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Prime Intellect launched verifiers 0.2.0. It previews a rewritten core, shipped under the new verifiers.v1 namespace. Modern evaluations now run coding agents with tools, compaction, and subagents. Accordingly, v1 rebuilds environments to run these agentic workloads at scale. What is verifiers v1? First, consider what verifiers is: Prime Intellect\u2019s environment stack for agentic reinforcement learning and evaluations. Previously, an environment bundled its data, agent logic, and infrastructure together. In contrast, v1 breaks that bundle into three composable pieces. A taskset defines the work: the data, tools, and scoring. A harness solves the task and produces a rollout. That harness can be a ReAct loop, a CLI agent, or your own. The rollout then runs inside a runtime, either local or in a sandbox. Because the pieces decouple, any taskset runs under any compatible harness. How the Architecture Works? With those pieces defined, the next question is how they communicate. The central piece is the verifiers-managed interception server. It sits between the agent\u2019s runtime and the inference server. Specifically, it proxies requests to, and responses from, inference. Meanwhile, it records the trace, sets sampling parameters, and can rewrite tool responses. That rewriting helps mitigate reward hacks during training. For scale, each server multiplexes a constant number of rollouts, defaulting to 32. A pool then scales elastically with observed concurrency. The server also owns a client that relays those requests. During evaluation, an EvalClient acts as a blind HTTP proxy. During training, a TrainClient wraps renderers for faithful token-in RL training. Because harnesses speak different dialects, verifiers supports three as of now. These are OpenAI Chat Completions, OpenAI Responses, and Anthropic Messages. A dialect adapter normalizes each wire format into canonical vf.types. Consequently, your scoring logic stays independent of the agent tested. Run rollout&lt;\/button&gt; &lt;button id=&#8221;vf-reset&#8221; class=&#8221;vf-ghost&#8221;&gt;Reset&lt;\/button&gt; &lt;span class=&#8221;vf-lab&#8221;&gt;Harness dialect:&lt;\/span&gt; &lt;select id=&#8221;vf-dialect&#8221;&gt; &lt;option value=&#8221;Chat&#8221;&gt;OpenAI Chat Completions&lt;\/option&gt; &lt;option value=&#8221;Resp&#8221;&gt;OpenAI Responses&lt;\/option&gt; &lt;option value=&#8221;Msg&#8221;&gt;Anthropic Messages&lt;\/option&gt; &lt;\/select&gt; &lt;\/div&gt; &lt;div class=&#8221;vf-stage&#8221;&gt; &lt;div class=&#8221;vf-row&#8221; style=&#8221;margin-bottom:14px&#8221;&gt; &lt;div class=&#8221;vf-node vf-taskset&#8221; id=&#8221;n-taskset&#8221;&gt; &lt;div class=&#8221;vf-nt&#8221;&gt;Taskset&lt;\/div&gt; &lt;div class=&#8221;vf-nd&#8221;&gt;what \u00b7 data \u00b7 tools \u00b7 scoring&lt;\/div&gt; &lt;\/div&gt; &lt;\/div&gt; &lt;div class=&#8221;vf-runtime-wrap&#8221;&gt; &lt;span class=&#8221;vf-runtime-tag&#8221;&gt;RUNTIME \u00b7 where (subprocess \u00b7 Docker \u00b7 sandbox)&lt;\/span&gt; &lt;div class=&#8221;vf-row&#8221; id=&#8221;vf-flow&#8221;&gt; &lt;div class=&#8221;vf-node vf-harness&#8221; id=&#8221;n-harness&#8221;&gt; &lt;div class=&#8221;vf-nt&#8221;&gt;Harness&lt;\/div&gt; &lt;div class=&#8221;vf-nd&#8221;&gt;how \u00b7 Codex \u00b7 Terminus 2 \u00b7 ReAct&lt;\/div&gt; &lt;\/div&gt; &lt;div class=&#8221;vf-arrow&#8221;&gt;\u2192&lt;\/div&gt; &lt;div class=&#8221;vf-node vf-intercept&#8221; id=&#8221;n-intercept&#8221;&gt; &lt;div class=&#8221;vf-nt&#8221;&gt;Interception Server&lt;\/div&gt; &lt;div class=&#8221;vf-nd&#8221;&gt;proxy \u00b7 records trace&lt;\/div&gt; &lt;\/div&gt; &lt;div class=&#8221;vf-arrow&#8221;&gt;\u2192&lt;\/div&gt; &lt;div class=&#8221;vf-node vf-infer&#8221; id=&#8221;n-infer&#8221;&gt; &lt;div class=&#8221;vf-nt&#8221;&gt;Inference Server&lt;\/div&gt; &lt;div class=&#8221;vf-nd&#8221;&gt;vLLM \u00b7 model&lt;\/div&gt; &lt;\/div&gt; &lt;div class=&#8221;vf-packet&#8221; id=&#8221;vf-packet&#8221;&gt;req&lt;\/div&gt; &lt;\/div&gt; &lt;\/div&gt; &lt;div class=&#8221;vf-status&#8221; id=&#8221;vf-status&#8221;&gt;Press \u201cRun rollout\u201d to send a request through the interception server.&lt;\/div&gt; &lt;\/div&gt; &lt;div class=&#8221;vf-grid&#8221;&gt; &lt;div class=&#8221;vf-panel&#8221;&gt; &lt;h3&gt;Trace \u00b7 message graph (v1)&lt;\/h3&gt; &lt;div class=&#8221;vf-hint&#8221;&gt;Each message is a unique node. Size grows linearly in turns.&lt;\/div&gt; &lt;div class=&#8221;vf-graph&#8221; id=&#8221;vf-graph&#8221;&gt; &lt;div class=&#8221;vf-empty&#8221;&gt;No messages recorded yet.&lt;\/div&gt; &lt;\/div&gt; &lt;\/div&gt; &lt;div class=&#8221;vf-panel&#8221;&gt; &lt;h3&gt;Trace size: v0 vs v1&lt;\/h3&gt; &lt;div class=&#8221;vf-hint&#8221;&gt;Drag to change turns. v0 repeats prompt-completion pairs; v1 stores unique nodes.&lt;\/div&gt; &lt;div class=&#8221;vf-chart&#8221;&gt; &lt;svg viewBox=&#8221;0 0 260 150&#8243; id=&#8221;vf-svg&#8221;&gt; &lt;line x1=&#8221;30&#8243; y1=&#8221;130&#8243; x2=&#8221;255&#8243; y2=&#8221;130&#8243; stroke=&#8221;#dfe6ef&#8221; stroke-width=&#8221;1.5&#8243;\/&gt; &lt;line x1=&#8221;30&#8243; y1=&#8221;10&#8243; x2=&#8221;30&#8243; y2=&#8221;130&#8243; stroke=&#8221;#dfe6ef&#8221; stroke-width=&#8221;1.5&#8243;\/&gt; &lt;path id=&#8221;vf-v0&#8243; fill=&#8221;none&#8221; stroke=&#8221;#d1477a&#8221; stroke-width=&#8221;2.5&#8243;\/&gt; &lt;path id=&#8221;vf-v1&#8243; fill=&#8221;none&#8221; stroke=&#8221;#0b8f8f&#8221; stroke-width=&#8221;2.5&#8243;\/&gt; &lt;text x=&#8221;140&#8243; y=&#8221;147&#8243; font-size=&#8221;9&#8243; fill=&#8221;#94a3b8&#8243; text-anchor=&#8221;middle&#8221;&gt;turns \u2192&lt;\/text&gt; &lt;\/svg&gt; &lt;\/div&gt; &lt;div class=&#8221;vf-legend&#8221;&gt; &lt;span&gt;&lt;i style=&#8221;background:#d1477a&#8221;&gt;&lt;\/i&gt; v0 \u00b7 quadratic&lt;\/span&gt; &lt;span&gt;&lt;i style=&#8221;background:#0b8f8f&#8221;&gt;&lt;\/i&gt; v1 \u00b7 linear&lt;\/span&gt; &lt;\/div&gt; &lt;div class=&#8221;vf-slider-row&#8221;&gt; &lt;span&gt;Turns&lt;\/span&gt; &lt;input type=&#8221;range&#8221; id=&#8221;vf-turns&#8221; min=&#8221;4&#8243; max=&#8221;60&#8243; value=&#8221;24&#8243;&gt; &lt;span id=&#8221;vf-turns-val&#8221; style=&#8221;width:26px;text-align:right&#8221;&gt;24&lt;\/span&gt; &lt;\/div&gt; &lt;\/div&gt; &lt;\/div&gt; &lt;div class=&#8221;vf-foot&#8221;&gt; Illustrative demo of the verifiers v1 architecture \u00b7 Built by &lt;b&gt;Marktechpost&lt;\/b&gt; &lt;\/div&gt; &lt;\/div&gt; &lt;script&gt; (function(){ var root=document.getElementById(&#8220;vfv1-demo&#8221;); var packet=document.getElementById(&#8220;vf-packet&#8221;); var status=document.getElementById(&#8220;vf-status&#8221;); var graph=document.getElementById(&#8220;vf-graph&#8221;); var runBtn=document.getElementById(&#8220;vf-run&#8221;); var resetBtn=document.getElementById(&#8220;vf-reset&#8221;); var dialectSel=document.getElementById(&#8220;vf-dialect&#8221;); var nHarness=document.getElementById(&#8220;n-harness&#8221;); var nIntercept=document.getElementById(&#8220;n-intercept&#8221;); var nInfer=document.getElementById(&#8220;n-infer&#8221;); var flow=document.getElementById(&#8220;vf-flow&#8221;); var turn=0, running=false; var msgs=[]; \/\/ recorded nodes var dialectLabel={Chat:&#8221;Chat&#8221;,Resp:&#8221;Resp&#8221;,Msg:&#8221;Msg&#8221;}; function pos(el){ \/\/ center x relative to flow var f=flow.getBoundingClientRect(); var r=el.getBoundingClientRect(); return (r.left &#8211; f.left) + r.width\/2 &#8211; 32; } function clearActive(){ [nHarness,nIntercept,nInfer].forEach(function(n){n.classList.remove(&#8220;vf-active&#8221;);}); } function movePacket(fromEl,toEl,ms,label,isResp){ return new Promise(function(res){ packet.textContent=label; packet.classList.toggle(&#8220;vf-resp&#8221;,!!isResp); packet.style.transition=&#8221;none&#8221;; packet.style.left=pos(fromEl)+&#8221;px&#8221;; packet.style.opacity=&#8221;1&#8243;; void packet.offsetWidth; packet.style.transition=&#8221;left &#8220;+ms+&#8221;ms cubic-bezier(.45,.05,.35,1)&#8221;; packet.style.left=pos(toEl)+&#8221;px&#8221;; setTimeout(res,ms); }); } function addNode(role,label,color){ if(msgs.length===0){ graph.innerHTML=&#8221;&#8221;; } var d=document.createElement(&#8220;div&#8221;); d.className=&#8221;vf-msg&#8221;; d.innerHTML='&lt;span class=&#8221;vf-dot&#8221; style=&#8221;background:&#8217;+color+&#8217;&#8221;&gt;&lt;\/span&gt;&lt;code&gt;&#8217;+label+'&lt;\/code&gt;&lt;span class=&#8221;vf-role&#8221;&gt;&#8217;+role+'&lt;\/span&gt;&#8217;; graph.appendChild(d); graph.scrollTop=graph.scrollHeight; msgs.push(label); } function sleep(ms){return new Promise(function(r){setTimeout(r,ms);});} async function runTurn(){ if(running) return; running=true; runBtn.disabled=true; turn++; var dl=dialectLabel[dialectSel.value]; \/\/ seed system + user on first turn if(turn===1){ addNode(&#8220;system&#8221;,&#8221;S1&#8243;,&#8221;#6366f1&#8243;); await sleep(160); addNode(&#8220;user&#8221;,&#8221;U1&#8243;,&#8221;#6366f1&#8243;); } clearActive(); nHarness.classList.add(&#8220;vf-active&#8221;); status.textContent=&#8221;Harness builds a &#8220;+dl+&#8221; request\u2026&#8221;; await sleep(350); \/\/ harness -&gt; interception nIntercept.classList.add(&#8220;vf-active&#8221;); status.textContent=&#8221;Interception server proxies the request \u2192 inference.&#8221;; await movePacket(nHarness,nInfer,850,dl+&#8221; req&#8221;); clearActive(); nInfer.classList.add(&#8220;vf-active&#8221;); status.textContent=&#8221;Inference server generates the reply (vLLM).&#8221;; await sleep(350); \/\/ inference -&gt; interception (records) -&gt; harness nIntercept.classList.add(&#8220;vf-active&#8221;); status.textContent=&#8221;Interception server records the trace, relays the response.&#8221;; await movePacket(nInfer,nHarness,850,&#8221;resp&#8221;,true); packet.style.opacity=&#8221;0&#8243;; clearActive(); \/\/ record assistant node (+ occasional tool) addNode(&#8220;assistant&#8221;,&#8221;A&#8221;+turn,&#8221;#0b8f8f&#8221;); await sleep(150); if(turn%2===0){ addNode(&#8220;tool&#8221;,&#8221;T&#8221;+turn,&#8221;#e0a800&#8243;); } status.textContent=&#8221;Turn &#8220;+turn+&#8221; recorded as a unique node in the message graph.&#8221;; running=false; runBtn.disabled=false; } function reset(){ turn=0; msgs=[]; running=false; runBtn.disabled=false; clearActive(); packet.style.opacity=&#8221;0&#8243;; graph.innerHTML='&lt;div class=&#8221;vf-empty&#8221;&gt;No messages recorded yet.&lt;\/div&gt;&#8217;; status.textContent=&#8221;Press \u201cRun rollout\u201d to send a request through the interception server.&#8221;; } runBtn.addEventListener(&#8220;click&#8221;,runTurn); resetBtn.addEventListener(&#8220;click&#8221;,reset); \/\/ &#8212;- v0 vs v1 growth chart &#8212;- var v0=document.getElementById(&#8220;vf-v0&#8221;); var v1=document.getElementById(&#8220;vf-v1&#8221;); var turnsR=document.getElementById(&#8220;vf-turns&#8221;); var turnsV=document.getElementById(&#8220;vf-turns-val&#8221;); function drawChart(N){ var x0=30,x1=255,y0=130,y1=12,W=x1-x0,H=y0-y1; var maxV0=N*N; \/\/ quadratic reference function ptV0(i){var x=x0+(i\/N)*W;var y=y0-((i*i)\/maxV0)*H;return x+&#8221;,&#8221;+y;} function ptV1(i){var x=x0+(i\/N)*W;var y=y0-((i\/N)*H);return x+&#8221;,&#8221;+y;} \/\/ linear var p0=&#8221;M&#8221;,p1=&#8221;M&#8221;; for(var i=0;i&lt;=N;i++){ p0+=(i?&#8221; L&#8221;:&#8221;&#8221;)+ptV0(i); p1+=(i?&#8221; L&#8221;:&#8221;&#8221;)+ptV1(i); } v0.setAttribute(&#8220;d&#8221;,p0); v1.setAttribute(&#8220;d&#8221;,p1); } turnsR.addEventListener(&#8220;input&#8221;,function(){ turnsV.textContent=turnsR.value; drawChart(+turnsR.value); }); drawChart(+turnsR.value); \/\/ &#8212;- auto-resize for WordPress iframe embedding &#8212;- function sendHeight(){ var h=document.getElementById(&#8220;vfv1-demo&#8221;).offsetHeight+40; if(window.parent){ window.parent.postMessage({vfv1Height:h},&#8221;*&#8221;); } } window.addEventListener(&#8220;load&#8221;,sendHeight); window.addEventListener(&#8220;resize&#8221;,sendHeight); new MutationObserver(sendHeight).observe(document.getElementById(&#8220;vf-graph&#8221;),{childList:true}); setInterval(sendHeight,1200); })(); &lt;\/script&gt; &lt;\/body&gt; &lt;\/html&gt; &#8220;&gt; v0 vs v1: A Quick Comparison These changes separate v1 from v0. Aspect verifiers v0 verifiers v1 Environment model Data, logic, and infra bundled together Split into taskset, harness, runtime Trace growth Quadratic in turns (repeated pairs) Linear in turns (unique nodes) Non-linear rollouts Assumed linear Native compaction and subagents via branches Runtime handling Builder manages lifecycle Framework-managed run \/ read \/ write Harness coupling Tightly coupled to the environment Any compatible harness (Codex, Terminus 2) Training data Recomputed for prime-rl Consumed directly from the trace Use Cases with Examples With the architecture clear, consider how teams use it. For example, you can run Nemotron 3 Ultra on Terminal-Bench 2 under Codex. Similarly, teams can reuse Harbor datasets without rewriting reward logic. Prime Intellect ported Terminal Bench 2 into v1 with only a small class. In its internal testing, verifiers matched Harbor\u2019s performance<\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"pmpro_default_level":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_pvb_checkbox_block_on_post":false,"footnotes":""},"categories":[52,5,7,1],"tags":[],"class_list":["post-103948","post","type-post","status-publish","format-standard","hentry","category-ai-club","category-committee","category-news","category-uncategorized","pmpro-has-access"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Prime Intellect Releases Verifiers v1: Composable Tasksets, Harnesses, and Runtimes for Agentic RL Training and Evaluations - YouZum<\/title>\n<meta name=\"description\" content=\"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/youzum.net\/fr\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Prime Intellect Releases Verifiers v1: Composable Tasksets, Harnesses, and Runtimes for Agentic RL Training and Evaluations - YouZum\" \/>\n<meta property=\"og:description\" content=\"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19\" \/>\n<meta property=\"og:url\" content=\"https:\/\/youzum.net\/fr\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/\" \/>\n<meta property=\"og:site_name\" content=\"YouZum\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DroneAssociationTH\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-13T19:15:41+00:00\" \/>\n<meta name=\"author\" content=\"admin NU\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin NU\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/\"},\"author\":{\"name\":\"admin NU\",\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/person\/97fa48242daf3908e4d9a5f26f4a059c\"},\"headline\":\"Prime Intellect Releases Verifiers v1: Composable Tasksets, Harnesses, and Runtimes for Agentic RL Training and Evaluations\",\"datePublished\":\"2026-07-13T19:15:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/\"},\"wordCount\":1914,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/yousum.gpucore.co\/#organization\"},\"articleSection\":[\"AI\",\"Committee\",\"News\",\"Uncategorized\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/\",\"url\":\"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/\",\"name\":\"Prime Intellect Releases Verifiers v1: Composable Tasksets, Harnesses, and Runtimes for Agentic RL Training and Evaluations - YouZum\",\"isPartOf\":{\"@id\":\"https:\/\/yousum.gpucore.co\/#website\"},\"datePublished\":\"2026-07-13T19:15:41+00:00\",\"description\":\"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19\",\"breadcrumb\":{\"@id\":\"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/youzum.net\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Prime Intellect Releases Verifiers v1: Composable Tasksets, Harnesses, and Runtimes for Agentic RL Training and Evaluations\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/yousum.gpucore.co\/#website\",\"url\":\"https:\/\/yousum.gpucore.co\/\",\"name\":\"YouSum\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/yousum.gpucore.co\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/yousum.gpucore.co\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/yousum.gpucore.co\/#organization\",\"name\":\"Drone Association Thailand\",\"url\":\"https:\/\/yousum.gpucore.co\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/youzum.net\/wp-content\/uploads\/2024\/11\/tranparent-logo.png\",\"contentUrl\":\"https:\/\/youzum.net\/wp-content\/uploads\/2024\/11\/tranparent-logo.png\",\"width\":300,\"height\":300,\"caption\":\"Drone Association Thailand\"},\"image\":{\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/DroneAssociationTH\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/person\/97fa48242daf3908e4d9a5f26f4a059c\",\"name\":\"admin NU\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/youzum.net\/wp-content\/uploads\/avatars\/2\/1746849356-bpfull.png\",\"contentUrl\":\"https:\/\/youzum.net\/wp-content\/uploads\/avatars\/2\/1746849356-bpfull.png\",\"caption\":\"admin NU\"},\"url\":\"https:\/\/youzum.net\/fr\/members\/adminnu\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Prime Intellect Releases Verifiers v1: Composable Tasksets, Harnesses, and Runtimes for Agentic RL Training and Evaluations - YouZum","description":"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/youzum.net\/fr\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/","og_locale":"fr_FR","og_type":"article","og_title":"Prime Intellect Releases Verifiers v1: Composable Tasksets, Harnesses, and Runtimes for Agentic RL Training and Evaluations - YouZum","og_description":"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19","og_url":"https:\/\/youzum.net\/fr\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/","og_site_name":"YouZum","article_publisher":"https:\/\/www.facebook.com\/DroneAssociationTH\/","article_published_time":"2026-07-13T19:15:41+00:00","author":"admin NU","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"admin NU","Dur\u00e9e de lecture estim\u00e9e":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/#article","isPartOf":{"@id":"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/"},"author":{"name":"admin NU","@id":"https:\/\/yousum.gpucore.co\/#\/schema\/person\/97fa48242daf3908e4d9a5f26f4a059c"},"headline":"Prime Intellect Releases Verifiers v1: Composable Tasksets, Harnesses, and Runtimes for Agentic RL Training and Evaluations","datePublished":"2026-07-13T19:15:41+00:00","mainEntityOfPage":{"@id":"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/"},"wordCount":1914,"commentCount":0,"publisher":{"@id":"https:\/\/yousum.gpucore.co\/#organization"},"articleSection":["AI","Committee","News","Uncategorized"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/","url":"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/","name":"Prime Intellect Releases Verifiers v1: Composable Tasksets, Harnesses, and Runtimes for Agentic RL Training and Evaluations - YouZum","isPartOf":{"@id":"https:\/\/yousum.gpucore.co\/#website"},"datePublished":"2026-07-13T19:15:41+00:00","description":"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19","breadcrumb":{"@id":"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/youzum.net\/prime-intellect-releases-verifiers-v1-composable-tasksets-harnesses-and-runtimes-for-agentic-rl-training-and-evaluations\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/youzum.net\/"},{"@type":"ListItem","position":2,"name":"Prime Intellect Releases Verifiers v1: Composable Tasksets, Harnesses, and Runtimes for Agentic RL Training and Evaluations"}]},{"@type":"WebSite","@id":"https:\/\/yousum.gpucore.co\/#website","url":"https:\/\/yousum.gpucore.co\/","name":"YouSum","description":"","publisher":{"@id":"https:\/\/yousum.gpucore.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/yousum.gpucore.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/yousum.gpucore.co\/#organization","name":"Drone Association Thailand","url":"https:\/\/yousum.gpucore.co\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/yousum.gpucore.co\/#\/schema\/logo\/image\/","url":"https:\/\/youzum.net\/wp-content\/uploads\/2024\/11\/tranparent-logo.png","contentUrl":"https:\/\/youzum.net\/wp-content\/uploads\/2024\/11\/tranparent-logo.png","width":300,"height":300,"caption":"Drone Association Thailand"},"image":{"@id":"https:\/\/yousum.gpucore.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DroneAssociationTH\/"]},{"@type":"Person","@id":"https:\/\/yousum.gpucore.co\/#\/schema\/person\/97fa48242daf3908e4d9a5f26f4a059c","name":"admin NU","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/yousum.gpucore.co\/#\/schema\/person\/image\/","url":"https:\/\/youzum.net\/wp-content\/uploads\/avatars\/2\/1746849356-bpfull.png","contentUrl":"https:\/\/youzum.net\/wp-content\/uploads\/avatars\/2\/1746849356-bpfull.png","caption":"admin NU"},"url":"https:\/\/youzum.net\/fr\/members\/adminnu\/"}]}},"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"admin NU","author_link":"https:\/\/youzum.net\/fr\/members\/adminnu\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/youzum.net\/fr\/category\/ai-club\/\" rel=\"category tag\">AI<\/a> <a href=\"https:\/\/youzum.net\/fr\/category\/committee\/\" rel=\"category tag\">Committee<\/a> <a href=\"https:\/\/youzum.net\/fr\/category\/news\/\" rel=\"category tag\">News<\/a> <a href=\"https:\/\/youzum.net\/fr\/category\/uncategorized\/\" rel=\"category tag\">Uncategorized<\/a>","rttpg_excerpt":"Prime Intellect launched verifiers 0.2.0. It previews a rewritten core, shipped under the new verifiers.v1 namespace. Modern evaluations now run coding agents with tools, compaction, and subagents. Accordingly, v1 rebuilds environments to run these agentic workloads at scale. What is verifiers v1? First, consider what verifiers is: Prime Intellect\u2019s environment stack for agentic reinforcement learning\u2026","_links":{"self":[{"href":"https:\/\/youzum.net\/fr\/wp-json\/wp\/v2\/posts\/103948","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/youzum.net\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/youzum.net\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/youzum.net\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/youzum.net\/fr\/wp-json\/wp\/v2\/comments?post=103948"}],"version-history":[{"count":0,"href":"https:\/\/youzum.net\/fr\/wp-json\/wp\/v2\/posts\/103948\/revisions"}],"wp:attachment":[{"href":"https:\/\/youzum.net\/fr\/wp-json\/wp\/v2\/media?parent=103948"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/youzum.net\/fr\/wp-json\/wp\/v2\/categories?post=103948"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/youzum.net\/fr\/wp-json\/wp\/v2\/tags?post=103948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}