Download model.js from RLE-Bench/chemlab-integration-acceptance: direct link, hf CLI and curl.
- Browser
- Download file 8.27 kB
-
https://huggingface.co/spaces/RLE-Bench/chemlab-integration-acceptance/resolve/main/model.js
- Command line
-
hf download hf://spaces/RLE-Bench/chemlab-integration-acceptance/model.js
-
curl -L -o model.js https://huggingface.co/spaces/RLE-Bench/chemlab-integration-acceptance/resolve/main/model.js
8.27 kB
| ; | |
| async function loadModelResults(legacy) { | |
| const response = await fetch('model-source.json'); | |
| if (!response.ok) throw Error('Model result version is unavailable.'); | |
| const pin = await response.json(); | |
| if (!/^[a-f0-9]{40}$/.test(pin.revision) || !/^[a-f0-9]{64}$/.test(pin.sha256)) throw Error('Invalid model result version.'); | |
| const root = `https://huggingface.co/datasets/${pin.repo}/resolve/${pin.revision}/`; | |
| const res = await fetch(root + pin.path); if (!res.ok) throw Error('Model results are unavailable.'); | |
| const bytes = await res.arrayBuffer(); | |
| const digest = Array.from(new Uint8Array(await crypto.subtle.digest('SHA-256', bytes)), x => x.toString(16).padStart(2, '0')).join(''); | |
| if (digest !== pin.sha256) throw Error('Model result checksum mismatch.'); | |
| const data = JSON.parse(new TextDecoder().decode(bytes)); | |
| if (data.schema !== 'chemlab/model-evaluation/1' || data.tasks.length !== 4 || !data.complete) throw Error('Model evaluation is not complete.'); | |
| const oldTasks = [...document.querySelector('#tasks').children]; | |
| const oldMetrics = [...document.querySelector('.overview-metrics').children]; | |
| const mode = el('div', undefined, 'result-modes'); mode.setAttribute('role','group'); mode.setAttribute('aria-label','Result set'); | |
| const description = el('p', undefined, 'result-description'); | |
| document.querySelector('#overview').before(mode, description); | |
| const buttons = {}; | |
| for (const [key,label] of [['model','GPT-6 Astra'],['scripted','Scripted acceptance']]) { | |
| const b = el('button',label); b.type='button'; b.dataset.mode=key; mode.append(b); buttons[key]=b; | |
| b.addEventListener('click',()=>select(key)); | |
| } | |
| const modelTasks = data.tasks.map(task => { | |
| const card = nativeCard({native_success:task.native_success},root,task,{video:root+task.media.video,poster:root+task.media.poster}); | |
| const jump=el('button','First command','jump-command');jump.type='button';jump.addEventListener('click',()=>{const v=card.querySelector('video');v.currentTime=Math.max(0,task.first_command_time_s-0.5);});card.querySelector('.player-controls').prepend(jump); | |
| if(task.slug.startsWith('02-'))card.querySelector('.split-labels span:last-child').textContent='Native screen + runtime readout'; | |
| card.querySelector('.task-metrics').replaceChildren(metric('Model responses',task.model_responses),metric('Instrument commands',task.commands.length),metric('Simulation time',`${task.simulation_seconds.toFixed(1)} s`)); | |
| const detail=el('button','Task & model trace'); detail.type='button'; detail.addEventListener('click',()=>showModelTask(task,root)); | |
| card.querySelector('.links').replaceChildren(detail); return card; | |
| }); | |
| const modelMetrics = [metric('Tasks passed',`${data.tasks.filter(t=>t.native_success).length} / 4`),metric('Evidence valid',`${data.tasks.filter(t=>t.evidence_valid).length} / 4`),metric('Usage complete',`${data.tasks.filter(t=>t.usage.audit_complete).length} / 4`),metric('Attempts per task','1')]; | |
| function select(key) { | |
| for(const video of document.querySelectorAll('video')) video.pause(); | |
| for(const [k,b]of Object.entries(buttons)) b.setAttribute('aria-pressed',String(k===key)); | |
| const model=key==='model'; | |
| document.querySelector('#tasks').replaceChildren(...(model?modelTasks:oldTasks)); | |
| document.querySelector('.overview-metrics').replaceChildren(...(model?modelMetrics:oldMetrics)); | |
| document.querySelector('.hero .context').textContent=model?'Kinex + GPT-6 Astra · high · realtime · seed 0':'Scripted acceptance · realtime · no model calls'; | |
| document.querySelector('#task-heading').textContent=model?'Model runs':'Scripted acceptance runs'; | |
| description.textContent=model?'Four independent instrument tasks · no robot · one attempt each':'Earlier scripted checks of the instrument pipeline and asset runtime.'; | |
| document.documentElement.dataset.resultMode=key; | |
| } | |
| const provenance=document.querySelector('#provenance-content'); | |
| const block=el('div');block.append(el('h3','GPT-6 Astra evaluation')); | |
| const limits=el('ul');for(const text of data.limits) limits.append(el('li',text));block.append(limits); | |
| block.append(el('p','Native success, evidence validity and usage completeness are checked separately. Videos contain the original run; command replays validate terminal state and scene bindings, not per-frame trajectory restoration.')); | |
| const links=el('div',undefined,'links');links.append(link('RLE implementation PR ↗','https://github.com/stacx-lab/RLE-Bench-inhouse/pull/6'),link('Model result index ↗',root+pin.path),link('Model file manifest ↗',root+pin.path.replace('index.json','manifest.json')));block.append(links); | |
| provenance.prepend(block);select('model'); | |
| } | |
| function showModelTask(task,root){ | |
| document.querySelector('#detail-title').textContent=task.title; | |
| details.replaceChildren(el('p',task.instruction,'instruction')); | |
| details.append(el('p',`Original task instruction · seed 0 · attempt 1 · ${task.frames} native frames · ${task.agent_wall_seconds.toFixed(1)} s agent runtime`,'muted')); | |
| const table=el('table');const tr=el('tr');for(const label of ['Condition','Initial','Final','Target'])tr.append(el('th',label));table.append(tr); | |
| for(const g of task.goals){const row=el('tr');for(const value of [labels[g.state]??g.state,measurement(g.initial,g.unit,g.state),measurement(g.final,g.unit,g.state),target(g)])row.append(el('td',value));table.append(row);} | |
| const wrap=el('div',undefined,'table-wrap');wrap.append(table);details.append(wrap); | |
| details.append(el('p',`Native: ${task.native_success?'success':'failure'} · Evidence: ${task.evidence_valid?'valid':'invalid'} · Execution: ${task.execution.status} · Usage: ${task.usage.audit_complete?'complete':'incomplete'}`)); | |
| details.append(el('p',`${task.model_responses} model responses · ${task.model_tool_calls} model tool calls · ${task.commands.length} instrument commands · ${task.owner_rpc_attempts} owner RPC attempts`)); | |
| details.append(el('p',`Tokens: ${task.usage.fresh_input_tokens.toLocaleString()} fresh input + ${task.usage.cached_input_tokens.toLocaleString()} cached input + ${task.usage.output_tokens.toLocaleString()} output. Provider cost unavailable.`)); | |
| details.append(el('h3','Instrument commands')); | |
| for(const c of task.commands){const row=el('div',undefined,'command');row.append(el('strong',`${c.capability} · frame ${c.frame}`),el('pre',JSON.stringify(c.arguments,null,2)),el('span',c.status,'command-status'));details.append(row);} | |
| details.append(el('h3','Assessment')); | |
| details.append(el('p',task.analysis.summary_zh??task.analysis.difficulty,'model-analysis')); | |
| details.append(el('p',`Selection: ${task.analysis.recommendation}. ${task.analysis.rsi_hypothesis}`)); | |
| details.append(el('p',task.replay?`Command replay: ${task.replay.passed?'passed':'failed'} · rendered scene: ${task.replay.scene_matched?'matched':'not verified'}`:'Command replay: not run.')); | |
| const links=el('div',undefined,'links'); | |
| for(const [k,label]of [['record','Owner state'],['terminal','Native verdict'],['session','Full session'],['usage','Usage audit'],['journal','Owner journal'],['definition','Task YAML'],['media','Video checks']])links.append(link(label+' ↗',root+task.evidence[k])); | |
| if(task.replay)links.append(link('Replay receipt ↗',root+task.evidence.replay)); | |
| for(const path of task.media.extra_views)links.append(link('Additional readout video ↗',root+path));details.append(links); | |
| const trace=el('details',undefined,'session-details');trace.append(el('summary','Model conversation & tool I/O'));const body=el('div',undefined,'model-trace');trace.append(body);details.append(trace); | |
| trace.addEventListener('toggle',async()=>{ | |
| if(!trace.open||trace.dataset.loaded)return;trace.dataset.loaded='true';body.textContent='Loading conversation…'; | |
| try{const r=await fetch(root+task.evidence.trace);if(!r.ok)throw Error('Trace unavailable');const d=await r.json();body.replaceChildren(); | |
| for(const m of d.messages){const entry=el('details',undefined,'message');entry.append(el('summary',`${m.role} · ${m.timestamp??''}`),el('pre',JSON.stringify(m.parts,null,2)));body.append(entry);} | |
| }catch(e){body.textContent=e.message;} | |
| });dialog.showModal(); | |
| } | |