Spaces:
Running
Running
Add selectable model cards with saved per-panel preferences
Browse files- app.js +1 -0
- comparison-layout.css +12 -3
- hard/app.js +1 -0
- hard/index.html +3 -2
- index.html +3 -2
- manifest.json +18 -14
- model-cards.js +80 -0
- plus/app.js +1 -0
- plus/index.html +3 -2
app.js
CHANGED
|
@@ -137,6 +137,7 @@ function overview() {
|
|
| 137 |
current={type:'overview'};
|
| 138 |
$('#main').innerHTML=`<section class="hero"><div><div class="eyebrow"><span class="tiny-logo">✦</span> RLE-Bench · Embodied agent evaluation</div><h1>Coding agents.<br><span>Physical tasks.</span></h1><p>Compare native success, token usage and recorded behavior.<br>Every result opens into the full agent session and its evidence.</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>
|
| 139 |
<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 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()}`;
|
|
|
|
| 140 |
renderRows();
|
| 141 |
}
|
| 142 |
function runsPage(variant,params,restoredFilters=null) {
|
|
|
|
| 137 |
current={type:'overview'};
|
| 138 |
$('#main').innerHTML=`<section class="hero"><div><div class="eyebrow"><span class="tiny-logo">✦</span> RLE-Bench · Embodied agent evaluation</div><h1>Coding agents.<br><span>Physical tasks.</span></h1><p>Compare native success, token usage and recorded behavior.<br>Every result opens into the full agent session and its evidence.</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>
|
| 139 |
<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 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()}`;
|
| 140 |
+
ModelCards.mount($('.agent-cards'), 'easy');
|
| 141 |
renderRows();
|
| 142 |
}
|
| 143 |
function runsPage(variant,params,restoredFilters=null) {
|
comparison-layout.css
CHANGED
|
@@ -10,8 +10,8 @@
|
|
| 10 |
.column-picker-actions{display:flex;gap:16px;flex-shrink:0;padding-top:3px}
|
| 11 |
.column-picker-actions button:disabled{opacity:.4;cursor:default;text-decoration:none}
|
| 12 |
.task-column-options{display:flex;flex-wrap:wrap;gap:8px}
|
| 13 |
-
.task-column-toggle{display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid var(--line);border-radius:7px;background:var(--paper,#fff);text-align:left;font-size:11px;line-height:1.5;color:var(--muted)}
|
| 14 |
-
.task-column-toggle:hover{border-color:var(--variant);color:var(--ink)}
|
| 15 |
.task-column-toggle[aria-expanded=true]{border-color:var(--variant);color:var(--ink);background:color-mix(in srgb,var(--variant) 8%,white)}
|
| 16 |
.column-toggle-icon{font-size:16px;line-height:1;color:var(--variant);width:13px;text-align:center;flex-shrink:0}
|
| 17 |
.task-column-label{display:flex;align-items:center;justify-content:center;gap:8px}
|
|
@@ -33,7 +33,7 @@
|
|
| 33 |
.task-column-picker{padding:16px}
|
| 34 |
.column-picker-heading{flex-direction:column;gap:10px}
|
| 35 |
.task-column-options{gap:7px}
|
| 36 |
-
.task-column-toggle{font-size:11px;padding:8px 10px}
|
| 37 |
.task-browser .filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
|
| 38 |
.task-browser .filters .search-field{grid-column:1/-1;min-width:0}
|
| 39 |
.task-browser .filters select{width:100%;max-width:100%;font-size:11px}
|
|
@@ -44,3 +44,12 @@
|
|
| 44 |
.task-column-label{font-size:11px}
|
| 45 |
.comparison-total>th{background:var(--lavender,#f4f3fc)!important}
|
| 46 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
.column-picker-actions{display:flex;gap:16px;flex-shrink:0;padding-top:3px}
|
| 11 |
.column-picker-actions button:disabled{opacity:.4;cursor:default;text-decoration:none}
|
| 12 |
.task-column-options{display:flex;flex-wrap:wrap;gap:8px}
|
| 13 |
+
.task-column-toggle,.model-card-toggle{display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid var(--line);border-radius:7px;background:var(--paper,#fff);text-align:left;font-size:11px;line-height:1.5;color:var(--muted)}
|
| 14 |
+
.task-column-toggle:hover,.model-card-toggle:hover{border-color:var(--variant);color:var(--ink)}
|
| 15 |
.task-column-toggle[aria-expanded=true]{border-color:var(--variant);color:var(--ink);background:color-mix(in srgb,var(--variant) 8%,white)}
|
| 16 |
.column-toggle-icon{font-size:16px;line-height:1;color:var(--variant);width:13px;text-align:center;flex-shrink:0}
|
| 17 |
.task-column-label{display:flex;align-items:center;justify-content:center;gap:8px}
|
|
|
|
| 33 |
.task-column-picker{padding:16px}
|
| 34 |
.column-picker-heading{flex-direction:column;gap:10px}
|
| 35 |
.task-column-options{gap:7px}
|
| 36 |
+
.task-column-toggle,.model-card-toggle{font-size:11px;padding:8px 10px}
|
| 37 |
.task-browser .filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
|
| 38 |
.task-browser .filters .search-field{grid-column:1/-1;min-width:0}
|
| 39 |
.task-browser .filters select{width:100%;max-width:100%;font-size:11px}
|
|
|
|
| 44 |
.task-column-label{font-size:11px}
|
| 45 |
.comparison-total>th{background:var(--lavender,#f4f3fc)!important}
|
| 46 |
}
|
| 47 |
+
/* Model-card controls share the task column selector's visual language. */
|
| 48 |
+
.model-card-picker{padding:20px 22px;margin-bottom:18px}
|
| 49 |
+
.model-card-picker h2{font-size:14px;font-weight:600;line-height:1.6}
|
| 50 |
+
.model-card-toggle{cursor:pointer}
|
| 51 |
+
.model-card-toggle input{width:15px;height:15px;margin:0;flex-shrink:0;accent-color:var(--variant)}
|
| 52 |
+
.model-card-toggle.selected{border-color:var(--variant);color:var(--ink);background:color-mix(in srgb,var(--variant) 8%,white)}
|
| 53 |
+
.model-card-toggle:focus-within{outline:2px solid var(--variant);outline-offset:2px}
|
| 54 |
+
.agent-card[hidden],.agent-cards[hidden]{display:none}
|
| 55 |
+
@media(max-width:600px){.model-card-picker{padding:16px}}
|
hard/app.js
CHANGED
|
@@ -162,6 +162,7 @@ function overview() {
|
|
| 162 |
current={type:'overview'};
|
| 163 |
$('#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>Kinex and the paired Kinex + VLA study use RLE revised instructions; four standalone 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>
|
| 164 |
${researchRerunNote()}${recordingPilotProgress()}${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 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()}`;
|
|
|
|
| 165 |
renderRows();
|
| 166 |
}
|
| 167 |
function runsPage(variant,params,restoredFilters=null) {
|
|
|
|
| 162 |
current={type:'overview'};
|
| 163 |
$('#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>Kinex and the paired Kinex + VLA study use RLE revised instructions; four standalone 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>
|
| 164 |
${researchRerunNote()}${recordingPilotProgress()}${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 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()}`;
|
| 165 |
+
ModelCards.mount($('.agent-cards'), 'hard');
|
| 166 |
renderRows();
|
| 167 |
}
|
| 168 |
function runsPage(variant,params,restoredFilters=null) {
|
hard/index.html
CHANGED
|
@@ -10,10 +10,11 @@
|
|
| 10 |
<link rel="stylesheet" href="style.css?v=bd1a59147e1d">
|
| 11 |
<script src="usage-metrics.js?v=330e92f8eb96" defer></script>
|
| 12 |
<script src="../instruction-audit.js?v=7b5e9a418dec" defer></script>
|
| 13 |
-
<script src="
|
|
|
|
| 14 |
<link rel="stylesheet" href="policy.css">
|
| 15 |
<link rel="stylesheet" href="../instruction-audit.css?v=43163fc879ed">
|
| 16 |
-
<link rel="stylesheet" href="../comparison-layout.css?v=
|
| 17 |
</head>
|
| 18 |
<body>
|
| 19 |
<a class="skip" href="#main">Skip to content</a>
|
|
|
|
| 10 |
<link rel="stylesheet" href="style.css?v=bd1a59147e1d">
|
| 11 |
<script src="usage-metrics.js?v=330e92f8eb96" defer></script>
|
| 12 |
<script src="../instruction-audit.js?v=7b5e9a418dec" defer></script>
|
| 13 |
+
<script src="../model-cards.js?v=7e115b1b03ae" defer></script>
|
| 14 |
+
<script src="app.js?v=f3726a435e5a" defer></script>
|
| 15 |
<link rel="stylesheet" href="policy.css">
|
| 16 |
<link rel="stylesheet" href="../instruction-audit.css?v=43163fc879ed">
|
| 17 |
+
<link rel="stylesheet" href="../comparison-layout.css?v=359bdb6df354">
|
| 18 |
</head>
|
| 19 |
<body>
|
| 20 |
<a class="skip" href="#main">Skip to content</a>
|
index.html
CHANGED
|
@@ -10,10 +10,11 @@
|
|
| 10 |
<link rel="stylesheet" href="style.css?v=bd1a59147e1d">
|
| 11 |
<script src="usage-metrics.js?v=330e92f8eb96" defer></script>
|
| 12 |
<script src="instruction-audit.js?v=7b5e9a418dec" defer></script>
|
| 13 |
-
<script src="
|
|
|
|
| 14 |
<link rel="stylesheet" href="policy.css">
|
| 15 |
<link rel="stylesheet" href="instruction-audit.css?v=43163fc879ed">
|
| 16 |
-
<link rel="stylesheet" href="comparison-layout.css?v=
|
| 17 |
</head>
|
| 18 |
<body>
|
| 19 |
<a class="skip" href="#main">Skip to content</a>
|
|
|
|
| 10 |
<link rel="stylesheet" href="style.css?v=bd1a59147e1d">
|
| 11 |
<script src="usage-metrics.js?v=330e92f8eb96" defer></script>
|
| 12 |
<script src="instruction-audit.js?v=7b5e9a418dec" defer></script>
|
| 13 |
+
<script src="model-cards.js?v=7e115b1b03ae" defer></script>
|
| 14 |
+
<script src="app.js?v=f71de61b433f" defer></script>
|
| 15 |
<link rel="stylesheet" href="policy.css">
|
| 16 |
<link rel="stylesheet" href="instruction-audit.css?v=43163fc879ed">
|
| 17 |
+
<link rel="stylesheet" href="comparison-layout.css?v=359bdb6df354">
|
| 18 |
</head>
|
| 19 |
<body>
|
| 20 |
<a class="skip" href="#main">Skip to content</a>
|
manifest.json
CHANGED
|
@@ -11,8 +11,8 @@
|
|
| 11 |
"sha256": "43163fc879edcc6dcc6e3c6bc1faa058d1ac3fd914fcb05302c5ca08640ef7d5"
|
| 12 |
},
|
| 13 |
"app.js": {
|
| 14 |
-
"bytes":
|
| 15 |
-
"sha256": "
|
| 16 |
},
|
| 17 |
"history-app.js": {
|
| 18 |
"bytes": 87082,
|
|
@@ -43,8 +43,8 @@
|
|
| 43 |
"sha256": "8b0691838063224bce2a991d7bb0672897ef8f51bbc39ce38afb4a67cb6e39d0"
|
| 44 |
},
|
| 45 |
"index.html": {
|
| 46 |
-
"bytes":
|
| 47 |
-
"sha256": "
|
| 48 |
},
|
| 49 |
"policy.css": {
|
| 50 |
"bytes": 1067,
|
|
@@ -99,8 +99,8 @@
|
|
| 99 |
"sha256": "a53108594a23b740fbb08623f6fffdda1d73608b552988a9ffda9f0944ae66a1"
|
| 100 |
},
|
| 101 |
"hard/app.js": {
|
| 102 |
-
"bytes":
|
| 103 |
-
"sha256": "
|
| 104 |
},
|
| 105 |
"hard/icon.svg": {
|
| 106 |
"bytes": 725,
|
|
@@ -111,8 +111,8 @@
|
|
| 111 |
"sha256": "330e92f8eb9670cb506f2909a2a47ee8f0bd569199898df3bfa044239ae64161"
|
| 112 |
},
|
| 113 |
"hard/index.html": {
|
| 114 |
-
"bytes":
|
| 115 |
-
"sha256": "
|
| 116 |
},
|
| 117 |
"hard/policy.css": {
|
| 118 |
"bytes": 1067,
|
|
@@ -127,8 +127,8 @@
|
|
| 127 |
"sha256": "23354b68f8b32d82eb6a4a0cac7432ff4d1f18351d9b757d70b99a705f556597"
|
| 128 |
},
|
| 129 |
"plus/app.js": {
|
| 130 |
-
"bytes":
|
| 131 |
-
"sha256": "
|
| 132 |
},
|
| 133 |
"plus/icon.svg": {
|
| 134 |
"bytes": 725,
|
|
@@ -139,8 +139,8 @@
|
|
| 139 |
"sha256": "330e92f8eb9670cb506f2909a2a47ee8f0bd569199898df3bfa044239ae64161"
|
| 140 |
},
|
| 141 |
"plus/index.html": {
|
| 142 |
-
"bytes":
|
| 143 |
-
"sha256": "
|
| 144 |
},
|
| 145 |
"plus/policy.css": {
|
| 146 |
"bytes": 1067,
|
|
@@ -231,8 +231,12 @@
|
|
| 231 |
"sha256": "63cef0604b0afd9b163634068b1c8aaaf3285e60e4bed3809f1ebe0d60552b13"
|
| 232 |
},
|
| 233 |
"comparison-layout.css": {
|
| 234 |
-
"bytes":
|
| 235 |
-
"sha256": "
|
|
|
|
|
|
|
|
|
|
|
|
|
| 236 |
}
|
| 237 |
},
|
| 238 |
"hard_dataset": {
|
|
|
|
| 11 |
"sha256": "43163fc879edcc6dcc6e3c6bc1faa058d1ac3fd914fcb05302c5ca08640ef7d5"
|
| 12 |
},
|
| 13 |
"app.js": {
|
| 14 |
+
"bytes": 90488,
|
| 15 |
+
"sha256": "f71de61b433f0fc697cebd64de61946f3f7dcb78dc4a004999d036e8f45033f0"
|
| 16 |
},
|
| 17 |
"history-app.js": {
|
| 18 |
"bytes": 87082,
|
|
|
|
| 43 |
"sha256": "8b0691838063224bce2a991d7bb0672897ef8f51bbc39ce38afb4a67cb6e39d0"
|
| 44 |
},
|
| 45 |
"index.html": {
|
| 46 |
+
"bytes": 3737,
|
| 47 |
+
"sha256": "ef983eb864632472732fcdd442f42721e6012b3baf387455a47c9a836a04282d"
|
| 48 |
},
|
| 49 |
"policy.css": {
|
| 50 |
"bytes": 1067,
|
|
|
|
| 99 |
"sha256": "a53108594a23b740fbb08623f6fffdda1d73608b552988a9ffda9f0944ae66a1"
|
| 100 |
},
|
| 101 |
"hard/app.js": {
|
| 102 |
+
"bytes": 96965,
|
| 103 |
+
"sha256": "f3726a435e5a27b4e5d1a91cf5595ebf2a596c09d3b880e091abda3d9b444294"
|
| 104 |
},
|
| 105 |
"hard/icon.svg": {
|
| 106 |
"bytes": 725,
|
|
|
|
| 111 |
"sha256": "330e92f8eb9670cb506f2909a2a47ee8f0bd569199898df3bfa044239ae64161"
|
| 112 |
},
|
| 113 |
"hard/index.html": {
|
| 114 |
+
"bytes": 3778,
|
| 115 |
+
"sha256": "20effb13ec316f38bd30abbeb11448325489a8ef11fd69ba8111c63a4d43b208"
|
| 116 |
},
|
| 117 |
"hard/policy.css": {
|
| 118 |
"bytes": 1067,
|
|
|
|
| 127 |
"sha256": "23354b68f8b32d82eb6a4a0cac7432ff4d1f18351d9b757d70b99a705f556597"
|
| 128 |
},
|
| 129 |
"plus/app.js": {
|
| 130 |
+
"bytes": 96794,
|
| 131 |
+
"sha256": "71a4927bc597ddbb4e58dcb344e191a1dbd3ae1e3808781f5007a9764417e8f1"
|
| 132 |
},
|
| 133 |
"plus/icon.svg": {
|
| 134 |
"bytes": 725,
|
|
|
|
| 139 |
"sha256": "330e92f8eb9670cb506f2909a2a47ee8f0bd569199898df3bfa044239ae64161"
|
| 140 |
},
|
| 141 |
"plus/index.html": {
|
| 142 |
+
"bytes": 3773,
|
| 143 |
+
"sha256": "5ebf6595592196b0538bfc5670085958744e68cf4389026959eee43a11f25c7a"
|
| 144 |
},
|
| 145 |
"plus/policy.css": {
|
| 146 |
"bytes": 1067,
|
|
|
|
| 231 |
"sha256": "63cef0604b0afd9b163634068b1c8aaaf3285e60e4bed3809f1ebe0d60552b13"
|
| 232 |
},
|
| 233 |
"comparison-layout.css": {
|
| 234 |
+
"bytes": 4387,
|
| 235 |
+
"sha256": "359bdb6df354c6ff81e167720d5e1898724483e28a84dcfd6d49dd90380f2b7e"
|
| 236 |
+
},
|
| 237 |
+
"model-cards.js": {
|
| 238 |
+
"bytes": 3400,
|
| 239 |
+
"sha256": "7e115b1b03ae5c273e579aa93603199db23060d7b8af764ade90199bf47dfc4a"
|
| 240 |
}
|
| 241 |
},
|
| 242 |
"hard_dataset": {
|
model-cards.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/* Model-card visibility is saved separately for each benchmark panel. */
|
| 2 |
+
window.ModelCards = (() => {
|
| 3 |
+
const selections = new Map();
|
| 4 |
+
|
| 5 |
+
function mount(grid, panel) {
|
| 6 |
+
const storageKey = `programvla:model-cards:${panel}`;
|
| 7 |
+
if (!selections.has(panel)) {
|
| 8 |
+
let saved = [];
|
| 9 |
+
try {
|
| 10 |
+
const value = JSON.parse(localStorage.getItem(storageKey));
|
| 11 |
+
if (Array.isArray(value)) saved = value.filter(id => typeof id === 'string');
|
| 12 |
+
} catch {}
|
| 13 |
+
selections.set(panel, new Set(saved));
|
| 14 |
+
}
|
| 15 |
+
const hidden = selections.get(panel);
|
| 16 |
+
const picker = document.createElement('section');
|
| 17 |
+
picker.className = 'panel model-card-picker';
|
| 18 |
+
picker.setAttribute('aria-labelledby', 'model-card-picker-title');
|
| 19 |
+
picker.innerHTML = `<div class="column-picker-heading"><div>
|
| 20 |
+
<h2 id="model-card-picker-title">Models to display</h2>
|
| 21 |
+
<p id="model-card-status" role="status"></p>
|
| 22 |
+
</div><div class="column-picker-actions">
|
| 23 |
+
<button type="button" class="text-button" data-model-cards="all">Show all</button>
|
| 24 |
+
<button type="button" class="text-button" data-model-cards="none">Hide all</button>
|
| 25 |
+
</div></div><div class="task-column-options" role="group" aria-label="Models to display"></div>`;
|
| 26 |
+
const options = picker.querySelector('.task-column-options');
|
| 27 |
+
const items = [...grid.querySelectorAll('.agent-card')].map(card => {
|
| 28 |
+
const id = card.getAttribute('href').slice('#runs/'.length);
|
| 29 |
+
card.id = `model-card-${id}`;
|
| 30 |
+
const label = document.createElement('label');
|
| 31 |
+
label.className = 'model-card-toggle';
|
| 32 |
+
label.style.setProperty('--variant', card.style.getPropertyValue('--variant'));
|
| 33 |
+
label.title = card.querySelector('.card-model').textContent.trim();
|
| 34 |
+
const input = document.createElement('input');
|
| 35 |
+
input.type = 'checkbox';
|
| 36 |
+
input.value = id;
|
| 37 |
+
input.setAttribute('aria-controls', card.id);
|
| 38 |
+
const name = document.createElement('span');
|
| 39 |
+
name.textContent = card.querySelector('.agent-name').textContent.trim();
|
| 40 |
+
label.append(input, name);
|
| 41 |
+
options.append(label);
|
| 42 |
+
input.addEventListener('change', () => {
|
| 43 |
+
if (input.checked) hidden.delete(id); else hidden.add(id);
|
| 44 |
+
update(true);
|
| 45 |
+
});
|
| 46 |
+
return {id, card, input, label};
|
| 47 |
+
});
|
| 48 |
+
|
| 49 |
+
function update(save = false) {
|
| 50 |
+
let count = 0;
|
| 51 |
+
for (const {id, card, input, label} of items) {
|
| 52 |
+
const visible = !hidden.has(id);
|
| 53 |
+
card.hidden = !visible;
|
| 54 |
+
input.checked = visible;
|
| 55 |
+
label.classList.toggle('selected', visible);
|
| 56 |
+
if (visible) count++;
|
| 57 |
+
}
|
| 58 |
+
grid.hidden = count === 0;
|
| 59 |
+
picker.querySelector('#model-card-status').textContent = `${count} of ${items.length} model cards shown`;
|
| 60 |
+
picker.querySelector('[data-model-cards="all"]').disabled = count === items.length;
|
| 61 |
+
picker.querySelector('[data-model-cards="none"]').disabled = count === 0;
|
| 62 |
+
if (save) {
|
| 63 |
+
try { localStorage.setItem(storageKey, JSON.stringify([...hidden])); } catch {}
|
| 64 |
+
}
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
picker.addEventListener('click', event => {
|
| 68 |
+
const button = event.target.closest('[data-model-cards]');
|
| 69 |
+
if (!button) return;
|
| 70 |
+
for (const {id} of items) {
|
| 71 |
+
if (button.dataset.modelCards === 'all') hidden.delete(id); else hidden.add(id);
|
| 72 |
+
}
|
| 73 |
+
update(true);
|
| 74 |
+
});
|
| 75 |
+
grid.before(picker);
|
| 76 |
+
update();
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
return {mount};
|
| 80 |
+
})();
|
plus/app.js
CHANGED
|
@@ -161,6 +161,7 @@ function overview() {
|
|
| 161 |
current={type:'overview'};
|
| 162 |
$('#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>
|
| 163 |
${researchRerunNote()}${recordingPilotProgress()}${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 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()}`;
|
|
|
|
| 164 |
renderRows();
|
| 165 |
}
|
| 166 |
function runsPage(variant,params,restoredFilters=null) {
|
|
|
|
| 161 |
current={type:'overview'};
|
| 162 |
$('#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>
|
| 163 |
${researchRerunNote()}${recordingPilotProgress()}${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 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()}`;
|
| 164 |
+
ModelCards.mount($('.agent-cards'), 'plus');
|
| 165 |
renderRows();
|
| 166 |
}
|
| 167 |
function runsPage(variant,params,restoredFilters=null) {
|
plus/index.html
CHANGED
|
@@ -10,10 +10,11 @@
|
|
| 10 |
<link rel="stylesheet" href="style.css?v=bd1a59147e1d">
|
| 11 |
<script src="usage-metrics.js?v=330e92f8eb96" defer></script>
|
| 12 |
<script src="../instruction-audit.js?v=7b5e9a418dec" defer></script>
|
| 13 |
-
<script src="
|
|
|
|
| 14 |
<link rel="stylesheet" href="policy.css">
|
| 15 |
<link rel="stylesheet" href="../instruction-audit.css?v=43163fc879ed">
|
| 16 |
-
<link rel="stylesheet" href="../comparison-layout.css?v=
|
| 17 |
</head>
|
| 18 |
<body>
|
| 19 |
<a class="skip" href="#main">Skip to content</a>
|
|
|
|
| 10 |
<link rel="stylesheet" href="style.css?v=bd1a59147e1d">
|
| 11 |
<script src="usage-metrics.js?v=330e92f8eb96" defer></script>
|
| 12 |
<script src="../instruction-audit.js?v=7b5e9a418dec" defer></script>
|
| 13 |
+
<script src="../model-cards.js?v=7e115b1b03ae" defer></script>
|
| 14 |
+
<script src="app.js?v=71a4927bc597" defer></script>
|
| 15 |
<link rel="stylesheet" href="policy.css">
|
| 16 |
<link rel="stylesheet" href="../instruction-audit.css?v=43163fc879ed">
|
| 17 |
+
<link rel="stylesheet" href="../comparison-layout.css?v=359bdb6df354">
|
| 18 |
</head>
|
| 19 |
<body>
|
| 20 |
<a class="skip" href="#main">Skip to content</a>
|