Spaces:
Running
Running
Show concise agent version labels
Browse files- agent-versions.json +10 -10
- app.js +2 -1
- hard/app.js +2 -2
- hard/index.html +1 -1
- index.html +1 -1
- manifest.json +11 -11
- plus/app.js +2 -2
- plus/index.html +1 -1
agent-versions.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
"sources": {
|
| 4 |
"research/kinex-rle-20261104/source-identities.json": {
|
| 5 |
"kinex": {
|
| 6 |
-
"label": "Kinex
|
| 7 |
"revision": "bb4a5cae219acaf5241ec3e00c73e582c344601c",
|
| 8 |
"version": "1.1.0",
|
| 9 |
"source_fingerprint_sha256": "aa20d8e080a744412f9b76ef29d60e5c11613b118cfd4a15e7bd4b189ccb0ff4",
|
|
@@ -12,7 +12,7 @@
|
|
| 12 |
},
|
| 13 |
"research/agent-protocols-20261105/source-identities.json": {
|
| 14 |
"kinex": {
|
| 15 |
-
"label": "Kinex
|
| 16 |
"revision": "bb4a5cae219acaf5241ec3e00c73e582c344601c",
|
| 17 |
"version": "1.1.0",
|
| 18 |
"source_fingerprint_sha256": "dedaa45481ff62ff08684f77b91c9ea368740595f635fba074ed4c32fdda3842",
|
|
@@ -21,48 +21,48 @@
|
|
| 21 |
},
|
| 22 |
"research/robotwin-hard-20261101/source-identities.json": {
|
| 23 |
"standalone-official": {
|
| 24 |
-
"label": "Qwen3-VL-OFT 40k
|
| 25 |
"revision": "e9cdfc38a0db968bf3a865bcb542d3d455952226",
|
| 26 |
"detail": "StarVLA/Qwen3-VL-OFT-Robotwin2@e9cdfc38a0db968bf3a865bcb542d3d455952226"
|
| 27 |
},
|
| 28 |
"standalone-vlact-clean": {
|
| 29 |
-
"label": "VLAct Qwen3-VL-OFT 50k
|
| 30 |
"revision": "dcf0f1d7239b28ae81a039c8d05bdfcd1d4792a5",
|
| 31 |
"detail": "StarVLA/VLAct_Qwen3OFT_Robotwin_Finetune@dcf0f1d7239b28ae81a039c8d05bdfcd1d4792a5"
|
| 32 |
},
|
| 33 |
"standalone-vlact-all": {
|
| 34 |
-
"label": "VLAct Qwen3-VL-OFT 100k
|
| 35 |
"revision": "999b37d4d7c1bd0f5588f78d72a185f6f052bf83",
|
| 36 |
"detail": "StarVLA/VLAct_Qwen3OFT_Robotwin_all_Finetune@999b37d4d7c1bd0f5588f78d72a185f6f052bf83"
|
| 37 |
}
|
| 38 |
},
|
| 39 |
"robotwin-plus/20261101-native/source-identities.json": {
|
| 40 |
"standalone-official": {
|
| 41 |
-
"label": "Qwen3-VL-OFT 40k
|
| 42 |
"revision": "e9cdfc38a0db968bf3a865bcb542d3d455952226",
|
| 43 |
"detail": "StarVLA/Qwen3-VL-OFT-Robotwin2@e9cdfc38a0db968bf3a865bcb542d3d455952226"
|
| 44 |
},
|
| 45 |
"standalone-vlact-clean": {
|
| 46 |
-
"label": "VLAct Qwen3-VL-OFT 50k
|
| 47 |
"revision": "dcf0f1d7239b28ae81a039c8d05bdfcd1d4792a5",
|
| 48 |
"detail": "StarVLA/VLAct_Qwen3OFT_Robotwin_Finetune@dcf0f1d7239b28ae81a039c8d05bdfcd1d4792a5"
|
| 49 |
},
|
| 50 |
"standalone-vlact-all": {
|
| 51 |
-
"label": "VLAct Qwen3-VL-OFT 100k
|
| 52 |
"revision": "999b37d4d7c1bd0f5588f78d72a185f6f052bf83",
|
| 53 |
"detail": "StarVLA/VLAct_Qwen3OFT_Robotwin_all_Finetune@999b37d4d7c1bd0f5588f78d72a185f6f052bf83"
|
| 54 |
}
|
| 55 |
},
|
| 56 |
"robotwin-plus/20261101-native/recovery/receipt.json": {
|
| 57 |
"standalone-vlact-all": {
|
| 58 |
-
"label": "VLAct Qwen3-VL-OFT 100k
|
| 59 |
"revision": "999b37d4d7c1bd0f5588f78d72a185f6f052bf83",
|
| 60 |
"detail": "StarVLA/VLAct_Qwen3OFT_Robotwin_all_Finetune@999b37d4d7c1bd0f5588f78d72a185f6f052bf83"
|
| 61 |
}
|
| 62 |
},
|
| 63 |
"research/oft-all140k-20261103/source-identities.json": {
|
| 64 |
"standalone-oft-all140k": {
|
| 65 |
-
"label": "Qwen3-VL-OFT 140k
|
| 66 |
"revision": "9fae49581755f57944ec57f6787d214c0c0143f5",
|
| 67 |
"detail": "StarVLA/Qwen3-VL-OFT-RoboTwin2-All@9fae49581755f57944ec57f6787d214c0c0143f5"
|
| 68 |
}
|
|
|
|
| 3 |
"sources": {
|
| 4 |
"research/kinex-rle-20261104/source-identities.json": {
|
| 5 |
"kinex": {
|
| 6 |
+
"label": "Kinex v1.1.0",
|
| 7 |
"revision": "bb4a5cae219acaf5241ec3e00c73e582c344601c",
|
| 8 |
"version": "1.1.0",
|
| 9 |
"source_fingerprint_sha256": "aa20d8e080a744412f9b76ef29d60e5c11613b118cfd4a15e7bd4b189ccb0ff4",
|
|
|
|
| 12 |
},
|
| 13 |
"research/agent-protocols-20261105/source-identities.json": {
|
| 14 |
"kinex": {
|
| 15 |
+
"label": "Kinex v1.1.0",
|
| 16 |
"revision": "bb4a5cae219acaf5241ec3e00c73e582c344601c",
|
| 17 |
"version": "1.1.0",
|
| 18 |
"source_fingerprint_sha256": "dedaa45481ff62ff08684f77b91c9ea368740595f635fba074ed4c32fdda3842",
|
|
|
|
| 21 |
},
|
| 22 |
"research/robotwin-hard-20261101/source-identities.json": {
|
| 23 |
"standalone-official": {
|
| 24 |
+
"label": "Qwen3-VL-OFT 40k",
|
| 25 |
"revision": "e9cdfc38a0db968bf3a865bcb542d3d455952226",
|
| 26 |
"detail": "StarVLA/Qwen3-VL-OFT-Robotwin2@e9cdfc38a0db968bf3a865bcb542d3d455952226"
|
| 27 |
},
|
| 28 |
"standalone-vlact-clean": {
|
| 29 |
+
"label": "VLAct Qwen3-VL-OFT 50k",
|
| 30 |
"revision": "dcf0f1d7239b28ae81a039c8d05bdfcd1d4792a5",
|
| 31 |
"detail": "StarVLA/VLAct_Qwen3OFT_Robotwin_Finetune@dcf0f1d7239b28ae81a039c8d05bdfcd1d4792a5"
|
| 32 |
},
|
| 33 |
"standalone-vlact-all": {
|
| 34 |
+
"label": "VLAct Qwen3-VL-OFT 100k",
|
| 35 |
"revision": "999b37d4d7c1bd0f5588f78d72a185f6f052bf83",
|
| 36 |
"detail": "StarVLA/VLAct_Qwen3OFT_Robotwin_all_Finetune@999b37d4d7c1bd0f5588f78d72a185f6f052bf83"
|
| 37 |
}
|
| 38 |
},
|
| 39 |
"robotwin-plus/20261101-native/source-identities.json": {
|
| 40 |
"standalone-official": {
|
| 41 |
+
"label": "Qwen3-VL-OFT 40k",
|
| 42 |
"revision": "e9cdfc38a0db968bf3a865bcb542d3d455952226",
|
| 43 |
"detail": "StarVLA/Qwen3-VL-OFT-Robotwin2@e9cdfc38a0db968bf3a865bcb542d3d455952226"
|
| 44 |
},
|
| 45 |
"standalone-vlact-clean": {
|
| 46 |
+
"label": "VLAct Qwen3-VL-OFT 50k",
|
| 47 |
"revision": "dcf0f1d7239b28ae81a039c8d05bdfcd1d4792a5",
|
| 48 |
"detail": "StarVLA/VLAct_Qwen3OFT_Robotwin_Finetune@dcf0f1d7239b28ae81a039c8d05bdfcd1d4792a5"
|
| 49 |
},
|
| 50 |
"standalone-vlact-all": {
|
| 51 |
+
"label": "VLAct Qwen3-VL-OFT 100k",
|
| 52 |
"revision": "999b37d4d7c1bd0f5588f78d72a185f6f052bf83",
|
| 53 |
"detail": "StarVLA/VLAct_Qwen3OFT_Robotwin_all_Finetune@999b37d4d7c1bd0f5588f78d72a185f6f052bf83"
|
| 54 |
}
|
| 55 |
},
|
| 56 |
"robotwin-plus/20261101-native/recovery/receipt.json": {
|
| 57 |
"standalone-vlact-all": {
|
| 58 |
+
"label": "VLAct Qwen3-VL-OFT 100k",
|
| 59 |
"revision": "999b37d4d7c1bd0f5588f78d72a185f6f052bf83",
|
| 60 |
"detail": "StarVLA/VLAct_Qwen3OFT_Robotwin_all_Finetune@999b37d4d7c1bd0f5588f78d72a185f6f052bf83"
|
| 61 |
}
|
| 62 |
},
|
| 63 |
"research/oft-all140k-20261103/source-identities.json": {
|
| 64 |
"standalone-oft-all140k": {
|
| 65 |
+
"label": "Qwen3-VL-OFT 140k",
|
| 66 |
"revision": "9fae49581755f57944ec57f6787d214c0c0143f5",
|
| 67 |
"detail": "StarVLA/Qwen3-VL-OFT-RoboTwin2-All@9fae49581755f57944ec57f6787d214c0c0143f5"
|
| 68 |
}
|
app.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
|
|
| 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.
|
|
@@ -189,7 +190,7 @@ function overviewDetail(task,ep) {
|
|
| 189 |
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.planned_protocol.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)}`;
|
| 190 |
const m=ep.media||{},u=ep.usage||{},a=ep.analysis||{};
|
| 191 |
const reason=a.evidence_note||a.failure_reason||a.cause||a.observed||a.visible_completion;
|
| 192 |
-
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
|
| 193 |
}
|
| 194 |
function taskPage(key,variant,section='overview') {
|
| 195 |
const task=data.tasks.find(t=>t.key===key);if(!task||!variantFor(variant)){notFound();return;}
|
|
|
|
| 1 |
+
const kinexDisplayVersion = ep => ep.kinex_version || (ep.links?.provenance?.endsWith('/research/kinex-vlact-rich-20261030/source-identities.json') ? '1.1.0' : null);
|
| 2 |
'use strict';
|
| 3 |
const plannedProtocol = (task, variant) => task.planned_protocol_by_variant?.[variant] || task.planned_protocol;
|
| 4 |
// RoboEnv LIBERO raw counters include five initialization frames; RoboBridge counters do not.
|
|
|
|
| 190 |
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.planned_protocol.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)}`;
|
| 191 |
const m=ep.media||{},u=ep.usage||{},a=ep.analysis||{};
|
| 192 |
const reason=a.evidence_note||a.failure_reason||a.cause||a.observed||a.visible_completion;
|
| 193 |
+
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>${kinexDisplayVersion(ep)?'Kinex v'+esc(kinexDisplayVersion(ep)):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>`;
|
| 194 |
}
|
| 195 |
function taskPage(key,variant,section='overview') {
|
| 196 |
const task=data.tasks.find(t=>t.key===key);if(!task||!variantFor(variant)){notFound();return;}
|
hard/app.js
CHANGED
|
@@ -4,7 +4,7 @@ function recordedAgentVersion(ep) {
|
|
| 4 |
return source?.[1]?.[ep.variant] || (ep.harness === 'kinex' ? source?.[1]?.kinex : null);
|
| 5 |
}
|
| 6 |
function agentVersion(ep) {
|
| 7 |
-
return recordedAgentVersion(ep)?.label || (ep.kinex_version ? 'Kinex ' + ep.kinex_version : ep.codex_version ? 'Codex ' + ep.codex_version : ep.claude_code_version ? 'Claude Code ' + ep.claude_code_version : 'Version not recorded');
|
| 8 |
}
|
| 9 |
function plusSeedNote(task,variant,ep) {
|
| 10 |
const selection=variant==='kinex'?(ep?.measured_protocol?.seed_selection||task.planned_protocol_by_variant?.kinex?.seed_selection):null;
|
|
@@ -215,7 +215,7 @@ function overviewDetail(task,ep) {
|
|
| 215 |
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. The authored seed could not initialize; a seed-selection decision is pending. This case is excluded from native 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)}`;
|
| 216 |
const m=ep.media||{},u=ep.usage||{},a=ep.analysis||{};
|
| 217 |
const reason=a.evidence_note||a.failure_reason||a.cause||a.observed||a.visible_completion;
|
| 218 |
-
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 data-agent-version
|
| 219 |
}
|
| 220 |
function taskPage(key,variant,section='overview') {
|
| 221 |
const task=data.tasks.find(t=>t.key===key);if(!task||!variantFor(variant)){notFound();return;}
|
|
|
|
| 4 |
return source?.[1]?.[ep.variant] || (ep.harness === 'kinex' ? source?.[1]?.kinex : null);
|
| 5 |
}
|
| 6 |
function agentVersion(ep) {
|
| 7 |
+
return recordedAgentVersion(ep)?.label || (ep.kinex_version ? 'Kinex v' + ep.kinex_version : ep.codex_version ? 'Codex ' + ep.codex_version : ep.claude_code_version ? 'Claude Code ' + ep.claude_code_version : 'Version not recorded');
|
| 8 |
}
|
| 9 |
function plusSeedNote(task,variant,ep) {
|
| 10 |
const selection=variant==='kinex'?(ep?.measured_protocol?.seed_selection||task.planned_protocol_by_variant?.kinex?.seed_selection):null;
|
|
|
|
| 215 |
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. The authored seed could not initialize; a seed-selection decision is pending. This case is excluded from native 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)}`;
|
| 216 |
const m=ep.media||{},u=ep.usage||{},a=ep.analysis||{};
|
| 217 |
const reason=a.evidence_note||a.failure_reason||a.cause||a.observed||a.visible_completion;
|
| 218 |
+
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 data-agent-version>${esc(agentVersion(ep))}</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>${esc(ep.usage_review.title||'Usage accounting review')}</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>`;
|
| 219 |
}
|
| 220 |
function taskPage(key,variant,section='overview') {
|
| 221 |
const task=data.tasks.find(t=>t.key===key);if(!task||!variantFor(variant)){notFound();return;}
|
hard/index.html
CHANGED
|
@@ -10,7 +10,7 @@
|
|
| 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="app.js?v=
|
| 14 |
<link rel="stylesheet" href="policy.css">
|
| 15 |
<link rel="stylesheet" href="../instruction-audit.css?v=43163fc879ed">
|
| 16 |
</head>
|
|
|
|
| 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="app.js?v=0e5758b9a159" defer></script>
|
| 14 |
<link rel="stylesheet" href="policy.css">
|
| 15 |
<link rel="stylesheet" href="../instruction-audit.css?v=43163fc879ed">
|
| 16 |
</head>
|
index.html
CHANGED
|
@@ -10,7 +10,7 @@
|
|
| 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="app.js?v=
|
| 14 |
<link rel="stylesheet" href="policy.css">
|
| 15 |
<link rel="stylesheet" href="instruction-audit.css?v=43163fc879ed">
|
| 16 |
</head>
|
|
|
|
| 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="app.js?v=6b99629785b5" defer></script>
|
| 14 |
<link rel="stylesheet" href="policy.css">
|
| 15 |
<link rel="stylesheet" href="instruction-audit.css?v=43163fc879ed">
|
| 16 |
</head>
|
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,
|
|
@@ -44,7 +44,7 @@
|
|
| 44 |
},
|
| 45 |
"index.html": {
|
| 46 |
"bytes": 3609,
|
| 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,
|
|
@@ -112,7 +112,7 @@
|
|
| 112 |
},
|
| 113 |
"hard/index.html": {
|
| 114 |
"bytes": 3642,
|
| 115 |
-
"sha256": "
|
| 116 |
},
|
| 117 |
"hard/policy.css": {
|
| 118 |
"bytes": 1067,
|
|
@@ -127,8 +127,8 @@
|
|
| 127 |
"sha256": "6b93f6986803a39df7146b1220b68d5d63d36a2153c3062a767c0bbf65ca6f18"
|
| 128 |
},
|
| 129 |
"plus/app.js": {
|
| 130 |
-
"bytes":
|
| 131 |
-
"sha256": "
|
| 132 |
},
|
| 133 |
"plus/icon.svg": {
|
| 134 |
"bytes": 725,
|
|
@@ -140,7 +140,7 @@
|
|
| 140 |
},
|
| 141 |
"plus/index.html": {
|
| 142 |
"bytes": 3639,
|
| 143 |
-
"sha256": "
|
| 144 |
},
|
| 145 |
"plus/policy.css": {
|
| 146 |
"bytes": 1067,
|
|
@@ -227,8 +227,8 @@
|
|
| 227 |
"sha256": "a53108594a23b740fbb08623f6fffdda1d73608b552988a9ffda9f0944ae66a1"
|
| 228 |
},
|
| 229 |
"agent-versions.json": {
|
| 230 |
-
"bytes":
|
| 231 |
-
"sha256": "
|
| 232 |
}
|
| 233 |
},
|
| 234 |
"hard_dataset": {
|
|
|
|
| 11 |
"sha256": "43163fc879edcc6dcc6e3c6bc1faa058d1ac3fd914fcb05302c5ca08640ef7d5"
|
| 12 |
},
|
| 13 |
"app.js": {
|
| 14 |
+
"bytes": 87466,
|
| 15 |
+
"sha256": "6b99629785b504ad2b34849235d6a6d14e0839e6c631a2d256ed3c96b8d08fec"
|
| 16 |
},
|
| 17 |
"history-app.js": {
|
| 18 |
"bytes": 87082,
|
|
|
|
| 44 |
},
|
| 45 |
"index.html": {
|
| 46 |
"bytes": 3609,
|
| 47 |
+
"sha256": "3bd11d265dc8a07a29679becd3e6a1689c06da863d3a31ece22964df75548dfb"
|
| 48 |
},
|
| 49 |
"policy.css": {
|
| 50 |
"bytes": 1067,
|
|
|
|
| 99 |
"sha256": "a53108594a23b740fbb08623f6fffdda1d73608b552988a9ffda9f0944ae66a1"
|
| 100 |
},
|
| 101 |
"hard/app.js": {
|
| 102 |
+
"bytes": 92796,
|
| 103 |
+
"sha256": "0e5758b9a15983e4c5e0cfc30d3d425f48a218ebe1f5b6b2f2147ceac628b350"
|
| 104 |
},
|
| 105 |
"hard/icon.svg": {
|
| 106 |
"bytes": 725,
|
|
|
|
| 112 |
},
|
| 113 |
"hard/index.html": {
|
| 114 |
"bytes": 3642,
|
| 115 |
+
"sha256": "3584809bcaa6ab1b46a746e87568fa497025d44281789293d0e422779991dba8"
|
| 116 |
},
|
| 117 |
"hard/policy.css": {
|
| 118 |
"bytes": 1067,
|
|
|
|
| 127 |
"sha256": "6b93f6986803a39df7146b1220b68d5d63d36a2153c3062a767c0bbf65ca6f18"
|
| 128 |
},
|
| 129 |
"plus/app.js": {
|
| 130 |
+
"bytes": 93565,
|
| 131 |
+
"sha256": "e775bb627a8517b706af323b2865c064d6f51091e7a972f002da72186da5c849"
|
| 132 |
},
|
| 133 |
"plus/icon.svg": {
|
| 134 |
"bytes": 725,
|
|
|
|
| 140 |
},
|
| 141 |
"plus/index.html": {
|
| 142 |
"bytes": 3639,
|
| 143 |
+
"sha256": "a6b335732301ae656fddeaa432aab97e9175db6cacc6bd1d22d74367d0aaf188"
|
| 144 |
},
|
| 145 |
"plus/policy.css": {
|
| 146 |
"bytes": 1067,
|
|
|
|
| 227 |
"sha256": "a53108594a23b740fbb08623f6fffdda1d73608b552988a9ffda9f0944ae66a1"
|
| 228 |
},
|
| 229 |
"agent-versions.json": {
|
| 230 |
+
"bytes": 3332,
|
| 231 |
+
"sha256": "63cef0604b0afd9b163634068b1c8aaaf3285e60e4bed3809f1ebe0d60552b13"
|
| 232 |
}
|
| 233 |
},
|
| 234 |
"hard_dataset": {
|
plus/app.js
CHANGED
|
@@ -4,7 +4,7 @@ function recordedAgentVersion(ep) {
|
|
| 4 |
return source?.[1]?.[ep.variant] || (ep.harness === 'kinex' ? source?.[1]?.kinex : null);
|
| 5 |
}
|
| 6 |
function agentVersion(ep) {
|
| 7 |
-
return recordedAgentVersion(ep)?.label || (ep.kinex_version ? 'Kinex ' + ep.kinex_version : ep.codex_version ? 'Codex ' + ep.codex_version : ep.claude_code_version ? 'Claude Code ' + ep.claude_code_version : 'Version not recorded');
|
| 8 |
}
|
| 9 |
function plusSeedNote(task,variant,ep) {
|
| 10 |
const selection=variant==='kinex'?(ep?.measured_protocol?.seed_selection||task.planned_protocol_by_variant?.kinex?.seed_selection):null;
|
|
@@ -214,7 +214,7 @@ function overviewDetail(task,ep) {
|
|
| 214 |
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. The authored seed could not initialize; a seed-selection decision is pending. This case is excluded from native 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)}`;
|
| 215 |
const m=ep.media||{},u=ep.usage||{},a=ep.analysis||{};
|
| 216 |
const reason=a.evidence_note||a.failure_reason||a.cause||a.observed||a.visible_completion;
|
| 217 |
-
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 data-agent-version
|
| 218 |
}
|
| 219 |
function taskPage(key,variant,section='overview') {
|
| 220 |
const task=data.tasks.find(t=>t.key===key);if(!task||!variantFor(variant)){notFound();return;}
|
|
|
|
| 4 |
return source?.[1]?.[ep.variant] || (ep.harness === 'kinex' ? source?.[1]?.kinex : null);
|
| 5 |
}
|
| 6 |
function agentVersion(ep) {
|
| 7 |
+
return recordedAgentVersion(ep)?.label || (ep.kinex_version ? 'Kinex v' + ep.kinex_version : ep.codex_version ? 'Codex ' + ep.codex_version : ep.claude_code_version ? 'Claude Code ' + ep.claude_code_version : 'Version not recorded');
|
| 8 |
}
|
| 9 |
function plusSeedNote(task,variant,ep) {
|
| 10 |
const selection=variant==='kinex'?(ep?.measured_protocol?.seed_selection||task.planned_protocol_by_variant?.kinex?.seed_selection):null;
|
|
|
|
| 214 |
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. The authored seed could not initialize; a seed-selection decision is pending. This case is excluded from native 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)}`;
|
| 215 |
const m=ep.media||{},u=ep.usage||{},a=ep.analysis||{};
|
| 216 |
const reason=a.evidence_note||a.failure_reason||a.cause||a.observed||a.visible_completion;
|
| 217 |
+
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 data-agent-version>${esc(agentVersion(ep))}</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>${esc(ep.usage_review.title||'Usage accounting review')}</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>`;
|
| 218 |
}
|
| 219 |
function taskPage(key,variant,section='overview') {
|
| 220 |
const task=data.tasks.find(t=>t.key===key);if(!task||!variantFor(variant)){notFound();return;}
|
plus/index.html
CHANGED
|
@@ -10,7 +10,7 @@
|
|
| 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="app.js?v=
|
| 14 |
<link rel="stylesheet" href="policy.css">
|
| 15 |
<link rel="stylesheet" href="../instruction-audit.css?v=43163fc879ed">
|
| 16 |
</head>
|
|
|
|
| 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="app.js?v=e775bb627a85" defer></script>
|
| 14 |
<link rel="stylesheet" href="policy.css">
|
| 15 |
<link rel="stylesheet" href="../instruction-audit.css?v=43163fc879ed">
|
| 16 |
</head>
|