Spaces:
Running
Running
Show pure Kinex RLE evaluation progress; retain native VLA and historical Kinex evidence
Browse files- hard/app.js +12 -8
- hard/data-source.json +10 -7
- hard/index.html +2 -2
- manifest.json +132 -125
- plus/app.js +13 -9
- plus/data-source.json +10 -7
- plus/index.html +2 -2
hard/app.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
'use strict';
|
| 2 |
const plannedProtocol = (task, variant) => task.planned_protocol_by_variant?.[variant] || task.planned_protocol;
|
| 3 |
// RoboEnv LIBERO raw counters include five initialization frames; RoboBridge counters do not.
|
|
@@ -98,7 +102,7 @@ function comparisonCell(v,f) {
|
|
| 98 |
|
| 99 |
function comparisonTable() {
|
| 100 |
const scope='Per-task averages divide totals by the number of valid evaluated tasks in each environment and variant, including passes and failures. Pending and invalid tasks are excluded; missing values remain —.';
|
| 101 |
-
return `<section class="comparison-panel" aria-labelledby="comparison-title"><div class="section-heading bare"><div><h2 id="comparison-title">Compare environments</h2><p>Four
|
| 102 |
}
|
| 103 |
function recordingPilotProgress(){
|
| 104 |
const p=data.recording_pilot;if(!p)return '';
|
|
@@ -119,7 +123,7 @@ function opusPilotProgress(){
|
|
| 119 |
return `<section class="panel" style="padding:18px 24px;margin-bottom:24px" aria-label="Claude Code campaign"><strong>Claude Code · Opus 5.5 / high</strong><p>${number(n.finished||0)} / ${number(c.planned_episodes)} episodes completed · ${number(n.running||0)} running · ${number(n.queued||0)} pending${n.needs_review?' · '+number(n.needs_review)+' under review':''}${n.interrupted?' · '+number(n.interrupted)+' interrupted':''}.</p><p class="source-note">${c.quota_waiting?'Waiting for model-service quota recovery · ':''}${number(c.published_episodes)} episode records published · <a href="${esc(c.status_url)}" target="_blank" rel="noopener">Results and protocol ↗</a></p></section>`;
|
| 120 |
}
|
| 121 |
function methodology() {
|
| 122 |
-
return `<details class="panel methodology" id="methodology"><summary><span><span class="eyebrow">Reading the Hard benchmark</span><strong>Protocol, metrics & provenance</strong></span><span class="summary-plus">+</span></summary><div class="method-grid"><div><h3>50 tasks × 5 conditions</h3><p>RoboTwin 2.0 Hard, ALOHA AgileX, demo_randomized. Each condition is scheduled for one valid episode per task; completion is shown separately. Successes and valid failures are both retained; no valid outcome was retried. This is RoboTwin 2.0 Hard, not RoboTwin 2.0-Plus.</p></div><div><h3>
|
| 123 |
}
|
| 124 |
function taskBrowser(variant=null) {
|
| 125 |
return `<section class="task-browser" id="tasks"><div class="section-heading bare"><div><div class="eyebrow">${variant?'Episode index':'Browse the benchmark'}</div><h2>Explore tasks <span class="heading-count">${plannedTasks(variant).length}</span></h2></div><button class="button secondary" data-export="${variant||'all'}">Export CSV ↓</button></div><div class="panel"><div class="filters"><label class="search-field"><span aria-hidden="true">⌕</span><input id="task-search" type="search" aria-label="Search tasks" placeholder="Search task name, instruction or ID" value="${esc(filters.query)}"></label><select id="task-family" aria-label="Environment"><option value="">All environments</option>${data.families.map(f=>`<option value="${f.id}" ${filters.family===f.id?'selected':''}>${f.name}</option>`).join('')}</select>${variant?'':`<select id="task-variant" aria-label="Agent for outcome filter">${data.variants.map(v=>`<option value="${v.id}" ${filters.variant===v.id?'selected':''}>${v.label||v.agent} · ${v.model}</option>`).join('')}</select>`}<select id="task-status" aria-label="Outcome"><option value="">All outcomes</option>${['pass','fail','pending'].map(s=>`<option value="${s}" ${filters.status===s?'selected':''}>${s[0].toUpperCase()+s.slice(1)}</option>`).join('')}</select><select id="task-sort" aria-label="Sort tasks"><option value="catalog" ${filters.sort==='catalog'?'selected':''}>Catalog order</option><option value="tokens" ${filters.sort==='tokens'?'selected':''}>Most fresh input tokens</option><option value="cost" ${filters.sort==='cost'?'selected':''}>Highest cost</option><option value="name" ${filters.sort==='name'?'selected':''}>Task name</option></select></div><div class="table-scroll"><table class="task-table ${variant?'single-variant':''}"><thead><tr><th>Task</th>${variant?'<th>Native result</th><th>Fresh input<small>Excludes read and write</small></th><th>Cache read</th><th>Cache write</th><th>Cache hit</th><th>Output</th><th>Total cost<small>Estimated USD</small></th><th>Action steps</th>':data.variants.map(v=>`<th class="${v.id===filters.variant?'focus-column':''}">${v.label||v.agent}<small>${v.model} · ${v.effort}</small><small>Native result · Estimated USD</small></th>`).join('')}</tr></thead><tbody id="task-rows"></tbody></table></div><div class="table-footer"><span id="task-count" aria-live="polite"></span><span id="filter-context"></span><button class="text-button" id="reset-filters">Reset filters</button></div></div></section>`;
|
|
@@ -142,8 +146,8 @@ function researchRerunNote() {
|
|
| 142 |
|
| 143 |
function overview() {
|
| 144 |
current={type:'overview'};
|
| 145 |
-
$('#main').innerHTML=`<section class="hero"><div><div class="eyebrow"><span class="tiny-logo">✦</span> RLE-Bench · Embodied agent evaluation</div><h1>RoboTwin 2.0.<br><span>Hard evaluation.</span></h1><p>
|
| 146 |
-
${researchRerunNote()}${recordingPilotProgress()}${campaignProgress()}${opusPilotProgress()}<div class="agent-cards">${data.variants.map(v=>{const s=stats(episodes(v.id));return `<a class="agent-card ${s.n?'':'planned'}" href="#runs/${v.id}" style="--variant:${colors[v.id]}"><div class="card-header"><span class="agent-name">${icon(v)}${esc(v.label||v.agent)}</span><span class="state-label">${s.n===plannedTasks(v.id).length?'Complete':s.n?'Partial':'Planned'}</span></div><p class="card-model">${modelLabel(v)}</p><div class="card-rate"><strong>${pct(s.rate)}</strong><span>native success</span></div><div class="card-stats"><span><b>${s.n?s.passes+' / '+s.n:'—'}</b> passed</span><span class="card-cost" title="${esc(costNote(s))}"><b>${costValue(s)}</b> total cost<small>Estimated USD</small></span></div><div class="completion-track"><span style="width:${s.n/plannedTasks(v.id).length*100}%"></span></div><div class="card-bottom"><span>${s.n} / ${plannedTasks(v.id).length} evaluated</span><span>${s.n?'Explore runs':'View planned'} ${arrow}</span></div></a>`;}).join('')}</div><div class="scope-note"><span><i class="status-dot"></i>Success rates and costs cover selected evaluated tasks only.</span><span>
|
| 147 |
renderRows();
|
| 148 |
}
|
| 149 |
function runsPage(variant,params,restoredFilters=null) {
|
|
@@ -199,7 +203,7 @@ function instructionPair(task, ep) {
|
|
| 199 |
|
| 200 |
function instructionPanel(task,ep) {
|
| 201 |
const {record,native,measured:recorded,nativeReference}=instructionPair(task,ep);
|
| 202 |
-
const measured=ep?recorded:task.catalog_instruction;
|
| 203 |
const initial=record&&record.initial_goal!==measured?record.initial_goal:null;
|
| 204 |
const changed=Boolean(native&&measured&&native!==measured);
|
| 205 |
const diff=changed?instructionDiff(native,measured):null;
|
|
@@ -220,10 +224,10 @@ function overviewDetail(task,ep) {
|
|
| 220 |
const initializationBlocked=(data.active_campaign?.initialization_blocked||[]).includes(task.key+'/'+current.variant);
|
| 221 |
const review=reviewFor(task.key,current.variant);
|
| 222 |
if(!ep&&review)return `<section class="panel pending-panel" data-runtime-review><span class="badge invalid">Under review</span><h2>Native success recorded; runtime finalization failed</h2><p>${esc(review.reason)}</p><p>Original harness verdict: invalid. Recording manifest: incomplete. This attempt is excluded from formal success metrics; its usage is retained separately.</p><dl class="facts"><dt>Native terminal steps</dt><dd>${number(actionSteps(review.native_terminal_steps,task,current.variant))}</dd><dt>Fresh input</dt><dd>${number(review.usage.fresh_input_tokens)}</dd><dt>Cache read</dt><dd>${number(review.usage.cached_input_tokens)}</dd><dt>Output</dt><dd>${number(review.usage.output_tokens)}</dd><dt>Model responses</dt><dd>${number(review.usage.response_count)}</dd><dt>Estimated API-equivalent cost</dt><dd>${exactMoney(review.estimated_api_equivalent_usd)}</dd></dl><p>Both original camera streams decode successfully. Their completion manifest was not sealed, so they are retained as review evidence.</p><div class="inline-links">${Object.entries(review.links).map(([key,url])=>external(url,key.replaceAll('_',' '))).join('')}</div></section>${instructionPanel(task,null)}`;
|
| 223 |
-
if(!ep)return `<div class="pending-layout"><section class="pending-panel"><span class="pending-orbit">○</span><span class="eyebrow">${initializationBlocked?'Initialization blocked':'Awaiting evaluation'}</span><h2>${seedLimit?.exhausted?'No native-valid seed at or below '+number(seedLimit.max_seed):initializationBlocked?'Native seed 0 could not initialize':'No recorded episode yet'}</h2><p>${variantName(current.variant)} / ${esc(variantFor(current.variant).effort)}</p><div class="pending-facts">${metric(number(actionSteps(plannedProtocol(task,current.variant).max_control_steps,task)),'Campaign planned action steps')}${metric(String(task.planned_seed_by_variant?.[current.variant]??plannedProtocol(task,current.variant).seed),'Seed')}${metric(task.
|
| 224 |
const m=ep.media||{},u=ep.usage||{},a=ep.analysis||{};
|
| 225 |
const reason=a.evidence_note||a.failure_reason||a.cause||a.observed||a.visible_completion;
|
| 226 |
-
return `<div class="episode-layout"><div>${videoPanel(ep)}<p class="media-note">${m.playback_kind==='official_action_index'?'Head + left wrist + right wrist · 4× official recording, not simulation time. Wrist views update only at inference boundaries. Native 320 × 240 views are upscaled for display; action-limit recordings omit the post-final-action frame.':ep.recording_mode==='native'?'Native camera recording · cached agent-resolution frames · '+(m.speed||1)+'× simulation speed.':ep.provider==='robobridge'&&m.playback_kind==='live_spectator'?'Independent spectator cameras · 720 px high per view · overview + wrist views · '+(m.speed||1)+'× simulation speed. Agent images retain native resolution and orientation.':m.playback_kind==='native_observation_snapshots'?'Native observation snapshots · 10 FPS playback; this is not simulation time.':`${m.source_fps?m.source_fps+' FPS source capture · ':''}${m.speed||1}× simulation speed.`} Session timestamps use wall time and are not synchronized to video frames.</p></div><aside class="result-panel panel"><div class="result-head"><span class="eyebrow">Native verdict</span>${badge(ep)}</div><div class="result-number">${number(actionSteps(ep.steps,ep))}<span> / ${number(actionSteps(ep.measured_protocol?.max_steps,ep))} action steps</span></div><div class="completion-track"><span style="width:${Math.min(100,(actionSteps(ep.steps,ep)||0)/(actionSteps(ep.measured_protocol?.max_steps,ep)||1)*100)}%"></span></div><dl class="facts"><dt>Termination</dt><dd>${esc(ep.verdict?.termination||'—')}</dd><dt>Execution</dt><dd>${esc(ep.execution?.status||'—')}</dd><dt>Evidence</dt><dd>${ep.valid?'Valid':'Invalid'}</dd><dt>Simulation time</dt><dd title="${esc(ep.timing?.simulation_time_note||'')}">${ep.timing&&ep.simulation_time_s==null?'Not recorded':elapsed(ep.simulation_time_s)}</dd><dt>Wall time</dt><dd title="${esc(ep.timing?.wall_time_scope||'')}">${elapsed(ep.wall_time_s)}</dd><dt>Estimated cost</dt><dd>${costValue(stats([ep]))}</dd><dt>Seed</dt><dd>${ep.seed}</dd><dt>Agent version</dt><dd>${ep.kinex_version?'Kinex '+esc(ep.kinex_version):ep.codex_version?'Codex '+esc(ep.codex_version):ep.claude_code_version?'Claude Code '+esc(ep.claude_code_version):esc(variantFor(ep.variant).agent)}</dd></dl><div class="result-links">${external(ep.links.verdict,'Native verdict')}${external(ep.links.provenance,'Source identity')}</div></aside></div>${nativeNote(task,ep)}${ep.post_terminal_review?`<aside class="native-note" data-post-terminal-note><span class="note-symbol">!</span><div><strong>Native episode completed; later provider error</strong><p>${esc(ep.post_terminal_review.reason)}</p>${external(ep.links.completion_review,"Terminal completion review")}</div></aside>`:""}${initializationNote?`<aside class="native-note" data-initialization-note><span class="note-symbol">!</span><div><strong>Measured initial-state variation</strong><p>${esc(initializationNote)}</p><a href="${esc(resultURL('initialization-comparison.json'))}" target="_blank">Paired initialization evidence ↗</a></div></aside>`:''}${ep.usage_review?`<aside class="native-note" data-usage-review-note><span class="note-symbol">i</span><div><strong>Context compaction included in usage</strong><p>${esc(ep.usage_review.reason)}</p>${external(ep.links.usage_review,"Usage reconciliation evidence")}</div></aside>`:""}${ep.native_clock_review?`<aside class="native-note" data-native-clock-note><span class="note-symbol">i</span><div><strong>Native physics clock differs from control-frame time</strong><p>${esc(ep.native_clock_review.reason)}</p>${external(ep.links.native_clock_review,"Native clock review")}</div></aside>`:""}${ep.collector_review&&ep.collector_review.schema!=="rlebench/collector-recovery/1"?`<aside class="native-note" data-collector-review-note><span class="note-symbol">i</span><div><strong>Host collector recovered; original model continued</strong><p>${esc(ep.collector_review.reason)}</p><p>Wall time uses the original session timestamps. Lost host setup timing is left unknown.</p><p>Host waiting protection was extended prospectively from 8 to 16 hours for this original execution; the native control budget is unchanged.</p>${external(ep.links.collector_review,"Collector recovery evidence")}</div></aside>`:""}${ep.provenance?.protocol_exception?.same_seed_comparison===false?`<aside class="native-note" data-seed-scope-note><span class="note-symbol">i</span><div><strong>Different evaluation seeds</strong><p>Codex uses seed ${number(ep.seed)} after native expert and initialization checks with no model calls during selection. ${ep.provenance.protocol_exception.max_seed!=null?'Seed selection was capped at '+number(ep.provenance.protocol_exception.max_seed)+'. ':''} Kinex retains its original seed ${number(ep.provenance.protocol_exception.preserved_kinex_seed)} result. Codex ran once; this is not a same-seed comparison.</p>${external(ep.links.seed_selection,'Native seed selection evidence')}</div></aside>`:''}${recordingComparisonNote(ep)}${episodeMetrics(ep)}<div class="detail-two-column">${instructionPanel(task,ep)}<section class="panel episode-analysis"><div class="section-heading"><div><h2>Episode notes</h2><p>Recorded observations and task-specific interpretation.</p></div></div><div class="analysis-body">${reason?`<p>${esc(reason)}</p>`:`<p>${esc(a.outcome||'The native result and original evidence are retained for this episode.')}</p>`}<details><summary>Read recorded analysis</summary>${Object.entries(a).filter(([k])=>k!=='preflight').map(([k,v])=>`<div class="analysis-entry"><span>${esc(k.replaceAll('_',' '))}</span><p>${esc(typeof v==='string'?v:JSON.stringify(v))}</p></div>`).join('')}</details><div class="inline-links">${external(ep.links.analysis,'Analysis JSON')}${external(ep.links.terminal_frame,'Terminal evidence')}</div></div></section></div><div class="detail-launchers"><a href="${taskRoute(task.key,ep.variant,'session')}"><span class="launcher-icon">≡</span><div><strong>Read the full session</strong><span>${number(ep.session_counts?.visible_events)} events · ${number(ep.session_counts?.observed_images)} observations</span></div>${arrow}</a><a href="${taskRoute(task.key,ep.variant,'artifacts')}"><span class="launcher-icon">⌘</span><div><strong>Inspect agent artifacts</strong><span>${ep.resources?.length||0} saved files · workspace & evidence</span></div>${arrow}</a></div>`;
|
| 227 |
}
|
| 228 |
function taskPage(key,variant,section='overview') {
|
| 229 |
const task=data.tasks.find(t=>t.key===key);if(!task||!variantFor(variant)){notFound();return;}
|
|
@@ -234,7 +238,7 @@ function taskPage(key,variant,section='overview') {
|
|
| 234 |
sessionState={filter:'all',query:'',count:40,view:'timeline'};
|
| 235 |
const taskList=plannedTasks(variant),index=taskList.indexOf(task),history=data.attempt_history.filter(h=>h.task_key===key&&h.variant===variant);
|
| 236 |
document.title=`${task.title} · ${variantFor(variant).agent} — Programmable VLA`;
|
| 237 |
-
$('#main').innerHTML=`<div class="breadcrumbs"><a data-task-return href="${esc(taskListReturn?.hash || '#tasks?task='+encodeURIComponent(key))}">← Back to tasks</a><span>/</span><a href="#runs/${variant}?family=${task.family}">${familyName(task.family)}</a><span>/</span><code>${key}</code></div><div class="task-heading"><div><div class="eyebrow">${familyName(task.family)} · ${key}</div><h1>${esc(task.title)}</h1><p><code>${esc(task.native_id)}</code></p></div><div class="task-arrows">${index?`<a class="button" href="${taskRoute(taskList[index-1].key,variant)}" aria-label="Previous task">←</a>`:''}${index<taskList.length-1?`<a class="button" href="${taskRoute(taskList[index+1].key,variant)}" aria-label="Next task">→</a>`:''}</div></div>${budgetNote(task)}${variantTabs(variant,key,section)}<nav class="detail-nav" aria-label="Episode sections">${[['overview','Overview',null],['session','Session',ep?.session_counts?.visible_events],['tools','Tool calls',ep?.call_activity?.model_tool_calls],['policy','VLA input/output',ep?.vla_calls],['artifacts','Artifacts',ep?.resources?.length],['evidence','Evidence',null],['attempts','Previous attempts',history.length]].filter(([k])=>k!=='attempts'||history.length).map(([k,l,n])=>!ep&&!['overview','attempts'].includes(k)?`<span class="disabled-tab" aria-disabled="true">${l}</span>`:`<a href="${taskRoute(key,variant,k)}" class="${k===section?'active':''}" ${k===section?'aria-current="page"':''}>${l}${n!=null?`<span>${number(n)}</span>`:''}</a>`).join('')}<span class="detail-model">${variantFor(variant).model} / ${variantFor(variant).effort}</span></nav><div id="detail-content">${section==='overview'?overviewDetail(task,ep):section==='session'?sessionShell(ep):section==='tools'?toolsShell(ep):section==='policy'?policyShell(ep):section==='artifacts'?artifactsPanel(ep):section==='evidence'?evidencePanel(task,ep):historyPanel(history,task)}</div>`;
|
| 238 |
setupVideo();
|
| 239 |
if(section==='session')loadSession(ep,epoch);
|
| 240 |
if(section==='tools')loadTools(ep,epoch);
|
|
|
|
| 1 |
+
function rleProtocolNote() {
|
| 2 |
+
const n=data.instruction_protocol_notice;if(!n)return '';
|
| 3 |
+
return `<aside class="native-note" data-rle-protocol><span class="note-symbol">i</span><div><strong>Pure Kinex · RLE revised instructions</strong><p>GPT-6 Astra / high with rosbridge; ${number(n.selected_kinex)} selected episodes. No VLA extension or device. Existing VLA results retain original native instructions, admission rules and execution. Different instruction and control protocols prevent a paired causal comparison.</p><div class="inline-links">${external(evidenceURL('research/kinex-rle-20261104/REPORT.md'),'RLE evaluation report')}${external(evidenceURL('research/kinex-rle-20261104/plan.json'),'Frozen task selection & protocol')}${n.historical_kinex?external(resultURL('attempt-history.json'),'Previous native Kinex results'):''}</div></div></aside>`;
|
| 4 |
+
}
|
| 5 |
'use strict';
|
| 6 |
const plannedProtocol = (task, variant) => task.planned_protocol_by_variant?.[variant] || task.planned_protocol;
|
| 7 |
// RoboEnv LIBERO raw counters include five initialization frames; RoboBridge counters do not.
|
|
|
|
| 102 |
|
| 103 |
function comparisonTable() {
|
| 104 |
const scope='Per-task averages divide totals by the number of valid evaluated tasks in each environment and variant, including passes and failures. Pending and invalid tasks are excluded; missing values remain —.';
|
| 105 |
+
return `<section class="comparison-panel" aria-labelledby="comparison-title"><div class="section-heading bare"><div><h2 id="comparison-title">Compare environments</h2><p>Four VLA checkpoints retain native unseen instructions. Pure Kinex uses revised RLE goals, Astra/high and rosbridge across the same 50 task identities. Coverage and execution protocols are shown separately.</p></div><div class="segmented" aria-label="Comparison metric">${[['success','Success rate'],['tokens','Tokens / task'],['cost','Cost / task']].map(([k,l])=>`<button data-matrix="${k}" aria-pressed="${matrixMetric===k}">${l}</button>`).join('')}</div></div><p class="comparison-definition">${matrixMetric==='tokens'?scope+' '+usageDefinition():matrixMetric==='cost'?scope+' Estimated API-equivalent USD per task.':'Native passes / evaluated tasks. Pending tasks are excluded; compare coverage alongside success rates.'}</p><div class="model-comparisons">${modelGroups().map((g,i)=>`<details class="model-comparison panel" data-model-group="${esc(g.key)}" ${expandedModels?expandedModels.has(g.key)?'open':'':i===0?'open':''}><summary><span><strong>${esc(g.model)}</strong><span class="model-group-meta">${g.key==='baselines'?'One episode per task':esc(g.effort)+' effort'} · ${g.variants.map(v=>esc(v.label||v.agent)).join(' vs ')}</span></span><span class="model-group-count">${g.variants.length} variants <span class="disclosure-arrow">⌄</span></span></summary><div class="table-scroll"><table class="comparison-table grouped-comparison ${matrixMetric}"><thead><tr><th>Environment</th>${g.variants.map(v=>`<th><a href="#runs/${v.id}" class="agent-inline">${icon(v)}${esc(v.label||v.agent)} ${arrow}</a></th>`).join('')}</tr></thead><tbody>${data.families.map(f=>`<tr><th scope="row"><span class="family-code">${f.id.slice(-2)}</span>${esc(f.name)}<small>${f.tasks} tasks</small></th>${g.variants.map(v=>comparisonCell(v,f)).join('')}</tr>`).join('')}</tbody></table></div></details>`).join('')}</div></section>`;
|
| 106 |
}
|
| 107 |
function recordingPilotProgress(){
|
| 108 |
const p=data.recording_pilot;if(!p)return '';
|
|
|
|
| 123 |
return `<section class="panel" style="padding:18px 24px;margin-bottom:24px" aria-label="Claude Code campaign"><strong>Claude Code · Opus 5.5 / high</strong><p>${number(n.finished||0)} / ${number(c.planned_episodes)} episodes completed · ${number(n.running||0)} running · ${number(n.queued||0)} pending${n.needs_review?' · '+number(n.needs_review)+' under review':''}${n.interrupted?' · '+number(n.interrupted)+' interrupted':''}.</p><p class="source-note">${c.quota_waiting?'Waiting for model-service quota recovery · ':''}${number(c.published_episodes)} episode records published · <a href="${esc(c.status_url)}" target="_blank" rel="noopener">Results and protocol ↗</a></p></section>`;
|
| 124 |
}
|
| 125 |
function methodology() {
|
| 126 |
+
return `<details class="panel methodology" id="methodology"><summary><span><span class="eyebrow">Reading the Hard benchmark</span><strong>Protocol, metrics & provenance</strong></span><span class="summary-plus">+</span></summary><div class="method-grid"><div><h3>50 tasks × 5 conditions</h3><p>RoboTwin 2.0 Hard, ALOHA AgileX, demo_randomized. Each condition is scheduled for one valid episode per task; completion is shown separately. Successes and valid failures are both retained; no valid outcome was retried. This is RoboTwin 2.0 Hard, not RoboTwin 2.0-Plus.</p></div><div><h3>Instruction protocols</h3><p>The current Kinex campaign uses the revised RLE Hard templates and public scene bindings. VLA checkpoints and archived Kinex results retain original upstream unseen instructions. Each episode records the exact measured instruction and its authorship policy.</p></div><div><h3>Checkpoint identity</h3><p>Base 40k: StarVLA/Qwen3-VL-OFT-Robotwin2. VLAct Clean 50k: StarVLA/VLAct_Qwen3OFT_Robotwin_Finetune. VLAct All 100k: StarVLA/VLAct_Qwen3OFT_Robotwin_all_Finetune. Non-VLAct All 140k: StarVLA/Qwen3-VL-OFT-RoboTwin2-All, trained on 27,500 clean and randomized demonstrations. Full revisions and weight checksums are linked below. Kinex uses GPT-6 Astra / high without a VLA extension.</p></div><div><h3>Execution and seeds</h3><p>Standalone VLA uses official expert admission from scene seed 100000 and official take_action with full predicted chunks. Current pure Kinex uses rosbridge at 25 Hz and the authored RLE manifest seeds and overrides, frozen before model use. No seed substitution or expert-success filtering is performed during this campaign. Seeds, admission rules and physical durations are not matched across the interfaces; this is not a paired causal comparison. Per-episode seeds and budgets are retained.</p></div><div><h3>Initialization provenance</h3><p>Five infrastructure startup attempts produced no completed model response and are excluded from the original 200 valid outcomes. For hanging_mug, a minimal runtime repair retains native language bindings if the expert path fails before finishing. Selected seed 0, task physics and the native verifier are preserved.</p></div><div><h3>Usage and costs</h3><p>${usageDefinition()} Estimated API-equivalent costs use recorded Pi session values. Actual account charges and GPU costs are not measured. Standalone VLA has zero language-agent API calls, not zero compute cost.</p></div></div><div class="method-links"><a href="${esc(evidenceURL('research/oft-all140k-20261103/REPORT.md'))}">All 140k results & validation ↗</a><a href="${esc(evidenceURL('research/oft-all140k-20261103/protocol.json'))}">All 140k protocol & checkpoint ↗</a><a href="${esc(resultURL('sources.json'))}" target="_blank">Data sources ↗</a><a href="${esc(evidenceURL('research/robotwin-hard-20261101/REPORT.md'))}">Report ↗</a><a href="${esc(evidenceURL('research/robotwin-hard-20261101/protocol.json'))}">Protocol & checkpoints ↗</a><a href="${esc(evidenceURL('research/robotwin-hard-20261101/execution-audit.json'))}">200-episode audit ↗</a><a href="../index.html#overview">Retained Easy results ↗</a><button class="text-button" data-export="all">Download comparison CSV ↓</button></div></details>`;
|
| 127 |
}
|
| 128 |
function taskBrowser(variant=null) {
|
| 129 |
return `<section class="task-browser" id="tasks"><div class="section-heading bare"><div><div class="eyebrow">${variant?'Episode index':'Browse the benchmark'}</div><h2>Explore tasks <span class="heading-count">${plannedTasks(variant).length}</span></h2></div><button class="button secondary" data-export="${variant||'all'}">Export CSV ↓</button></div><div class="panel"><div class="filters"><label class="search-field"><span aria-hidden="true">⌕</span><input id="task-search" type="search" aria-label="Search tasks" placeholder="Search task name, instruction or ID" value="${esc(filters.query)}"></label><select id="task-family" aria-label="Environment"><option value="">All environments</option>${data.families.map(f=>`<option value="${f.id}" ${filters.family===f.id?'selected':''}>${f.name}</option>`).join('')}</select>${variant?'':`<select id="task-variant" aria-label="Agent for outcome filter">${data.variants.map(v=>`<option value="${v.id}" ${filters.variant===v.id?'selected':''}>${v.label||v.agent} · ${v.model}</option>`).join('')}</select>`}<select id="task-status" aria-label="Outcome"><option value="">All outcomes</option>${['pass','fail','pending'].map(s=>`<option value="${s}" ${filters.status===s?'selected':''}>${s[0].toUpperCase()+s.slice(1)}</option>`).join('')}</select><select id="task-sort" aria-label="Sort tasks"><option value="catalog" ${filters.sort==='catalog'?'selected':''}>Catalog order</option><option value="tokens" ${filters.sort==='tokens'?'selected':''}>Most fresh input tokens</option><option value="cost" ${filters.sort==='cost'?'selected':''}>Highest cost</option><option value="name" ${filters.sort==='name'?'selected':''}>Task name</option></select></div><div class="table-scroll"><table class="task-table ${variant?'single-variant':''}"><thead><tr><th>Task</th>${variant?'<th>Native result</th><th>Fresh input<small>Excludes read and write</small></th><th>Cache read</th><th>Cache write</th><th>Cache hit</th><th>Output</th><th>Total cost<small>Estimated USD</small></th><th>Action steps</th>':data.variants.map(v=>`<th class="${v.id===filters.variant?'focus-column':''}">${v.label||v.agent}<small>${v.model} · ${v.effort}</small><small>Native result · Estimated USD</small></th>`).join('')}</tr></thead><tbody id="task-rows"></tbody></table></div><div class="table-footer"><span id="task-count" aria-live="polite"></span><span id="filter-context"></span><button class="text-button" id="reset-filters">Reset filters</button></div></div></section>`;
|
|
|
|
| 146 |
|
| 147 |
function overview() {
|
| 148 |
current={type:'overview'};
|
| 149 |
+
$('#main').innerHTML=`<section class="hero"><div><div class="eyebrow"><span class="tiny-logo">✦</span> RLE-Bench · Embodied agent evaluation</div><h1>RoboTwin 2.0.<br><span>Hard evaluation.</span></h1><p>demo_randomized · one episode per selected task.<br>Pure Kinex uses RLE revised instructions; four VLA checkpoints retain native instructions.</p></div><div class="hero-facts"><div><strong>${data.families.length}</strong><span>environment</span></div><div><strong>${data.tasks.length}</strong><span>distinct tasks</span></div><div><strong>${data.variants.length}</strong><span>agent–model variants</span></div><span class="progress-label"><i></i>${data.benchmark_complete?'Evaluation complete':'Evaluation in progress'} · selected seeds</span></div></section>
|
| 150 |
+
${rleProtocolNote()}${researchRerunNote()}${recordingPilotProgress()}${campaignProgress()}${opusPilotProgress()}<div class="agent-cards">${data.variants.map(v=>{const s=stats(episodes(v.id));return `<a class="agent-card ${s.n?'':'planned'}" href="#runs/${v.id}" style="--variant:${colors[v.id]}"><div class="card-header"><span class="agent-name">${icon(v)}${esc(v.label||v.agent)}</span><span class="state-label">${s.n===plannedTasks(v.id).length?'Complete':s.n?'Partial':'Planned'}</span></div><p class="card-model">${modelLabel(v)}</p><div class="card-rate"><strong>${pct(s.rate)}</strong><span>native success</span></div><div class="card-stats"><span><b>${s.n?s.passes+' / '+s.n:'—'}</b> passed</span><span class="card-cost" title="${esc(costNote(s))}"><b>${costValue(s)}</b> total cost<small>Estimated USD</small></span></div><div class="completion-track"><span style="width:${s.n/plannedTasks(v.id).length*100}%"></span></div><div class="card-bottom"><span>${s.n} / ${plannedTasks(v.id).length} evaluated</span><span>${s.n?'Explore runs':'View planned'} ${arrow}</span></div></a>`;}).join('')}</div><div class="scope-note"><span><i class="status-dot"></i>Success rates and costs cover selected evaluated tasks only.</span><span>RLE Kinex / native VLA instructions · Distinct execution protocols</span></div><div id="comparison-mount">${comparisonTable()}</div><a class="audit-launcher" href="#instructions"><div><strong>Instructions audit</strong><p>Compare current RLE goals with native descriptions, runtime language pools and recorded episode instructions.</p></div><span aria-hidden="true">↗</span></a>${taskBrowser()}${methodology()}`;
|
| 151 |
renderRows();
|
| 152 |
}
|
| 153 |
function runsPage(variant,params,restoredFilters=null) {
|
|
|
|
| 203 |
|
| 204 |
function instructionPanel(task,ep) {
|
| 205 |
const {record,native,measured:recorded,nativeReference}=instructionPair(task,ep);
|
| 206 |
+
const measured=ep?recorded:(task.catalog_instruction_by_variant?.[current.variant]||task.catalog_instruction);
|
| 207 |
const initial=record&&record.initial_goal!==measured?record.initial_goal:null;
|
| 208 |
const changed=Boolean(native&&measured&&native!==measured);
|
| 209 |
const diff=changed?instructionDiff(native,measured):null;
|
|
|
|
| 224 |
const initializationBlocked=(data.active_campaign?.initialization_blocked||[]).includes(task.key+'/'+current.variant);
|
| 225 |
const review=reviewFor(task.key,current.variant);
|
| 226 |
if(!ep&&review)return `<section class="panel pending-panel" data-runtime-review><span class="badge invalid">Under review</span><h2>Native success recorded; runtime finalization failed</h2><p>${esc(review.reason)}</p><p>Original harness verdict: invalid. Recording manifest: incomplete. This attempt is excluded from formal success metrics; its usage is retained separately.</p><dl class="facts"><dt>Native terminal steps</dt><dd>${number(actionSteps(review.native_terminal_steps,task,current.variant))}</dd><dt>Fresh input</dt><dd>${number(review.usage.fresh_input_tokens)}</dd><dt>Cache read</dt><dd>${number(review.usage.cached_input_tokens)}</dd><dt>Output</dt><dd>${number(review.usage.output_tokens)}</dd><dt>Model responses</dt><dd>${number(review.usage.response_count)}</dd><dt>Estimated API-equivalent cost</dt><dd>${exactMoney(review.estimated_api_equivalent_usd)}</dd></dl><p>Both original camera streams decode successfully. Their completion manifest was not sealed, so they are retained as review evidence.</p><div class="inline-links">${Object.entries(review.links).map(([key,url])=>external(url,key.replaceAll('_',' '))).join('')}</div></section>${instructionPanel(task,null)}`;
|
| 227 |
+
if(!ep)return `<div class="pending-layout"><section class="pending-panel"><span class="pending-orbit">○</span><span class="eyebrow">${initializationBlocked?'Initialization blocked':'Awaiting evaluation'}</span><h2>${seedLimit?.exhausted?'No native-valid seed at or below '+number(seedLimit.max_seed):initializationBlocked?'Native seed 0 could not initialize':'No recorded episode yet'}</h2><p>${variantName(current.variant)} / ${esc(variantFor(current.variant).effort)}</p><div class="pending-facts">${metric(number(actionSteps(plannedProtocol(task,current.variant).max_control_steps,task)),'Campaign planned action steps')}${metric(String(task.planned_seed_by_variant?.[current.variant]??plannedProtocol(task,current.variant).seed),'Seed')}${metric(plannedProtocol(task,current.variant).control_frequency_hz+' Hz','Control frequency')}</div><p class="subtle">${seedLimit?.exhausted?'Native checks exhausted seeds 1–'+number(seedLimit.max_seed)+'. No Codex model attempt was launched. The original Kinex result is retained; this unavailable Codex task is excluded from success rates.':initializationBlocked?'No model was called. Seed 0 is retained by user decision; this is excluded from task success rates.':'This task is included in the planned catalog. Results and usage will appear after evaluation.'}</p></section>${instructionPanel(task,null)}</div>${seedLimit?.evidence_url?external(seedLimit.evidence_url,'Native seed selection evidence'):''}${nativeNote(task,null)}`;
|
| 228 |
const m=ep.media||{},u=ep.usage||{},a=ep.analysis||{};
|
| 229 |
const reason=a.evidence_note||a.failure_reason||a.cause||a.observed||a.visible_completion;
|
| 230 |
+
return `<div class="episode-layout"><div>${videoPanel(ep)}<p class="media-note">${m.playback_kind==='official_action_index'?'Head + left wrist + right wrist · 4× official recording, not simulation time. Wrist views update only at inference boundaries. Native 320 × 240 views are upscaled for display; action-limit recordings omit the post-final-action frame.':ep.recording_mode==='native'?'Native camera recording · cached agent-resolution frames · '+(m.speed||1)+'× simulation speed.':ep.provider==='robobridge'&&m.playback_kind==='live_spectator'?'Independent spectator cameras · 720 px high per view · overview + wrist views · '+(m.speed||1)+'× simulation speed. Agent images retain native resolution and orientation.':m.playback_kind==='native_observation_snapshots'?'Native observation snapshots · 10 FPS playback; this is not simulation time.':`${m.source_fps?m.source_fps+' FPS source capture · ':''}${m.speed||1}× simulation speed.`} Session timestamps use wall time and are not synchronized to video frames.</p></div><aside class="result-panel panel"><div class="result-head"><span class="eyebrow">Native verdict</span>${badge(ep)}</div><div class="result-number">${number(actionSteps(ep.steps,ep))}<span> / ${number(actionSteps(ep.measured_protocol?.max_steps,ep))} action steps</span></div><div class="completion-track"><span style="width:${Math.min(100,(actionSteps(ep.steps,ep)||0)/(actionSteps(ep.measured_protocol?.max_steps,ep)||1)*100)}%"></span></div><dl class="facts"><dt>Termination</dt><dd>${esc(ep.verdict?.termination||ep.verdict?.reason||'—')}</dd><dt>Execution</dt><dd>${esc(ep.execution?.status||'—')}</dd><dt>Evidence</dt><dd>${ep.valid?'Valid':'Invalid'}</dd><dt>Simulation time</dt><dd title="${esc(ep.timing?.simulation_time_note||'')}">${ep.timing&&ep.simulation_time_s==null?'Not recorded':elapsed(ep.simulation_time_s)}</dd><dt>Wall time</dt><dd title="${esc(ep.timing?.wall_time_scope||'')}">${elapsed(ep.wall_time_s)}</dd><dt>Estimated cost</dt><dd>${costValue(stats([ep]))}</dd><dt>Seed</dt><dd>${ep.seed}</dd><dt>Agent version</dt><dd>${ep.kinex_version?'Kinex '+esc(ep.kinex_version):ep.codex_version?'Codex '+esc(ep.codex_version):ep.claude_code_version?'Claude Code '+esc(ep.claude_code_version):esc(variantFor(ep.variant).agent)}</dd></dl><div class="result-links">${external(ep.links.verdict,'Native verdict')}${external(ep.links.provenance,'Source identity')}</div></aside></div>${nativeNote(task,ep)}${ep.post_terminal_review?`<aside class="native-note" data-post-terminal-note><span class="note-symbol">!</span><div><strong>Native episode completed; later provider error</strong><p>${esc(ep.post_terminal_review.reason)}</p>${external(ep.links.completion_review,"Terminal completion review")}</div></aside>`:""}${initializationNote?`<aside class="native-note" data-initialization-note><span class="note-symbol">!</span><div><strong>Measured initial-state variation</strong><p>${esc(initializationNote)}</p><a href="${esc(resultURL('initialization-comparison.json'))}" target="_blank">Paired initialization evidence ↗</a></div></aside>`:''}${ep.usage_review?`<aside class="native-note" data-usage-review-note><span class="note-symbol">i</span><div><strong>Context compaction included in usage</strong><p>${esc(ep.usage_review.reason)}</p>${external(ep.links.usage_review,"Usage reconciliation evidence")}</div></aside>`:""}${ep.native_clock_review?`<aside class="native-note" data-native-clock-note><span class="note-symbol">i</span><div><strong>Native physics clock differs from control-frame time</strong><p>${esc(ep.native_clock_review.reason)}</p>${external(ep.links.native_clock_review,"Native clock review")}</div></aside>`:""}${ep.collector_review&&ep.collector_review.schema!=="rlebench/collector-recovery/1"?`<aside class="native-note" data-collector-review-note><span class="note-symbol">i</span><div><strong>Host collector recovered; original model continued</strong><p>${esc(ep.collector_review.reason)}</p><p>Wall time uses the original session timestamps. Lost host setup timing is left unknown.</p><p>Host waiting protection was extended prospectively from 8 to 16 hours for this original execution; the native control budget is unchanged.</p>${external(ep.links.collector_review,"Collector recovery evidence")}</div></aside>`:""}${ep.provenance?.protocol_exception?.same_seed_comparison===false?`<aside class="native-note" data-seed-scope-note><span class="note-symbol">i</span><div><strong>Different evaluation seeds</strong><p>Codex uses seed ${number(ep.seed)} after native expert and initialization checks with no model calls during selection. ${ep.provenance.protocol_exception.max_seed!=null?'Seed selection was capped at '+number(ep.provenance.protocol_exception.max_seed)+'. ':''} Kinex retains its original seed ${number(ep.provenance.protocol_exception.preserved_kinex_seed)} result. Codex ran once; this is not a same-seed comparison.</p>${external(ep.links.seed_selection,'Native seed selection evidence')}</div></aside>`:''}${recordingComparisonNote(ep)}${episodeMetrics(ep)}<div class="detail-two-column">${instructionPanel(task,ep)}<section class="panel episode-analysis"><div class="section-heading"><div><h2>Episode notes</h2><p>Recorded observations and task-specific interpretation.</p></div></div><div class="analysis-body">${reason?`<p>${esc(reason)}</p>`:`<p>${esc(a.outcome||'The native result and original evidence are retained for this episode.')}</p>`}<details><summary>Read recorded analysis</summary>${Object.entries(a).filter(([k])=>k!=='preflight').map(([k,v])=>`<div class="analysis-entry"><span>${esc(k.replaceAll('_',' '))}</span><p>${esc(typeof v==='string'?v:JSON.stringify(v))}</p></div>`).join('')}</details><div class="inline-links">${external(ep.links.analysis,'Analysis JSON')}${external(ep.links.terminal_frame,'Terminal evidence')}</div></div></section></div><div class="detail-launchers"><a href="${taskRoute(task.key,ep.variant,'session')}"><span class="launcher-icon">≡</span><div><strong>Read the full session</strong><span>${number(ep.session_counts?.visible_events)} events · ${number(ep.session_counts?.observed_images)} observations</span></div>${arrow}</a><a href="${taskRoute(task.key,ep.variant,'artifacts')}"><span class="launcher-icon">⌘</span><div><strong>Inspect agent artifacts</strong><span>${ep.resources?.length||0} saved files · workspace & evidence</span></div>${arrow}</a></div>`;
|
| 231 |
}
|
| 232 |
function taskPage(key,variant,section='overview') {
|
| 233 |
const task=data.tasks.find(t=>t.key===key);if(!task||!variantFor(variant)){notFound();return;}
|
|
|
|
| 238 |
sessionState={filter:'all',query:'',count:40,view:'timeline'};
|
| 239 |
const taskList=plannedTasks(variant),index=taskList.indexOf(task),history=data.attempt_history.filter(h=>h.task_key===key&&h.variant===variant);
|
| 240 |
document.title=`${task.title} · ${variantFor(variant).agent} — Programmable VLA`;
|
| 241 |
+
$('#main').innerHTML=`<div class="breadcrumbs"><a data-task-return href="${esc(taskListReturn?.hash || '#tasks?task='+encodeURIComponent(key))}">← Back to tasks</a><span>/</span><a href="#runs/${variant}?family=${task.family}">${familyName(task.family)}</a><span>/</span><code>${key}</code></div><div class="task-heading"><div><div class="eyebrow">${familyName(task.family)} · ${key}</div><h1>${esc(task.title)}</h1><p><code>${esc(task.native_id)}</code></p></div><div class="task-arrows">${index?`<a class="button" href="${taskRoute(taskList[index-1].key,variant)}" aria-label="Previous task">←</a>`:''}${index<taskList.length-1?`<a class="button" href="${taskRoute(taskList[index+1].key,variant)}" aria-label="Next task">→</a>`:''}</div></div>${budgetNote(task)}${variantTabs(variant,key,section)}<nav class="detail-nav" aria-label="Episode sections">${[['overview','Overview',null],['session','Session',ep?.session_counts?.visible_events],['tools','Tool calls',ep?.call_activity?.model_tool_calls],['policy','VLA input/output',ep?.vla_calls],['artifacts','Artifacts',ep?.resources?.length],['evidence','Evidence',null],['attempts','Previous attempts',history.length]].filter(([k])=>(k!=='attempts'||history.length)&&(k!=='policy'||variantFor(variant).agent!=='Kinex')).map(([k,l,n])=>!ep&&!['overview','attempts'].includes(k)?`<span class="disabled-tab" aria-disabled="true">${l}</span>`:`<a href="${taskRoute(key,variant,k)}" class="${k===section?'active':''}" ${k===section?'aria-current="page"':''}>${l}${n!=null?`<span>${number(n)}</span>`:''}</a>`).join('')}<span class="detail-model">${variantFor(variant).model} / ${variantFor(variant).effort}</span></nav><div id="detail-content">${section==='overview'?overviewDetail(task,ep):section==='session'?sessionShell(ep):section==='tools'?toolsShell(ep):section==='policy'?policyShell(ep):section==='artifacts'?artifactsPanel(ep):section==='evidence'?evidencePanel(task,ep):historyPanel(history,task)}</div>`;
|
| 242 |
setupVideo();
|
| 243 |
if(section==='session')loadSession(ep,epoch);
|
| 244 |
if(section==='tools')loadTools(ep,epoch);
|
hard/data-source.json
CHANGED
|
@@ -1,23 +1,26 @@
|
|
| 1 |
{
|
| 2 |
"schema": "programvla/dataset-source/1",
|
| 3 |
"dataset": "RLE-Bench/programmable-vla",
|
| 4 |
-
"revision": "
|
| 5 |
-
"evidence_root": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/
|
| 6 |
"files": {
|
| 7 |
"data.json": {
|
| 8 |
-
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/
|
| 9 |
},
|
| 10 |
"cost-data.json": {
|
| 11 |
-
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/
|
| 12 |
},
|
| 13 |
"measured-instructions.json": {
|
| 14 |
-
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/
|
| 15 |
},
|
| 16 |
"sources.json": {
|
| 17 |
-
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/
|
| 18 |
},
|
| 19 |
"instruction-audit.json": {
|
| 20 |
-
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/
|
|
|
|
|
|
|
|
|
|
| 21 |
}
|
| 22 |
}
|
| 23 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "programvla/dataset-source/1",
|
| 3 |
"dataset": "RLE-Bench/programmable-vla",
|
| 4 |
+
"revision": "b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17",
|
| 5 |
+
"evidence_root": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/",
|
| 6 |
"files": {
|
| 7 |
"data.json": {
|
| 8 |
+
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/research/kinex-rle-20261104/panels/hard/data.json"
|
| 9 |
},
|
| 10 |
"cost-data.json": {
|
| 11 |
+
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/research/kinex-rle-20261104/panels/hard/cost-data.json"
|
| 12 |
},
|
| 13 |
"measured-instructions.json": {
|
| 14 |
+
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/research/kinex-rle-20261104/panels/hard/measured-instructions.json"
|
| 15 |
},
|
| 16 |
"sources.json": {
|
| 17 |
+
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/research/kinex-rle-20261104/panels/hard/sources.json"
|
| 18 |
},
|
| 19 |
"instruction-audit.json": {
|
| 20 |
+
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/research/kinex-rle-20261104/panels/hard/instruction-audit.json"
|
| 21 |
+
},
|
| 22 |
+
"attempt-history.json": {
|
| 23 |
+
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/research/kinex-rle-20261104/panels/hard/attempt-history.json"
|
| 24 |
}
|
| 25 |
}
|
| 26 |
}
|
hard/index.html
CHANGED
|
@@ -18,9 +18,9 @@
|
|
| 18 |
<a class="skip" href="#main">Skip to content</a>
|
| 19 |
<header class="site-header"><div class="header-inner"><a class="brand" href="#overview" aria-label="Programmable VLA home"><img src="assets/kinex-logo.svg" width="34" height="34" alt="Kinex"><span>programmable<span class="brand-divider">/</span><span class="brand-benchmark">vla</span></span></a><nav aria-label="Main navigation"><a href="../plus/index.html">Plus</a><a href="../index.html#overview">Easy</a><a href="#overview" data-nav="overview">Hard</a><a href="#tasks" data-nav="tasks">Explore tasks</a><a href="#instructions" data-nav="instructions">Instructions audit</a><a href="#methodology" data-nav="methodology">Protocol</a></nav><a class="header-link" href="https://huggingface.co/spaces/RLE-Bench/programmable-vla" target="_blank" rel="noopener">Hugging Face <span aria-hidden="true">↗</span></a></div></header>
|
| 20 |
<main id="main" tabindex="-1"><div class="loading"><span class="spinner"></span>Loading benchmark results…</div></main>
|
| 21 |
-
<footer class="site-footer"><div><img src="assets/kinex-logo.svg" width="22" height="22" alt=""><strong>Programmable VLA</strong><span class="footer-org">by RLE-Bench</span></div><div><a data-result-file="data.json" href="https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/
|
| 22 |
<dialog id="image-viewer" aria-labelledby="image-caption"><div class="viewer-toolbar"><span id="image-caption"></span><a id="image-original" target="_blank" rel="noopener">Open original ↗</a><button class="icon-button" id="close-viewer" aria-label="Close image">×</button></div><div class="viewer-image"><button id="previous-image" class="viewer-arrow" aria-label="Previous image">←</button><img id="large-image" alt="Recorded agent observation"><button id="next-image" class="viewer-arrow" aria-label="Next image">→</button></div><p>Recorded agent observation · Use ← → to browse · Esc to close</p></dialog>
|
| 23 |
<div id="toast" role="status" aria-live="polite"></div>
|
| 24 |
-
<noscript><p>This site needs JavaScript. <a data-result-file="data.json" href="https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/
|
| 25 |
</body>
|
| 26 |
</html>
|
|
|
|
| 18 |
<a class="skip" href="#main">Skip to content</a>
|
| 19 |
<header class="site-header"><div class="header-inner"><a class="brand" href="#overview" aria-label="Programmable VLA home"><img src="assets/kinex-logo.svg" width="34" height="34" alt="Kinex"><span>programmable<span class="brand-divider">/</span><span class="brand-benchmark">vla</span></span></a><nav aria-label="Main navigation"><a href="../plus/index.html">Plus</a><a href="../index.html#overview">Easy</a><a href="#overview" data-nav="overview">Hard</a><a href="#tasks" data-nav="tasks">Explore tasks</a><a href="#instructions" data-nav="instructions">Instructions audit</a><a href="#methodology" data-nav="methodology">Protocol</a></nav><a class="header-link" href="https://huggingface.co/spaces/RLE-Bench/programmable-vla" target="_blank" rel="noopener">Hugging Face <span aria-hidden="true">↗</span></a></div></header>
|
| 20 |
<main id="main" tabindex="-1"><div class="loading"><span class="spinner"></span>Loading benchmark results…</div></main>
|
| 21 |
+
<footer class="site-footer"><div><img src="assets/kinex-logo.svg" width="22" height="22" alt=""><strong>Programmable VLA</strong><span class="footer-org">by RLE-Bench</span></div><div><a data-result-file="data.json" href="https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/research/kinex-rle-20261104/panels/hard/data.json" target="_blank">Hard results JSON</a><a data-result-file="sources.json" href="https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b07d88579523eeeefdf7ad2ca14ee65340af5d4e/hard/sources.json" target="_blank">Data sources</a><a href="https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b07d88579523eeeefdf7ad2ca14ee65340af5d4e/manifest.json" target="_blank">Manifest</a><span id="updated"></span></div></footer>
|
| 22 |
<dialog id="image-viewer" aria-labelledby="image-caption"><div class="viewer-toolbar"><span id="image-caption"></span><a id="image-original" target="_blank" rel="noopener">Open original ↗</a><button class="icon-button" id="close-viewer" aria-label="Close image">×</button></div><div class="viewer-image"><button id="previous-image" class="viewer-arrow" aria-label="Previous image">←</button><img id="large-image" alt="Recorded agent observation"><button id="next-image" class="viewer-arrow" aria-label="Next image">→</button></div><p>Recorded agent observation · Use ← → to browse · Esc to close</p></dialog>
|
| 23 |
<div id="toast" role="status" aria-live="polite"></div>
|
| 24 |
+
<noscript><p>This site needs JavaScript. <a data-result-file="data.json" href="https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/research/kinex-rle-20261104/panels/hard/data.json">Download the complete results index.</a></p></noscript>
|
| 25 |
</body>
|
| 26 |
</html>
|
manifest.json
CHANGED
|
@@ -6,6 +6,18 @@
|
|
| 6 |
"manifest": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/c2e39c9ea8f3a9d3e7680e4818d294770f032c21/manifest.json"
|
| 7 |
},
|
| 8 |
"files": {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
".gitattributes": {
|
| 10 |
"bytes": 56,
|
| 11 |
"sha256": "34a4d6e437537e78bc242418805a3af3d71b43980280482fd8fc6bfda91f79f8"
|
|
@@ -14,69 +26,93 @@
|
|
| 14 |
"bytes": 8487,
|
| 15 |
"sha256": "8cdadcad385d75f64d2c0a9b4f8b5d911b89fc9ab7e18d8d299d05dbe3e68fe5"
|
| 16 |
},
|
| 17 |
-
"
|
| 18 |
-
"bytes":
|
| 19 |
-
"sha256": "
|
| 20 |
-
},
|
| 21 |
-
"assets/anthropic-logo.svg": {
|
| 22 |
-
"bytes": 352,
|
| 23 |
-
"sha256": "a53108594a23b740fbb08623f6fffdda1d73608b552988a9ffda9f0944ae66a1"
|
| 24 |
-
},
|
| 25 |
-
"assets/kinex-logo-night.svg": {
|
| 26 |
-
"bytes": 725,
|
| 27 |
-
"sha256": "7ed5de35505694eb892fc3b601d92e1d2fe864b1b0863fc0afff7c873fcfcc7c"
|
| 28 |
},
|
| 29 |
-
"
|
| 30 |
"bytes": 725,
|
| 31 |
"sha256": "b27d9f4bfb9557513913b43b95108d995c7a18241629631a39889a2989b744c7"
|
| 32 |
},
|
| 33 |
-
"
|
| 34 |
-
"bytes":
|
| 35 |
-
"sha256": "
|
| 36 |
},
|
| 37 |
-
"
|
| 38 |
-
"bytes":
|
| 39 |
-
"sha256": "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 40 |
},
|
| 41 |
"data-source.json": {
|
| 42 |
"bytes": 1376,
|
| 43 |
"sha256": "f2092c0812c1a8e8e56304a965e11d9ea84269902ea820e572b9f3684c5068c7"
|
| 44 |
},
|
| 45 |
-
"
|
| 46 |
-
"bytes":
|
| 47 |
-
"sha256": "
|
| 48 |
},
|
| 49 |
-
"
|
| 50 |
-
"bytes":
|
| 51 |
-
"sha256": "
|
| 52 |
},
|
| 53 |
-
"
|
| 54 |
-
"bytes":
|
| 55 |
-
"sha256": "
|
| 56 |
},
|
| 57 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
"bytes": 725,
|
| 59 |
"sha256": "b27d9f4bfb9557513913b43b95108d995c7a18241629631a39889a2989b744c7"
|
| 60 |
},
|
| 61 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 62 |
"bytes": 2571,
|
| 63 |
"sha256": "8e1b976ba47e927ac2928303fd5362fcadfefd68743506510596f107df676e58"
|
| 64 |
},
|
| 65 |
-
"
|
| 66 |
"bytes": 287,
|
| 67 |
"sha256": "4731ad16fd0b9b8f7dc02e05de3c1de0dd70223b93056d8345c8175bd9cad287"
|
| 68 |
},
|
| 69 |
-
"
|
| 70 |
-
"bytes":
|
| 71 |
-
"sha256": "
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
},
|
| 73 |
"hard/icon.svg": {
|
| 74 |
"bytes": 725,
|
| 75 |
"sha256": "b27d9f4bfb9557513913b43b95108d995c7a18241629631a39889a2989b744c7"
|
| 76 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 77 |
"hard/index.html": {
|
| 78 |
-
"bytes":
|
| 79 |
-
"sha256": "
|
| 80 |
},
|
| 81 |
"hard/policy.css": {
|
| 82 |
"bytes": 1067,
|
|
@@ -86,45 +122,37 @@
|
|
| 86 |
"bytes": 60419,
|
| 87 |
"sha256": "bd1a59147e1d5e6c4fc5abd0871fb7b2e5e282a9ee3d15ca4df8a219509af69c"
|
| 88 |
},
|
| 89 |
-
"hard/
|
| 90 |
-
"bytes":
|
| 91 |
-
"sha256": "
|
| 92 |
-
},
|
| 93 |
-
"history/data-source.json": {
|
| 94 |
-
"bytes": 2109,
|
| 95 |
-
"sha256": "be65ec2dbbd2449a0236c9636a112e3b6112e40699c8820d44a159c30ee536dd"
|
| 96 |
-
},
|
| 97 |
-
"history-app.js": {
|
| 98 |
-
"bytes": 87082,
|
| 99 |
-
"sha256": "31a39183c6636b5cb9f21e209d1f834757967983d1d0a6e1e59a0bae5ef7a2f8"
|
| 100 |
},
|
| 101 |
-
"
|
| 102 |
-
"bytes":
|
| 103 |
-
"sha256": "
|
| 104 |
},
|
| 105 |
-
"icon.svg": {
|
| 106 |
"bytes": 725,
|
| 107 |
"sha256": "b27d9f4bfb9557513913b43b95108d995c7a18241629631a39889a2989b744c7"
|
| 108 |
},
|
| 109 |
-
"
|
| 110 |
-
"bytes":
|
| 111 |
-
"sha256": "
|
| 112 |
},
|
| 113 |
-
"
|
| 114 |
-
"bytes":
|
| 115 |
-
"sha256": "
|
| 116 |
},
|
| 117 |
-
"
|
| 118 |
-
"bytes":
|
| 119 |
-
"sha256": "
|
| 120 |
},
|
| 121 |
-
"
|
| 122 |
-
"bytes":
|
| 123 |
-
"sha256": "
|
| 124 |
},
|
| 125 |
-
"
|
| 126 |
-
"bytes":
|
| 127 |
-
"sha256": "
|
| 128 |
},
|
| 129 |
"instruction-audit/sources/task03-manifest.yaml": {
|
| 130 |
"bytes": 5747,
|
|
@@ -134,50 +162,58 @@
|
|
| 134 |
"bytes": 425921,
|
| 135 |
"sha256": "5c52f0c3b2fa191196b67744334d97f6a72a49b21a84f9333db8c1e67bbf7a38"
|
| 136 |
},
|
| 137 |
-
"instruction-audit/sources/task12-manifest-rle.yaml": {
|
| 138 |
-
"bytes": 135721,
|
| 139 |
-
"sha256": "ea1b6fa4f226dd57e36ec489ff1454a171b22cfae1c31614c914d3073dc3f9ee"
|
| 140 |
-
},
|
| 141 |
"instruction-audit/sources/task12-manifest.yaml": {
|
| 142 |
"bytes": 69830,
|
| 143 |
"sha256": "7acb93f52cea2bbef02366bfea4f1411bc6aac50fef1ca707c4dd81d554dcc79"
|
| 144 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 145 |
"instruction-audit/sources/task13-catalog.json": {
|
| 146 |
"bytes": 62227,
|
| 147 |
"sha256": "340d808fc366701c1f5ce892625c99f4a94a7a137b74e26a9ae28f8ef644ec31"
|
| 148 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 149 |
"instruction-audit/sources/task13-manifest.yaml": {
|
| 150 |
"bytes": 7558,
|
| 151 |
"sha256": "2f3a1f347bb855e8046857555f98003fd207316a2ad9abe908a3cc791d7176eb"
|
| 152 |
},
|
| 153 |
-
"
|
| 154 |
-
"bytes":
|
| 155 |
-
"sha256": "
|
| 156 |
},
|
| 157 |
-
"
|
| 158 |
-
"bytes":
|
| 159 |
-
"sha256": "
|
| 160 |
},
|
| 161 |
-
"
|
| 162 |
-
"bytes":
|
| 163 |
-
"sha256": "
|
| 164 |
},
|
| 165 |
-
"
|
| 166 |
-
"bytes":
|
| 167 |
-
"sha256": "
|
| 168 |
},
|
| 169 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 170 |
"bytes": 352,
|
| 171 |
"sha256": "a53108594a23b740fbb08623f6fffdda1d73608b552988a9ffda9f0944ae66a1"
|
| 172 |
},
|
| 173 |
-
"plus/assets/kinex-logo-night.svg": {
|
| 174 |
-
"bytes": 725,
|
| 175 |
-
"sha256": "7ed5de35505694eb892fc3b601d92e1d2fe864b1b0863fc0afff7c873fcfcc7c"
|
| 176 |
-
},
|
| 177 |
"plus/assets/kinex-logo.svg": {
|
| 178 |
"bytes": 725,
|
| 179 |
"sha256": "b27d9f4bfb9557513913b43b95108d995c7a18241629631a39889a2989b744c7"
|
| 180 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 181 |
"plus/assets/openai-logo.svg": {
|
| 182 |
"bytes": 2571,
|
| 183 |
"sha256": "8e1b976ba47e927ac2928303fd5362fcadfefd68743506510596f107df676e58"
|
|
@@ -186,45 +222,9 @@
|
|
| 186 |
"bytes": 287,
|
| 187 |
"sha256": "4731ad16fd0b9b8f7dc02e05de3c1de0dd70223b93056d8345c8175bd9cad287"
|
| 188 |
},
|
| 189 |
-
"plus/
|
| 190 |
-
"bytes":
|
| 191 |
-
"sha256": "
|
| 192 |
-
},
|
| 193 |
-
"plus/icon.svg": {
|
| 194 |
-
"bytes": 725,
|
| 195 |
-
"sha256": "b27d9f4bfb9557513913b43b95108d995c7a18241629631a39889a2989b744c7"
|
| 196 |
-
},
|
| 197 |
-
"plus/index.html": {
|
| 198 |
-
"bytes": 3643,
|
| 199 |
-
"sha256": "c4fd8456d095bd52f334aff1ab057937a1ce47a0f1d2114bdb3339b813a16aed"
|
| 200 |
-
},
|
| 201 |
-
"plus/policy.css": {
|
| 202 |
-
"bytes": 1067,
|
| 203 |
-
"sha256": "e564132eb242d994b3a0388da20dd9d1cef28d849447cceca674bb4beef32660"
|
| 204 |
-
},
|
| 205 |
-
"plus/style.css": {
|
| 206 |
-
"bytes": 60419,
|
| 207 |
-
"sha256": "bd1a59147e1d5e6c4fc5abd0871fb7b2e5e282a9ee3d15ca4df8a219509af69c"
|
| 208 |
-
},
|
| 209 |
-
"plus/usage-metrics.js": {
|
| 210 |
-
"bytes": 5238,
|
| 211 |
-
"sha256": "330e92f8eb9670cb506f2909a2a47ee8f0bd569199898df3bfa044239ae64161"
|
| 212 |
-
},
|
| 213 |
-
"policy.css": {
|
| 214 |
-
"bytes": 1067,
|
| 215 |
-
"sha256": "e564132eb242d994b3a0388da20dd9d1cef28d849447cceca674bb4beef32660"
|
| 216 |
-
},
|
| 217 |
-
"probes/bridge-20261028/index.html": {
|
| 218 |
-
"bytes": 6573,
|
| 219 |
-
"sha256": "d09e9dd06e356c20b6468a30b175d49840acc55ed385690c9e40613e13ceaf6a"
|
| 220 |
-
},
|
| 221 |
-
"style.css": {
|
| 222 |
-
"bytes": 60419,
|
| 223 |
-
"sha256": "bd1a59147e1d5e6c4fc5abd0871fb7b2e5e282a9ee3d15ca4df8a219509af69c"
|
| 224 |
-
},
|
| 225 |
-
"usage-metrics.js": {
|
| 226 |
-
"bytes": 5238,
|
| 227 |
-
"sha256": "330e92f8eb9670cb506f2909a2a47ee8f0bd569199898df3bfa044239ae64161"
|
| 228 |
}
|
| 229 |
},
|
| 230 |
"hard_dataset": {
|
|
@@ -252,5 +252,12 @@
|
|
| 252 |
"plus": "instruction-audit/plus.json"
|
| 253 |
},
|
| 254 |
"scope": "Current RLE working-tree snapshot; historical measured evaluation evidence is unchanged."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 255 |
}
|
| 256 |
}
|
|
|
|
| 6 |
"manifest": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/c2e39c9ea8f3a9d3e7680e4818d294770f032c21/manifest.json"
|
| 7 |
},
|
| 8 |
"files": {
|
| 9 |
+
"instruction-audit.css": {
|
| 10 |
+
"bytes": 1958,
|
| 11 |
+
"sha256": "43163fc879edcc6dcc6e3c6bc1faa058d1ac3fd914fcb05302c5ca08640ef7d5"
|
| 12 |
+
},
|
| 13 |
+
"app.js": {
|
| 14 |
+
"bytes": 95985,
|
| 15 |
+
"sha256": "96ce7740387cf457c8d88140d804ac95e93b2d63f1a99a3c566831d8fa669696"
|
| 16 |
+
},
|
| 17 |
+
"history-app.js": {
|
| 18 |
+
"bytes": 87082,
|
| 19 |
+
"sha256": "31a39183c6636b5cb9f21e209d1f834757967983d1d0a6e1e59a0bae5ef7a2f8"
|
| 20 |
+
},
|
| 21 |
".gitattributes": {
|
| 22 |
"bytes": 56,
|
| 23 |
"sha256": "34a4d6e437537e78bc242418805a3af3d71b43980280482fd8fc6bfda91f79f8"
|
|
|
|
| 26 |
"bytes": 8487,
|
| 27 |
"sha256": "8cdadcad385d75f64d2c0a9b4f8b5d911b89fc9ab7e18d8d299d05dbe3e68fe5"
|
| 28 |
},
|
| 29 |
+
"instruction-audit.js": {
|
| 30 |
+
"bytes": 13118,
|
| 31 |
+
"sha256": "7b5e9a418decb8f5b8e9fa9a2fb72b8876f7eec3d7bc73f657c4be1ee1a46fa4"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
},
|
| 33 |
+
"icon.svg": {
|
| 34 |
"bytes": 725,
|
| 35 |
"sha256": "b27d9f4bfb9557513913b43b95108d995c7a18241629631a39889a2989b744c7"
|
| 36 |
},
|
| 37 |
+
"usage-metrics.js": {
|
| 38 |
+
"bytes": 5238,
|
| 39 |
+
"sha256": "330e92f8eb9670cb506f2909a2a47ee8f0bd569199898df3bfa044239ae64161"
|
| 40 |
},
|
| 41 |
+
"history.html": {
|
| 42 |
+
"bytes": 3298,
|
| 43 |
+
"sha256": "8b0691838063224bce2a991d7bb0672897ef8f51bbc39ce38afb4a67cb6e39d0"
|
| 44 |
+
},
|
| 45 |
+
"index.html": {
|
| 46 |
+
"bytes": 3609,
|
| 47 |
+
"sha256": "54769ae8b6ea48985aaa55304845d3c36c66c83f92eab68972e96898e5463452"
|
| 48 |
+
},
|
| 49 |
+
"policy.css": {
|
| 50 |
+
"bytes": 1067,
|
| 51 |
+
"sha256": "e564132eb242d994b3a0388da20dd9d1cef28d849447cceca674bb4beef32660"
|
| 52 |
+
},
|
| 53 |
+
"style.css": {
|
| 54 |
+
"bytes": 60419,
|
| 55 |
+
"sha256": "bd1a59147e1d5e6c4fc5abd0871fb7b2e5e282a9ee3d15ca4df8a219509af69c"
|
| 56 |
},
|
| 57 |
"data-source.json": {
|
| 58 |
"bytes": 1376,
|
| 59 |
"sha256": "f2092c0812c1a8e8e56304a965e11d9ea84269902ea820e572b9f3684c5068c7"
|
| 60 |
},
|
| 61 |
+
"history/data-source.json": {
|
| 62 |
+
"bytes": 2109,
|
| 63 |
+
"sha256": "be65ec2dbbd2449a0236c9636a112e3b6112e40699c8820d44a159c30ee536dd"
|
| 64 |
},
|
| 65 |
+
"instruction-audit/plus.json": {
|
| 66 |
+
"bytes": 1135549,
|
| 67 |
+
"sha256": "697b5138ada5bd9b65acdbd9bc91ee1144b1dae61f14da9f64e8634306d6ab44"
|
| 68 |
},
|
| 69 |
+
"instruction-audit/easy.json": {
|
| 70 |
+
"bytes": 260411,
|
| 71 |
+
"sha256": "4a0b180af162608633dad2de9a64e0d791d5bdfa3d29d4b4874bba9cd8f1711b"
|
| 72 |
},
|
| 73 |
+
"instruction-audit/hard.json": {
|
| 74 |
+
"bytes": 262497,
|
| 75 |
+
"sha256": "55cc727f2817733b1ad1901fb790d861c35a573cb612d6bf2770a0c73216da32"
|
| 76 |
+
},
|
| 77 |
+
"instruction-audit/sources.json": {
|
| 78 |
+
"bytes": 95853,
|
| 79 |
+
"sha256": "e3d7ed53692f7e2649fd394e22ad6599280a0e444eaed76ff29a4cc4465d061f"
|
| 80 |
+
},
|
| 81 |
+
"assets/kinex-logo.svg": {
|
| 82 |
"bytes": 725,
|
| 83 |
"sha256": "b27d9f4bfb9557513913b43b95108d995c7a18241629631a39889a2989b744c7"
|
| 84 |
},
|
| 85 |
+
"assets/kinex-logo-night.svg": {
|
| 86 |
+
"bytes": 725,
|
| 87 |
+
"sha256": "7ed5de35505694eb892fc3b601d92e1d2fe864b1b0863fc0afff7c873fcfcc7c"
|
| 88 |
+
},
|
| 89 |
+
"assets/openai-logo.svg": {
|
| 90 |
"bytes": 2571,
|
| 91 |
"sha256": "8e1b976ba47e927ac2928303fd5362fcadfefd68743506510596f107df676e58"
|
| 92 |
},
|
| 93 |
+
"assets/vla-logo.svg": {
|
| 94 |
"bytes": 287,
|
| 95 |
"sha256": "4731ad16fd0b9b8f7dc02e05de3c1de0dd70223b93056d8345c8175bd9cad287"
|
| 96 |
},
|
| 97 |
+
"assets/anthropic-logo.svg": {
|
| 98 |
+
"bytes": 352,
|
| 99 |
+
"sha256": "a53108594a23b740fbb08623f6fffdda1d73608b552988a9ffda9f0944ae66a1"
|
| 100 |
+
},
|
| 101 |
+
"hard/app.js": {
|
| 102 |
+
"bytes": 95998,
|
| 103 |
+
"sha256": "562c8b900cc4aba56a055828b0fc8d96a479913c283e02d232c4a75a5062cf63"
|
| 104 |
},
|
| 105 |
"hard/icon.svg": {
|
| 106 |
"bytes": 725,
|
| 107 |
"sha256": "b27d9f4bfb9557513913b43b95108d995c7a18241629631a39889a2989b744c7"
|
| 108 |
},
|
| 109 |
+
"hard/usage-metrics.js": {
|
| 110 |
+
"bytes": 5238,
|
| 111 |
+
"sha256": "330e92f8eb9670cb506f2909a2a47ee8f0bd569199898df3bfa044239ae64161"
|
| 112 |
+
},
|
| 113 |
"hard/index.html": {
|
| 114 |
+
"bytes": 3630,
|
| 115 |
+
"sha256": "c8a58264ef56f044d7770d0f9d34889532308445b0e30a1ca99a586f7b7ff5ef"
|
| 116 |
},
|
| 117 |
"hard/policy.css": {
|
| 118 |
"bytes": 1067,
|
|
|
|
| 122 |
"bytes": 60419,
|
| 123 |
"sha256": "bd1a59147e1d5e6c4fc5abd0871fb7b2e5e282a9ee3d15ca4df8a219509af69c"
|
| 124 |
},
|
| 125 |
+
"hard/data-source.json": {
|
| 126 |
+
"bytes": 1587,
|
| 127 |
+
"sha256": "3f8c11bb2a26bf75dd347a9682a9390db136d90b71a197203a5d0b15665e8106"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 128 |
},
|
| 129 |
+
"plus/app.js": {
|
| 130 |
+
"bytes": 98196,
|
| 131 |
+
"sha256": "ea0928093337c5ae7ad5b275145cafb364705afaa93d794af41f8786b4efadbf"
|
| 132 |
},
|
| 133 |
+
"plus/icon.svg": {
|
| 134 |
"bytes": 725,
|
| 135 |
"sha256": "b27d9f4bfb9557513913b43b95108d995c7a18241629631a39889a2989b744c7"
|
| 136 |
},
|
| 137 |
+
"plus/usage-metrics.js": {
|
| 138 |
+
"bytes": 5238,
|
| 139 |
+
"sha256": "330e92f8eb9670cb506f2909a2a47ee8f0bd569199898df3bfa044239ae64161"
|
| 140 |
},
|
| 141 |
+
"plus/index.html": {
|
| 142 |
+
"bytes": 3639,
|
| 143 |
+
"sha256": "f6d723f2d70be6cedc1a2a5db6c9dc815e1cc48c758d94e683a3bcbd154c4047"
|
| 144 |
},
|
| 145 |
+
"plus/policy.css": {
|
| 146 |
+
"bytes": 1067,
|
| 147 |
+
"sha256": "e564132eb242d994b3a0388da20dd9d1cef28d849447cceca674bb4beef32660"
|
| 148 |
},
|
| 149 |
+
"plus/style.css": {
|
| 150 |
+
"bytes": 60419,
|
| 151 |
+
"sha256": "bd1a59147e1d5e6c4fc5abd0871fb7b2e5e282a9ee3d15ca4df8a219509af69c"
|
| 152 |
},
|
| 153 |
+
"plus/data-source.json": {
|
| 154 |
+
"bytes": 1587,
|
| 155 |
+
"sha256": "fa8ffe920aeb73b570304056c8dfcfad15cbffc5fe884ec3a3ab243fc2f0d2d2"
|
| 156 |
},
|
| 157 |
"instruction-audit/sources/task03-manifest.yaml": {
|
| 158 |
"bytes": 5747,
|
|
|
|
| 162 |
"bytes": 425921,
|
| 163 |
"sha256": "5c52f0c3b2fa191196b67744334d97f6a72a49b21a84f9333db8c1e67bbf7a38"
|
| 164 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 165 |
"instruction-audit/sources/task12-manifest.yaml": {
|
| 166 |
"bytes": 69830,
|
| 167 |
"sha256": "7acb93f52cea2bbef02366bfea4f1411bc6aac50fef1ca707c4dd81d554dcc79"
|
| 168 |
},
|
| 169 |
+
"instruction-audit/sources/task03-catalog.json": {
|
| 170 |
+
"bytes": 60584,
|
| 171 |
+
"sha256": "1675cc01f031cd6981e163b3a997ab3ad51cf3cf20e4f0c01cbee70ca6db1ed2"
|
| 172 |
+
},
|
| 173 |
"instruction-audit/sources/task13-catalog.json": {
|
| 174 |
"bytes": 62227,
|
| 175 |
"sha256": "340d808fc366701c1f5ce892625c99f4a94a7a137b74e26a9ae28f8ef644ec31"
|
| 176 |
},
|
| 177 |
+
"instruction-audit/sources/task12-manifest-rle.yaml": {
|
| 178 |
+
"bytes": 135721,
|
| 179 |
+
"sha256": "ea1b6fa4f226dd57e36ec489ff1454a171b22cfae1c31614c914d3073dc3f9ee"
|
| 180 |
+
},
|
| 181 |
"instruction-audit/sources/task13-manifest.yaml": {
|
| 182 |
"bytes": 7558,
|
| 183 |
"sha256": "2f3a1f347bb855e8046857555f98003fd207316a2ad9abe908a3cc791d7176eb"
|
| 184 |
},
|
| 185 |
+
"probes/bridge-20261028/index.html": {
|
| 186 |
+
"bytes": 6573,
|
| 187 |
+
"sha256": "d09e9dd06e356c20b6468a30b175d49840acc55ed385690c9e40613e13ceaf6a"
|
| 188 |
},
|
| 189 |
+
"hard/assets/kinex-logo.svg": {
|
| 190 |
+
"bytes": 725,
|
| 191 |
+
"sha256": "b27d9f4bfb9557513913b43b95108d995c7a18241629631a39889a2989b744c7"
|
| 192 |
},
|
| 193 |
+
"hard/assets/kinex-logo-night.svg": {
|
| 194 |
+
"bytes": 725,
|
| 195 |
+
"sha256": "7ed5de35505694eb892fc3b601d92e1d2fe864b1b0863fc0afff7c873fcfcc7c"
|
| 196 |
},
|
| 197 |
+
"hard/assets/openai-logo.svg": {
|
| 198 |
+
"bytes": 2571,
|
| 199 |
+
"sha256": "8e1b976ba47e927ac2928303fd5362fcadfefd68743506510596f107df676e58"
|
| 200 |
},
|
| 201 |
+
"hard/assets/vla-logo.svg": {
|
| 202 |
+
"bytes": 287,
|
| 203 |
+
"sha256": "4731ad16fd0b9b8f7dc02e05de3c1de0dd70223b93056d8345c8175bd9cad287"
|
| 204 |
+
},
|
| 205 |
+
"hard/assets/anthropic-logo.svg": {
|
| 206 |
"bytes": 352,
|
| 207 |
"sha256": "a53108594a23b740fbb08623f6fffdda1d73608b552988a9ffda9f0944ae66a1"
|
| 208 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 209 |
"plus/assets/kinex-logo.svg": {
|
| 210 |
"bytes": 725,
|
| 211 |
"sha256": "b27d9f4bfb9557513913b43b95108d995c7a18241629631a39889a2989b744c7"
|
| 212 |
},
|
| 213 |
+
"plus/assets/kinex-logo-night.svg": {
|
| 214 |
+
"bytes": 725,
|
| 215 |
+
"sha256": "7ed5de35505694eb892fc3b601d92e1d2fe864b1b0863fc0afff7c873fcfcc7c"
|
| 216 |
+
},
|
| 217 |
"plus/assets/openai-logo.svg": {
|
| 218 |
"bytes": 2571,
|
| 219 |
"sha256": "8e1b976ba47e927ac2928303fd5362fcadfefd68743506510596f107df676e58"
|
|
|
|
| 222 |
"bytes": 287,
|
| 223 |
"sha256": "4731ad16fd0b9b8f7dc02e05de3c1de0dd70223b93056d8345c8175bd9cad287"
|
| 224 |
},
|
| 225 |
+
"plus/assets/anthropic-logo.svg": {
|
| 226 |
+
"bytes": 352,
|
| 227 |
+
"sha256": "a53108594a23b740fbb08623f6fffdda1d73608b552988a9ffda9f0944ae66a1"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 228 |
}
|
| 229 |
},
|
| 230 |
"hard_dataset": {
|
|
|
|
| 252 |
"plus": "instruction-audit/plus.json"
|
| 253 |
},
|
| 254 |
"scope": "Current RLE working-tree snapshot; historical measured evaluation evidence is unchanged."
|
| 255 |
+
},
|
| 256 |
+
"kinex_rle_dataset": {
|
| 257 |
+
"repo": "RLE-Bench/programmable-vla",
|
| 258 |
+
"revision": "b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17",
|
| 259 |
+
"prefix": "research/kinex-rle-20261104",
|
| 260 |
+
"scope": "Pure Kinex, RLE revised instructions; Hard 50 selected, Plus 24 selected",
|
| 261 |
+
"complete": false
|
| 262 |
}
|
| 263 |
}
|
plus/app.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
'use strict';
|
| 2 |
const plannedProtocol = (task, variant) => task.planned_protocol_by_variant?.[variant] || task.planned_protocol;
|
| 3 |
// RoboEnv LIBERO raw counters include five initialization frames; RoboBridge counters do not.
|
|
@@ -76,7 +80,7 @@ function modelGroups() {
|
|
| 76 |
if(!groups.has(key))groups.set(key,{key,model:v.model,effort:v.effort,variants:[]});
|
| 77 |
groups.get(key).variants.push(v);
|
| 78 |
}
|
| 79 |
-
return [{key:'baselines',model:'
|
| 80 |
}
|
| 81 |
let expandedModels=null;
|
| 82 |
function perTaskStats(s) {
|
|
@@ -98,7 +102,7 @@ function comparisonCell(v,f) {
|
|
| 98 |
|
| 99 |
function comparisonTable() {
|
| 100 |
const scope='Per-task averages divide totals by the number of valid evaluated tasks in each environment and variant, including passes and failures. Pending and invalid tasks are excluded; missing values remain —.';
|
| 101 |
-
return `<section class="comparison-panel" aria-labelledby="comparison-title"><div class="section-heading bare"><div><h2 id="comparison-title">Compare configurations</h2><p>Four checkpoints cover 50 tasks
|
| 102 |
}
|
| 103 |
function recordingPilotProgress(){
|
| 104 |
const p=data.recording_pilot;if(!p)return '';
|
|
@@ -119,7 +123,7 @@ function opusPilotProgress(){
|
|
| 119 |
return `<section class="panel" style="padding:18px 24px;margin-bottom:24px" aria-label="Claude Code campaign"><strong>Claude Code · Opus 5.5 / high</strong><p>${number(n.finished||0)} / ${number(c.planned_episodes)} episodes completed · ${number(n.running||0)} running · ${number(n.queued||0)} pending${n.needs_review?' · '+number(n.needs_review)+' under review':''}${n.interrupted?' · '+number(n.interrupted)+' interrupted':''}.</p><p class="source-note">${c.quota_waiting?'Waiting for model-service quota recovery · ':''}${number(c.published_episodes)} episode records published · <a href="${esc(c.status_url)}" target="_blank" rel="noopener">Results and protocol ↗</a></p></section>`;
|
| 120 |
}
|
| 121 |
function methodology() {
|
| 122 |
-
return `<details class="panel methodology" id="methodology"><summary><span><span class="eyebrow">Reading the Plus benchmark</span><strong>Protocol, metrics & provenance</strong></span><span class="summary-plus">+</span></summary><div class="method-grid"><div><h3>50 tasks × 8 configurations × 4 checkpoints</h3><p>The original 1,200 valid episodes are retained. All 140k adds 400 scheduled episodes; completion is shown separately. Clean and seven perturbation configurations each contain 50 tasks per checkpoint. Overall scores include Clean. Native successes and failures are retained; no valid outcome was retried. Kinex
|
| 123 |
}
|
| 124 |
function taskBrowser(variant=null) {
|
| 125 |
return `<section class="task-browser" id="tasks"><div class="section-heading bare"><div><div class="eyebrow">${variant?'Episode index':'Browse the benchmark'}</div><h2>Explore tasks <span class="heading-count">${plannedTasks(variant).length}</span></h2></div><button class="button secondary" data-export="${variant||'all'}">Export CSV ↓</button></div><div class="panel"><div class="filters"><label class="search-field"><span aria-hidden="true">⌕</span><input id="task-search" type="search" aria-label="Search tasks" placeholder="Search task name, instruction or ID" value="${esc(filters.query)}"></label><select id="task-family" aria-label="Configuration"><option value="">All configurations</option>${data.families.map(f=>`<option value="${f.id}" ${filters.family===f.id?'selected':''}>${f.name}</option>`).join('')}</select>${variant?'':`<select id="task-variant" aria-label="Agent for outcome filter">${data.variants.map(v=>`<option value="${v.id}" ${filters.variant===v.id?'selected':''}>${v.label||v.agent} · ${v.model}</option>`).join('')}</select>`}<select id="task-status" aria-label="Outcome"><option value="">All outcomes</option>${['pass','fail','pending'].map(s=>`<option value="${s}" ${filters.status===s?'selected':''}>${s[0].toUpperCase()+s.slice(1)}</option>`).join('')}</select><select id="task-sort" aria-label="Sort tasks"><option value="catalog" ${filters.sort==='catalog'?'selected':''}>Catalog order</option><option value="tokens" ${filters.sort==='tokens'?'selected':''}>Most fresh input tokens</option><option value="cost" ${filters.sort==='cost'?'selected':''}>Highest cost</option><option value="name" ${filters.sort==='name'?'selected':''}>Task name</option></select></div><div class="table-scroll"><table class="task-table ${variant?'single-variant':''}"><thead><tr><th>Task</th>${variant?'<th>Native result</th><th>Fresh input<small>Excludes read and write</small></th><th>Cache read</th><th>Cache write</th><th>Cache hit</th><th>Output</th><th>Total cost<small>Estimated USD</small></th><th>Action steps</th>':data.variants.map(v=>`<th class="${v.id===filters.variant?'focus-column':''}">${v.label||v.agent}<small>${v.model} · ${v.effort}</small><small>Native result · Estimated USD</small></th>`).join('')}</tr></thead><tbody id="task-rows"></tbody></table></div><div class="table-footer"><span id="task-count" aria-live="polite"></span><span id="filter-context"></span><button class="text-button" id="reset-filters">Reset filters</button></div></div></section>`;
|
|
@@ -142,8 +146,8 @@ function researchRerunNote() {
|
|
| 142 |
|
| 143 |
function overview() {
|
| 144 |
current={type:'overview'};
|
| 145 |
-
$('#main').innerHTML=`<section class="hero"><div><div class="eyebrow"><span class="tiny-logo">✦</span> RLE-Bench · Embodied agent evaluation</div><h1>RoboTwin 2.0-Plus.<br><span>
|
| 146 |
-
${researchRerunNote()}${recordingPilotProgress()}${campaignProgress()}${opusPilotProgress()}<div class="agent-cards">${data.variants.map(v=>{const s=stats(episodes(v.id));return `<a class="agent-card ${s.n?'':'planned'}" href="#runs/${v.id}" style="--variant:${colors[v.id]}"><div class="card-header"><span class="agent-name">${icon(v)}${esc(v.label||v.agent)}</span><span class="state-label">${s.n===plannedTasks(v.id).length?'Complete':s.n?'Partial':'Planned'}</span></div><p class="card-model">${modelLabel(v)}</p><div class="card-rate"><strong>${pct(s.rate)}</strong><span>native success</span></div><div class="card-stats"><span><b>${s.n?s.passes+' / '+s.n:'—'}</b> passed</span><span class="card-cost" title="${esc(costNote(s))}"><b>${costValue(s)}</b> total cost<small>Estimated USD</small></span></div><div class="completion-track"><span style="width:${s.n/plannedTasks(v.id).length*100}%"></span></div><div class="card-bottom"><span>${s.n} / ${plannedTasks(v.id).length} evaluated</span><span>${s.n?'Explore runs':'View planned'} ${arrow}</span></div></a>`;}).join('')}</div><div class="scope-note"><span><i class="status-dot"></i>Success rates and costs cover selected evaluated tasks only.</span><span>
|
| 147 |
renderRows();
|
| 148 |
}
|
| 149 |
function runsPage(variant,params,restoredFilters=null) {
|
|
@@ -199,7 +203,7 @@ function instructionPair(task, ep) {
|
|
| 199 |
|
| 200 |
function instructionPanel(task,ep) {
|
| 201 |
const {record,native,measured:recorded,nativeReference}=instructionPair(task,ep);
|
| 202 |
-
const measured=ep?recorded:task.catalog_instruction;
|
| 203 |
const initial=record&&record.initial_goal!==measured?record.initial_goal:null;
|
| 204 |
const changed=Boolean(native&&measured&&native!==measured);
|
| 205 |
const diff=changed?instructionDiff(native,measured):null;
|
|
@@ -220,10 +224,10 @@ function overviewDetail(task,ep) {
|
|
| 220 |
const initializationBlocked=(data.active_campaign?.initialization_blocked||[]).includes(task.key+'/'+current.variant);
|
| 221 |
const review=reviewFor(task.key,current.variant);
|
| 222 |
if(!ep&&review)return `<section class="panel pending-panel" data-runtime-review><span class="badge invalid">Under review</span><h2>Native success recorded; runtime finalization failed</h2><p>${esc(review.reason)}</p><p>Original harness verdict: invalid. Recording manifest: incomplete. This attempt is excluded from formal success metrics; its usage is retained separately.</p><dl class="facts"><dt>Native terminal steps</dt><dd>${number(actionSteps(review.native_terminal_steps,task,current.variant))}</dd><dt>Fresh input</dt><dd>${number(review.usage.fresh_input_tokens)}</dd><dt>Cache read</dt><dd>${number(review.usage.cached_input_tokens)}</dd><dt>Output</dt><dd>${number(review.usage.output_tokens)}</dd><dt>Model responses</dt><dd>${number(review.usage.response_count)}</dd><dt>Estimated API-equivalent cost</dt><dd>${exactMoney(review.estimated_api_equivalent_usd)}</dd></dl><p>Both original camera streams decode successfully. Their completion manifest was not sealed, so they are retained as review evidence.</p><div class="inline-links">${Object.entries(review.links).map(([key,url])=>external(url,key.replaceAll('_',' '))).join('')}</div></section>${instructionPanel(task,null)}`;
|
| 223 |
-
if(!ep)return `<div class="pending-layout"><section class="pending-panel"><span class="pending-orbit">○</span><span class="eyebrow">${initializationBlocked?'Initialization blocked':'Awaiting evaluation'}</span><h2>${seedLimit?.exhausted?'No native-valid seed at or below '+number(seedLimit.max_seed):initializationBlocked?'Native seed 0 could not initialize':'No recorded episode yet'}</h2><p>${variantName(current.variant)} / ${esc(variantFor(current.variant).effort)}</p><div class="pending-facts">${metric(number(actionSteps(plannedProtocol(task,current.variant).max_control_steps,task)),'Campaign planned action steps')}${metric(String(task.planned_seed_by_variant?.[current.variant]??plannedProtocol(task,current.variant).seed),'Seed')}${metric(task.
|
| 224 |
const m=ep.media||{},u=ep.usage||{},a=ep.analysis||{};
|
| 225 |
const reason=a.evidence_note||a.failure_reason||a.cause||a.observed||a.visible_completion;
|
| 226 |
-
return `<div class="episode-layout"><div>${videoPanel(ep)}<p class="media-note">${m.playback_kind==='official_action_index'?'Head + left wrist + right wrist · 4× official recording, not simulation time. Wrist views update only at inference boundaries. Native 320 × 240 views are upscaled for display; action-limit recordings omit the post-final-action frame.':ep.recording_mode==='native'?'Native camera recording · cached agent-resolution frames · '+(m.speed||1)+'× simulation speed.':ep.provider==='robobridge'&&m.playback_kind==='live_spectator'?'Independent spectator cameras · 720 px high per view · overview + wrist views · '+(m.speed||1)+'× simulation speed. Agent images retain native resolution and orientation.':m.playback_kind==='native_observation_snapshots'?'Native observation snapshots · 10 FPS playback; this is not simulation time.':`${m.source_fps?m.source_fps+' FPS source capture · ':''}${m.speed||1}× simulation speed.`} Session timestamps use wall time and are not synchronized to video frames.</p></div><aside class="result-panel panel"><div class="result-head"><span class="eyebrow">Native verdict</span>${badge(ep)}</div><div class="result-number">${number(actionSteps(ep.steps,ep))}<span> / ${number(actionSteps(ep.measured_protocol?.max_steps,ep))} action steps</span></div><div class="completion-track"><span style="width:${Math.min(100,(actionSteps(ep.steps,ep)||0)/(actionSteps(ep.measured_protocol?.max_steps,ep)||1)*100)}%"></span></div><dl class="facts"><dt>Termination</dt><dd>${esc(ep.verdict?.termination||'—')}</dd><dt>Execution</dt><dd>${esc(ep.execution?.status||'—')}</dd><dt>Evidence</dt><dd>${ep.valid?'Valid':'Invalid'}</dd><dt>Simulation time</dt><dd title="${esc(ep.timing?.simulation_time_note||'')}">${ep.timing&&ep.simulation_time_s==null?'Not recorded':elapsed(ep.simulation_time_s)}</dd><dt>Wall time</dt><dd title="${esc(ep.timing?.wall_time_scope||'')}">${elapsed(ep.wall_time_s)}</dd><dt>Estimated cost</dt><dd>${costValue(stats([ep]))}</dd><dt>Seed</dt><dd>${ep.seed}</dd><dt>Agent version</dt><dd>${ep.kinex_version?'Kinex '+esc(ep.kinex_version):ep.codex_version?'Codex '+esc(ep.codex_version):ep.claude_code_version?'Claude Code '+esc(ep.claude_code_version):esc(variantFor(ep.variant).agent)}</dd></dl><div class="result-links">${external(ep.links.verdict,'Native verdict')}${external(ep.links.provenance,'Source identity')}</div></aside></div>${nativeNote(task,ep)}${ep.post_terminal_review?`<aside class="native-note" data-post-terminal-note><span class="note-symbol">!</span><div><strong>Native episode completed; later provider error</strong><p>${esc(ep.post_terminal_review.reason)}</p>${external(ep.links.completion_review,"Terminal completion review")}</div></aside>`:""}${initializationNote?`<aside class="native-note" data-initialization-note><span class="note-symbol">!</span><div><strong>Measured initial-state variation</strong><p>${esc(initializationNote)}</p><a href="${esc(resultURL('initialization-comparison.json'))}" target="_blank">Paired initialization evidence ↗</a></div></aside>`:''}${ep.usage_review?`<aside class="native-note" data-usage-review-note><span class="note-symbol">i</span><div><strong>Context compaction included in usage</strong><p>${esc(ep.usage_review.reason)}</p>${external(ep.links.usage_review,"Usage reconciliation evidence")}</div></aside>`:""}${ep.native_clock_review?`<aside class="native-note" data-native-clock-note><span class="note-symbol">i</span><div><strong>Native physics clock differs from control-frame time</strong><p>${esc(ep.native_clock_review.reason)}</p>${external(ep.links.native_clock_review,"Native clock review")}</div></aside>`:""}${ep.collector_review&&ep.collector_review.schema!=="rlebench/collector-recovery/1"?`<aside class="native-note" data-collector-review-note><span class="note-symbol">i</span><div><strong>Host collector recovered; original model continued</strong><p>${esc(ep.collector_review.reason)}</p><p>Wall time uses the original session timestamps. Lost host setup timing is left unknown.</p><p>Host waiting protection was extended prospectively from 8 to 16 hours for this original execution; the native control budget is unchanged.</p>${external(ep.links.collector_review,"Collector recovery evidence")}</div></aside>`:""}${ep.provenance?.protocol_exception?.same_seed_comparison===false?`<aside class="native-note" data-seed-scope-note><span class="note-symbol">i</span><div><strong>Different evaluation seeds</strong><p>Codex uses seed ${number(ep.seed)} after native expert and initialization checks with no model calls during selection. ${ep.provenance.protocol_exception.max_seed!=null?'Seed selection was capped at '+number(ep.provenance.protocol_exception.max_seed)+'. ':''} Kinex retains its original seed ${number(ep.provenance.protocol_exception.preserved_kinex_seed)} result. Codex ran once; this is not a same-seed comparison.</p>${external(ep.links.seed_selection,'Native seed selection evidence')}</div></aside>`:''}${recordingComparisonNote(ep)}${episodeMetrics(ep)}<div class="detail-two-column">${instructionPanel(task,ep)}<section class="panel episode-analysis"><div class="section-heading"><div><h2>Episode notes</h2><p>Recorded observations and task-specific interpretation.</p></div></div><div class="analysis-body">${reason?`<p>${esc(reason)}</p>`:`<p>${esc(a.outcome||'The native result and original evidence are retained for this episode.')}</p>`}<details><summary>Read recorded analysis</summary>${Object.entries(a).filter(([k])=>k!=='preflight').map(([k,v])=>`<div class="analysis-entry"><span>${esc(k.replaceAll('_',' '))}</span><p>${esc(typeof v==='string'?v:JSON.stringify(v))}</p></div>`).join('')}</details><div class="inline-links">${external(ep.links.analysis,'Analysis JSON')}${external(ep.links.terminal_frame,'Terminal evidence')}</div></div></section></div><div class="detail-launchers"><a href="${taskRoute(task.key,ep.variant,'session')}"><span class="launcher-icon">≡</span><div><strong>Read the full session</strong><span>${number(ep.session_counts?.visible_events)} events · ${number(ep.session_counts?.observed_images)} observations</span></div>${arrow}</a><a href="${taskRoute(task.key,ep.variant,'artifacts')}"><span class="launcher-icon">⌘</span><div><strong>Inspect agent artifacts</strong><span>${ep.resources?.length||0} saved files · workspace & evidence</span></div>${arrow}</a></div>`;
|
| 227 |
}
|
| 228 |
function taskPage(key,variant,section='overview') {
|
| 229 |
const task=data.tasks.find(t=>t.key===key);if(!task||!variantFor(variant)){notFound();return;}
|
|
@@ -234,7 +238,7 @@ function taskPage(key,variant,section='overview') {
|
|
| 234 |
sessionState={filter:'all',query:'',count:40,view:'timeline'};
|
| 235 |
const taskList=plannedTasks(variant),index=taskList.indexOf(task),history=data.attempt_history.filter(h=>h.task_key===key&&h.variant===variant);
|
| 236 |
document.title=`${task.title} · ${variantFor(variant).agent} — Programmable VLA`;
|
| 237 |
-
$('#main').innerHTML=`<div class="breadcrumbs"><a data-task-return href="${esc(taskListReturn?.hash || '#tasks?task='+encodeURIComponent(key))}">← Back to tasks</a><span>/</span><a href="#runs/${variant}?family=${task.family}">${familyName(task.family)}</a><span>/</span><code>${key}</code></div><div class="task-heading"><div><div class="eyebrow">${familyName(task.family)} · ${key}</div><h1>${esc(task.title)}</h1><p><code>${esc(task.native_id)}</code></p></div><div class="task-arrows">${index?`<a class="button" href="${taskRoute(taskList[index-1].key,variant)}" aria-label="Previous task">←</a>`:''}${index<taskList.length-1?`<a class="button" href="${taskRoute(taskList[index+1].key,variant)}" aria-label="Next task">→</a>`:''}</div></div>${budgetNote(task)}${variantTabs(variant,key,section)}<nav class="detail-nav" aria-label="Episode sections">${[['overview','Overview',null],['session','Session',ep?.session_counts?.visible_events],['tools','Tool calls',ep?.call_activity?.model_tool_calls],['policy','VLA input/output',ep?.vla_calls],['artifacts','Artifacts',ep?.resources?.length],['evidence','Evidence',null],['attempts','Previous attempts',history.length]].filter(([k])=>k!=='attempts'||history.length).map(([k,l,n])=>!ep&&!['overview','attempts'].includes(k)?`<span class="disabled-tab" aria-disabled="true">${l}</span>`:`<a href="${taskRoute(key,variant,k)}" class="${k===section?'active':''}" ${k===section?'aria-current="page"':''}>${l}${n!=null?`<span>${number(n)}</span>`:''}</a>`).join('')}<span class="detail-model">${variantFor(variant).model} / ${variantFor(variant).effort}</span></nav><div id="detail-content">${section==='overview'?overviewDetail(task,ep):section==='session'?sessionShell(ep):section==='tools'?toolsShell(ep):section==='policy'?policyShell(ep):section==='artifacts'?artifactsPanel(ep):section==='evidence'?evidencePanel(task,ep):historyPanel(history,task)}</div>`;
|
| 238 |
setupVideo();
|
| 239 |
if(section==='session')loadSession(ep,epoch);
|
| 240 |
if(section==='tools')loadTools(ep,epoch);
|
|
|
|
| 1 |
+
function rleProtocolNote() {
|
| 2 |
+
const n=data.instruction_protocol_notice;if(!n)return '';
|
| 3 |
+
return `<aside class="native-note" data-rle-protocol><span class="note-symbol">i</span><div><strong>Pure Kinex · RLE revised instructions</strong><p>GPT-6 Astra / high with rosbridge; ${number(n.selected_kinex)} selected episodes. No VLA extension or device. Existing VLA results retain original native instructions, admission rules and execution. Different instruction and control protocols prevent a paired causal comparison.</p><div class="inline-links">${external(evidenceURL('research/kinex-rle-20261104/REPORT.md'),'RLE evaluation report')}${external(evidenceURL('research/kinex-rle-20261104/plan.json'),'Frozen task selection & protocol')}${n.historical_kinex?external(resultURL('attempt-history.json'),'Previous native Kinex results'):''}</div></div></aside>`;
|
| 4 |
+
}
|
| 5 |
'use strict';
|
| 6 |
const plannedProtocol = (task, variant) => task.planned_protocol_by_variant?.[variant] || task.planned_protocol;
|
| 7 |
// RoboEnv LIBERO raw counters include five initialization frames; RoboBridge counters do not.
|
|
|
|
| 80 |
if(!groups.has(key))groups.set(key,{key,model:v.model,effort:v.effort,variants:[]});
|
| 81 |
groups.get(key).variants.push(v);
|
| 82 |
}
|
| 83 |
+
return [{key:'baselines',model:'Standalone VLA · native instructions',effort:'Selected seeds',variants:data.variants.filter(v=>v.agent!=='Kinex')},{key:'kinex-rle',model:'Pure Kinex · RLE revised instructions',effort:'high',variants:data.variants.filter(v=>v.agent==='Kinex')}];
|
| 84 |
}
|
| 85 |
let expandedModels=null;
|
| 86 |
function perTaskStats(s) {
|
|
|
|
| 102 |
|
| 103 |
function comparisonTable() {
|
| 104 |
const scope='Per-task averages divide totals by the number of valid evaluated tasks in each environment and variant, including passes and failures. Pending and invalid tasks are excluded; missing values remain —.';
|
| 105 |
+
return `<section class="comparison-panel" aria-labelledby="comparison-title"><div class="section-heading bare"><div><h2 id="comparison-title">Compare configurations</h2><p>Four VLA checkpoints cover 50 tasks per configuration with native instructions. Pure Kinex covers three selected tasks in each configuration with revised RLE instructions. Denominators and instruction protocols remain separate.</p></div><div class="segmented" aria-label="Comparison metric">${[['success','Success rate'],['tokens','Tokens / task'],['cost','Cost / task']].map(([k,l])=>`<button data-matrix="${k}" aria-pressed="${matrixMetric===k}">${l}</button>`).join('')}</div></div><p class="comparison-definition">${matrixMetric==='tokens'?scope+' '+usageDefinition():matrixMetric==='cost'?scope+' Estimated API-equivalent USD per task.':'Native passes / evaluated tasks. Pending tasks are excluded; compare coverage alongside success rates.'}</p><div class="model-comparisons">${modelGroups().map((g,i)=>`<details class="model-comparison panel" data-model-group="${esc(g.key)}" ${expandedModels?expandedModels.has(g.key)?'open':'':i===0?'open':''}><summary><span><strong>${esc(g.model)}</strong><span class="model-group-meta">${g.key==='baselines'?'50 tasks per configuration':'3 tasks per configuration · '+esc(g.effort)+' effort'} · ${g.variants.map(v=>esc(v.label||v.agent)).join(' vs ')}</span></span><span class="model-group-count">${g.variants.length} variants <span class="disclosure-arrow">⌄</span></span></summary><div class="table-scroll"><table class="comparison-table grouped-comparison ${matrixMetric}"><thead><tr><th>Configuration</th>${g.variants.map(v=>`<th><a href="#runs/${v.id}" class="agent-inline">${icon(v)}${esc(v.label||v.agent)} ${arrow}</a></th>`).join('')}</tr></thead><tbody>${data.families.map(f=>`<tr><th scope="row"><span class="family-code">${f.code || f.id.slice(-2)}</span>${esc(f.name)}<small>${f.tasks} tasks</small></th>${g.variants.map(v=>comparisonCell(v,f)).join('')}</tr>`).join('')}</tbody></table></div></details>`).join('')}</div></section>`;
|
| 106 |
}
|
| 107 |
function recordingPilotProgress(){
|
| 108 |
const p=data.recording_pilot;if(!p)return '';
|
|
|
|
| 123 |
return `<section class="panel" style="padding:18px 24px;margin-bottom:24px" aria-label="Claude Code campaign"><strong>Claude Code · Opus 5.5 / high</strong><p>${number(n.finished||0)} / ${number(c.planned_episodes)} episodes completed · ${number(n.running||0)} running · ${number(n.queued||0)} pending${n.needs_review?' · '+number(n.needs_review)+' under review':''}${n.interrupted?' · '+number(n.interrupted)+' interrupted':''}.</p><p class="source-note">${c.quota_waiting?'Waiting for model-service quota recovery · ':''}${number(c.published_episodes)} episode records published · <a href="${esc(c.status_url)}" target="_blank" rel="noopener">Results and protocol ↗</a></p></section>`;
|
| 124 |
}
|
| 125 |
function methodology() {
|
| 126 |
+
return `<details class="panel methodology" id="methodology"><summary><span><span class="eyebrow">Reading the Plus benchmark</span><strong>Protocol, metrics & provenance</strong></span><span class="summary-plus">+</span></summary><div class="method-grid"><div><h3>50 tasks × 8 configurations × 4 checkpoints</h3><p>The original 1,200 valid episodes are retained. All 140k adds 400 scheduled episodes; completion is shown separately. Clean and seven perturbation configurations each contain 50 tasks per checkpoint. Overall scores include Clean. Native successes and failures are retained; no valid outcome was retried. Pure Kinex adds 24 selected episodes: handover_block, scan_object and adjust_bottle in each of the eight configurations. The other 376 pairs are not scheduled for Kinex.</p></div><div><h3>Instruction protocols</h3><p>Standalone VLA retains original Plus instructions: the native seen pool for non-language configurations and the combined pool for language-plus. Pure Kinex uses revised RLE templates, including the RLE language-plus revision. Exact instructions and model inputs are available on every episode page; sampled prompts may differ across checkpoints.</p></div><div><h3>Native execution and coverage</h3><p>Standalone policies use the upstream expert-success admission rule, starting at scene seed 100000 in seed group 0. Each task/configuration uses accepted episode index 0, with its actual scene seed recorded. Native take_action(qpos) executes complete predicted chunks: 16 actions for Base, 32 for VLAct, and 50 for non-VLAct All 140k. This single-episode evaluation is not the upstream multi-trial protocol. Vision-noise index 0 covers motion noise, not all noise subtypes.</p></div><div><h3>Recorded recovery</h3><p>VLAct All 100k stopped once before inference because a validator rejected angle-bracket text in a native instruction. The fix preserves whole native Plus instructions in all eight configurations while keeping custom RLE templates strict. The 116 completed All outcomes were preserved; the remaining 284 used the recorded recovery source. The interrupted attempt made zero model calls. Per-episode source phases and the recovery receipt are retained.</p></div><div><h3>Same video presentation as Easy/Hard</h3><p>Head, left wrist and right wrist appear side by side at 2880 × 720. Kinex retains all three spectator recordings at 4× simulation speed. The following action-index details apply to standalone VLA only. Native 320 × 240 views are upscaled with the same H.264 CRF 20 encoding. Playback is 4× the official 10 FPS action-index recording, not physical simulation time. Wrist views hold the recorded inference observation until the next inference. Original frames and videos remain available; no simulator rerun or new camera frame was generated.</p></div><div><h3>Usage and evidence</h3><p>${usageDefinition()} Standalone runs have zero language-agent API calls; Kinex records provider usage and API-equivalent estimates from its sessions; local VLA compute and GPU cost are not measured. The VLA input/output tab shows every recorded request, exact input PNG, raw response and native action chunk. Original evidence ZIPs, native videos, checkpoint revisions and source hashes are retained.</p></div></div><div class="method-links"><a href="${esc(evidenceURL('research/oft-all140k-20261103/REPORT.md'))}">All 140k results & validation ↗</a><a href="${esc(evidenceURL('research/oft-all140k-20261103/protocol.json'))}">All 140k protocol & checkpoint ↗</a><a href="${esc(resultURL('sources.json'))}" target="_blank">Data sources ↗</a><a href="${esc(evidenceURL('robotwin-plus/20261101-native/REPORT.md'))}">Report ↗</a><a href="${esc(evidenceURL('robotwin-plus/20261101-native/protocol.json'))}">Protocol & checkpoints ↗</a><a href="${esc(evidenceURL('robotwin-plus/20261101-native/recovery/receipt.json'))}">Recovery receipt ↗</a><a href="${esc(evidenceURL('robotwin-plus/20261101-native/presentation-v2/presentation-protocol.json'))}">Video presentation protocol ↗</a><button class="text-button" data-export="all">Download comparison CSV ↓</button></div></details>`;
|
| 127 |
}
|
| 128 |
function taskBrowser(variant=null) {
|
| 129 |
return `<section class="task-browser" id="tasks"><div class="section-heading bare"><div><div class="eyebrow">${variant?'Episode index':'Browse the benchmark'}</div><h2>Explore tasks <span class="heading-count">${plannedTasks(variant).length}</span></h2></div><button class="button secondary" data-export="${variant||'all'}">Export CSV ↓</button></div><div class="panel"><div class="filters"><label class="search-field"><span aria-hidden="true">⌕</span><input id="task-search" type="search" aria-label="Search tasks" placeholder="Search task name, instruction or ID" value="${esc(filters.query)}"></label><select id="task-family" aria-label="Configuration"><option value="">All configurations</option>${data.families.map(f=>`<option value="${f.id}" ${filters.family===f.id?'selected':''}>${f.name}</option>`).join('')}</select>${variant?'':`<select id="task-variant" aria-label="Agent for outcome filter">${data.variants.map(v=>`<option value="${v.id}" ${filters.variant===v.id?'selected':''}>${v.label||v.agent} · ${v.model}</option>`).join('')}</select>`}<select id="task-status" aria-label="Outcome"><option value="">All outcomes</option>${['pass','fail','pending'].map(s=>`<option value="${s}" ${filters.status===s?'selected':''}>${s[0].toUpperCase()+s.slice(1)}</option>`).join('')}</select><select id="task-sort" aria-label="Sort tasks"><option value="catalog" ${filters.sort==='catalog'?'selected':''}>Catalog order</option><option value="tokens" ${filters.sort==='tokens'?'selected':''}>Most fresh input tokens</option><option value="cost" ${filters.sort==='cost'?'selected':''}>Highest cost</option><option value="name" ${filters.sort==='name'?'selected':''}>Task name</option></select></div><div class="table-scroll"><table class="task-table ${variant?'single-variant':''}"><thead><tr><th>Task</th>${variant?'<th>Native result</th><th>Fresh input<small>Excludes read and write</small></th><th>Cache read</th><th>Cache write</th><th>Cache hit</th><th>Output</th><th>Total cost<small>Estimated USD</small></th><th>Action steps</th>':data.variants.map(v=>`<th class="${v.id===filters.variant?'focus-column':''}">${v.label||v.agent}<small>${v.model} · ${v.effort}</small><small>Native result · Estimated USD</small></th>`).join('')}</tr></thead><tbody id="task-rows"></tbody></table></div><div class="table-footer"><span id="task-count" aria-live="polite"></span><span id="filter-context"></span><button class="text-button" id="reset-filters">Reset filters</button></div></div></section>`;
|
|
|
|
| 146 |
|
| 147 |
function overview() {
|
| 148 |
current={type:'overview'};
|
| 149 |
+
$('#main').innerHTML=`<section class="hero"><div><div class="eyebrow"><span class="tiny-logo">✦</span> RLE-Bench · Embodied agent evaluation</div><h1>RoboTwin 2.0-Plus.<br><span>Plus evaluation.</span></h1><p>Eight configurations · four VLA checkpoints retain native instructions.<br>Pure Kinex evaluates three tasks per configuration with RLE revised instructions.</p></div><div class="hero-facts"><div><strong>${data.families.length}</strong><span>configurations</span></div><div><strong>${data.tasks.length}</strong><span>task/configuration pairs</span></div><div><strong>${data.variants.length}</strong><span>agent–model variants</span></div><span class="progress-label"><i></i>${data.benchmark_complete?'Evaluation complete':'Evaluation in progress'} · selected seeds</span></div></section>
|
| 150 |
+
${rleProtocolNote()}${researchRerunNote()}${recordingPilotProgress()}${campaignProgress()}${opusPilotProgress()}<div class="agent-cards">${data.variants.map(v=>{const s=stats(episodes(v.id));return `<a class="agent-card ${s.n?'':'planned'}" href="#runs/${v.id}" style="--variant:${colors[v.id]}"><div class="card-header"><span class="agent-name">${icon(v)}${esc(v.label||v.agent)}</span><span class="state-label">${s.n===plannedTasks(v.id).length?'Complete':s.n?'Partial':'Planned'}</span></div><p class="card-model">${modelLabel(v)}</p><div class="card-rate"><strong>${pct(s.rate)}</strong><span>native success</span></div><div class="card-stats"><span><b>${s.n?s.passes+' / '+s.n:'—'}</b> passed</span><span class="card-cost" title="${esc(costNote(s))}"><b>${costValue(s)}</b> total cost<small>Estimated USD</small></span></div><div class="completion-track"><span style="width:${s.n/plannedTasks(v.id).length*100}%"></span></div><div class="card-bottom"><span>${s.n} / ${plannedTasks(v.id).length} evaluated</span><span>${s.n?'Explore runs':'View planned'} ${arrow}</span></div></a>`;}).join('')}</div><div class="scope-note"><span><i class="status-dot"></i>Success rates and costs cover selected evaluated tasks only.</span><span>RLE Kinex / native VLA instructions · Selected task/configuration pairs</span></div><div id="comparison-mount">${comparisonTable()}</div><a class="audit-launcher" href="#instructions"><div><strong>Instructions audit</strong><p>Compare current RLE goals with native descriptions, runtime language pools and recorded episode instructions.</p></div><span aria-hidden="true">↗</span></a>${taskBrowser()}${methodology()}`;
|
| 151 |
renderRows();
|
| 152 |
}
|
| 153 |
function runsPage(variant,params,restoredFilters=null) {
|
|
|
|
| 203 |
|
| 204 |
function instructionPanel(task,ep) {
|
| 205 |
const {record,native,measured:recorded,nativeReference}=instructionPair(task,ep);
|
| 206 |
+
const measured=ep?recorded:(task.catalog_instruction_by_variant?.[current.variant]||task.catalog_instruction);
|
| 207 |
const initial=record&&record.initial_goal!==measured?record.initial_goal:null;
|
| 208 |
const changed=Boolean(native&&measured&&native!==measured);
|
| 209 |
const diff=changed?instructionDiff(native,measured):null;
|
|
|
|
| 224 |
const initializationBlocked=(data.active_campaign?.initialization_blocked||[]).includes(task.key+'/'+current.variant);
|
| 225 |
const review=reviewFor(task.key,current.variant);
|
| 226 |
if(!ep&&review)return `<section class="panel pending-panel" data-runtime-review><span class="badge invalid">Under review</span><h2>Native success recorded; runtime finalization failed</h2><p>${esc(review.reason)}</p><p>Original harness verdict: invalid. Recording manifest: incomplete. This attempt is excluded from formal success metrics; its usage is retained separately.</p><dl class="facts"><dt>Native terminal steps</dt><dd>${number(actionSteps(review.native_terminal_steps,task,current.variant))}</dd><dt>Fresh input</dt><dd>${number(review.usage.fresh_input_tokens)}</dd><dt>Cache read</dt><dd>${number(review.usage.cached_input_tokens)}</dd><dt>Output</dt><dd>${number(review.usage.output_tokens)}</dd><dt>Model responses</dt><dd>${number(review.usage.response_count)}</dd><dt>Estimated API-equivalent cost</dt><dd>${exactMoney(review.estimated_api_equivalent_usd)}</dd></dl><p>Both original camera streams decode successfully. Their completion manifest was not sealed, so they are retained as review evidence.</p><div class="inline-links">${Object.entries(review.links).map(([key,url])=>external(url,key.replaceAll('_',' '))).join('')}</div></section>${instructionPanel(task,null)}`;
|
| 227 |
+
if(!ep)return `<div class="pending-layout"><section class="pending-panel"><span class="pending-orbit">○</span><span class="eyebrow">${initializationBlocked?'Initialization blocked':'Awaiting evaluation'}</span><h2>${seedLimit?.exhausted?'No native-valid seed at or below '+number(seedLimit.max_seed):initializationBlocked?'Native seed 0 could not initialize':'No recorded episode yet'}</h2><p>${variantName(current.variant)} / ${esc(variantFor(current.variant).effort)}</p><div class="pending-facts">${metric(number(actionSteps(plannedProtocol(task,current.variant).max_control_steps,task)),'Campaign planned action steps')}${metric(String(task.planned_seed_by_variant?.[current.variant]??plannedProtocol(task,current.variant).seed),'Seed')}${metric(plannedProtocol(task,current.variant).control_frequency_hz+' Hz','Control frequency')}</div><p class="subtle">${seedLimit?.exhausted?'Native checks exhausted seeds 1–'+number(seedLimit.max_seed)+'. No Codex model attempt was launched. The original Kinex result is retained; this unavailable Codex task is excluded from success rates.':initializationBlocked?'No model was called. Seed 0 is retained by user decision; this is excluded from task success rates.':'This task is included in the planned catalog. Results and usage will appear after evaluation.'}</p></section>${instructionPanel(task,null)}</div>${seedLimit?.evidence_url?external(seedLimit.evidence_url,'Native seed selection evidence'):''}${nativeNote(task,null)}`;
|
| 228 |
const m=ep.media||{},u=ep.usage||{},a=ep.analysis||{};
|
| 229 |
const reason=a.evidence_note||a.failure_reason||a.cause||a.observed||a.visible_completion;
|
| 230 |
+
return `<div class="episode-layout"><div>${videoPanel(ep)}<p class="media-note">${m.playback_kind==='official_action_index'?'Head + left wrist + right wrist · 4× official recording, not simulation time. Wrist views update only at inference boundaries. Native 320 × 240 views are upscaled for display; action-limit recordings omit the post-final-action frame.':ep.recording_mode==='native'?'Native camera recording · cached agent-resolution frames · '+(m.speed||1)+'× simulation speed.':ep.provider==='robobridge'&&m.playback_kind==='live_spectator'?'Independent spectator cameras · 720 px high per view · overview + wrist views · '+(m.speed||1)+'× simulation speed. Agent images retain native resolution and orientation.':m.playback_kind==='native_observation_snapshots'?'Native observation snapshots · 10 FPS playback; this is not simulation time.':`${m.source_fps?m.source_fps+' FPS source capture · ':''}${m.speed||1}× simulation speed.`} Session timestamps use wall time and are not synchronized to video frames.</p></div><aside class="result-panel panel"><div class="result-head"><span class="eyebrow">Native verdict</span>${badge(ep)}</div><div class="result-number">${number(actionSteps(ep.steps,ep))}<span> / ${number(actionSteps(ep.measured_protocol?.max_steps,ep))} action steps</span></div><div class="completion-track"><span style="width:${Math.min(100,(actionSteps(ep.steps,ep)||0)/(actionSteps(ep.measured_protocol?.max_steps,ep)||1)*100)}%"></span></div><dl class="facts"><dt>Termination</dt><dd>${esc(ep.verdict?.termination||ep.verdict?.reason||'—')}</dd><dt>Execution</dt><dd>${esc(ep.execution?.status||'—')}</dd><dt>Evidence</dt><dd>${ep.valid?'Valid':'Invalid'}</dd><dt>Simulation time</dt><dd title="${esc(ep.timing?.simulation_time_note||'')}">${ep.timing&&ep.simulation_time_s==null?'Not recorded':elapsed(ep.simulation_time_s)}</dd><dt>Wall time</dt><dd title="${esc(ep.timing?.wall_time_scope||'')}">${elapsed(ep.wall_time_s)}</dd><dt>Estimated cost</dt><dd>${costValue(stats([ep]))}</dd><dt>Seed</dt><dd>${ep.seed}</dd><dt>Agent version</dt><dd>${ep.kinex_version?'Kinex '+esc(ep.kinex_version):ep.codex_version?'Codex '+esc(ep.codex_version):ep.claude_code_version?'Claude Code '+esc(ep.claude_code_version):esc(variantFor(ep.variant).agent)}</dd></dl><div class="result-links">${external(ep.links.verdict,'Native verdict')}${external(ep.links.provenance,'Source identity')}</div></aside></div>${nativeNote(task,ep)}${ep.post_terminal_review?`<aside class="native-note" data-post-terminal-note><span class="note-symbol">!</span><div><strong>Native episode completed; later provider error</strong><p>${esc(ep.post_terminal_review.reason)}</p>${external(ep.links.completion_review,"Terminal completion review")}</div></aside>`:""}${initializationNote?`<aside class="native-note" data-initialization-note><span class="note-symbol">!</span><div><strong>Measured initial-state variation</strong><p>${esc(initializationNote)}</p><a href="${esc(resultURL('initialization-comparison.json'))}" target="_blank">Paired initialization evidence ↗</a></div></aside>`:''}${ep.usage_review?`<aside class="native-note" data-usage-review-note><span class="note-symbol">i</span><div><strong>Context compaction included in usage</strong><p>${esc(ep.usage_review.reason)}</p>${external(ep.links.usage_review,"Usage reconciliation evidence")}</div></aside>`:""}${ep.native_clock_review?`<aside class="native-note" data-native-clock-note><span class="note-symbol">i</span><div><strong>Native physics clock differs from control-frame time</strong><p>${esc(ep.native_clock_review.reason)}</p>${external(ep.links.native_clock_review,"Native clock review")}</div></aside>`:""}${ep.collector_review&&ep.collector_review.schema!=="rlebench/collector-recovery/1"?`<aside class="native-note" data-collector-review-note><span class="note-symbol">i</span><div><strong>Host collector recovered; original model continued</strong><p>${esc(ep.collector_review.reason)}</p><p>Wall time uses the original session timestamps. Lost host setup timing is left unknown.</p><p>Host waiting protection was extended prospectively from 8 to 16 hours for this original execution; the native control budget is unchanged.</p>${external(ep.links.collector_review,"Collector recovery evidence")}</div></aside>`:""}${ep.provenance?.protocol_exception?.same_seed_comparison===false?`<aside class="native-note" data-seed-scope-note><span class="note-symbol">i</span><div><strong>Different evaluation seeds</strong><p>Codex uses seed ${number(ep.seed)} after native expert and initialization checks with no model calls during selection. ${ep.provenance.protocol_exception.max_seed!=null?'Seed selection was capped at '+number(ep.provenance.protocol_exception.max_seed)+'. ':''} Kinex retains its original seed ${number(ep.provenance.protocol_exception.preserved_kinex_seed)} result. Codex ran once; this is not a same-seed comparison.</p>${external(ep.links.seed_selection,'Native seed selection evidence')}</div></aside>`:''}${recordingComparisonNote(ep)}${episodeMetrics(ep)}<div class="detail-two-column">${instructionPanel(task,ep)}<section class="panel episode-analysis"><div class="section-heading"><div><h2>Episode notes</h2><p>Recorded observations and task-specific interpretation.</p></div></div><div class="analysis-body">${reason?`<p>${esc(reason)}</p>`:`<p>${esc(a.outcome||'The native result and original evidence are retained for this episode.')}</p>`}<details><summary>Read recorded analysis</summary>${Object.entries(a).filter(([k])=>k!=='preflight').map(([k,v])=>`<div class="analysis-entry"><span>${esc(k.replaceAll('_',' '))}</span><p>${esc(typeof v==='string'?v:JSON.stringify(v))}</p></div>`).join('')}</details><div class="inline-links">${external(ep.links.analysis,'Analysis JSON')}${external(ep.links.terminal_frame,'Terminal evidence')}</div></div></section></div><div class="detail-launchers"><a href="${taskRoute(task.key,ep.variant,'session')}"><span class="launcher-icon">≡</span><div><strong>Read the full session</strong><span>${number(ep.session_counts?.visible_events)} events · ${number(ep.session_counts?.observed_images)} observations</span></div>${arrow}</a><a href="${taskRoute(task.key,ep.variant,'artifacts')}"><span class="launcher-icon">⌘</span><div><strong>Inspect agent artifacts</strong><span>${ep.resources?.length||0} saved files · workspace & evidence</span></div>${arrow}</a></div>`;
|
| 231 |
}
|
| 232 |
function taskPage(key,variant,section='overview') {
|
| 233 |
const task=data.tasks.find(t=>t.key===key);if(!task||!variantFor(variant)){notFound();return;}
|
|
|
|
| 238 |
sessionState={filter:'all',query:'',count:40,view:'timeline'};
|
| 239 |
const taskList=plannedTasks(variant),index=taskList.indexOf(task),history=data.attempt_history.filter(h=>h.task_key===key&&h.variant===variant);
|
| 240 |
document.title=`${task.title} · ${variantFor(variant).agent} — Programmable VLA`;
|
| 241 |
+
$('#main').innerHTML=`<div class="breadcrumbs"><a data-task-return href="${esc(taskListReturn?.hash || '#tasks?task='+encodeURIComponent(key))}">← Back to tasks</a><span>/</span><a href="#runs/${variant}?family=${task.family}">${familyName(task.family)}</a><span>/</span><code>${key}</code></div><div class="task-heading"><div><div class="eyebrow">${familyName(task.family)} · ${key}</div><h1>${esc(task.title)}</h1><p><code>${esc(task.native_id)}</code></p></div><div class="task-arrows">${index?`<a class="button" href="${taskRoute(taskList[index-1].key,variant)}" aria-label="Previous task">←</a>`:''}${index<taskList.length-1?`<a class="button" href="${taskRoute(taskList[index+1].key,variant)}" aria-label="Next task">→</a>`:''}</div></div>${budgetNote(task)}${variantTabs(variant,key,section)}<nav class="detail-nav" aria-label="Episode sections">${[['overview','Overview',null],['session','Session',ep?.session_counts?.visible_events],['tools','Tool calls',ep?.call_activity?.model_tool_calls],['policy','VLA input/output',ep?.vla_calls],['artifacts','Artifacts',ep?.resources?.length],['evidence','Evidence',null],['attempts','Previous attempts',history.length]].filter(([k])=>(k!=='attempts'||history.length)&&(k!=='policy'||variantFor(variant).agent!=='Kinex')).map(([k,l,n])=>!ep&&!['overview','attempts'].includes(k)?`<span class="disabled-tab" aria-disabled="true">${l}</span>`:`<a href="${taskRoute(key,variant,k)}" class="${k===section?'active':''}" ${k===section?'aria-current="page"':''}>${l}${n!=null?`<span>${number(n)}</span>`:''}</a>`).join('')}<span class="detail-model">${variantFor(variant).model} / ${variantFor(variant).effort}</span></nav><div id="detail-content">${section==='overview'?overviewDetail(task,ep):section==='session'?sessionShell(ep):section==='tools'?toolsShell(ep):section==='policy'?policyShell(ep):section==='artifacts'?artifactsPanel(ep):section==='evidence'?evidencePanel(task,ep):historyPanel(history,task)}</div>`;
|
| 242 |
setupVideo();
|
| 243 |
if(section==='session')loadSession(ep,epoch);
|
| 244 |
if(section==='tools')loadTools(ep,epoch);
|
plus/data-source.json
CHANGED
|
@@ -1,23 +1,26 @@
|
|
| 1 |
{
|
| 2 |
"schema": "programvla/dataset-source/1",
|
| 3 |
"dataset": "RLE-Bench/programmable-vla",
|
| 4 |
-
"revision": "
|
| 5 |
-
"evidence_root": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/
|
| 6 |
"files": {
|
| 7 |
"data.json": {
|
| 8 |
-
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/
|
| 9 |
},
|
| 10 |
"cost-data.json": {
|
| 11 |
-
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/
|
| 12 |
},
|
| 13 |
"measured-instructions.json": {
|
| 14 |
-
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/
|
| 15 |
},
|
| 16 |
"sources.json": {
|
| 17 |
-
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/
|
| 18 |
},
|
| 19 |
"instruction-audit.json": {
|
| 20 |
-
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/
|
|
|
|
|
|
|
|
|
|
| 21 |
}
|
| 22 |
}
|
| 23 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "programvla/dataset-source/1",
|
| 3 |
"dataset": "RLE-Bench/programmable-vla",
|
| 4 |
+
"revision": "b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17",
|
| 5 |
+
"evidence_root": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/",
|
| 6 |
"files": {
|
| 7 |
"data.json": {
|
| 8 |
+
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/research/kinex-rle-20261104/panels/plus/data.json"
|
| 9 |
},
|
| 10 |
"cost-data.json": {
|
| 11 |
+
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/research/kinex-rle-20261104/panels/plus/cost-data.json"
|
| 12 |
},
|
| 13 |
"measured-instructions.json": {
|
| 14 |
+
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/research/kinex-rle-20261104/panels/plus/measured-instructions.json"
|
| 15 |
},
|
| 16 |
"sources.json": {
|
| 17 |
+
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/research/kinex-rle-20261104/panels/plus/sources.json"
|
| 18 |
},
|
| 19 |
"instruction-audit.json": {
|
| 20 |
+
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/research/kinex-rle-20261104/panels/plus/instruction-audit.json"
|
| 21 |
+
},
|
| 22 |
+
"attempt-history.json": {
|
| 23 |
+
"url": "https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/research/kinex-rle-20261104/panels/plus/attempt-history.json"
|
| 24 |
}
|
| 25 |
}
|
| 26 |
}
|
plus/index.html
CHANGED
|
@@ -18,9 +18,9 @@
|
|
| 18 |
<a class="skip" href="#main">Skip to content</a>
|
| 19 |
<header class="site-header"><div class="header-inner"><a class="brand" href="#overview" aria-label="Programmable VLA home"><img src="assets/kinex-logo.svg" width="34" height="34" alt="Kinex"><span>programmable<span class="brand-divider">/</span><span class="brand-benchmark">vla</span></span></a><nav aria-label="Main navigation"><a href="../index.html#overview">Easy</a><a href="../hard/index.html#overview">Hard</a><a href="#overview" data-nav="overview">Plus</a><a href="#tasks" data-nav="tasks">Explore tasks</a><a href="#instructions" data-nav="instructions">Instructions audit</a><a href="#methodology" data-nav="methodology">Protocol</a></nav><a class="header-link" href="https://huggingface.co/spaces/RLE-Bench/programmable-vla" target="_blank" rel="noopener">Hugging Face <span aria-hidden="true">↗</span></a></div></header>
|
| 20 |
<main id="main" tabindex="-1"><div class="loading"><span class="spinner"></span>Loading benchmark results…</div></main>
|
| 21 |
-
<footer class="site-footer"><div><img src="assets/kinex-logo.svg" width="22" height="22" alt=""><strong>Programmable VLA</strong><span class="footer-org">by RLE-Bench</span></div><div><a data-result-file="data.json" href="https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/
|
| 22 |
<dialog id="image-viewer" aria-labelledby="image-caption"><div class="viewer-toolbar"><span id="image-caption"></span><a id="image-original" target="_blank" rel="noopener">Open original ↗</a><button class="icon-button" id="close-viewer" aria-label="Close image">×</button></div><div class="viewer-image"><button id="previous-image" class="viewer-arrow" aria-label="Previous image">←</button><img id="large-image" alt="Recorded agent observation"><button id="next-image" class="viewer-arrow" aria-label="Next image">→</button></div><p>Recorded agent observation · Use ← → to browse · Esc to close</p></dialog>
|
| 23 |
<div id="toast" role="status" aria-live="polite"></div>
|
| 24 |
-
<noscript><p>This site needs JavaScript. <a data-result-file="data.json" href="https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/
|
| 25 |
</body>
|
| 26 |
</html>
|
|
|
|
| 18 |
<a class="skip" href="#main">Skip to content</a>
|
| 19 |
<header class="site-header"><div class="header-inner"><a class="brand" href="#overview" aria-label="Programmable VLA home"><img src="assets/kinex-logo.svg" width="34" height="34" alt="Kinex"><span>programmable<span class="brand-divider">/</span><span class="brand-benchmark">vla</span></span></a><nav aria-label="Main navigation"><a href="../index.html#overview">Easy</a><a href="../hard/index.html#overview">Hard</a><a href="#overview" data-nav="overview">Plus</a><a href="#tasks" data-nav="tasks">Explore tasks</a><a href="#instructions" data-nav="instructions">Instructions audit</a><a href="#methodology" data-nav="methodology">Protocol</a></nav><a class="header-link" href="https://huggingface.co/spaces/RLE-Bench/programmable-vla" target="_blank" rel="noopener">Hugging Face <span aria-hidden="true">↗</span></a></div></header>
|
| 20 |
<main id="main" tabindex="-1"><div class="loading"><span class="spinner"></span>Loading benchmark results…</div></main>
|
| 21 |
+
<footer class="site-footer"><div><img src="assets/kinex-logo.svg" width="22" height="22" alt=""><strong>Programmable VLA</strong><span class="footer-org">by RLE-Bench</span></div><div><a data-result-file="data.json" href="https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/research/kinex-rle-20261104/panels/plus/data.json" target="_blank">Plus results JSON</a><a data-result-file="sources.json" href="https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b07d88579523eeeefdf7ad2ca14ee65340af5d4e/hard/sources.json" target="_blank">Data sources</a><a href="https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b2d67a67dd2f9d8e12c1f8db13ba8de309739883/manifest.json" target="_blank">Manifest</a><span id="updated"></span></div></footer>
|
| 22 |
<dialog id="image-viewer" aria-labelledby="image-caption"><div class="viewer-toolbar"><span id="image-caption"></span><a id="image-original" target="_blank" rel="noopener">Open original ↗</a><button class="icon-button" id="close-viewer" aria-label="Close image">×</button></div><div class="viewer-image"><button id="previous-image" class="viewer-arrow" aria-label="Previous image">←</button><img id="large-image" alt="Recorded agent observation"><button id="next-image" class="viewer-arrow" aria-label="Next image">→</button></div><p>Recorded agent observation · Use ← → to browse · Esc to close</p></dialog>
|
| 23 |
<div id="toast" role="status" aria-live="polite"></div>
|
| 24 |
+
<noscript><p>This site needs JavaScript. <a data-result-file="data.json" href="https://huggingface.co/datasets/RLE-Bench/programmable-vla/resolve/b3d340f7f8b31ec790dd7f12f09cb7127d1bfe17/research/kinex-rle-20261104/panels/plus/data.json">Download the complete results index.</a></p></noscript>
|
| 25 |
</body>
|
| 26 |
</html>
|