renjianzhexuejia commited on
Commit
9a06ef9
·
verified ·
1 Parent(s): 46ac686

Restore public static leaderboard while Docker compute is unavailable

Browse files
Files changed (12) hide show
  1. README.md +3 -13
  2. admin.html +11 -0
  3. app.js +258 -0
  4. assets/benchmark-overview.png +3 -0
  5. assets/favicon.svg +1 -0
  6. assets/rise-agent.png +3 -0
  7. data/leaderboard.json +0 -0
  8. index.html +0 -0
  9. portal.css +91 -0
  10. portal.js +158 -0
  11. styles.css +390 -0
  12. submit.html +34 -0
README.md CHANGED
@@ -3,13 +3,13 @@ title: RISE Leaderboard
3
  emoji: 📈
4
  colorFrom: blue
5
  colorTo: gray
6
- sdk: docker
7
- app_port: 7860
8
  hf_oauth: true
9
  hf_oauth_expiration_minutes: 480
10
  hf_oauth_scopes:
11
  - read-memberships
12
  hf_oauth_authorized_org: VisionXLab
 
13
  pinned: false
14
  fullWidth: true
15
  short_description: Official Leaderboard of RISEBench
@@ -19,15 +19,5 @@ short_description: Official Leaderboard of RISEBench
19
 
20
  Official leaderboard of RISEBench and RISEBench++.
21
 
22
- Submission and moderation service. Configure these in Space Settings to enable submissions:
23
-
24
- - Secret `RISE_STORAGE_TOKEN`: a fine-grained token with read/write access only to the private submission dataset.
25
- - Variable `RISE_SUBMISSIONS_REPO`: an existing private dataset, for example `VisionXLab/RISEBench-Leaderboard-Submissions`.
26
- - Variable `RISE_PUBLIC_ORIGIN`: the app's exact https origin, for example `https://visionxlab-risebench-leaderboard.hf.space`.
27
-
28
- VisionXLab members sign in with Hugging Face to review submissions. Password login is disabled.
29
- The Space provisions OAuth client credentials automatically from the metadata above.
30
- Without private storage or OAuth configuration, the public leaderboard stays online but submission and review endpoints are disabled. No temporary local storage is used in production.
31
- After updating Secrets, restart the Space to enable the service. It does not create repositories automatically.
32
- Unreviewed submissions and contact emails are private. Only approved scores enter the public leaderboard.
33
 
 
3
  emoji: 📈
4
  colorFrom: blue
5
  colorTo: gray
6
+ sdk: static
 
7
  hf_oauth: true
8
  hf_oauth_expiration_minutes: 480
9
  hf_oauth_scopes:
10
  - read-memberships
11
  hf_oauth_authorized_org: VisionXLab
12
+ app_file: index.html
13
  pinned: false
14
  fullWidth: true
15
  short_description: Official Leaderboard of RISEBench
 
19
 
20
  Official leaderboard of RISEBench and RISEBench++.
21
 
22
+ [Code](https://github.com/VisionXLab/RISEBench) · [RISEBench++ paper](https://arxiv.org/abs/2610.12343) · [Dataset](https://huggingface.co/datasets/VisionXLab/RISEBench-plusplus) · [Outputs](https://huggingface.co/datasets/VisionXLab/RISEBench-plusplus_Outputs)
 
 
 
 
 
 
 
 
 
 
23
 
admin.html ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Review submissions · RISEBench</title><link rel="icon" href="assets/favicon.svg"><link rel="stylesheet" href="styles.css"><link rel="stylesheet" href="portal.css"></head>
3
+ <body data-page="admin"><main class="portal-width review-width">
4
+ <nav class="portal-nav" aria-label="Main navigation"><a class="wordmark" href="index.html">RISEBench<span>++</span></a><div><a href="index.html">Leaderboard</a><a href="submit.html">Submit results</a><button id="sign-out" class="text-button" hidden>Sign out</button></div></nav>
5
+ <header class="portal-heading"><span class="section-kicker">REVIEW WORKSPACE</span><h1>Review submissions.</h1><p>Verify evaluation artifacts, then approve or return results.</p></header>
6
+ <p class="notice" id="service-notice" hidden></p>
7
+ <section class="portal-card login-card" id="login-panel"><h2>Administrator sign in</h2><p class="login-caption" id="login-caption">VisionXLab members can sign in with their Hugging Face account.</p><p class="form-message" id="login-message" role="status"></p><a class="primary-button hf-login" id="hf-login" href="https://visionxlab-risebench-leaderboard.hf.space/api/admin/login" target="_blank" rel="noopener noreferrer" hidden>Sign in with Hugging Face ↗</a><form id="login-form" hidden><button type="submit" class="primary-button" id="login-button">Open local review</button></form></section>
8
+ <p class="review-identity" id="review-identity" hidden></p>
9
+ <section id="review-workspace" hidden><div class="review-toolbar"><div class="review-filters" role="group" aria-label="Submission status"><button data-status="pending" aria-pressed="true">Pending <span id="pending-count">0</span></button><button data-status="approved" aria-pressed="false">Approved</button><button data-status="rejected" aria-pressed="false">Returned</button><button data-status="withdrawn" aria-pressed="false">Withdrawn</button><button data-status="all" aria-pressed="false">All</button></div><button class="outline-button" id="refresh-queue">Refresh</button></div><p id="queue-message" class="form-message" role="status"></p><div class="review-layout"><aside class="review-list" id="review-list" aria-label="Submissions"></aside><section class="portal-card review-detail" id="review-detail"><div class="review-empty"><h2>Select a submission</h2><p>Its scores and evaluation artifacts will appear here.</p></div></section></div></section>
10
+ <footer class="page-footer"><a href="index.html">← Back to leaderboard</a><span>Private review workspace</span></footer>
11
+ </main><script id="submission-schema" type="application/json">{"benchmarks": [{"id": "risebench-plusplus", "name": "RISEBench++", "case_count": 1000, "available_result_languages": ["en", "zh"], "accuracy_unit": "%", "metric_unit": "/100", "score_decimals": 1, "default_sort": "total", "dimensions": [{"key": "temporal", "label": "Temporal", "description": "Infer how a scene changes over time."}, {"key": "causal", "label": "Causal", "description": "Reason about causes, actions, and their consequences."}, {"key": "spatial", "label": "Spatial", "description": "Reason about spatial relationships and transformations."}, {"key": "logical", "label": "Logical", "description": "Apply explicit rules, patterns, and logical constraints."}, {"key": "counterfactual", "label": "Counterfactual", "description": "Visualize outcomes under hypothetical or contrary-to-fact conditions."}, {"key": "hybrid", "label": "Hybrid", "description": "Combine reasoning across three to five successive editing instructions."}], "metrics": [{"key": "instruction_reasoning", "label": "Instruction Reasoning", "description": "Whether the edit realizes the intended reasoning outcome."}, {"key": "appearance_consistency", "label": "Appearance Consistency", "description": "Whether content that should remain unchanged is preserved."}, {"key": "visual_plausibility", "label": "Visual Plausibility", "description": "Visual quality and plausibility; logical tasks are excluded."}], "accuracy_columns": [{"key": "temporal", "label": "Temporal", "description": "Infer how a scene changes over time."}, {"key": "causal", "label": "Causal", "description": "Reason about causes, actions, and their consequences."}, {"key": "spatial", "label": "Spatial", "description": "Reason about spatial relationships and transformations."}, {"key": "logical", "label": "Logical", "description": "Apply explicit rules, patterns, and logical constraints."}, {"key": "counterfactual", "label": "Counterfactual", "description": "Visualize outcomes under hypothetical or contrary-to-fact conditions."}, {"key": "hybrid", "label": "Hybrid", "description": "Combine reasoning across three to five successive editing instructions."}, {"key": "single", "label": "Single", "description": "Accuracy on single-image cases."}, {"key": "multi", "label": "Multi", "description": "Accuracy on multi-image cases. Not evaluated for models without multi-image support."}, {"key": "total", "label": "Total", "description": "Accuracy on the complete benchmark. Not evaluated for single-image-only models."}], "subcategory_columns": [{"key": "temporal_common_sense_knowledge", "label": "Common-Sense Knowledge", "dimension": "temporal", "case_count": 85, "multi_image_case_count": 0, "code": "CSK", "description": "Temporal · Common-Sense Knowledge — accuracy (%)"}, {"key": "temporal_context_knowledge", "label": "Context Knowledge", "dimension": "temporal", "case_count": 52, "multi_image_case_count": 28, "code": "CtxK", "description": "Temporal · Context Knowledge — accuracy (%)"}, {"key": "temporal_disciplinary_knowledge", "label": "Disciplinary Knowledge", "dimension": "temporal", "case_count": 63, "multi_image_case_count": 4, "code": "DK", "description": "Temporal · Disciplinary Knowledge — accuracy (%)"}, {"key": "causal_common_sense_knowledge", "label": "Common-Sense Knowledge", "dimension": "causal", "case_count": 80, "multi_image_case_count": 1, "code": "CSK", "description": "Causal · Common-Sense Knowledge — accuracy (%)"}, {"key": "causal_context_knowledge", "label": "Context Knowledge", "dimension": "causal", "case_count": 40, "multi_image_case_count": 2, "code": "CtxK", "description": "Causal · Context Knowledge — accuracy (%)"}, {"key": "causal_disciplinary_knowledge", "label": "Disciplinary Knowledge", "dimension": "causal", "case_count": 80, "multi_image_case_count": 5, "code": "DK", "description": "Causal · Disciplinary Knowledge — accuracy (%)"}, {"key": "spatial_relation", "label": "Relation", "dimension": "spatial", "case_count": 106, "multi_image_case_count": 6, "code": "Rel.", "description": "Spatial · Relation — accuracy (%)"}, {"key": "spatial_structure", "label": "Structure", "dimension": "spatial", "case_count": 94, "multi_image_case_count": 12, "code": "Struct.", "description": "Spatial · Structure — accuracy (%)"}, {"key": "logical_explicit_rule_deduction", "label": "Explicit Rule Deduction", "dimension": "logical", "case_count": 123, "multi_image_case_count": 0, "code": "ERD", "description": "Logical · Explicit Rule Deduction — accuracy (%)"}, {"key": "logical_implicit_pattern_induction", "label": "Implicit Pattern Induction", "dimension": "logical", "case_count": 77, "multi_image_case_count": 20, "code": "IPI", "description": "Logical · Implicit Pattern Induction — accuracy (%)"}, {"key": "counterfactual_counterfactual_imagination", "label": "Counterfactual Imagination", "dimension": "counterfactual", "case_count": 70, "multi_image_case_count": 0, "code": "CFI", "description": "Counterfactual · Counterfactual Imagination — accuracy (%)"}, {"key": "counterfactual_anomaly_correction_and_generation", "label": "Anomaly Correction and Generation", "dimension": "counterfactual", "case_count": 30, "multi_image_case_count": 0, "code": "ACG", "description": "Counterfactual · Anomaly Correction and Generation — accuracy (%)"}], "task_type_columns": [{"key": "T01", "code": "T01", "label": "Life Progression", "dimension": "temporal", "subcategory": "temporal_common_sense_knowledge", "case_count": 24, "multi_image_case_count": 0, "description": "Temporal · Life Progression — accuracy (%)"}, {"key": "T02", "code": "T02", "label": "Material Transformation", "dimension": "temporal", "subcategory": "temporal_common_sense_knowledge", "case_count": 9, "multi_image_case_count": 0, "description": "Temporal · Material Transformation — accuracy (%)"}, {"key": "T03", "code": "T03", "label": "Natural Environmental Changes", "dimension": "temporal", "subcategory": "temporal_common_sense_knowledge", "case_count": 13, "multi_image_case_count": 0, "description": "Temporal · Natural Environmental Changes — accuracy (%)"}, {"key": "T04", "code": "T04", "label": "Physical Aging", "dimension": "temporal", "subcategory": "temporal_common_sense_knowledge", "case_count": 20, "multi_image_case_count": 0, "description": "Temporal · Physical Aging — accuracy (%)"}, {"key": "T05", "code": "T05", "label": "Social Activities", "dimension": "temporal", "subcategory": "temporal_common_sense_knowledge", "case_count": 8, "multi_image_case_count": 0, "description": "Temporal · Social Activities — accuracy (%)"}, {"key": "T06", "code": "T06", "label": "Tool Evolution", "dimension": "temporal", "subcategory": "temporal_common_sense_knowledge", "case_count": 7, "multi_image_case_count": 0, "description": "Temporal · Tool Evolution — accuracy (%)"}, {"key": "T07", "code": "T07", "label": "Urban Evolution", "dimension": "temporal", "subcategory": "temporal_common_sense_knowledge", "case_count": 4, "multi_image_case_count": 0, "description": "Temporal · Urban Evolution — accuracy (%)"}, {"key": "T08", "code": "T08", "label": "Temporal State Transition", "dimension": "temporal", "subcategory": "temporal_context_knowledge", "case_count": 15, "multi_image_case_count": 4, "description": "Temporal · Temporal State Transition — accuracy (%)"}, {"key": "T09", "code": "T09", "label": "Precise Temporal Localization", "dimension": "temporal", "subcategory": "temporal_context_knowledge", "case_count": 14, "multi_image_case_count": 2, "description": "Temporal · Precise Temporal Localization — accuracy (%)"}, {"key": "T10", "code": "T10", "label": "Position Change", "dimension": "temporal", "subcategory": "temporal_context_knowledge", "case_count": 15, "multi_image_case_count": 14, "description": "Temporal · Position Change — accuracy (%)"}, {"key": "T11", "code": "T11", "label": "Action Sequence", "dimension": "temporal", "subcategory": "temporal_context_knowledge", "case_count": 8, "multi_image_case_count": 8, "description": "Temporal · Action Sequence — accuracy (%)"}, {"key": "T12", "code": "T12", "label": "Physics", "dimension": "temporal", "subcategory": "temporal_disciplinary_knowledge", "case_count": 4, "multi_image_case_count": 0, "description": "Temporal · Physics — accuracy (%)"}, {"key": "T13", "code": "T13", "label": "Chemistry", "dimension": "temporal", "subcategory": "temporal_disciplinary_knowledge", "case_count": 8, "multi_image_case_count": 4, "description": "Temporal · Chemistry — accuracy (%)"}, {"key": "T14", "code": "T14", "label": "Biology", "dimension": "temporal", "subcategory": "temporal_disciplinary_knowledge", "case_count": 9, "multi_image_case_count": 0, "description": "Temporal · Biology — accuracy (%)"}, {"key": "T15", "code": "T15", "label": "Astronomy", "dimension": "temporal", "subcategory": "temporal_disciplinary_knowledge", "case_count": 12, "multi_image_case_count": 0, "description": "Temporal · Astronomy — accuracy (%)"}, {"key": "T16", "code": "T16", "label": "Geography", "dimension": "temporal", "subcategory": "temporal_disciplinary_knowledge", "case_count": 18, "multi_image_case_count": 0, "description": "Temporal · Geography — accuracy (%)"}, {"key": "T17", "code": "T17", "label": "History", "dimension": "temporal", "subcategory": "temporal_disciplinary_knowledge", "case_count": 5, "multi_image_case_count": 0, "description": "Temporal · History — accuracy (%)"}, {"key": "T18", "code": "T18", "label": "Medicine", "dimension": "temporal", "subcategory": "temporal_disciplinary_knowledge", "case_count": 4, "multi_image_case_count": 0, "description": "Temporal · Medicine — accuracy (%)"}, {"key": "T19", "code": "T19", "label": "Computer Science", "dimension": "temporal", "subcategory": "temporal_disciplinary_knowledge", "case_count": 3, "multi_image_case_count": 0, "description": "Temporal · Computer Science — accuracy (%)"}, {"key": "C01", "code": "C01", "label": "Physical State Transition", "dimension": "causal", "subcategory": "causal_common_sense_knowledge", "case_count": 31, "multi_image_case_count": 0, "description": "Causal · Physical State Transition — accuracy (%)"}, {"key": "C02", "code": "C02", "label": "Structural Damage", "dimension": "causal", "subcategory": "causal_common_sense_knowledge", "case_count": 27, "multi_image_case_count": 0, "description": "Causal · Structural Damage — accuracy (%)"}, {"key": "C03", "code": "C03", "label": "Flexible Deformation", "dimension": "causal", "subcategory": "causal_common_sense_knowledge", "case_count": 22, "multi_image_case_count": 1, "description": "Causal · Flexible Deformation — accuracy (%)"}, {"key": "C04", "code": "C04", "label": "Magnitude Change", "dimension": "causal", "subcategory": "causal_context_knowledge", "case_count": 10, "multi_image_case_count": 0, "description": "Causal · Magnitude Change — accuracy (%)"}, {"key": "C05", "code": "C05", "label": "Reading Offset", "dimension": "causal", "subcategory": "causal_context_knowledge", "case_count": 10, "multi_image_case_count": 2, "description": "Causal · Reading Offset — accuracy (%)"}, {"key": "C06", "code": "C06", "label": "Order Relation", "dimension": "causal", "subcategory": "causal_context_knowledge", "case_count": 10, "multi_image_case_count": 0, "description": "Causal · Order Relation — accuracy (%)"}, {"key": "C07", "code": "C07", "label": "Feature Mapping", "dimension": "causal", "subcategory": "causal_context_knowledge", "case_count": 10, "multi_image_case_count": 0, "description": "Causal · Feature Mapping — accuracy (%)"}, {"key": "C08", "code": "C08", "label": "Physics", "dimension": "causal", "subcategory": "causal_disciplinary_knowledge", "case_count": 25, "multi_image_case_count": 1, "description": "Causal · Physics — accuracy (%)"}, {"key": "C09", "code": "C09", "label": "Chemistry", "dimension": "causal", "subcategory": "causal_disciplinary_knowledge", "case_count": 23, "multi_image_case_count": 4, "description": "Causal · Chemistry — accuracy (%)"}, {"key": "C10", "code": "C10", "label": "Biology", "dimension": "causal", "subcategory": "causal_disciplinary_knowledge", "case_count": 12, "multi_image_case_count": 0, "description": "Causal · Biology — accuracy (%)"}, {"key": "C11", "code": "C11", "label": "Astronomy", "dimension": "causal", "subcategory": "causal_disciplinary_knowledge", "case_count": 3, "multi_image_case_count": 0, "description": "Causal · Astronomy — accuracy (%)"}, {"key": "C12", "code": "C12", "label": "Medicine", "dimension": "causal", "subcategory": "causal_disciplinary_knowledge", "case_count": 4, "multi_image_case_count": 0, "description": "Causal · Medicine — accuracy (%)"}, {"key": "C13", "code": "C13", "label": "Music Theory", "dimension": "causal", "subcategory": "causal_disciplinary_knowledge", "case_count": 3, "multi_image_case_count": 0, "description": "Causal · Music Theory — accuracy (%)"}, {"key": "C14", "code": "C14", "label": "Computer Science", "dimension": "causal", "subcategory": "causal_disciplinary_knowledge", "case_count": 10, "multi_image_case_count": 0, "description": "Causal · Computer Science — accuracy (%)"}, {"key": "S01", "code": "S01", "label": "Adjacency", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 11, "multi_image_case_count": 0, "description": "Spatial · Adjacency — accuracy (%)"}, {"key": "S02", "code": "S02", "label": "Direction", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 11, "multi_image_case_count": 0, "description": "Spatial · Direction — accuracy (%)"}, {"key": "S03", "code": "S03", "label": "Orientation", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 11, "multi_image_case_count": 0, "description": "Spatial · Orientation — accuracy (%)"}, {"key": "S04", "code": "S04", "label": "Projection", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 12, "multi_image_case_count": 0, "description": "Spatial · Projection — accuracy (%)"}, {"key": "S05", "code": "S05", "label": "Distance", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 13, "multi_image_case_count": 0, "description": "Spatial · Distance — accuracy (%)"}, {"key": "S06", "code": "S06", "label": "Size", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 15, "multi_image_case_count": 0, "description": "Spatial · Size — accuracy (%)"}, {"key": "S07", "code": "S07", "label": "Configuration", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 18, "multi_image_case_count": 0, "description": "Spatial · Configuration — accuracy (%)"}, {"key": "S08", "code": "S08", "label": "Viewing Scale", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 9, "multi_image_case_count": 0, "description": "Spatial · Viewing Scale — accuracy (%)"}, {"key": "S09", "code": "S09", "label": "Localization", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 6, "multi_image_case_count": 6, "description": "Spatial · Localization — accuracy (%)"}, {"key": "S10", "code": "S10", "label": "Part-Whole Perception", "dimension": "spatial", "subcategory": "spatial_structure", "case_count": 24, "multi_image_case_count": 0, "description": "Spatial · Part-Whole Perception — accuracy (%)"}, {"key": "S11", "code": "S11", "label": "Geometric Regularities Reasoning", "dimension": "spatial", "subcategory": "spatial_structure", "case_count": 15, "multi_image_case_count": 0, "description": "Spatial · Geometric Regularities Reasoning — accuracy (%)"}, {"key": "S12", "code": "S12", "label": "Viewpoint Generation", "dimension": "spatial", "subcategory": "spatial_structure", "case_count": 26, "multi_image_case_count": 0, "description": "Spatial · Viewpoint Generation — accuracy (%)"}, {"key": "S13", "code": "S13", "label": "Environmental Structure Reasoning", "dimension": "spatial", "subcategory": "spatial_structure", "case_count": 19, "multi_image_case_count": 2, "description": "Spatial · Environmental Structure Reasoning — accuracy (%)"}, {"key": "S14", "code": "S14", "label": "Egocentric Scene Reconstruction", "dimension": "spatial", "subcategory": "spatial_structure", "case_count": 10, "multi_image_case_count": 10, "description": "Spatial · Egocentric Scene Reconstruction — accuracy (%)"}, {"key": "L01", "code": "L01", "label": "Path Searching", "dimension": "logical", "subcategory": "logical_explicit_rule_deduction", "case_count": 24, "multi_image_case_count": 0, "description": "Logical · Path Searching — accuracy (%)"}, {"key": "L02", "code": "L02", "label": "Mathematical Derivation", "dimension": "logical", "subcategory": "logical_explicit_rule_deduction", "case_count": 27, "multi_image_case_count": 0, "description": "Logical · Mathematical Derivation — accuracy (%)"}, {"key": "L03", "code": "L03", "label": "Game Deduction", "dimension": "logical", "subcategory": "logical_explicit_rule_deduction", "case_count": 37, "multi_image_case_count": 0, "description": "Logical · Game Deduction — accuracy (%)"}, {"key": "L04", "code": "L04", "label": "Puzzle Solving", "dimension": "logical", "subcategory": "logical_explicit_rule_deduction", "case_count": 35, "multi_image_case_count": 0, "description": "Logical · Puzzle Solving — accuracy (%)"}, {"key": "L05", "code": "L05", "label": "Pattern Prediction", "dimension": "logical", "subcategory": "logical_implicit_pattern_induction", "case_count": 39, "multi_image_case_count": 0, "description": "Logical · Pattern Prediction — accuracy (%)"}, {"key": "L06", "code": "L06", "label": "Visual Oddity Detection", "dimension": "logical", "subcategory": "logical_implicit_pattern_induction", "case_count": 18, "multi_image_case_count": 0, "description": "Logical · Visual Oddity Detection — accuracy (%)"}, {"key": "L07", "code": "L07", "label": "Rule Transfer", "dimension": "logical", "subcategory": "logical_implicit_pattern_induction", "case_count": 20, "multi_image_case_count": 20, "description": "Logical · Rule Transfer — accuracy (%)"}, {"key": "F01", "code": "F01", "label": "Physical Counterfactual", "dimension": "counterfactual", "subcategory": "counterfactual_counterfactual_imagination", "case_count": 23, "multi_image_case_count": 0, "description": "Counterfactual · Physical Counterfactual — accuracy (%)"}, {"key": "F02", "code": "F02", "label": "Chemical Counterfactual", "dimension": "counterfactual", "subcategory": "counterfactual_counterfactual_imagination", "case_count": 9, "multi_image_case_count": 0, "description": "Counterfactual · Chemical Counterfactual — accuracy (%)"}, {"key": "F03", "code": "F03", "label": "Biological Counterfactual", "dimension": "counterfactual", "subcategory": "counterfactual_counterfactual_imagination", "case_count": 8, "multi_image_case_count": 0, "description": "Counterfactual · Biological Counterfactual — accuracy (%)"}, {"key": "F04", "code": "F04", "label": "Astronomy Counterfactual", "dimension": "counterfactual", "subcategory": "counterfactual_counterfactual_imagination", "case_count": 7, "multi_image_case_count": 0, "description": "Counterfactual · Astronomy Counterfactual — accuracy (%)"}, {"key": "F05", "code": "F05", "label": "Geography Counterfactual", "dimension": "counterfactual", "subcategory": "counterfactual_counterfactual_imagination", "case_count": 8, "multi_image_case_count": 0, "description": "Counterfactual · Geography Counterfactual — accuracy (%)"}, {"key": "F06", "code": "F06", "label": "History Counterfactual", "dimension": "counterfactual", "subcategory": "counterfactual_counterfactual_imagination", "case_count": 7, "multi_image_case_count": 0, "description": "Counterfactual · History Counterfactual — accuracy (%)"}, {"key": "F07", "code": "F07", "label": "Music Theory Counterfactual", "dimension": "counterfactual", "subcategory": "counterfactual_counterfactual_imagination", "case_count": 4, "multi_image_case_count": 0, "description": "Counterfactual · Music Theory Counterfactual — accuracy (%)"}, {"key": "F08", "code": "F08", "label": "Computer Science Counterfactual", "dimension": "counterfactual", "subcategory": "counterfactual_counterfactual_imagination", "case_count": 4, "multi_image_case_count": 0, "description": "Counterfactual · Computer Science Counterfactual — accuracy (%)"}, {"key": "F09", "code": "F09", "label": "Anatomical Errors", "dimension": "counterfactual", "subcategory": "counterfactual_anomaly_correction_and_generation", "case_count": 10, "multi_image_case_count": 0, "description": "Counterfactual · Anatomical Errors — accuracy (%)"}, {"key": "F10", "code": "F10", "label": "Structural Anomalies", "dimension": "counterfactual", "subcategory": "counterfactual_anomaly_correction_and_generation", "case_count": 11, "multi_image_case_count": 0, "description": "Counterfactual · Structural Anomalies — accuracy (%)"}, {"key": "F11", "code": "F11", "label": "Relational Anomalies", "dimension": "counterfactual", "subcategory": "counterfactual_anomaly_correction_and_generation", "case_count": 9, "multi_image_case_count": 0, "description": "Counterfactual · Relational Anomalies — accuracy (%)"}], "links": {"paper": "https://arxiv.org/abs/2610.12343", "data": "https://huggingface.co/datasets/VisionXLab/RISEBench-plusplus", "outputs": "https://huggingface.co/datasets/VisionXLab/RISEBench-plusplus_Outputs", "github": "https://github.com/VisionXLab/RISEBench/tree/main/RISEBench%2B%2B"}, "judges": {"instruction_reasoning": "Gemini-3-Flash", "appearance_consistency": "Gemini-3-Flash", "visual_plausibility": "Gemini-3.1-Flash-Lite"}, "results_by_language": {"en": {"models": [{"id": "gpt-image-2-5-sunburst", "name": "GPT-Image-2.5 Sunburst"}, {"id": "nano-banana-pro", "name": "Nano Banana Pro"}, {"id": "nano-banana-2", "name": "Nano Banana 2"}, {"id": "gpt-image-2", "name": "GPT-Image-2"}, {"id": "gpt-image-2-5-flare", "name": "GPT-Image-2.5 Flare"}, {"id": "luma-uni-1", "name": "Luma Uni-1"}, {"id": "qwen-image-3-0", "name": "Qwen-Image-3.0"}, {"id": "nano-banana-2-lite", "name": "Nano Banana 2 Lite"}, {"id": "flux-2-max", "name": "FLUX.2 Max"}, {"id": "gpt-image-1-5", "name": "GPT-Image-1.5"}, {"id": "flux-2-pro", "name": "FLUX.2 Pro"}, {"id": "nano-banana", "name": "Nano Banana"}, {"id": "hunyuanimage-3-5", "name": "HunyuanImage-3.5"}, {"id": "wan2-7-image-pro", "name": "Wan2.7-Image-Pro"}, {"id": "gpt-image-1", "name": "GPT-Image-1"}, {"id": "qwen-image-2-0", "name": "Qwen-Image-2.0"}, {"id": "seedream-4-5", "name": "Seedream 4.5"}, {"id": "seedream-5-0", "name": "Seedream 5.0"}, {"id": "step-image-edit-2", "name": "Step Image Edit 2"}, {"id": "hunyuanimage-3-0-instruct", "name": "HunyuanImage-3.0-Instruct"}, {"id": "qwen-image-edit-2511", "name": "Qwen-Image-Edit-2511"}, {"id": "qwen-image-2-1", "name": "Qwen-Image-2.1"}, {"id": "firered-image-edit-1-0", "name": "FireRed-Image-Edit-1.0"}, {"id": "firered-image-edit-1-1", "name": "FireRed-Image-Edit-1.1"}, {"id": "qwen-image-edit-2509", "name": "Qwen-Image-Edit-2509"}, {"id": "hidream-o1-image", "name": "HiDream-O1-Image"}, {"id": "flux-2-dev", "name": "FLUX.2 Dev"}, {"id": "flux-2-klein-9b", "name": "FLUX.2 Klein 9B"}, {"id": "joyai-image-edit-plus", "name": "JoyAI-Image-Edit-Plus"}, {"id": "sensenova-u1-a3b-mot-sft", "name": "SenseNova-U1-A3B-MoT-SFT"}, {"id": "unipic-3-0", "name": "UniPic 3.0"}, {"id": "bagel-w-cot", "name": "BAGEL (w/ CoT)"}, {"id": "sensenova-u1-8b-mot-sft", "name": "SenseNova-U1-8B-MoT-SFT"}, {"id": "flux-2-klein-4b", "name": "FLUX.2 Klein 4B"}, {"id": "uniworld-v2", "name": "UniWorld-V2"}, {"id": "bagel", "name": "BAGEL"}, {"id": "omnigen2", "name": "OmniGen2"}, {"id": "omnigen", "name": "OmniGen"}, {"id": "emu2-gen", "name": "Emu2-Gen"}, {"id": "joyai-image-edit", "name": "JoyAI-Image-Edit"}, {"id": "step1x-edit-thinking", "name": "Step1X-Edit (thinking)"}, {"id": "boogu-image-0-1-edit", "name": "Boogu-Image-0.1-Edit"}, {"id": "step1x-edit-thinking-reflection", "name": "Step1X-Edit (thinking + reflection)"}, {"id": "longcat-image-edit", "name": "LongCat-Image-Edit"}, {"id": "step1x-edit-base", "name": "Step1X-Edit (base)"}, {"id": "internvl-u-w-cot", "name": "InternVL-U (w/ CoT)"}, {"id": "flux-1-kontext-dev", "name": "FLUX.1 Kontext Dev"}, {"id": "llada-image", "name": "LLaDA-Image"}, {"id": "ovis-u1", "name": "Ovis-U1"}, {"id": "internvl-u", "name": "InternVL-U"}, {"id": "unipic2-sd3-5m-kontext-2b", "name": "UniPic2-SD3.5M-Kontext-2B"}, {"id": "lumina-dimoo", "name": "Lumina-DiMOO"}, {"id": "uniworld-v1", "name": "UniWorld-V1"}, {"id": "rise-agent-ours", "name": "RISE-Agent (Ours)"}, {"id": "mindbrush", "name": "MindBrush"}, {"id": "interleavethinker", "name": "InterleaveThinker"}, {"id": "intentedit", "name": "IntentEdit"}, {"id": "imagent", "name": "ImAgent"}]}, "zh": {"models": [{"id": "gpt-image-2-5-sunburst", "name": "GPT-Image-2.5 Sunburst"}, {"id": "nano-banana-pro", "name": "Nano Banana Pro"}, {"id": "nano-banana-2", "name": "Nano Banana 2"}, {"id": "luma-uni-1", "name": "Luma Uni-1"}, {"id": "gpt-image-2", "name": "GPT-Image-2"}, {"id": "qwen-image-3-0", "name": "Qwen-Image-3.0"}, {"id": "gpt-image-2-5-flare", "name": "GPT-Image-2.5 Flare"}, {"id": "flux-2-max", "name": "FLUX.2 Max"}, {"id": "nano-banana-2-lite", "name": "Nano Banana 2 Lite"}, {"id": "gpt-image-1-5", "name": "GPT-Image-1.5"}, {"id": "nano-banana", "name": "Nano Banana"}, {"id": "flux-2-pro", "name": "FLUX.2 Pro"}, {"id": "hunyuanimage-3-5", "name": "HunyuanImage-3.5"}, {"id": "wan2-7-image-pro", "name": "Wan2.7-Image-Pro"}, {"id": "qwen-image-2-0", "name": "Qwen-Image-2.0"}, {"id": "seedream-4-5", "name": "Seedream 4.5"}, {"id": "seedream-5-0", "name": "Seedream 5.0"}, {"id": "gpt-image-1", "name": "GPT-Image-1"}, {"id": "step-image-edit-2", "name": "Step Image Edit 2"}, {"id": "hunyuanimage-3-0-instruct", "name": "HunyuanImage-3.0-Instruct"}, {"id": "qwen-image-2-1", "name": "Qwen-Image-2.1"}, {"id": "firered-image-edit-1-1", "name": "FireRed-Image-Edit-1.1"}, {"id": "flux-2-dev", "name": "FLUX.2 Dev"}, {"id": "qwen-image-edit-2511", "name": "Qwen-Image-Edit-2511"}, {"id": "qwen-image-edit-2509", "name": "Qwen-Image-Edit-2509"}, {"id": "firered-image-edit-1-0", "name": "FireRed-Image-Edit-1.0"}, {"id": "sensenova-u1-a3b-mot-sft", "name": "SenseNova-U1-A3B-MoT-SFT"}, {"id": "joyai-image-edit-plus", "name": "JoyAI-Image-Edit-Plus"}, {"id": "flux-2-klein-9b", "name": "FLUX.2 Klein 9B"}, {"id": "bagel-w-cot", "name": "BAGEL (w/ CoT)"}, {"id": "hidream-o1-image", "name": "HiDream-O1-Image"}, {"id": "flux-2-klein-4b", "name": "FLUX.2 Klein 4B"}, {"id": "uniworld-v2", "name": "UniWorld-V2"}, {"id": "sensenova-u1-8b-mot-sft", "name": "SenseNova-U1-8B-MoT-SFT"}, {"id": "unipic-3-0", "name": "UniPic 3.0"}, {"id": "bagel", "name": "BAGEL"}, {"id": "omnigen2", "name": "OmniGen2"}, {"id": "omnigen", "name": "OmniGen"}, {"id": "emu2-gen", "name": "Emu2-Gen"}, {"id": "joyai-image-edit", "name": "JoyAI-Image-Edit"}, {"id": "boogu-image-0-1-edit", "name": "Boogu-Image-0.1-Edit"}, {"id": "step1x-edit-thinking-reflection", "name": "Step1X-Edit (thinking + reflection)"}, {"id": "step1x-edit-thinking", "name": "Step1X-Edit (thinking)"}, {"id": "step1x-edit-base", "name": "Step1X-Edit (base)"}, {"id": "longcat-image-edit", "name": "LongCat-Image-Edit"}, {"id": "flux-1-kontext-dev", "name": "FLUX.1 Kontext Dev"}, {"id": "llada-image", "name": "LLaDA-Image"}, {"id": "internvl-u-w-cot", "name": "InternVL-U (w/ CoT)"}, {"id": "ovis-u1", "name": "Ovis-U1"}, {"id": "internvl-u", "name": "InternVL-U"}, {"id": "lumina-dimoo", "name": "Lumina-DiMOO"}, {"id": "uniworld-v1", "name": "UniWorld-V1"}, {"id": "unipic2-sd3-5m-kontext-2b", "name": "UniPic2-SD3.5M-Kontext-2B"}, {"id": "rise-agent-ours", "name": "RISE-Agent (Ours)"}, {"id": "mindbrush", "name": "MindBrush"}, {"id": "interleavethinker", "name": "InterleaveThinker"}, {"id": "intentedit", "name": "IntentEdit"}, {"id": "imagent", "name": "ImAgent"}]}}}, {"id": "risebench", "name": "RISEBench", "case_count": 360, "available_result_languages": ["en"], "accuracy_unit": "%", "metric_unit": "/100", "score_decimals": 1, "default_sort": "total", "dimensions": [{"key": "temporal", "label": "Temporal", "description": "Infer how a scene changes over time."}, {"key": "causal", "label": "Causal", "description": "Reason about causes, actions, and their consequences."}, {"key": "spatial", "label": "Spatial", "description": "Reason about spatial relationships and transformations."}, {"key": "logical", "label": "Logical", "description": "Apply explicit rules, patterns, and logical constraints."}], "metrics": [{"key": "instruction_reasoning", "label": "Instruction Reasoning", "description": "Whether the edit realizes the intended reasoning outcome."}, {"key": "appearance_consistency", "label": "Appearance Consistency", "description": "Whether content that should remain unchanged is preserved."}, {"key": "visual_plausibility", "label": "Visual Plausibility", "description": "Visual quality and plausibility; logical tasks are excluded."}], "accuracy_columns": [{"key": "temporal", "label": "Temporal", "description": "Infer how a scene changes over time."}, {"key": "causal", "label": "Causal", "description": "Reason about causes, actions, and their consequences."}, {"key": "spatial", "label": "Spatial", "description": "Reason about spatial relationships and transformations."}, {"key": "logical", "label": "Logical", "description": "Apply explicit rules, patterns, and logical constraints."}, {"key": "total", "label": "Overall", "description": "Accuracy on the complete RISEBench-360 benchmark."}], "links": {"paper": "https://arxiv.org/abs/2504.02826", "data": "https://huggingface.co/datasets/PhoenixZ/RISEBench", "outputs": "https://huggingface.co/datasets/zpy777/RISEBench_Outputs", "github": "https://github.com/VisionXLab/RISEBench/tree/main/RISEBench"}, "judges": {"instruction_reasoning": "GPT-4o", "appearance_consistency": "GPT-4o", "visual_plausibility": "GPT-4o"}, "results_by_language": {"en": {"models": [{"id": "gpt-image-1-5", "name": "GPT-Image-1.5"}, {"id": "gpt-image-2", "name": "GPT-Image-2"}, {"id": "gemini-3-pro-image-preview-nano-banana-pro", "name": "Gemini-3-pro-image-preview (Nano Banana-pro)"}, {"id": "gemini-2-5-flash-image-nano-banana", "name": "Gemini-2.5-Flash-Image (Nano Banana)"}, {"id": "gpt-image-1", "name": "GPT-Image-1"}, {"id": "gpt-image-1-mini", "name": "GPT-Image-1-mini"}, {"id": "qwen-image-edit-2511", "name": "Qwen-Image-Edit-2511"}, {"id": "bagel-w-cot", "name": "BAGEL (w/ CoT)"}, {"id": "gemini-2-0-flash-exp", "name": "Gemini-2.0-Flash-exp"}, {"id": "seedream-4-0", "name": "Seedream-4.0"}, {"id": "gemini-2-0-flash-pre", "name": "Gemini-2.0-Flash-pre"}, {"id": "qwen-image-edit-2509", "name": "Qwen-Image-Edit-2509"}, {"id": "bagel", "name": "BAGEL"}, {"id": "flux-1-kontext-dev", "name": "FLUX.1-Kontext-Dev"}, {"id": "ovis-u1", "name": "Ovis-U1"}, {"id": "step1x-edit", "name": "Step1X-Edit"}, {"id": "omnigen", "name": "OmniGen"}, {"id": "emu2", "name": "EMU2"}, {"id": "hidream-edit", "name": "HiDream-Edit"}, {"id": "flux-1-canny", "name": "FLUX.1-Canny"}]}}}]}</script><script src="portal.js" defer></script></body></html>
app.js ADDED
@@ -0,0 +1,258 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use strict';
2
+ (() => {
3
+ let DATA = JSON.parse(document.getElementById('leaderboard-data').textContent);
4
+ const CITATIONS = JSON.parse(document.getElementById('citation-data').textContent);
5
+ const $ = (selector) => document.querySelector(selector);
6
+ const $$ = (selector) => [...document.querySelectorAll(selector)];
7
+ const esc = (value) => String(value ?? '').replace(/[&<>"']/g, (ch) => ({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[ch]));
8
+ const groupLabels = {closed:'Closed-source',open:'Open-source',agentic:'Agentic'};
9
+ const colors = ['#3283bf','#2d9a86','#9b75bd'];
10
+ const params = new URLSearchParams(location.search);
11
+ const initialBenchmark = DATA.benchmarks.find(b => b.id === params.get('benchmark')) || DATA.benchmarks[0];
12
+ const state = {benchmark:initialBenchmark.id,language:params.get('language')==='zh'?'zh':'en',view:'accuracy',dimension:'temporal',subcategory:'all',sort:'total',direction:'desc',group:'all',input:'all',query:'',selected:[],visible:[]};
13
+ let toastTimer;
14
+ const benchmarkMetadata = () => DATA.benchmarks.find(b => b.id === state.benchmark);
15
+ const languageCode = () => benchmarkMetadata().results_by_language[state.language] ? state.language : 'en';
16
+ const benchmark = () => ({...benchmarkMetadata(), ...benchmarkMetadata().results_by_language[languageCode()]});
17
+ const resultLanguageLabel = () => state.benchmark==='risebench-plusplus' ? benchmark().language : 'Original';
18
+ const modelById = id => benchmark().models.find(m => m.id === id);
19
+ const score = (model, key = state.sort) => model[state.view]?.[key] ?? null;
20
+ const fmt = value => value == null ? '—' : value.toFixed(1);
21
+ const summaryKeys = ['total','single','multi'];
22
+ const orderedAccuracyColumns = () => {
23
+ const columns=benchmark().accuracy_columns;
24
+ return benchmark().id==='risebench-plusplus'
25
+ ? [...columns.filter(c=>!summaryKeys.includes(c.key)), ...summaryKeys.map(key=>columns.find(c=>c.key===key))]
26
+ : [columns.find(c=>c.key==='total'), ...columns.filter(c=>c.key!=='total')];
27
+ };
28
+ const isBreakdown = () => ['subcategories','task_types'].includes(state.view);
29
+ const viewLabel = () => ({accuracy:'Reasoning accuracy',metrics:'Evaluation scores',subcategories:'Subcategory accuracy',task_types:'Task-type accuracy'}[state.view]);
30
+ const availableColumns = () => {
31
+ const b=benchmark();
32
+ if(state.view==='accuracy')return orderedAccuracyColumns();
33
+ if(state.view==='metrics')return b.metrics;
34
+ return b[state.view==='subcategories'?'subcategory_columns':'task_type_columns'].filter(c=>(state.dimension==='all'||c.dimension===state.dimension)&&(state.view!=='task_types'||state.subcategory==='all'||c.subcategory===state.subcategory));
35
+ };
36
+ const qualifiedLabel = c => isBreakdown()?`${c.dimension[0].toUpperCase()+c.dimension.slice(1)} · ${c.label}`:c.label;
37
+ const scoreLabel = key => availableColumns().find(c=>c.key===key)?.label || key;
38
+ const isPlus = () => state.benchmark === 'risebench-plusplus';
39
+ function toast(message) {
40
+ clearTimeout(toastTimer); $('#toast').textContent = message; $('#toast').hidden = false;
41
+ toastTimer = setTimeout(() => {$('#toast').hidden = true;}, 3000);
42
+ }
43
+ function saveState() {
44
+ try {
45
+ const url = new URL(location.href); url.searchParams.set('benchmark',state.benchmark); url.searchParams.set('language',languageCode());
46
+ history.replaceState(null,'',url);
47
+ } catch (_) { /* Local file previews still work without history updates. */ }
48
+ }
49
+ function filteredModels() {
50
+ const q = state.query.trim().toLowerCase();
51
+ return benchmark().models.filter(m => (!q || m.name.toLowerCase().includes(q)) && (state.group==='all'||m.group===state.group) && (state.input==='all'||m.multi_image===(state.input==='multi'))).sort((a,b) => {
52
+ const av=score(a), bv=score(b);
53
+ if(av===null&&bv===null)return a.source_order-b.source_order;
54
+ if(av===null)return 1;
55
+ if(bv===null)return -1;
56
+ return (state.direction==='desc'?bv-av:av-bv)||a.source_order-b.source_order;
57
+ });
58
+ }
59
+ function rankOf(model) {
60
+ const value = score(model); if(value===null)return null;
61
+ return 1+benchmark().models.filter(m=>score(m)!==null&&score(m)>value).length;
62
+ }
63
+ function renderResources() {
64
+ const b=benchmark();
65
+ $('#hero-links').innerHTML=[['Paper','paper'],['Dataset','data'],['Outputs','outputs'],['Code','github']].map(([label,key])=>`<a href="${esc(b.links[key])}" target="_blank" rel="noopener noreferrer">${label} <span aria-hidden="true">↗</span></a>`).join('');
66
+ $('#submit-results-link').href='submit.html?'+new URLSearchParams({benchmark:state.benchmark,language:languageCode()});
67
+ $('#submit-results-link').setAttribute('aria-label','Submit results to '+b.name);
68
+ $('#board-options').hidden=b.available_result_languages.length<2;
69
+ $$('[data-language]').forEach(button=>button.setAttribute('aria-pressed',button.dataset.language===languageCode()));
70
+ $('#group-filters').innerHTML=isPlus()?['all','closed','open','agentic'].map(g=>`<button data-group="${g}" aria-pressed="${state.group===g}">${g==='all'?'All models':groupLabels[g]}<span>${g==='all'?b.models.length:b.models.filter(m=>m.group===g).length}</span></button>`).join(''):'<span class="caption-text">All models</span>';
71
+ $('.input-filter').hidden=!isPlus();
72
+ $$('[data-plus-only]').forEach(el=>el.hidden=!isPlus());
73
+ $('#page-citation-code').textContent=CITATIONS[state.benchmark];
74
+ $('#citation-benchmark').textContent=b.name;
75
+ $('#page-copy-citation').textContent='Copy BibTeX';
76
+ renderBreakdownControls();
77
+ renderColumns();
78
+ }
79
+ function renderBreakdownControls() {
80
+ $('#breakdown-controls').hidden=!isBreakdown();
81
+ if(!isBreakdown())return;
82
+ const b=benchmark(), dimensions=b.dimensions.filter(d=>b.subcategory_columns.some(c=>c.dimension===d.key));
83
+ $('#dimension-tabs').innerHTML=[{key:'all',label:'All dimensions'},...dimensions].map(d=>`<button data-dimension="${d.key}" aria-pressed="${state.dimension===d.key}">${esc(d.label)}</button>`).join('');
84
+ $('#subcategory-filter').hidden=state.view!=='task_types';
85
+ const subs=b.subcategory_columns.filter(c=>state.dimension==='all'||c.dimension===state.dimension);
86
+ $('#subcategory-select').innerHTML='<option value="all">All subcategories</option>'+subs.map(c=>`<option value="${c.key}">${esc((state.dimension==='all'?c.dimension[0].toUpperCase()+c.dimension.slice(1)+' · ':'')+c.label)}</option>`).join('');
87
+ $('#subcategory-select').value=state.subcategory;
88
+ }
89
+ function resetScoreColumns() {
90
+ state.visible=availableColumns().map(c=>c.key);state.sort=state.visible[0];state.direction='desc';
91
+ renderBreakdownControls();renderColumns();renderTable();$('.table-scroll').scrollLeft=0;
92
+ }
93
+ function renderColumns() {
94
+ $('#column-options').innerHTML='<div class="eyebrow muted" >VISIBLE SCORE COLUMNS</div>'+availableColumns().map(c=>`<label><input type="checkbox" data-column="${c.key}" ${state.visible.includes(c.key)?'checked':''}>${esc(qualifiedLabel(c))}</label>`).join('');
95
+ }
96
+ function renderTable() {
97
+ const b=benchmark(), models=filteredModels(), columns=availableColumns().filter(c=>state.visible.includes(c.key));
98
+ const minimumWidth=370+(isPlus()?86:0)+columns.length*(isBreakdown()?156:96);
99
+ $('#results-table').style.minWidth=minimumWidth+'px';
100
+ $('#results-table').classList.toggle('breakdown-table',isBreakdown());
101
+ $('#table-caption').textContent=b.name+' '+resultLanguageLabel()+' results, '+viewLabel()+(state.view==='metrics'?' (/100)':' (%)')+', sorted by '+scoreLabel(state.sort)+' '+state.direction;
102
+ const summaryClass=key=>isPlus()&&summaryKeys.includes(key)?'summary-result':'';
103
+ const sortableHeader=c=>`<th scope="col" class="${summaryClass(c.key)} ${state.sort===c.key?'active-sort':''}" aria-sort="${state.sort===c.key?(state.direction==='desc'?'descending':'ascending'):'none'}"><button data-sort="${c.key}" title="${esc(c.description)} — sort ${state.sort===c.key&&state.direction==='desc'?'ascending':'descending'}"><span>${c.key==='counterfactual'?'Counter-<br>factual':c.key==='instruction_reasoning'?'Instruction<br>Reasoning':c.key==='appearance_consistency'?'Appearance<br>Consistency':c.key==='visual_plausibility'?'Visual<br>Plausibility':esc(c.label)}</span><span class="sort-icon" aria-hidden="true">${state.sort===c.key?(state.direction==='desc'?'↓':'↑'):'↕'}</span></button></th>`;
104
+ const rowSpan=isBreakdown()?' rowspan="2"':'';
105
+ const modelHeaders=`<th scope="col" class="select-cell"${rowSpan}><span class="sr-only">Compare</span></th><th scope="col" class="rank-cell"${rowSpan} title="Global rank on the currently sorted score">#</th><th scope="col" class="model-cell"${rowSpan}>Model <span class="muted" style="font-weight:400">/ method</span></th>${isPlus()?`<th scope="col" style="width:86px"${rowSpan}>Input</th>`:''}`;
106
+ const groups=[];
107
+ if(isBreakdown())columns.forEach(c=>{
108
+ const dimension=c.dimension[0].toUpperCase()+c.dimension.slice(1);
109
+ const label=state.view==='task_types'?(state.dimension==='all'?dimension+' · ':'')+b.subcategory_columns.find(s=>s.key===c.subcategory).label:dimension;
110
+ const key=state.view==='task_types'?c.subcategory:c.dimension;
111
+ if(groups.at(-1)?.key===key)groups.at(-1).count++;else groups.push({key,label,count:1,dimension:c.dimension});
112
+ });
113
+ $('#table-head').innerHTML=isBreakdown()?`<tr>${modelHeaders}${groups.map(g=>`<th scope="colgroup" colspan="${g.count}" class="dimension-band dim-${g.dimension}">${esc(g.label)}</th>`).join('')}</tr><tr>${columns.map(sortableHeader).join('')}</tr>`:`<tr>${modelHeaders}${columns.map(sortableHeader).join('')}</tr>`;
114
+ $('#table-body').innerHTML=models.map(m=>{
115
+ const rank=rankOf(m), ours=m.id==='rise-agent-ours';
116
+ const cells=columns.map(c=>{const v=score(m,c.key), featured=isPlus()&&summaryKeys.includes(c.key), tint=v==null?0:(featured ? .065+(v/100)*.10 : .02+(v/100)*.055);return `<td class="score-cell ${summaryClass(c.key)} ${c.key==='total'?'overall':''} ${v===null?'missing':''}" style="background-color:rgba(88,118,158,${tint.toFixed(4)})" title="${esc(c.label)}: ${v===null?'Not evaluated':fmt(v)+(state.view==='metrics'?' / 100':'%')}">${fmt(v)}${c.key==='total'&&v!==null?`<span class="score-meter" aria-hidden="true"><i style="width:${v}%"></i></span>`:''}</td>`;}).join('');
117
+ return `<tr class="${ours?'ours ':''}${state.selected.includes(m.id)?'selected':''}"><td class="select-cell"><input type="checkbox" data-select="${esc(m.id)}" aria-label="Compare ${esc(m.name)}" ${state.selected.includes(m.id)?'checked':''}></td><td class="rank-cell">${rank===null?'—':`<span class="${rank<=3?'rank-top rank-'+rank:''}">${rank}</span>`}</td><th scope="row" class="model-cell" style="position:sticky;top:auto"><button class="model-button" data-model="${esc(m.id)}">${esc(m.name)}</button><span class="model-meta">${m.group?`<span class="group-dot ${m.group}"></span>${groupLabels[m.group]}`:''}${ours?'<span class="ours-badge">OURS</span>':''}</span></th>${isPlus()?`<td><span class="input-pill ${m.multi_image?'multi':''}" title="${m.multi_image?'Supports multiple input images':'Single-image only'}">${m.multi_image?'Multi':'Single'}</span></td>`:''}${cells}</tr>`;
118
+ }).join('');
119
+ $('#empty-state').hidden=models.length>0; $('#results-table').hidden=models.length===0;
120
+ $('#result-count').innerHTML=`<strong>${models.length}</strong>${models.length<b.models.length?' / '+b.models.length:''} models`;
121
+ if(isBreakdown())$('#result-count').innerHTML+=`<span class="context-separator">·</span>${columns.length} ${state.view==='subcategories'?'subcategories':'task types'}`;
122
+ $('#reset-filters').hidden=!(state.query||state.group!=='all'||state.input!=='all');
123
+ $$('#group-filters button').forEach(el=>el.setAttribute('aria-pressed',el.dataset.group===state.group));
124
+ renderTray();
125
+ }
126
+ function renderTray() {
127
+ $('#compare-tray').hidden=state.selected.length===0;
128
+ $('#compare-count').textContent=state.selected.length+' / 3 models selected';
129
+ $('#compare-chips').innerHTML=state.selected.map(id=>`<span class="compare-chip">${esc(modelById(id).name)}<button data-remove="${esc(id)}" aria-label="Remove ${esc(modelById(id).name)} from comparison">×</button></span>`).join('');
130
+ $('#compare-open').disabled=state.selected.length<2;
131
+ updateTraySpacing();
132
+ }
133
+ function updateTraySpacing() {
134
+ document.body.style.paddingBottom=state.selected.length?($('#compare-tray').offsetHeight+48)+'px':'';
135
+ }
136
+ if ('ResizeObserver' in window) new ResizeObserver(updateTraySpacing).observe($('#compare-tray'));
137
+ window.addEventListener('resize',updateTraySpacing);
138
+ function toggleSelected(id,checked) {
139
+ if(checked&&state.selected.length>=3){toast('Compare up to 3 models at a time. Remove one to add another.');renderTable();return;}
140
+ state.selected=checked?[...state.selected,id]:state.selected.filter(x=>x!==id);renderTable();
141
+ }
142
+ function resetFilters() {
143
+ state.query='';state.group='all';state.input='all';
144
+ $('#model-search').value='';$('#input-filter').value='all';renderTable();
145
+ }
146
+ function switchBenchmark(id) {
147
+ state.benchmark=id;state.selected=[];state.group='all';state.input='all';state.view='accuracy';state.sort='total';state.direction='desc';
148
+ state.query='';$('#model-search').value='';$('#input-filter').value='all';
149
+ state.visible=availableColumns().map(c=>c.key);
150
+ $$('[data-benchmark]').forEach(btn=>btn.setAttribute('aria-pressed',btn.dataset.benchmark===id));
151
+ $$('[data-view]').forEach(btn=>btn.setAttribute('aria-pressed',btn.dataset.view===state.view));
152
+ renderResources();renderTable();saveState();
153
+ }
154
+ function switchLanguage(language) {
155
+ if(!benchmarkMetadata().results_by_language[language] || language===languageCode())return;
156
+ state.language=language;state.selected=[];
157
+ renderResources();renderTable();saveState();
158
+ }
159
+ function switchView(view) {
160
+ if(!isPlus()&&['subcategories','task_types'].includes(view))return;
161
+ state.view=view;
162
+ if(view==='task_types')state.subcategory=benchmark().subcategory_columns.find(c=>state.dimension==='all'||c.dimension===state.dimension).key;
163
+ state.sort=isBreakdown()?availableColumns()[0].key:view==='accuracy'?'total':'instruction_reasoning';state.direction='desc';state.visible=availableColumns().map(c=>c.key);
164
+ $$('[data-view]').forEach(btn=>btn.setAttribute('aria-pressed',btn.dataset.view===view));
165
+ renderBreakdownControls();renderColumns();renderTable();$('.table-scroll').scrollLeft=0;
166
+ }
167
+ function download(name,content,type) {
168
+ const url=URL.createObjectURL(new Blob([content],{type}));const a=document.createElement('a');a.href=url;a.download=name;document.body.appendChild(a);a.click();a.remove();setTimeout(()=>URL.revokeObjectURL(url),1000);
169
+ }
170
+ function exportCSV(models,name='filtered') {
171
+ const b=benchmark(), mainFields=[...(isPlus()?orderedAccuracyColumns():b.accuracy_columns).map(c=>({type:'accuracy',...c})),...b.metrics.map(c=>({type:'metrics',...c}))];
172
+ const fields=isBreakdown()?[...(name==='comparison'?mainFields:[]),...availableColumns().filter(c=>state.visible.includes(c.key)).map(c=>({type:state.view,...c,label:qualifiedLabel(c)}))]:mainFields;
173
+ const safeCSV=value=>{let t=String(value??'');if(/^\s*[=+@-]|^[\t\r\n]/.test(t))t="'"+t;return '"'+t.replace(/"/g,'""')+'"';};
174
+ const rows=[['Benchmark','Result language','Model','Category','Multi-image support',...fields.map(c=>c.label+(c.type==='metrics'?' (/100)':' (%)'))],...models.map(m=>[b.name,b.language,m.name,groupLabels[m.group]||'Not specified',m.multi_image===null?'Not specified':m.multi_image?'Yes':'No',...fields.map(c=>m[c.type][c.key]===null?'':fmt(m[c.type][c.key]))])];
175
+ download(`${b.id}-${languageCode()}-${state.view}-${name}-results.csv`,'\uFEFF'+rows.map(r=>r.map(safeCSV).join(',')).join('\r\n'),'text/csv;charset=utf-8');toast(`Exported ${models.length} models · ${resultLanguageLabel()} results.`);
176
+ }
177
+ function radar(models) {
178
+ const dims=benchmark().dimensions, cx=205,cy=156,r=98,n=dims.length;
179
+ const point=(i,radius)=>{const a=-Math.PI/2+i*2*Math.PI/n;return [cx+Math.cos(a)*radius,cy+Math.sin(a)*radius];};
180
+ const polygon=radius=>dims.map((_,i)=>point(i,radius).map(x=>x.toFixed(1)).join(',')).join(' ');
181
+ const rings=[20,40,60,80,100].map(v=>`<polygon points="${polygon(r*v/100)}" fill="none" stroke="#dce7ef" stroke-width=".8"/><text class="radar-value" x="${cx+4}" y="${cy-r*v/100-3}">${v}</text>`).join('');
182
+ const lines=dims.map((d,i)=>{const p=point(i,r),l=point(i,r+24);return `<line x1="${cx}" y1="${cy}" x2="${p[0]}" y2="${p[1]}" stroke="#e3ecf3"/><text x="${l[0]}" y="${l[1]+3}" class="radar-label" text-anchor="${Math.abs(l[0]-cx)<1?'middle':l[0]>cx?'start':'end'}">${esc(d.label)}</text>`;}).join('');
183
+ const plots=models.map((m,j)=>{const points=dims.map((d,i)=>point(i,r*(m.accuracy[d.key]??0)/100));return `<polygon points="${points.map(p=>p.join(',')).join(' ')}" fill="${colors[j]}" fill-opacity=".08" stroke="${colors[j]}" stroke-width="2"/>`+points.map(p=>`<circle cx="${p[0]}" cy="${p[1]}" r="2.5" fill="${colors[j]}" stroke="white" stroke-width="1"/>`).join('');}).join('');
184
+ return `<svg class="radar" viewBox="0 0 410 305" role="img" aria-label="Reasoning-dimension accuracy comparison on a shared 0 to 100 percent scale. Exact values are listed in the table below.">${rings}${lines}${plots}</svg>`;
185
+ }
186
+ function showDialog(eyebrow,html) {
187
+ $('#dialog-eyebrow').textContent=eyebrow;$('#dialog-content').innerHTML=html;
188
+ $('#detail-dialog').showModal();$('#detail-dialog').scrollTop=0;
189
+ }
190
+ function showModels(ids) {
191
+ const b=benchmark(), models=ids.map(modelById).filter(Boolean);if(!models.length)return;
192
+ const mixed=isPlus()&&new Set(models.map(m=>m.multi_image)).size>1;
193
+ const tableSection=(title,fields,type)=>`<tr class="comparison-section"><td colspan="${models.length+1}">${title}</td></tr>`+fields.map(c=>{const vals=models.map(m=>m[type]?.[c.key] ?? null);const max=Math.max(...vals.filter(v=>v!==null));return `<tr><td>${esc(c.label)}</td>${vals.map(v=>`<td class="${v!==null&&v===max&&models.length>1?'best-value':''}">${fmt(v)}${v!==null&&type!=='metrics'?'%':''}</td>`).join('')}</tr>`;}).join('');
194
+ showDialog(b.name+' · '+resultLanguageLabel().toUpperCase()+' RESULTS',`<h2 class="dialog-title" id="dialog-title">${models.length===1?esc(models[0].name):'Model comparison'}</h2>${mixed?'<p class="comparison-warning">These models use different evaluation subsets: single-image only and full benchmark.</p>':''}<div class="comparison-layout">${radar(models)}<div class="compare-summaries">${models.map((m,i)=>`<div class="compare-summary"><div><h4><span class="series-dot" style="background:${colors[i]}"></span>${esc(m.name)}</h4><p>${esc(groupLabels[m.group]||b.name)}${isPlus()?' · '+(m.multi_image?'Multi-image supported':'Single-image only'):''}</p></div><strong style="color:${colors[i]}">${fmt(m.accuracy.total)}<small> ${m.accuracy.total!==null?'%':''}<br>${isPlus()?'Total':'Overall'}</small></strong></div>`).join('')}${models.some(m=>m.accuracy.total===null)?'<p class="caption-text">Single-image-only models have no Total score.</p>':''}</div></div><div class="comparison-table-wrap"><table class="comparison-table"><thead><tr><th>Metric</th>${models.map((m,i)=>`<th><span class="series-dot" style="background:${colors[i]}"></span>${esc(m.name)}</th>`).join('')}</tr></thead><tbody>${tableSection('REASONING ACCURACY (%)',isPlus()?orderedAccuracyColumns():b.accuracy_columns,'accuracy')}${tableSection('EVALUATION SCORES (/100)',b.metrics,'metrics')}${isBreakdown()?tableSection(viewLabel().toUpperCase()+' (%)',availableColumns().filter(c=>state.visible.includes(c.key)).map(c=>({...c,label:qualifiedLabel(c)})),state.view):''}</tbody></table></div><div class="dialog-actions"><button class="outline-button" id="dialog-export">Export ${models.length===1?'model':'comparison'} CSV ↓</button></div>`);
195
+ $('#dialog-export').addEventListener('click',()=>exportCSV(models,'comparison'));
196
+ }
197
+ async function copyCitation(text,button) {
198
+ try {await navigator.clipboard.writeText(text);button.textContent='Copied ✓';toast('BibTeX copied.');}
199
+ catch(_){const area=document.createElement('textarea');area.value=text;($('#detail-dialog').open?$('#dialog-content'):document.body).appendChild(area);area.select();const copied=document.execCommand('copy');area.remove();toast(copied?'BibTeX copied.':'Select and copy the citation below.');}
200
+ }
201
+ function showCitation() {
202
+ const citation=CITATIONS[state.benchmark];
203
+ showDialog('CITATION',`<h2 class="dialog-title" id="dialog-title">Cite ${esc(benchmark().name)}</h2><pre class="citation-code"><code>${esc(citation)}</code></pre><div class="dialog-actions"><button class="primary-button" id="copy-citation">Copy BibTeX</button><button class="outline-button" id="save-citation">Download .bib ↓</button></div>`);
204
+ $('#copy-citation').addEventListener('click',e=>copyCitation(citation,e.currentTarget));
205
+ $('#save-citation').addEventListener('click',()=>download(state.benchmark+'.bib',citation+'\n','text/plain;charset=utf-8'));
206
+ }
207
+ document.addEventListener('click',event=>{
208
+ const button=event.target.closest('button');if(!button)return;
209
+ if(button.dataset.benchmark)switchBenchmark(button.dataset.benchmark);
210
+ if(button.dataset.view)switchView(button.dataset.view);
211
+ if(button.dataset.language)switchLanguage(button.dataset.language);
212
+ if(button.dataset.dimension){state.dimension=button.dataset.dimension;state.subcategory='all';resetScoreColumns();}
213
+ if(button.dataset.group){state.group=button.dataset.group;renderTable();}
214
+ if(button.dataset.sort){state.direction=state.sort===button.dataset.sort&&state.direction==='desc'?'asc':'desc';state.sort=button.dataset.sort;renderTable();}
215
+ if(button.dataset.model)showModels([button.dataset.model]);
216
+ if(button.dataset.remove)toggleSelected(button.dataset.remove,false);
217
+ });
218
+ document.addEventListener('change',event=>{
219
+ const input=event.target;
220
+ if(input.dataset.select)toggleSelected(input.dataset.select,input.checked);
221
+ if(input.dataset.column){
222
+ if(!input.checked&&state.visible.length===1){input.checked=true;toast('Keep at least one score column visible.');return;}
223
+ state.visible=input.checked?[...state.visible,input.dataset.column]:state.visible.filter(c=>c!==input.dataset.column);
224
+ if(!state.visible.includes(state.sort)){state.sort=availableColumns().find(c=>state.visible.includes(c.key)).key;state.direction='desc';}
225
+ renderTable();
226
+ }
227
+ });
228
+ $('#model-search').addEventListener('input',e=>{state.query=e.target.value;renderTable();});
229
+ $('#input-filter').addEventListener('change',e=>{state.input=e.target.value;renderTable();});
230
+ $('#subcategory-select').addEventListener('change',e=>{state.subcategory=e.target.value;resetScoreColumns();});
231
+ $('#page-copy-citation').addEventListener('click',e=>copyCitation(CITATIONS[state.benchmark],e.currentTarget));
232
+ $('#page-save-citation').addEventListener('click',()=>download(state.benchmark+'.bib',CITATIONS[state.benchmark]+'\n','text/plain;charset=utf-8'));
233
+ $('#reset-filters').addEventListener('click',resetFilters);$('#empty-reset').addEventListener('click',resetFilters);
234
+ $('#download-csv').addEventListener('click',()=>exportCSV(filteredModels()));
235
+ $('#compare-open').addEventListener('click',()=>showModels(state.selected));
236
+ $('#clear-compare').addEventListener('click',()=>{state.selected=[];renderTable();});
237
+ $('.dialog-close').addEventListener('click',()=>$('#detail-dialog').close());
238
+ $('#detail-dialog').addEventListener('click',e=>{if(e.target===$('#detail-dialog')){const r=e.target.getBoundingClientRect();if(e.clientX<r.left||e.clientX>r.right||e.clientY<r.top||e.clientY>r.bottom)e.target.close();}});
239
+ $('#citation-button').addEventListener('click',showCitation);
240
+ document.addEventListener('click',e=>{if(!$('#column-menu').contains(e.target))$('#column-menu').open=false;});
241
+ document.addEventListener('keydown',e=>{
242
+ if(e.key==='/'&&!['INPUT','TEXTAREA','SELECT'].includes(document.activeElement.tagName)&&!$('#detail-dialog').open){e.preventDefault();$('#model-search').focus();}
243
+ const tab=e.target.closest('[data-benchmark], [data-view], [data-language]');
244
+ if(tab&&['ArrowLeft','ArrowRight','Home','End'].includes(e.key)){
245
+ e.preventDefault();const siblings=[...tab.parentElement.querySelectorAll('[data-benchmark], [data-view], [data-language]')].filter(el=>!el.hidden),i=siblings.indexOf(tab);
246
+ const n=e.key==='Home'?0:e.key==='End'?siblings.length-1:(i+(e.key==='ArrowRight'?1:-1)+siblings.length)%siblings.length;
247
+ siblings[n].click();siblings[n].focus();
248
+ }
249
+ });
250
+ switchBenchmark(state.benchmark);
251
+ if(location.protocol!=='file:')fetch('/api/leaderboard',{cache:'no-store'}).then(r=>r.ok?r.json():null).then(data=>{
252
+ if(!data?.benchmarks)return;
253
+ DATA=data;
254
+ state.selected=state.selected.filter(id=>modelById(id));
255
+ renderResources();renderTable();
256
+ $('#json-download').href='/api/leaderboard';
257
+ }).catch(()=>{});
258
+ })();
assets/benchmark-overview.png ADDED

Git LFS Details

  • SHA256: 59575c79a544844ba500b0eac449ecf6134c39b41b6f341503c684954366ea01
  • Pointer size: 132 Bytes
  • Size of remote file: 2.15 MB
assets/favicon.svg ADDED
assets/rise-agent.png ADDED

Git LFS Details

  • SHA256: 7c9b6540c4980c7e16ccf54f6ed9cb120281ab201255fd0ab5609c43c476afc4
  • Pointer size: 132 Bytes
  • Size of remote file: 1.57 MB
data/leaderboard.json ADDED
The diff for this file is too large to render. See raw diff
 
index.html ADDED
The diff for this file is too large to render. See raw diff
 
portal.css ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .portal-width { width: min(1120px, calc(100% - 80px)); margin: auto; padding-bottom: 36px; }
2
+ .review-width { width: min(1420px, calc(100% - 80px)); }
3
+ .portal-nav { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 28px 0; border-bottom: 1px solid #e1e7ee; }
4
+ .wordmark { font-size: 23px; font-weight: 750; letter-spacing: -.8px; color: #2d435b; }
5
+ .wordmark span { color: #617eaf; }
6
+ .portal-nav > div { display: flex; gap: 25px; align-items: center; font-size: 14px; color: #71819a; }
7
+ .portal-nav [aria-current] { color: #345777; font-weight: 650; }
8
+ .portal-heading { padding: 44px 0 30px; }
9
+ .portal-heading h1 { font-size: clamp(30px, 4vw, 43px); letter-spacing: -1.2px; line-height: 1.2; margin: 0 0 14px; font-weight: 650; color: #233b55; }
10
+ .portal-heading p { margin: 0; color: #79899b; font-size: 16px; }
11
+ .portal-card { padding: 30px; border: 1px solid #dfe6ef; background: white; box-shadow: 0 5px 28px #1f385105; border-radius: 17px; margin-bottom: 24px; }
12
+ .portal-card h2 { font-size: 20px; color: #304861; font-weight: 650; margin: 0; letter-spacing: -.25px; }
13
+ .card-heading { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px; margin-bottom: 24px; }
14
+ .card-heading > span, .field-note { font-size: 13px; color: #8b98a7; }
15
+ .field-note { margin-top: -12px; margin-bottom: 20px; }
16
+ .form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 23px 26px; }
17
+ .portal-width label:not(.upload-zone):not(.confirmation) { display: block; font-size: 14px; color: #4b6077; font-weight: 550; }
18
+ .portal-width input:not([type=checkbox]):not([type=file]), .portal-width select, .portal-width textarea { display: block; width: 100%; border: 1px solid #d5dfea; border-radius: 9px; padding: 12px 14px; font: inherit; font-size: 15px; line-height: 1.5; color: #2e4661; background: #fcfdff; margin-top: 8px; min-width: 0; }
19
+ .portal-width textarea { resize: vertical; }
20
+ .portal-width select { appearance: none; -webkit-appearance: none; padding-right: 46px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%237589a2' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 16px center; background-size: 16px; }
21
+ .portal-width input[readonly] { background: #f2f5f8; color: #657990; }
22
+ .portal-width input::placeholder, .portal-width textarea::placeholder { color: #a0acba; }
23
+ .portal-width input:focus, .portal-width select:focus, .portal-width textarea:focus { outline: 2px solid #dce6f3; outline-offset: 1px; border-color: #8aa4c7; }
24
+ .portal-width small { display: block; margin-top: 7px; color: #8a97a7; font-size: 12px; font-weight: 400; }
25
+ .optional { color: #9aa6b5; font-size: 11px; font-weight: 450; margin-left: 7px; }
26
+ .full-width { grid-column: 1 / -1; }
27
+ .upload-zone { display: flex; position: relative; flex-direction: column; align-items: center; justify-content: center; gap: 8px; min-height: 190px; padding: 28px; background: #f8faff; border: 1px dashed #b9cce3; border-radius: 12px; text-align: center; cursor: pointer; color: #506c8f; }
28
+ .upload-zone:hover, .upload-zone.dragging { background: #f0f5fc; border-color: #7f9dc1; }
29
+ .upload-zone input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
30
+ .upload-zone:focus-within { outline: 2px solid #7598c5; outline-offset: 3px; }
31
+ .upload-zone svg { width: 28px; height: 28px; stroke: #7b98bb; fill: none; stroke-width: 1.5; margin-bottom: 9px; }
32
+ .upload-zone strong { font-size: 16px; font-weight: 550; }
33
+ .upload-zone > span { font-size: 12px; color: #899bb2; }
34
+ .file-preview { padding: 14px 17px; border-radius: 9px; background: #eef5f4; color: #49706c; margin-top: 14px; font-size: 14px; }
35
+ .artifacts { margin-top: 27px; }
36
+ .confirmation { display: flex; align-items: flex-start; gap: 12px; padding-top: 25px; font-size: 13px; color: #728399; font-weight: 400; line-height: 1.7; }
37
+ .confirmation input { margin-top: 4px; }
38
+ .form-bottom { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-top: 23px; }
39
+ .portal-width .primary-button { background: #3d648e; border-radius: 9px; font-size: 15px; font-weight: 550; padding: 12px 22px; white-space: nowrap; }
40
+ .portal-width .primary-button:hover { background: #2c507a; }
41
+ .portal-width .outline-button { color: #5d748f; border-color: #d5dfeb; font-size: 14px; }
42
+ .form-message { margin: 0; font-size: 14px; color: #647e89; line-height: 1.65; overflow-wrap: anywhere; }
43
+ .form-message.error { color: #aa4a55; }
44
+ .notice { padding: 14px 18px; border: 1px solid #e1dded; background: #f4f1fa; color: #77708e; border-radius: 10px; font-size: 14px; margin: 0 0 24px; }
45
+ .receipt-card { background: #f1f7fc; border-color: #d1e0f0; }
46
+ .receipt-card p { color: #6f8399; font-size: 14px; }
47
+ .receipt-fields { display: grid; gap: 12px; margin: 24px 0; }
48
+ .receipt-fields code { display: block; overflow-wrap: anywhere; background: #ffffffa8; padding: 12px; border: 1px solid #dfe6ed; border-radius: 7px; color: #506580; font-size: 13px; }
49
+ .receipt-fields small { margin-bottom: 6px; }
50
+ .status-badge { display: inline-block; border-radius: 5px; padding: 3px 8px; background: #eff2f7; color: #6e8099; font-size: 11px; font-weight: 600; }
51
+ .status-badge.pending { background: #fff4dd; color: #a38249; }
52
+ .status-badge.approved { background: #eaf3ed; color: #5d8a70; }
53
+ .status-badge.rejected, .status-badge.withdrawn { background: #f7edef; color: #a6717b; }
54
+ .login-card { max-width: 510px; }
55
+ .login-card h2 { margin-bottom: 22px; }
56
+ .login-card .form-message { margin: 16px 0; }
57
+ .login-caption { color: #667991; font-size: 16px; line-height: 1.7; }
58
+ .hf-login { display: inline-flex; color: #fff; text-decoration: none; align-items: center; }
59
+ .hf-login[hidden] { display: none; }
60
+ .review-identity { color: #64758b; font-size: 14px; margin: 0 0 20px; }
61
+ .review-toolbar { display: flex; gap: 18px; justify-content: space-between; align-items: center; margin-bottom: 24px; }
62
+ .review-filters { display: flex; gap: 6px; flex-wrap: wrap; }
63
+ .review-filters button { padding: 8px 12px; border: 1px solid transparent; border-radius: 7px; color: #8190a4; font-size: 14px; }
64
+ .review-filters button[aria-pressed=true] { background: #e9eff8; color: #45678d; border-color: #d1ddef; }
65
+ .review-filters span { margin-left: 6px; font-size: 12px; }
66
+ .review-layout { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 24px; }
67
+ .review-list { display: flex; flex-direction: column; gap: 12px; }
68
+ .submission-item { display: block; text-align: left; width: 100%; padding: 17px; border: 1px solid #dfe5ef; border-radius: 11px; background: white; }
69
+ .submission-item[aria-pressed=true] { border-color: #91adce; background: #f1f6fd; box-shadow: 0 0 0 2px #e6edf7; }
70
+ .submission-item strong { display: block; font-size: 15px; font-weight: 600; color: #3f5773; line-height: 1.5; overflow-wrap: anywhere; }
71
+ .submission-item p { font-size: 12px; color: #8896a9; margin: 6px 0 10px; }
72
+ .review-detail { min-height: 310px; }
73
+ .review-empty { text-align: center; padding: 48px 15px; color: #8b9aad; }
74
+ .review-empty p { font-size: 14px; }
75
+ .review-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; margin: 23px 0; font-size: 14px; }
76
+ .review-meta dt { font-size: 11px; text-transform: uppercase; letter-spacing: .8px; color: #96a3b4; margin-bottom: 5px; }
77
+ .review-meta dd { margin: 0; color: #546c84; overflow-wrap: anywhere; }
78
+ .review-meta a { color: #4675a5; text-decoration: underline; text-underline-offset: 3px; }
79
+ .review-notes { white-space: pre-wrap; color: #7f8fa3; background: #f6f8fb; padding: 14px; border-radius: 8px; font-size: 13px; margin-bottom: 24px; }
80
+ .review-scores { width: 100%; border-collapse: collapse; margin: 20px 0 26px; font-size: 14px; }
81
+ .review-scores th, .review-scores td { padding: 10px 12px; border-bottom: 1px solid #e7ecf2; text-align: right; color: #526a85; }
82
+ .review-scores th:first-child, .review-scores td:first-child { text-align: left; }
83
+ .review-scores th { font-weight: 550; color: #8898aa; font-size: 12px; background: #f7f9fc; }
84
+ .review-scores .score-section th { color: #7085a0; background: #edf2f9; padding-block: 8px; }
85
+ .changed-score { color: #405f8e !important; font-weight: 700; background: #f1f5fb; }
86
+ .review-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 22px; }
87
+ .reject-button { color: #9f6470 !important; border-color: #e7cfd5 !important; }
88
+ .history-list { color: #8292a4; font-size: 12px; padding-left: 20px; }
89
+ .submit-link { color: #456a93 !important; }
90
+ @media (max-width: 900px) { .review-layout { grid-template-columns: 1fr; } .review-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); } }
91
+ @media (max-width: 640px) { .portal-width { width: calc(100% - 32px); } .portal-nav { padding-block: 22px; } .portal-nav > div { gap: 13px; font-size: 12px; } .wordmark { font-size: 20px; } .portal-heading { padding-top: 32px; } .portal-card { padding: 21px 17px; } .form-grid, .review-meta, .review-list { grid-template-columns: 1fr; } .form-bottom { flex-direction: column; align-items: stretch; } .review-toolbar { flex-wrap: wrap; } .card-heading > span { font-size: 11px; } .review-scores th, .review-scores td { padding: 9px 6px; font-size: 12px; } }
portal.js ADDED
@@ -0,0 +1,158 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use strict';
2
+ (() => {
3
+ const $=s=>document.querySelector(s), $$=s=>[...document.querySelectorAll(s)];
4
+ const schema=JSON.parse($('#submission-schema').textContent);
5
+ const esc=v=>String(v??'').replace(/[&<>"']/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[c]));
6
+ const labels={pending:'Pending review',approved:'Approved',rejected:'Returned',withdrawn:'Withdrawn'};
7
+ const language=code=>code==='zh'?'Chinese':'English';
8
+ const format=value=>value==null?'—':value.toFixed(1);
9
+ const bById=id=>schema.benchmarks.find(b=>b.id===id);
10
+ const message=(selector,value,error=false)=>{const el=$(selector);el.textContent=value;el.classList.toggle('error',error);};
11
+ let config=null, token=sessionStorage.getItem('rise-review-session')||'';
12
+ async function api(path,body,admin=false) {
13
+ const response=await fetch(path,{method:body===undefined?'GET':'POST',cache:'no-store',headers:{...(body===undefined?{}:{'Content-Type':'application/json'}),...(admin?{Authorization:'Bearer '+token}:{})},...(body===undefined?{}:{body:JSON.stringify(body)})});
14
+ let data;try{data=await response.json();}catch(_){throw new Error('The submission service is not available.');}
15
+ if(!response.ok){const e=new Error(typeof data.detail==='string'?data.detail:'The request could not be completed.');e.status=response.status;throw e;}
16
+ return data;
17
+ }
18
+ function download(filename,data) {
19
+ const url=URL.createObjectURL(new Blob([JSON.stringify(data,null,2)+'\n'],{type:'application/json'}));
20
+ const a=document.createElement('a');a.href=url;a.download=filename;document.body.appendChild(a);a.click();a.remove();setTimeout(()=>URL.revokeObjectURL(url),1000);
21
+ }
22
+ async function connect() {
23
+ try{
24
+ config=await api('/api/config');
25
+ if(!config.available){config=null;$('#service-notice').hidden=false;$('#service-notice').textContent='Submissions are not open yet. You can browse the form and download a template.';return null;}
26
+ if(config.local_preview){$('#service-notice').hidden=false;$('#service-notice').textContent='Local preview · submissions and review decisions stay on this computer.';}
27
+ }catch(_){config=null;$('#service-notice').hidden=false;$('#service-notice').textContent='The submission service is offline. You can browse the form and download a template.';}
28
+ return config;
29
+ }
30
+ function makeTemplate(b) {
31
+ const data={accuracy:Object.fromEntries(b.accuracy_columns.map(c=>[c.label,null])),metrics:Object.fromEntries(b.metrics.map(c=>[c.label,null]))};
32
+ for(const [field,columns] of [['subcategories','subcategory_columns'],['task_types','task_type_columns']])if(b[columns]){
33
+ data[field]={};for(const c of b[columns]){const d=c.dimension[0].toUpperCase()+c.dimension.slice(1);(data[field][d]??={})[c.label]=null;}
34
+ }
35
+ return data;
36
+ }
37
+ if(document.body.dataset.page==='submit') {
38
+ const form=$('#submission-form');let result=null,receipt=null,fileSequence=0;
39
+ const entryParams=new URLSearchParams(location.search);
40
+ if(bById(entryParams.get('benchmark')))form.elements.benchmark.value=entryParams.get('benchmark');
41
+ if(['en','zh'].includes(entryParams.get('language')))form.elements.language.value=entryParams.get('language');
42
+ let models=schema,plusInputSupport=form.elements.multi_image.value;
43
+ const currentBenchmark=()=>bById(form.elements.benchmark.value);
44
+ function updateRevision() {
45
+ const b=models.benchmarks.find(b=>b.id===form.elements.benchmark.value);
46
+ const list=b.results_by_language[form.elements.language.value]?.models||[];
47
+ $('#submission-revision').innerHTML='<option value="">New result</option>'+list.map(m=>`<option value="${esc(m.id)}">${esc(m.name)}</option>`).join('');
48
+ }
49
+ function updateBenchmark() {
50
+ const singleImageOnly=currentBenchmark().id==='risebench';
51
+ form.elements.multi_image.value=singleImageOnly?'false':plusInputSupport;
52
+ form.elements.multi_image.hidden=singleImageOnly;
53
+ form.elements.multi_image.disabled=singleImageOnly;
54
+ $('#single-image-input').hidden=!singleImageOnly;
55
+ const selected=form.elements.language.value;
56
+ $('#submission-language').innerHTML=currentBenchmark().available_result_languages.map(code=>`<option value="${code}">${language(code)}</option>`).join('');
57
+ if(currentBenchmark().available_result_languages.includes(selected))form.elements.language.value=selected;
58
+ updateRevision();
59
+ }
60
+ $('#submission-benchmark').addEventListener('change',updateBenchmark);
61
+ form.elements.multi_image.addEventListener('change',()=>{plusInputSupport=form.elements.multi_image.value;});
62
+ $('#submission-language').addEventListener('change',updateRevision);
63
+ $('#submission-revision').addEventListener('change',()=>{const option=$('#submission-revision').selectedOptions[0];if(option.value)form.elements.model_name.value=option.textContent;});
64
+ $('#download-template').addEventListener('click',()=>download(currentBenchmark().id+'-results-template.json',makeTemplate(currentBenchmark())));
65
+ async function readFile(file) {
66
+ const sequence=++fileSequence;result=null;$('#file-preview').hidden=true;$('#result-file').setCustomValidity('');
67
+ if(!file)return;
68
+ try{
69
+ if(!file.name.toLowerCase().endsWith('.json')||file.size>200000)throw new Error('Choose a JSON file no larger than 200 KB.');
70
+ const value=JSON.parse(await file.text());
71
+ if(sequence!==fileSequence)return;
72
+ if(!value||Array.isArray(value)||typeof value!=='object'||!value.accuracy)throw new Error('Use the result JSON template, including its accuracy section.');
73
+ result=value;$('#upload-title').textContent=file.name;$('#upload-caption').textContent=(file.size/1024).toFixed(1)+' KB · JSON loaded';
74
+ const count=JSON.stringify(value).match(/:\s*\d+(?:\.\d+)?/g)?.length||0;
75
+ $('#file-preview').hidden=false;$('#file-preview').textContent=`${count} score values loaded. Fields and benchmark compatibility will be checked on submission.`;
76
+ message('#submission-message','');
77
+ }catch(error){$('#result-file').setCustomValidity(error.message);message('#submission-message',error.message,true);}
78
+ }
79
+ $('#result-file').addEventListener('change',e=>readFile(e.target.files[0]));
80
+ const zone=$('#upload-zone');zone.addEventListener('dragover',e=>{e.preventDefault();zone.classList.add('dragging');});zone.addEventListener('dragleave',()=>zone.classList.remove('dragging'));
81
+ zone.addEventListener('drop',e=>{e.preventDefault();zone.classList.remove('dragging');if(e.dataTransfer.files.length!==1){message('#submission-message','Choose one result JSON file.',true);return;}$('#result-file').files=e.dataTransfer.files;readFile(e.dataTransfer.files[0]);});
82
+ form.addEventListener('submit',async e=>{
83
+ e.preventDefault();if(!result){message('#submission-message','Choose a result JSON file first.',true);return;}
84
+ if(!config){message('#submission-message','The submission service is offline.',true);return;}
85
+ const button=$('#submit-results');button.disabled=true;message('#submission-message','Validating and submitting…');
86
+ const body=Object.fromEntries(new FormData(form));body.multi_image=currentBenchmark().id!=='risebench'&&form.elements.multi_image.value==='true';body.full_dataset=body.full_dataset==='on';body.results=result;
87
+ try{
88
+ receipt=await api('/api/submissions',body);
89
+ const card=$('#submission-receipt');card.hidden=false;
90
+ card.innerHTML=`<span class="status-badge pending">Pending review</span><h2 style="margin-top:16px">Results received.</h2><p>Save this receipt to check the review status. Results will appear on the leaderboard only after approval.</p><div class="receipt-fields"><div><small>Submission ID</small><code>${esc(receipt.submission_id)}</code></div><div><small>Private receipt key</small><code>${esc(receipt.status_token)}</code></div></div><button type="button" id="save-receipt" class="outline-button">Save receipt ↓</button>`;
91
+ $('#save-receipt').addEventListener('click',()=>download('rise-submission-receipt.json',receipt));
92
+ $('#status-form').elements.submission_id.value=receipt.submission_id;$('#status-form').elements.status_token.value=receipt.status_token;
93
+ form.hidden=true;card.scrollIntoView({behavior:'smooth',block:'start'});message('#submission-message','');
94
+ }catch(error){message('#submission-message',error.message,true);}finally{button.disabled=false;}
95
+ });
96
+ $('#status-form').addEventListener('submit',async e=>{e.preventDefault();try{const r=await api('/api/submission-status',Object.fromEntries(new FormData(e.currentTarget)));message('#status-result',`${r.model_name} — ${labels[r.status]}. ${r.review_note||''}`);}catch(error){message('#status-result',error.message,true);}});
97
+ updateBenchmark();connect().then(async()=>{if(!config){$('#submit-results').disabled=true;return;}try{models=await api('/api/leaderboard');updateRevision();}catch(_){}});
98
+ } else {
99
+ let records=[],filter='pending',selected=null,live=schema;
100
+ const current=()=>records.find(r=>r.id===selected);
101
+ function signOutView() {
102
+ token='';sessionStorage.removeItem('rise-review-session');records=[];selected=null;
103
+ $('#login-panel').hidden=false;$('#review-workspace').hidden=true;$('#sign-out').hidden=true;$('#review-identity').hidden=true;
104
+ $('#review-list').innerHTML='';$('#review-detail').innerHTML='';
105
+ }
106
+ async function loadQueue() {
107
+ try{
108
+ let reviewer;[records,live,reviewer]=await Promise.all([api('/api/admin/submissions',undefined,true),api('/api/leaderboard'),api('/api/admin/me',undefined,true)]);
109
+ $('#login-panel').hidden=true;$('#review-workspace').hidden=false;$('#sign-out').hidden=false;
110
+ $('#review-identity').hidden=false;$('#review-identity').textContent=`Signed in as ${reviewer.username}${reviewer.organization?' · '+reviewer.organization:''}`;
111
+ $('#pending-count').textContent=records.filter(r=>r.status==='pending').length;
112
+ message('#queue-message','');renderQueue();
113
+ }catch(error){if(error.status===401||error.status===403)signOutView();message($('#review-workspace').hidden?'#login-message':'#queue-message',error.message,true);}
114
+ }
115
+ function renderQueue() {
116
+ const items=records.filter(r=>filter==='all'||r.status===filter);
117
+ if(!items.some(r=>r.id===selected))selected=items[0]?.id||null;
118
+ $('#review-list').innerHTML=items.length?items.map(r=>`<button class="submission-item" data-record="${r.id}" aria-pressed="${selected===r.id}"><strong>${esc(r.payload.model_name)}</strong><p>${esc(bById(r.payload.benchmark).name)} · ${language(r.payload.language)}${r.payload.revision_of?' · Update':''}</p><span class="status-badge ${r.status}">${labels[r.status]}</span></button>`).join(''):'<div class="review-empty"><h2>No submissions</h2><p>New results will appear here.</p></div>';
119
+ renderDetail();
120
+ }
121
+ function scoreTable(record) {
122
+ const p=record.payload,b=bById(p.benchmark);
123
+ const previous=p.revision_of?live.benchmarks.find(x=>x.id===p.benchmark).results_by_language[p.language].models.find(m=>m.id===p.revision_of):null;
124
+ const sections=[['Reasoning accuracy','accuracy',b.accuracy_columns],['Evaluation scores','metrics',b.metrics],['Subcategory accuracy','subcategories',b.subcategory_columns||[]],['Task-type accuracy','task_types',b.task_type_columns||[]]];
125
+ return `<table class="review-scores"><thead><tr><th>Score</th>${previous?'<th>Published</th>':''}<th>Submitted</th></tr></thead><tbody>`+sections.map(([label,field,columns])=>{
126
+ const visible=columns.filter(c=>p[field]?.[c.key]!=null||field==='accuracy');
127
+ if(!visible.length)return '';
128
+ return `<tr class="score-section"><th colspan="${previous?3:2}">${label}</th></tr>`+visible.map(c=>{const value=p[field]?.[c.key],old=previous?.[field]?.[c.key];return `<tr><td>${esc((c.dimension?c.dimension[0].toUpperCase()+c.dimension.slice(1)+' · ':'')+c.label)}</td>${previous?`<td>${format(old)}</td>`:''}<td class="${previous&&old!==value?'changed-score':''}">${format(value)}</td></tr>`;}).join('');
129
+ }).join('')+'</tbody></table>';
130
+ }
131
+ function renderDetail() {
132
+ const r=current();if(!r){$('#review-detail').innerHTML='<div class="review-empty"><h2>Ready for review</h2><p>Select a submission to inspect its results.</p></div>';return;}
133
+ const p=r.payload,active=['pending','approved'].includes(r.status);
134
+ $('#review-detail').innerHTML=`<div class="card-heading"><h2>${esc(p.model_name)}</h2><span class="status-badge ${r.status}">${labels[r.status]}</span></div><dl class="review-meta"><div><dt>Benchmark</dt><dd>${esc(bById(p.benchmark).name)} · ${language(p.language)}</dd></div><div><dt>Input support</dt><dd>${p.multi_image?'Multiple input images':'Single input image'}</dd></div><div><dt>Team</dt><dd>${esc(p.team||'Not specified')}</dd></div><div><dt>Contact · private</dt><dd>${esc(p.email)}</dd></div><div><dt>Project</dt><dd><a href="${esc(p.project_url)}" target="_blank" rel="noopener noreferrer">Open project ↗</a></dd></div><div><dt>Evaluation artifacts</dt><dd><a href="${esc(p.evidence_url)}" target="_blank" rel="noopener noreferrer">Inspect results ↗</a></dd></div><div><dt>Submitted</dt><dd>${esc(new Date(r.submitted_at).toLocaleString())}</dd></div><div><dt>Model category</dt><dd>${esc({open:'Open-source',closed:'Closed-source',agentic:'Agentic method'}[p.group])}</dd></div></dl>${p.revision_of?'<p class="notice">This update replaces an existing result. Verify the submitter’s authority before approval.</p>':''}${p.notes?`<div class="review-notes">${esc(p.notes)}</div>`:''}${scoreTable(r)}<button class="outline-button" id="download-review-json">Download submission ↓</button>${active?`<form id="review-form"><label style="margin-top:24px">Review note<textarea id="review-note" rows="3" maxlength="3000" placeholder="Required when returning or withdrawing results; visible to the submitter"></textarea></label><label class="confirmation"><input id="review-confirmed" type="checkbox" required><span>${r.status==='pending'?'I have checked the evaluation artifacts, full-dataset protocol, and submitter’s authority.':'I confirm this approved result should be withdrawn from the leaderboard.'}</span></label><p class="form-message" id="review-message" role="status"></p><div class="review-actions">${r.status==='pending'?'<button type="submit" class="primary-button" value="approve">Approve & publish</button><button type="submit" class="outline-button reject-button" value="reject">Return to submitter</button>':'<button type="submit" class="outline-button reject-button" value="withdraw">Withdraw result</button>'}</div></form>`:''}${r.history.length?`<h3 style="font-size:14px;margin-top:28px">Review history</h3><ul class="history-list">${r.history.map(h=>`<li>${esc(h.decision)} · ${esc(new Date(h.at).toLocaleString())}${h.reviewer?' · '+esc(h.reviewer):''}${h.note?' — '+esc(h.note):''}</li>`).join('')}</ul>`:''}`;
135
+ $('#download-review-json').addEventListener('click',()=>download('rise-submission-'+r.id+'.json',r));
136
+ $('#review-form')?.addEventListener('submit',async e=>{
137
+ e.preventDefault();const decision=e.submitter.value,note=$('#review-note').value.trim();
138
+ if(decision!=='approve'&&!note){message('#review-message','Add a review note explaining this decision.',true);return;}
139
+ $$('#review-form button').forEach(b=>b.disabled=true);
140
+ try{await api('/api/admin/submissions/'+r.id+'/review',{decision,note,revision:r.revision,confirmed:$('#review-confirmed').checked},true);await loadQueue();message('#queue-message',decision==='approve'?'Approved. The result is now on the leaderboard.':decision==='reject'?'Returned. The submitter can read your note using their receipt.':'Withdrawn from the leaderboard.');}
141
+ catch(error){message('#review-message',error.message,true);$$('#review-form button').forEach(b=>b.disabled=false);}
142
+ });
143
+ }
144
+ document.addEventListener('click',e=>{const button=e.target.closest('button');if(!button)return;if(button.dataset.record){selected=button.dataset.record;renderQueue();}if(button.dataset.status){filter=button.dataset.status;$$('[data-status]').forEach(b=>b.setAttribute('aria-pressed',b.dataset.status===filter));renderQueue();}});
145
+ $('#login-form').addEventListener('submit',async e=>{e.preventDefault();$('#login-button').disabled=true;try{const r=await api('/api/admin/session',{});token=r.token;sessionStorage.setItem('rise-review-session',token);await loadQueue();}catch(error){message('#login-message',error.message,true);}finally{$('#login-button').disabled=false;}});
146
+ $('#sign-out').addEventListener('click',async()=>{try{await api('/api/admin/logout',{},true);}finally{signOutView();}});
147
+ $('#refresh-queue').addEventListener('click',loadQueue);
148
+ connect().then(async()=>{
149
+ if(!config){$('#login-caption').textContent='Administrator sign-in is not available yet.';return;}
150
+ $('#login-form').hidden=!config.local_preview;$('#hf-login').hidden=config.local_preview;
151
+ if(config.local_preview){$('#login-caption').textContent='Open the review workspace for this local preview.';if(token)loadQueue();return;}
152
+ token='';sessionStorage.removeItem('rise-review-session');$('#hf-login').href=config.admin_login_url;
153
+ const error=new URLSearchParams(location.search).get('login_error');
154
+ if(error){message('#login-message',({membership:'Only current VisionXLab members can review submissions.',state:'This sign-in attempt expired. Please try again.',cancelled:'Sign-in was cancelled.',signin:'Could not complete Hugging Face sign-in. Please try again.'})[error]||'Please sign in again.',true);history.replaceState(null,'',location.pathname);return;}
155
+ try{await api('/api/admin/me');await loadQueue();}catch(error){if(error.status!==401)message('#login-message',error.message,true);}
156
+ });
157
+ }
158
+ })();
styles.css ADDED
@@ -0,0 +1,390 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ :root {
2
+ --ink: #152c3b;
3
+ --muted: #627581;
4
+ --blue: #167b79;
5
+ --teal: #167b79;
6
+ --navy: #163a48;
7
+ --line: #dfe7e8;
8
+ --surface: #fff;
9
+ --canvas: #f7f9f9;
10
+ --soft: #edf6f4;
11
+ --shadow: 0 6px 32px #153c4410;
12
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Arial, sans-serif;
13
+ color: var(--ink);
14
+ font-size: 16px;
15
+ font-synthesis: none;
16
+ }
17
+ * { box-sizing: border-box; }
18
+ html { scroll-behavior: smooth; scroll-padding-top: 28px; }
19
+ body { margin: 0; background: var(--canvas); line-height: 1.65; -webkit-font-smoothing: antialiased; }
20
+ button, input, select, summary { font: inherit; -webkit-tap-highlight-color: transparent; }
21
+ button, summary, select { cursor: pointer; }
22
+ button { border: 0; background: none; color: inherit; }
23
+ button:disabled { cursor: not-allowed; opacity: .45; }
24
+ a { color: inherit; text-decoration: none; }
25
+ a:hover { color: var(--blue); }
26
+ :focus-visible { outline: 2px solid var(--blue); outline-offset: 4px; border-radius: 4px; }
27
+ [hidden] { display: none !important; }
28
+ .sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; }
29
+ .skip-link { position: fixed; top: -100px; left: 20px; padding: 12px 20px; background: white; z-index: 99; }
30
+ .skip-link:focus { top: 12px; }
31
+ .page-width { width: min(1536px, calc(100% - 96px)); margin-inline: auto; }
32
+ .muted { color: var(--muted); }
33
+ .divider { margin: 0 8px; color: #b1c0c4; }
34
+
35
+ /* Compact page heading */
36
+ main { padding-bottom: 48px; }
37
+ .leaderboard-header { display: flex; align-items: center; justify-content: space-between; gap: 24px 40px; flex-wrap: wrap; padding-block: 36px 30px; }
38
+ .leaderboard-header h1 { font-size: clamp(28px, 2.5vw, 36px); font-weight: 650; line-height: 1.25; letter-spacing: -1.1px; margin: 0; }
39
+ .resource-links { display: flex; gap: 20px; flex-wrap: wrap; align-items: center; }
40
+ .resource-links a { display: inline-flex; align-items: center; gap: 6px; min-height: 40px; font-size: 15px; font-weight: 550; color: #58717f; }
41
+ .resource-links a:hover { color: var(--blue); text-decoration: underline; text-underline-offset: 4px; }
42
+ .resource-links span { font-size: 14px; color: #8b9eaa; }
43
+ .eyebrow { font-size: 12px; letter-spacing: 1.4px; font-weight: 700; color: var(--blue); display: flex; align-items: center; gap: 9px; line-height: 1.6; }
44
+ .eyebrow.muted { color: var(--muted); }
45
+
46
+ /* Benchmark switcher and context */
47
+ .board-section { scroll-margin-top: 24px; }
48
+ .benchmark-bar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 20px; padding-bottom: 22px; }
49
+ .benchmark-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 24px; max-width: 100%; margin-left: auto; }
50
+ .submit-results-button { display: inline-flex; align-items: center; justify-content: center; gap: 11px; min-height: 52px; padding: 12px 22px; border: 1px solid #34577d; border-radius: 11px; background: #3b6088; color: #fff; font-size: 16px; font-weight: 650; white-space: nowrap; box-shadow: 0 4px 12px #2d527923; transition: background .15s, box-shadow .15s; }
51
+ .submit-results-button:hover { background: #2d4e74; color: #fff; box-shadow: 0 6px 16px #2d52792b; }
52
+ .submit-results-button:focus-visible { outline-color: #456c99; }
53
+ .submit-results-button .button-icon { width: 20px; height: 20px; }
54
+ .benchmark-tabs { display: inline-flex; gap: 6px; padding: 6px; background: #eaf0f0; border: 1px solid #dde6e7; border-radius: 14px; }
55
+ .benchmark-tabs button { display: flex; align-items: center; justify-content: center; padding: 10px 22px; min-height: 50px; border: 1px solid transparent; border-radius: 10px; font-size: 20px; font-weight: 650; color: #637982; letter-spacing: -.5px; transition: background .15s, color .15s; }
56
+ .benchmark-tabs button:hover { color: var(--ink); }
57
+ .benchmark-tabs button[aria-pressed=true] { background: white; color: var(--ink); border-color: #d8e5e3; box-shadow: 0 2px 6px #193b4810; }
58
+ .plus { color: var(--teal); }
59
+ .text-button { padding: 0; color: var(--blue); font-size: 14px; font-weight: 600; white-space: nowrap; }
60
+ .text-button:hover, .text-link:hover { text-decoration: underline; text-underline-offset: 4px; }
61
+
62
+ /* Instruction language is a result setting, shared by both score views. */
63
+ .board-options { display: flex; align-items: center; margin-left: auto; }
64
+ .result-language { display: flex; align-items: center; gap: 13px; flex-shrink: 0; margin-left: auto; }
65
+ .result-language > span { font-size: 13px; color: #627886; }
66
+ .language-tabs { display: flex; gap: 3px; padding: 4px; background: #eaf0f5; border: 1px solid #dde5ed; border-radius: 11px; }
67
+ .language-tabs button { min-height: 38px; min-width: 75px; padding: 6px 16px; border: 1px solid transparent; border-radius: 7px; font-size: 14px; font-weight: 550; line-height: 1.5; color: #718599; }
68
+ .language-tabs button:hover { color: #355777; background: #ffffff65; }
69
+ .language-tabs button[aria-pressed=true] { background: #fff; color: #355777; border-color: #d5e0eb; box-shadow: 0 1px 4px #2649630d; font-weight: 650; }
70
+
71
+ @media (max-width: 540px) {
72
+ .board-options { width: 100%; margin-top: 14px; }
73
+ .result-language { width: 100%; justify-content: space-between; }
74
+ .language-tabs button { min-height: 40px; padding-inline: 13px; min-width: 70px; }
75
+ }
76
+
77
+ /* Results toolbar */
78
+ .board-card { background: white; border: 1px solid #d8e2e4; border-radius: 18px; box-shadow: var(--shadow); overflow: visible; }
79
+ .view-row { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--line); padding: 18px 24px; gap: 20px; }
80
+ .view-tabs { display: flex; align-items: center; padding: 4px; gap: 4px; background: #f0f4f4; border-radius: 11px; }
81
+ .view-tabs button { font-size: 15px; font-weight: 600; color: #667b86; min-height: 42px; padding: 9px 16px; border: 1px solid transparent; border-radius: 8px; white-space: nowrap; }
82
+ .view-tabs button[aria-pressed=true] { color: #186760; background: white; border-color: #dce7e4; box-shadow: 0 1px 4px #213c4310; }
83
+ .view-tabs button > span { font-size: 12px; font-weight: 500; color: #6b8388; margin-left: 6px; }
84
+ .view-actions { display: flex; gap: 10px; align-items: center; }
85
+ .quiet-button, .outline-button { display: inline-flex; align-items: center; justify-content: center; gap: 9px; font-size: 15px; font-weight: 550; padding: 10px 14px; min-height: 44px; border-radius: 9px; white-space: nowrap; transition: background .15s, border-color .15s; }
86
+ .quiet-button { color: #516c78; }
87
+ .quiet-button:hover { background: #edf4f3; color: #1e635e; }
88
+ .view-actions .quiet-button { border: 1px solid #dce5e7; background: white; }
89
+ .view-actions .quiet-button:hover { border-color: #a8c9c5; background: #f6faf9; }
90
+ .button-icon { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.65; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; }
91
+ .outline-button { border: 1px solid #c8d8db; background: white; padding: 11px 18px; }
92
+ .outline-button:hover { border-color: var(--teal); background: #f4faf8; }
93
+ .column-menu { position: relative; }
94
+ .column-menu summary { list-style: none; }
95
+ .column-menu summary::-webkit-details-marker { display: none; }
96
+ .column-popover { position: absolute; top: calc(100% + 12px); right: 0; background: white; border: 1px solid #d6e3e2; border-radius: 14px; padding: 14px; box-shadow: 0 12px 44px #173b4926; width: 264px; z-index: 20; }
97
+ .column-popover .eyebrow { padding: 5px 8px 12px; font-size: 11px; }
98
+ .column-popover label { display: flex; align-items: center; font-size: 15px; gap: 12px; padding: 8px; border-radius: 6px; }
99
+ .column-popover label:hover { background: #edf6f3; }
100
+ input[type=checkbox] { accent-color: var(--teal); width: 17px; height: 17px; margin: 0; cursor: pointer; flex-shrink: 0; vertical-align: middle; }
101
+ .filter-row { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; padding: 22px 24px 16px; }
102
+ .search-box { display: flex; align-items: center; border: 1px solid #cedcdf; border-radius: 10px; height: 46px; width: 270px; padding: 0 13px; gap: 10px; flex-shrink: 0; background: #fff; transition: box-shadow .15s, border-color .15s; }
103
+ .search-box svg { width: 19px; height: 19px; fill: none; stroke: #728d96; stroke-width: 1.7; flex-shrink: 0; }
104
+ .search-box input { min-width: 0; width: 100%; border: 0; outline: none; font-size: 16px; background: transparent; color: var(--ink); padding: 0; }
105
+ .search-box input::placeholder { color: #7a8d96; }
106
+ .search-box:focus-within { border-color: var(--teal); box-shadow: 0 0 0 3px #167b7912; }
107
+ .search-box kbd { border: 1px solid #dfe7e9; border-radius: 4px; padding: 0 6px; color: #8b9da4; font: 13px/22px ui-monospace, monospace; }
108
+ .group-filters { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; }
109
+ .group-filters button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 9px 11px; min-height: 42px; border-radius: 8px; font-size: 14px; font-weight: 550; color: #667f89; border: 1px solid transparent; white-space: nowrap; }
110
+ .group-filters button span { font-size: 12px; min-width: 23px; padding: 1px 5px; line-height: 1.5; text-align: center; background: #edf2f3; color: #6b838d; border-radius: 5px; font-variant-numeric: tabular-nums; }
111
+ .group-filters button:hover { background: #f2f7f6; color: var(--ink); }
112
+ .group-filters button[aria-pressed=true] { color: #1d6c63; background: #eaf5f0; border-color: #cee5dc; }
113
+ .group-filters button[aria-pressed=true] span { background: #d5eae1; color: #317867; }
114
+ .input-filter { margin-left: auto; position: relative; flex-shrink: 0; }
115
+ .input-filter:after { content: ""; width: 7px; height: 7px; border: solid #62828a; border-width: 0 1.7px 1.7px 0; transform: rotate(45deg); position: absolute; right: 17px; top: 18px; pointer-events: none; }
116
+ .input-filter select { appearance: none; -webkit-appearance: none; display: block; width: 228px; height: 46px; border: 1px solid #cedcdf; border-radius: 10px; padding: 0 40px 0 15px; background: white; color: #476572; font-size: 15px; font-weight: 500; line-height: normal; outline: none; transition: border-color .15s, box-shadow .15s; }
117
+ .input-filter select:hover { border-color: #97b9b5; }
118
+ .input-filter select:focus-visible { border-color: var(--teal); box-shadow: 0 0 0 3px #167b7917; outline: none; }
119
+ .table-context { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; padding: 0 26px 20px; color: #788e97; font-size: 13px; }
120
+ .table-context > #result-count { color: #58727c; }
121
+ .table-context strong { color: #244d59; font-weight: 650; }
122
+ .sort-hint { margin-left: auto; }
123
+
124
+ /* Wide, readable score table. Row headers and data cells share geometry. */
125
+ .table-scroll { overflow: auto; scrollbar-width: thin; scrollbar-color: #adc9c5 #f2f7f5; border-top: 1px solid var(--line); }
126
+ .table-scroll:focus-visible { outline-offset: -2px; }
127
+ .table-scroll table { width: 100%; border-collapse: separate; border-spacing: 0; table-layout: fixed; font-size: 16px; }
128
+ .table-scroll thead th { height: 72px; background: #f2f6f6; color: #526d77; font-weight: 600; border-bottom: 1px solid #d7e3e3; text-align: center; padding: 10px 8px; vertical-align: middle; font-size: 14px; }
129
+ .table-scroll thead th button { font-size: 14px; font-weight: 600; line-height: 1.4; width: 100%; display: flex; align-items: center; justify-content: center; gap: 5px; padding: 8px 0; }
130
+ .sort-icon { font-size: 12px; color: #afc0c4; }
131
+ .table-scroll th[aria-sort=ascending] .sort-icon, .table-scroll th[aria-sort=descending] .sort-icon { color: var(--teal); }
132
+ .table-scroll thead th.active-sort { background: #e6f2ed; color: #1c7868; }
133
+ .table-scroll thead th.summary-result { background: #e9eef5; color: #45617e; }
134
+ .table-scroll thead th.summary-result.active-sort { background: #dfe8f2; color: #355777; }
135
+ .table-scroll thead th.summary-result.active-sort .sort-icon { color: #52769b; }
136
+ .table-scroll tbody td, .table-scroll tbody th { padding: 14px 8px; border-bottom: 1px solid #e8eeee; height: 72px; vertical-align: middle; background: white; }
137
+ .table-scroll td { text-align: center; font-variant-numeric: tabular-nums; }
138
+ .table-scroll tbody tr:last-child > * { border-bottom: 0; }
139
+ .table-scroll tbody tr:hover td { box-shadow: inset 0 0 0 100px #17866e06; }
140
+ .table-scroll .select-cell { width: 42px; padding-inline: 6px; }
141
+ .table-scroll .rank-cell { width: 48px; color: #7f929a; font-size: 14px; }
142
+ .table-scroll td.rank-cell .rank-top { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; font-weight: 650; border-radius: 50%; background: #eef3f4; color: #557681; }
143
+ .table-scroll td.rank-cell .rank-1 { background: #fff2d7; color: #9c712a; }
144
+ .table-scroll td.rank-cell .rank-2 { background: #edf1f5; color: #657b91; }
145
+ .table-scroll td.rank-cell .rank-3 { background: #f7eae0; color: #9c7355; }
146
+ .table-scroll .model-cell { text-align: left; padding-left: 14px; width: 280px; position: sticky; left: 0; z-index: 3; background: white; border-right: 1px solid #e3ebeb; }
147
+ .table-scroll thead th.model-cell { background: #f2f6f6; z-index: 4; font-size: 14px; }
148
+ .table-scroll tbody th.model-cell { padding: 14px; }
149
+ .table-scroll .model-button { padding: 0; max-width: 100%; width: auto; text-align: left; display: block; font-size: 15px; font-weight: 600; color: #203f4c; line-height: 1.4; }
150
+ .model-button:hover { color: var(--teal); text-decoration: underline; text-underline-offset: 4px; }
151
+ .model-meta { display: flex; align-items: center; gap: 6px; margin-top: 6px; font-size: 11px; font-weight: 450; color: #798e96; line-height: 1.3; }
152
+ .group-dot { width: 5px; height: 5px; border-radius: 50%; background: #7993b0; }
153
+ .group-dot.open { background: #509b82; }
154
+ .group-dot.agentic { background: #9c80b5; }
155
+ .ours-badge { font-size: 9px; font-weight: 650; letter-spacing: .5px; color: #30745a; background: #e1f1e9; padding: 2px 5px; border-radius: 4px; margin-left: 3px; }
156
+ .input-pill { display: inline-block; font-size: 11px; padding: 3px 7px; border: 1px solid #e0e8eb; border-radius: 6px; color: #788d97; white-space: nowrap; background: #fafcfc; }
157
+ .input-pill.multi { color: #447f7c; background: #edf6f3; border-color: #d7eae5; }
158
+ .score-cell { color: #365765; font-weight: 500; }
159
+ .score-cell.summary-result { font-size: 17px; font-weight: 650; color: #3c5976; }
160
+ .score-cell.overall { font-weight: 700; color: #355777; position: relative; font-size: 17px; }
161
+ .score-cell .score-meter { position: absolute; left: 50%; bottom: 12px; transform: translateX(-50%); display: block; height: 3px; width: 44px; margin: 0; background: #7c98b51a; border-radius: 5px; overflow: hidden; }
162
+ .score-meter i { display: block; height: 3px; background: #92abc4; border-radius: 5px; }
163
+ .score-cell.missing { color: #aebec3; font-weight: 400; background: #fcfdfd !important; }
164
+ .score-cell.summary-result.missing { color: #9aaabd; background: #f3f5f9 !important; }
165
+ .table-scroll tbody tr:hover th.model-cell { background: #f5faf8; }
166
+ .table-scroll tbody tr.selected th.model-cell { background: #eaf5f0; box-shadow: inset 3px 0 #31947b; }
167
+ .table-scroll tbody tr.ours th.model-cell { background: #f0f8f3; }
168
+ .table-scroll tr.ours .model-button { color: #24754f; }
169
+ .table-footer { padding: 8px 20px; display: flex; align-items: center; justify-content: space-between; gap: 15px; font-size: 13px; color: #728b94; border-top: 1px solid var(--line); }
170
+ .footer-actions { display: flex; gap: 6px; align-items: center; }
171
+ .footer-actions .quiet-button { font-size: 13px; min-height: 38px; padding: 6px 10px; }
172
+ .empty-state { padding: 60px 20px; text-align: center; }
173
+ .empty-state > span { font-size: 40px; color: #a2c0c1; }
174
+ .empty-state h3 { font-size: 22px; margin: 5px; }
175
+ .empty-state p { font-size: 16px; color: var(--muted); margin: 0 0 24px; }
176
+ .primary-button { background: var(--teal); color: white; font-size: 15px; font-weight: 600; padding: 11px 19px; min-height: 46px; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center; gap: 10px; box-shadow: 0 2px 4px #167b7910; }
177
+ .primary-button:hover:not(:disabled) { background: #106b67; color: white; }
178
+
179
+ .caption-text { font-size: 13px; color: #728991; margin: 10px 0 0; }
180
+
181
+ /* Comparisons and dialogs */
182
+ .compare-tray { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%); width: min(1040px, calc(100% - 40px)); padding: 18px 22px; background: #fffffff5; backdrop-filter: blur(14px); border: 1px solid #c4dbd6; box-shadow: 0 12px 60px #163c4929; border-radius: 16px; z-index: 25; display: flex; justify-content: space-between; align-items: center; gap: 20px; }
183
+ .compare-tray > div:first-child { min-width: 0; }
184
+ .compare-tray strong { font-size: 13px; color: #527981; }
185
+ .compare-tray #compare-chips { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 8px; }
186
+ .compare-chip { display: inline-flex; gap: 8px; align-items: center; background: #edf5f1; color: #45776d; font-size: 12px; border-radius: 6px; padding: 4px 9px; }
187
+ .compare-chip button { font-size: 18px; padding: 0 2px; line-height: 1; min-width: 20px; min-height: 24px; }
188
+ .tray-actions { display: flex; gap: 12px; flex-shrink: 0; }
189
+ dialog { padding: 28px 36px 36px; border: 1px solid #d6e3e3; border-radius: 20px; width: min(1060px, calc(100% - 40px)); max-height: 90vh; color: var(--ink); box-shadow: 0 25px 100px #12333f50; overflow: auto; }
190
+ dialog::backdrop { background: #15384070; backdrop-filter: blur(5px); }
191
+ .dialog-top { display: flex; justify-content: space-between; align-items: center; gap: 20px; }
192
+ .dialog-close { font-size: 27px; color: #6a8892; padding: 0; line-height: 1; background: #f0f5f4; border-radius: 50%; width: 38px; height: 38px; flex-shrink: 0; }
193
+ .dialog-close:hover { background: #e1efea; }
194
+ .dialog-title { font-size: 30px; margin: 18px 0 7px; line-height: 1.35; letter-spacing: -.6px; }
195
+ .dialog-subtitle { font-size: 15px; color: var(--muted); margin: 0 0 24px; }
196
+ .comparison-layout { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 20px; }
197
+ .radar { max-height: 380px; width: 100%; overflow: visible; }
198
+ .radar-label { font: 10.5px -apple-system,sans-serif; fill: #557782; }
199
+ .radar-value { font: 8px ui-monospace,monospace; fill: #90a5ad; }
200
+ .compare-summaries { display: flex; flex-direction: column; gap: 14px; }
201
+ .compare-summary { padding: 16px 18px; background: #f3f8f6; border: 1px solid #e0ebe6; border-radius: 10px; display: flex; justify-content: space-between; align-items: center; gap: 14px; }
202
+ .compare-summary h4 { font-size: 15px; margin: 0 0 7px; line-height: 1.5; }
203
+ .compare-summary p { font-size: 12px; color: var(--muted); margin: 0; }
204
+ .compare-summary strong { font-size: 30px; font-weight: 650; font-variant-numeric: tabular-nums; white-space: nowrap; }
205
+ .compare-summary strong small { font-size: 11px; font-weight: 400; color: var(--muted); }
206
+ .series-dot { width: 7px; height: 7px; display: inline-block; border-radius: 50%; margin-right: 6px; }
207
+ .comparison-warning { padding: 13px 16px; border: 1px solid #e8ddbb; background: #fffbef; color: #8b7742; font-size: 13px; border-radius: 8px; margin: 18px 0; }
208
+ .comparison-table-wrap { overflow: auto; }
209
+ .comparison-table { width: 100%; border-collapse: collapse; font-size: 15px; margin-top: 20px; }
210
+ .comparison-table th, .comparison-table td { padding: 13px 12px; text-align: center; border-bottom: 1px solid #e3ebeb; font-variant-numeric: tabular-nums; min-width: 125px; }
211
+ .comparison-table th { font-size: 14px; background: #f0f6f3; font-weight: 600; }
212
+ .comparison-table th:first-child, .comparison-table td:first-child { text-align: left; min-width: 190px; }
213
+ .comparison-table .best-value { font-weight: 750; color: var(--teal); }
214
+ .comparison-section td { font-size: 11px; font-weight: 700; letter-spacing: 1px; color: #78948f; padding-top: 24px; background: #fcfefd; }
215
+ .dialog-actions { display: flex; gap: 12px; margin-top: 26px; justify-content: flex-end; flex-wrap: wrap; }
216
+ .citation-code { background: #f3f7f5; border: 1px solid #dfe8e3; border-radius: 10px; padding: 22px; font: 13px/1.85 ui-monospace,SFMono-Regular,monospace; white-space: pre-wrap; overflow-wrap: anywhere; }
217
+ .toast { position: fixed; bottom: 132px; left: 50%; transform: translateX(-50%); padding: 12px 22px; background: #234e58; color: #fff; font-size: 14px; border-radius: 10px; box-shadow: 0 5px 25px #17324d20; z-index: 100; text-align: center; max-width: 90%; }
218
+ .noscript { margin: 30px; text-align: center; }
219
+ .noscript a { text-decoration: underline; }
220
+
221
+ /* Maintain readable text at smaller widths; only the score table scrolls. */
222
+ @media (max-width: 1350px) {
223
+ .page-width { width: calc(100% - 64px); }
224
+ .filter-row { gap: 14px; }
225
+ .search-box { width: 240px; }
226
+ .group-filters { gap: 2px; }
227
+ .group-filters button { padding-inline: 9px; }
228
+ .input-filter select { width: 218px; }
229
+ }
230
+ @media (max-width: 1100px) {
231
+ .filter-row .search-box { width: 270px; }
232
+ .group-filters { order: 3; width: 100%; gap: 8px; }
233
+ .input-filter { margin-left: auto; }
234
+ .sort-hint { margin-left: 0; }
235
+ .view-row { padding-inline: 18px; gap: 12px; }
236
+ .view-tabs button { padding-inline: 12px; }
237
+ .view-actions { gap: 6px; }
238
+ .view-actions .quiet-button { padding-inline: 12px; font-size: 14px; }
239
+ }
240
+ @media (max-width: 820px) {
241
+ .page-width { width: calc(100% - 40px); }
242
+ .benchmark-tabs button { padding-inline: 16px; font-size: 19px; }
243
+ .view-row { flex-wrap: wrap; padding: 16px 20px; gap: 14px; }
244
+ .view-actions { margin-left: auto; }
245
+ .sort-hint { width: 100%; }
246
+ .table-context { padding-inline: 22px; }
247
+ .caption-text { text-align: left; max-width: none; }
248
+ .comparison-layout { grid-template-columns: 1fr; gap: 24px; }
249
+ .radar { max-height: 320px; }
250
+ .table-footer { flex-wrap: wrap; }
251
+ .compare-tray { padding: 16px; gap: 12px; }
252
+ .tray-actions { flex-direction: column-reverse; gap: 5px; }
253
+ .tray-actions .quiet-button { min-height: 30px; padding: 2px 12px; }
254
+ }
255
+ @media (max-width: 540px) {
256
+ .page-width { width: calc(100% - 32px); }
257
+ .leaderboard-header { padding-block: 26px 22px; gap: 12px; }
258
+ .leaderboard-header h1 { font-size: 28px; letter-spacing: -.7px; }
259
+ .resource-links { gap: 20px; }
260
+ .resource-links a { font-size: 14px; min-height: 36px; }
261
+ .benchmark-bar { display: block; padding-bottom: 18px; }
262
+ .benchmark-actions { flex-direction: column; align-items: stretch; gap: 16px; margin-top: 16px; }
263
+ .benchmark-actions .board-options { margin-top: 0; }
264
+ .submit-results-button { width: 100%; }
265
+ .benchmark-tabs { width: 100%; gap: 4px; padding: 5px; }
266
+ .benchmark-tabs button { flex: 1; padding: 9px 10px; min-height: 48px; font-size: 19px; }
267
+ .board-card { border-radius: 13px; }
268
+ .view-row { padding: 14px; gap: 14px; }
269
+ .view-tabs { width: 100%; gap: 2px; }
270
+ .view-tabs button { flex: 1 1 0; min-width: 0; white-space: normal; font-size: 14px; padding: 8px; min-height: 48px; line-height: 1.4; }
271
+ .view-tabs button > span { display: none; }
272
+ .view-actions { width: 100%; gap: 8px; justify-content: flex-end; }
273
+ .view-actions .quiet-button { font-size: 14px; min-height: 42px; padding: 7px 12px; }
274
+ .filter-row { padding: 16px 14px 14px; gap: 14px; }
275
+ .filter-row .search-box { width: 100%; }
276
+ .input-filter { width: 100%; order: 3; }
277
+ .input-filter select { width: 100%; font-size: 16px; }
278
+ .group-filters { order: 2; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }
279
+ .group-filters button { padding: 8px 10px; justify-content: space-between; font-size: 13px; border-color: #e2e9e9; }
280
+ .table-context { padding: 0 15px 16px; font-size: 12px; gap: 6px; }
281
+ .sort-hint { font-size: 12px; line-height: 1.8; }
282
+ .sort-hint .divider { margin-inline: 4px; }
283
+ .table-scroll .model-cell { width: 190px; }
284
+ .table-scroll tbody th.model-cell { padding: 14px 10px; }
285
+ .table-scroll .model-button { font-size: 15px; }
286
+ .table-footer { padding: 8px 14px; gap: 10px; font-size: 12px; }
287
+ .table-footer .divider { margin-inline: 4px; }
288
+ .compare-tray { width: calc(100% - 20px); bottom: 10px; padding: 12px; gap: 8px; align-items: start; }
289
+ .compare-tray #compare-chips { gap: 4px; }
290
+ .compare-chip { font-size: 11px; padding: 3px 7px; }
291
+ .compare-tray strong { font-size: 12px; }
292
+ .tray-actions .primary-button { font-size: 13px; padding: 9px 12px; }
293
+ .tray-actions .quiet-button { font-size: 13px; }
294
+ dialog { width: calc(100% - 20px); padding: 20px; border-radius: 15px; max-height: 92vh; }
295
+ .dialog-title { font-size: 26px; }
296
+ .dialog-subtitle { font-size: 14px; }
297
+ .dialog-top .eyebrow { font-size: 10px; letter-spacing: 1px; }
298
+ .compare-summary { padding: 13px; }
299
+ .compare-summary h4 { font-size: 14px; }
300
+ .comparison-table { font-size: 14px; }
301
+ .comparison-table th { font-size: 13px; }
302
+ .comparison-table th:first-child, .comparison-table td:first-child { min-width: 165px; }
303
+ .citation-code { padding: 15px; font-size: 12px; }
304
+ .dialog-actions { justify-content: flex-start; }
305
+ .dialog-actions .primary-button, .dialog-actions .outline-button { font-size: 14px; }
306
+ .toast { bottom: 175px; font-size: 13px; }
307
+ }
308
+ @media (max-width: 380px) {
309
+ .group-filters button { min-width: 0; padding-inline: 8px; gap: 5px; font-size: 12px; }
310
+ .group-filters button span { min-width: 20px; font-size: 11px; padding-inline: 4px; }
311
+ }
312
+ @media (prefers-reduced-motion: reduce) {
313
+ html { scroll-behavior: auto; }
314
+ * { animation: none !important; transition: none !important; }
315
+ }
316
+
317
+ /* Fine-grained results keep the same model rows, with a scoped score header. */
318
+ .view-row { flex-wrap: wrap; }
319
+ .view-actions { margin-left: auto; }
320
+ .breakdown-controls { padding: 18px 24px; border-bottom: 1px solid #e1e8ef; background: #f8fafd; display: flex; flex-wrap: wrap; gap: 18px 24px; align-items: center; }
321
+ .dimension-tabs { display: flex; flex-wrap: wrap; gap: 6px; }
322
+ .dimension-tabs button { padding: 7px 12px; min-height: 38px; border-radius: 7px; font-size: 14px; font-weight: 550; color: #718197; border: 1px solid transparent; }
323
+ .dimension-tabs button:hover { background: #eef2f8; color: #315778; }
324
+ .dimension-tabs button[aria-pressed=true] { background: #e8eef8; border-color: #cfdcef; color: #345980; }
325
+ .subcategory-filter { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; font-size: 13px; color: #78899d; }
326
+ .subcategory-filter select { color: #3f5771; background: white; border: 1px solid #d0dce7; border-radius: 8px; padding: 8px 32px 8px 12px; min-height: 40px; max-width: 100%; font-size: 14px; }
327
+ .context-separator { padding: 0 10px; color: #a6b3bf; }
328
+ .column-popover { max-height: min(65vh, 540px); overflow-y: auto; width: 300px; }
329
+ .column-popover label { font-size: 14px; line-height: 1.5; }
330
+ .table-scroll .breakdown-table thead th { height: 110px; background: #f4f7fb; color: #506680; }
331
+ .table-scroll .breakdown-table thead th.active-sort { background: #e8eff9; color: #355d8a; }
332
+ .table-scroll .breakdown-table thead th.dimension-band { height: 38px; padding: 7px 12px; font-size: 12px; font-weight: 650; letter-spacing: .25px; color: #5e7088; border-bottom-color: #fff; }
333
+ .table-scroll .breakdown-table .dimension-band.dim-temporal { background: #edf0fb; }
334
+ .table-scroll .breakdown-table .dimension-band.dim-causal { background: #eff3e9; }
335
+ .table-scroll .breakdown-table .dimension-band.dim-spatial { background: #eaf2f5; }
336
+ .table-scroll .breakdown-table .dimension-band.dim-logical { background: #eef0f8; }
337
+ .table-scroll .breakdown-table .dimension-band.dim-counterfactual { background: #fbf0e7; }
338
+
339
+ /* Paper figures and citation form a quiet, visual closing section. */
340
+ .research-section { margin-top: 84px; }
341
+ .figure-section { margin-bottom: 72px; scroll-margin-top: 32px; }
342
+ .section-heading { display: flex; align-items: end; justify-content: space-between; flex-wrap: wrap; gap: 18px 30px; margin-bottom: 25px; }
343
+ .section-kicker { display: block; font-size: 11px; font-weight: 650; letter-spacing: 1.8px; color: #8a99ae; margin-bottom: 9px; }
344
+ .section-heading h2 { margin: 0; font-size: 34px; line-height: 1.2; font-weight: 650; letter-spacing: -.9px; color: #273d55; }
345
+ .section-heading .plus { color: #537da9; }
346
+ .section-note { color: #8592a3; font-size: 15px; padding-bottom: 3px; }
347
+ .research-figure { margin: 0; padding: 24px; border: 1px solid #e0e6ee; border-radius: 20px; background: white; box-shadow: 0 8px 36px #23395308; }
348
+ .research-figure a { display: block; position: relative; border-radius: 10px; overflow: hidden; }
349
+ .research-figure img { display: block; width: 100%; height: auto; }
350
+ .figure-expand { position: absolute; bottom: 14px; right: 14px; padding: 8px 14px; background: #ffffffee; box-shadow: 0 2px 15px #20395612; border: 1px solid #dce5ef; border-radius: 8px; color: #526983; font-size: 12px; opacity: 0; transition: opacity .2s; }
351
+ .research-figure a:hover .figure-expand, .research-figure a:focus-visible .figure-expand { opacity: 1; }
352
+ .citation-section { padding: 34px; background: linear-gradient(125deg, #eff3fa, #f7f8fb 70%, #f2f0fa); border: 1px solid #dee5ef; border-radius: 20px; scroll-margin-top: 32px; }
353
+ .citation-section .section-heading { align-items: center; margin-bottom: 22px; }
354
+ .citation-section h2 { font-size: 29px; }
355
+ .citation-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
356
+ .citation-actions button { font-size: 14px; color: #526a86; }
357
+ .citation-actions .outline-button { border-color: #d4dfe9; }
358
+ .page-citation { margin: 0; padding: 26px; border: 1px solid #e1e7f0; background: #ffffffba; color: #5d6e83; font-size: 13px; line-height: 1.85; border-radius: 12px; white-space: pre-wrap; overflow-wrap: anywhere; }
359
+ .page-footer { display: flex; justify-content: space-between; align-items: center; gap: 20px; color: #8b9bad; margin-top: 36px; font-size: 13px; }
360
+ .page-footer > span { font-weight: 650; letter-spacing: -.2px; color: #6d819a; }
361
+ .page-footer a { padding-block: 8px; }
362
+ @media (max-width: 1100px) {
363
+ .view-tabs button { padding-inline: 11px; font-size: 14px; }
364
+ .view-tabs button > span { margin-left: 3px; }
365
+ }
366
+ @media (max-width: 820px) {
367
+ .research-section { margin-top: 56px; }
368
+ .figure-section { margin-bottom: 48px; }
369
+ .section-heading h2 { font-size: 28px; }
370
+ .section-note { font-size: 14px; }
371
+ .research-figure { padding: 14px; border-radius: 14px; }
372
+ .citation-section { padding: 24px; }
373
+ }
374
+ @media (max-width: 540px) {
375
+ .view-tabs { display: flex; flex-wrap: wrap; }
376
+ .view-tabs button { flex-basis: 45%; font-size: 14px; }
377
+ .breakdown-controls { padding: 14px; gap: 14px; }
378
+ .dimension-tabs { gap: 4px; }
379
+ .dimension-tabs button { padding-inline: 9px; font-size: 13px; }
380
+ .subcategory-filter { width: 100%; gap: 6px; }
381
+ .subcategory-filter select { width: 100%; }
382
+ .footer-actions { flex-wrap: wrap; gap: 2px; }
383
+ .footer-actions .quiet-button { padding-inline: 8px; font-size: 12px; }
384
+ .section-heading { gap: 12px; margin-bottom: 20px; }
385
+ .section-kicker { font-size: 10px; }
386
+ .research-figure { padding: 8px; border-radius: 12px; }
387
+ .citation-section { padding: 20px 16px; }
388
+ .citation-actions { width: 100%; }
389
+ .page-citation { padding: 15px; font-size: 12px; }
390
+ }
submit.html ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Submit results · RISEBench</title><link rel="icon" href="assets/favicon.svg"><link rel="stylesheet" href="styles.css"><link rel="stylesheet" href="portal.css"></head>
3
+ <body data-page="submit"><main class="portal-width">
4
+ <nav class="portal-nav" aria-label="Main navigation"><a class="wordmark" href="index.html">RISEBench</a><div><a href="index.html">Leaderboard</a><a href="submit.html" aria-current="page">Submit results</a></div></nav>
5
+ <header class="portal-heading"><span class="section-kicker">COMMUNITY EVALUATIONS</span><h1>Submit your results.</h1><p>Submit evaluations for RISEBench or RISEBench++.</p></header>
6
+ <p class="notice" id="service-notice" hidden></p>
7
+ <form id="submission-form">
8
+ <section class="portal-card"><div class="card-heading"><h2>Model details</h2><span>Required unless marked optional</span></div>
9
+ <div class="form-grid">
10
+ <label>Model name<input name="model_name" required maxlength="160" placeholder="Your model name"></label>
11
+ <label>Project, paper or model repository<input name="project_url" type="url" required maxlength="1000" placeholder="https://"></label>
12
+ <label>Team <span class="optional">Optional</span><input name="team" maxlength="120" placeholder="Your team or organization"></label>
13
+ <label>Contact email <span class="optional">Private</span><input name="email" type="email" required maxlength="254" placeholder="name@organization.com"><small>Visible only to reviewers.</small></label>
14
+ <label>Benchmark<select name="benchmark" id="submission-benchmark"><option value="risebench-plusplus">RISEBench++</option><option value="risebench">RISEBench</option></select></label>
15
+ <label>Instruction language<select name="language" id="submission-language"><option value="en">English</option><option value="zh">Chinese</option></select></label>
16
+ <label>Model category<select name="group" required><option value="open">Open-source</option><option value="closed">Closed-source</option><option value="agentic">Agentic method</option></select></label>
17
+ <label>Input support<select name="multi_image"><option value="true">Multiple input images supported</option><option value="false">Single input image only</option></select><input id="single-image-input" type="text" value="Single input image" readonly hidden></label>
18
+ <label class="full-width">Update an existing result <span class="optional">Optional</span><select name="revision_of" id="submission-revision"><option value="">New result</option></select></label>
19
+ </div>
20
+ </section>
21
+ <section class="portal-card"><div class="card-heading"><h2>Evaluation results</h2><button type="button" id="download-template" class="outline-button">Download JSON template ↓</button></div>
22
+ <p class="field-note">Use full benchmark results on a 0–100 scale. Leave unevaluated fields null.</p>
23
+ <label class="upload-zone" id="upload-zone"><input type="file" id="result-file" accept=".json,application/json" required><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 16V3m-5 5 5-5 5 5M4 15v6h16v-6"/></svg><strong id="upload-title">Choose a result JSON or drop it here</strong><span id="upload-caption">One JSON file · up to 200 KB</span></label>
24
+ <div class="file-preview" id="file-preview" hidden></div>
25
+ <div class="form-grid artifacts"><label class="full-width">Evaluation artifacts<input name="evidence_url" type="url" required maxlength="1000" placeholder="https://huggingface.co/datasets/your-team/evaluation-results"><small>Link to generated outputs and detailed evaluation results so reviewers can verify the scores.</small></label>
26
+ <label class="full-width">Notes for reviewers <span class="optional">Optional · private</span><textarea name="notes" rows="3" maxlength="3000" placeholder="Evaluation configuration, model version, or details of an update"></textarea></label></div>
27
+ <label class="confirmation"><input name="full_dataset" type="checkbox" required><span>These scores use the full benchmark and the official evaluation protocol. I am authorized to submit this model's results.</span></label>
28
+ <div class="form-bottom"><p class="form-message" id="submission-message" role="status"></p><button class="primary-button" id="submit-results" type="submit">Submit for review <span aria-hidden="true">→</span></button></div>
29
+ </section>
30
+ </form>
31
+ <section class="portal-card receipt-card" id="submission-receipt" hidden aria-live="polite"></section>
32
+ <section class="portal-card status-card"><div class="card-heading"><h2>Check a submission</h2><span>Your receipt keeps this private</span></div><form id="status-form"><div class="form-grid"><label>Submission ID<input name="submission_id" required autocomplete="off"></label><label>Receipt key<input name="status_token" type="password" required autocomplete="off"></label></div><div class="form-bottom"><p id="status-result" class="form-message" role="status"></p><button class="outline-button" type="submit">Check status</button></div></form></section>
33
+ <footer class="page-footer"><a href="index.html">← Back to leaderboard</a><a href="admin.html">Reviewer sign in</a></footer>
34
+ </main><script id="submission-schema" type="application/json">{"benchmarks": [{"id": "risebench-plusplus", "name": "RISEBench++", "case_count": 1000, "available_result_languages": ["en", "zh"], "accuracy_unit": "%", "metric_unit": "/100", "score_decimals": 1, "default_sort": "total", "dimensions": [{"key": "temporal", "label": "Temporal", "description": "Infer how a scene changes over time."}, {"key": "causal", "label": "Causal", "description": "Reason about causes, actions, and their consequences."}, {"key": "spatial", "label": "Spatial", "description": "Reason about spatial relationships and transformations."}, {"key": "logical", "label": "Logical", "description": "Apply explicit rules, patterns, and logical constraints."}, {"key": "counterfactual", "label": "Counterfactual", "description": "Visualize outcomes under hypothetical or contrary-to-fact conditions."}, {"key": "hybrid", "label": "Hybrid", "description": "Combine reasoning across three to five successive editing instructions."}], "metrics": [{"key": "instruction_reasoning", "label": "Instruction Reasoning", "description": "Whether the edit realizes the intended reasoning outcome."}, {"key": "appearance_consistency", "label": "Appearance Consistency", "description": "Whether content that should remain unchanged is preserved."}, {"key": "visual_plausibility", "label": "Visual Plausibility", "description": "Visual quality and plausibility; logical tasks are excluded."}], "accuracy_columns": [{"key": "temporal", "label": "Temporal", "description": "Infer how a scene changes over time."}, {"key": "causal", "label": "Causal", "description": "Reason about causes, actions, and their consequences."}, {"key": "spatial", "label": "Spatial", "description": "Reason about spatial relationships and transformations."}, {"key": "logical", "label": "Logical", "description": "Apply explicit rules, patterns, and logical constraints."}, {"key": "counterfactual", "label": "Counterfactual", "description": "Visualize outcomes under hypothetical or contrary-to-fact conditions."}, {"key": "hybrid", "label": "Hybrid", "description": "Combine reasoning across three to five successive editing instructions."}, {"key": "single", "label": "Single", "description": "Accuracy on single-image cases."}, {"key": "multi", "label": "Multi", "description": "Accuracy on multi-image cases. Not evaluated for models without multi-image support."}, {"key": "total", "label": "Total", "description": "Accuracy on the complete benchmark. Not evaluated for single-image-only models."}], "subcategory_columns": [{"key": "temporal_common_sense_knowledge", "label": "Common-Sense Knowledge", "dimension": "temporal", "case_count": 85, "multi_image_case_count": 0, "code": "CSK", "description": "Temporal · Common-Sense Knowledge — accuracy (%)"}, {"key": "temporal_context_knowledge", "label": "Context Knowledge", "dimension": "temporal", "case_count": 52, "multi_image_case_count": 28, "code": "CtxK", "description": "Temporal · Context Knowledge — accuracy (%)"}, {"key": "temporal_disciplinary_knowledge", "label": "Disciplinary Knowledge", "dimension": "temporal", "case_count": 63, "multi_image_case_count": 4, "code": "DK", "description": "Temporal · Disciplinary Knowledge — accuracy (%)"}, {"key": "causal_common_sense_knowledge", "label": "Common-Sense Knowledge", "dimension": "causal", "case_count": 80, "multi_image_case_count": 1, "code": "CSK", "description": "Causal · Common-Sense Knowledge — accuracy (%)"}, {"key": "causal_context_knowledge", "label": "Context Knowledge", "dimension": "causal", "case_count": 40, "multi_image_case_count": 2, "code": "CtxK", "description": "Causal · Context Knowledge — accuracy (%)"}, {"key": "causal_disciplinary_knowledge", "label": "Disciplinary Knowledge", "dimension": "causal", "case_count": 80, "multi_image_case_count": 5, "code": "DK", "description": "Causal · Disciplinary Knowledge — accuracy (%)"}, {"key": "spatial_relation", "label": "Relation", "dimension": "spatial", "case_count": 106, "multi_image_case_count": 6, "code": "Rel.", "description": "Spatial · Relation — accuracy (%)"}, {"key": "spatial_structure", "label": "Structure", "dimension": "spatial", "case_count": 94, "multi_image_case_count": 12, "code": "Struct.", "description": "Spatial · Structure — accuracy (%)"}, {"key": "logical_explicit_rule_deduction", "label": "Explicit Rule Deduction", "dimension": "logical", "case_count": 123, "multi_image_case_count": 0, "code": "ERD", "description": "Logical · Explicit Rule Deduction — accuracy (%)"}, {"key": "logical_implicit_pattern_induction", "label": "Implicit Pattern Induction", "dimension": "logical", "case_count": 77, "multi_image_case_count": 20, "code": "IPI", "description": "Logical · Implicit Pattern Induction — accuracy (%)"}, {"key": "counterfactual_counterfactual_imagination", "label": "Counterfactual Imagination", "dimension": "counterfactual", "case_count": 70, "multi_image_case_count": 0, "code": "CFI", "description": "Counterfactual · Counterfactual Imagination — accuracy (%)"}, {"key": "counterfactual_anomaly_correction_and_generation", "label": "Anomaly Correction and Generation", "dimension": "counterfactual", "case_count": 30, "multi_image_case_count": 0, "code": "ACG", "description": "Counterfactual · Anomaly Correction and Generation — accuracy (%)"}], "task_type_columns": [{"key": "T01", "code": "T01", "label": "Life Progression", "dimension": "temporal", "subcategory": "temporal_common_sense_knowledge", "case_count": 24, "multi_image_case_count": 0, "description": "Temporal · Life Progression — accuracy (%)"}, {"key": "T02", "code": "T02", "label": "Material Transformation", "dimension": "temporal", "subcategory": "temporal_common_sense_knowledge", "case_count": 9, "multi_image_case_count": 0, "description": "Temporal · Material Transformation — accuracy (%)"}, {"key": "T03", "code": "T03", "label": "Natural Environmental Changes", "dimension": "temporal", "subcategory": "temporal_common_sense_knowledge", "case_count": 13, "multi_image_case_count": 0, "description": "Temporal · Natural Environmental Changes — accuracy (%)"}, {"key": "T04", "code": "T04", "label": "Physical Aging", "dimension": "temporal", "subcategory": "temporal_common_sense_knowledge", "case_count": 20, "multi_image_case_count": 0, "description": "Temporal · Physical Aging — accuracy (%)"}, {"key": "T05", "code": "T05", "label": "Social Activities", "dimension": "temporal", "subcategory": "temporal_common_sense_knowledge", "case_count": 8, "multi_image_case_count": 0, "description": "Temporal · Social Activities — accuracy (%)"}, {"key": "T06", "code": "T06", "label": "Tool Evolution", "dimension": "temporal", "subcategory": "temporal_common_sense_knowledge", "case_count": 7, "multi_image_case_count": 0, "description": "Temporal · Tool Evolution — accuracy (%)"}, {"key": "T07", "code": "T07", "label": "Urban Evolution", "dimension": "temporal", "subcategory": "temporal_common_sense_knowledge", "case_count": 4, "multi_image_case_count": 0, "description": "Temporal · Urban Evolution — accuracy (%)"}, {"key": "T08", "code": "T08", "label": "Temporal State Transition", "dimension": "temporal", "subcategory": "temporal_context_knowledge", "case_count": 15, "multi_image_case_count": 4, "description": "Temporal · Temporal State Transition — accuracy (%)"}, {"key": "T09", "code": "T09", "label": "Precise Temporal Localization", "dimension": "temporal", "subcategory": "temporal_context_knowledge", "case_count": 14, "multi_image_case_count": 2, "description": "Temporal · Precise Temporal Localization — accuracy (%)"}, {"key": "T10", "code": "T10", "label": "Position Change", "dimension": "temporal", "subcategory": "temporal_context_knowledge", "case_count": 15, "multi_image_case_count": 14, "description": "Temporal · Position Change — accuracy (%)"}, {"key": "T11", "code": "T11", "label": "Action Sequence", "dimension": "temporal", "subcategory": "temporal_context_knowledge", "case_count": 8, "multi_image_case_count": 8, "description": "Temporal · Action Sequence — accuracy (%)"}, {"key": "T12", "code": "T12", "label": "Physics", "dimension": "temporal", "subcategory": "temporal_disciplinary_knowledge", "case_count": 4, "multi_image_case_count": 0, "description": "Temporal · Physics — accuracy (%)"}, {"key": "T13", "code": "T13", "label": "Chemistry", "dimension": "temporal", "subcategory": "temporal_disciplinary_knowledge", "case_count": 8, "multi_image_case_count": 4, "description": "Temporal · Chemistry — accuracy (%)"}, {"key": "T14", "code": "T14", "label": "Biology", "dimension": "temporal", "subcategory": "temporal_disciplinary_knowledge", "case_count": 9, "multi_image_case_count": 0, "description": "Temporal · Biology — accuracy (%)"}, {"key": "T15", "code": "T15", "label": "Astronomy", "dimension": "temporal", "subcategory": "temporal_disciplinary_knowledge", "case_count": 12, "multi_image_case_count": 0, "description": "Temporal · Astronomy — accuracy (%)"}, {"key": "T16", "code": "T16", "label": "Geography", "dimension": "temporal", "subcategory": "temporal_disciplinary_knowledge", "case_count": 18, "multi_image_case_count": 0, "description": "Temporal · Geography — accuracy (%)"}, {"key": "T17", "code": "T17", "label": "History", "dimension": "temporal", "subcategory": "temporal_disciplinary_knowledge", "case_count": 5, "multi_image_case_count": 0, "description": "Temporal · History — accuracy (%)"}, {"key": "T18", "code": "T18", "label": "Medicine", "dimension": "temporal", "subcategory": "temporal_disciplinary_knowledge", "case_count": 4, "multi_image_case_count": 0, "description": "Temporal · Medicine — accuracy (%)"}, {"key": "T19", "code": "T19", "label": "Computer Science", "dimension": "temporal", "subcategory": "temporal_disciplinary_knowledge", "case_count": 3, "multi_image_case_count": 0, "description": "Temporal · Computer Science — accuracy (%)"}, {"key": "C01", "code": "C01", "label": "Physical State Transition", "dimension": "causal", "subcategory": "causal_common_sense_knowledge", "case_count": 31, "multi_image_case_count": 0, "description": "Causal · Physical State Transition — accuracy (%)"}, {"key": "C02", "code": "C02", "label": "Structural Damage", "dimension": "causal", "subcategory": "causal_common_sense_knowledge", "case_count": 27, "multi_image_case_count": 0, "description": "Causal · Structural Damage — accuracy (%)"}, {"key": "C03", "code": "C03", "label": "Flexible Deformation", "dimension": "causal", "subcategory": "causal_common_sense_knowledge", "case_count": 22, "multi_image_case_count": 1, "description": "Causal · Flexible Deformation — accuracy (%)"}, {"key": "C04", "code": "C04", "label": "Magnitude Change", "dimension": "causal", "subcategory": "causal_context_knowledge", "case_count": 10, "multi_image_case_count": 0, "description": "Causal · Magnitude Change — accuracy (%)"}, {"key": "C05", "code": "C05", "label": "Reading Offset", "dimension": "causal", "subcategory": "causal_context_knowledge", "case_count": 10, "multi_image_case_count": 2, "description": "Causal · Reading Offset — accuracy (%)"}, {"key": "C06", "code": "C06", "label": "Order Relation", "dimension": "causal", "subcategory": "causal_context_knowledge", "case_count": 10, "multi_image_case_count": 0, "description": "Causal · Order Relation — accuracy (%)"}, {"key": "C07", "code": "C07", "label": "Feature Mapping", "dimension": "causal", "subcategory": "causal_context_knowledge", "case_count": 10, "multi_image_case_count": 0, "description": "Causal · Feature Mapping — accuracy (%)"}, {"key": "C08", "code": "C08", "label": "Physics", "dimension": "causal", "subcategory": "causal_disciplinary_knowledge", "case_count": 25, "multi_image_case_count": 1, "description": "Causal · Physics — accuracy (%)"}, {"key": "C09", "code": "C09", "label": "Chemistry", "dimension": "causal", "subcategory": "causal_disciplinary_knowledge", "case_count": 23, "multi_image_case_count": 4, "description": "Causal · Chemistry — accuracy (%)"}, {"key": "C10", "code": "C10", "label": "Biology", "dimension": "causal", "subcategory": "causal_disciplinary_knowledge", "case_count": 12, "multi_image_case_count": 0, "description": "Causal · Biology — accuracy (%)"}, {"key": "C11", "code": "C11", "label": "Astronomy", "dimension": "causal", "subcategory": "causal_disciplinary_knowledge", "case_count": 3, "multi_image_case_count": 0, "description": "Causal · Astronomy — accuracy (%)"}, {"key": "C12", "code": "C12", "label": "Medicine", "dimension": "causal", "subcategory": "causal_disciplinary_knowledge", "case_count": 4, "multi_image_case_count": 0, "description": "Causal · Medicine — accuracy (%)"}, {"key": "C13", "code": "C13", "label": "Music Theory", "dimension": "causal", "subcategory": "causal_disciplinary_knowledge", "case_count": 3, "multi_image_case_count": 0, "description": "Causal · Music Theory — accuracy (%)"}, {"key": "C14", "code": "C14", "label": "Computer Science", "dimension": "causal", "subcategory": "causal_disciplinary_knowledge", "case_count": 10, "multi_image_case_count": 0, "description": "Causal · Computer Science — accuracy (%)"}, {"key": "S01", "code": "S01", "label": "Adjacency", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 11, "multi_image_case_count": 0, "description": "Spatial · Adjacency — accuracy (%)"}, {"key": "S02", "code": "S02", "label": "Direction", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 11, "multi_image_case_count": 0, "description": "Spatial · Direction — accuracy (%)"}, {"key": "S03", "code": "S03", "label": "Orientation", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 11, "multi_image_case_count": 0, "description": "Spatial · Orientation — accuracy (%)"}, {"key": "S04", "code": "S04", "label": "Projection", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 12, "multi_image_case_count": 0, "description": "Spatial · Projection — accuracy (%)"}, {"key": "S05", "code": "S05", "label": "Distance", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 13, "multi_image_case_count": 0, "description": "Spatial · Distance — accuracy (%)"}, {"key": "S06", "code": "S06", "label": "Size", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 15, "multi_image_case_count": 0, "description": "Spatial · Size — accuracy (%)"}, {"key": "S07", "code": "S07", "label": "Configuration", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 18, "multi_image_case_count": 0, "description": "Spatial · Configuration — accuracy (%)"}, {"key": "S08", "code": "S08", "label": "Viewing Scale", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 9, "multi_image_case_count": 0, "description": "Spatial · Viewing Scale — accuracy (%)"}, {"key": "S09", "code": "S09", "label": "Localization", "dimension": "spatial", "subcategory": "spatial_relation", "case_count": 6, "multi_image_case_count": 6, "description": "Spatial · Localization — accuracy (%)"}, {"key": "S10", "code": "S10", "label": "Part-Whole Perception", "dimension": "spatial", "subcategory": "spatial_structure", "case_count": 24, "multi_image_case_count": 0, "description": "Spatial · Part-Whole Perception — accuracy (%)"}, {"key": "S11", "code": "S11", "label": "Geometric Regularities Reasoning", "dimension": "spatial", "subcategory": "spatial_structure", "case_count": 15, "multi_image_case_count": 0, "description": "Spatial · Geometric Regularities Reasoning — accuracy (%)"}, {"key": "S12", "code": "S12", "label": "Viewpoint Generation", "dimension": "spatial", "subcategory": "spatial_structure", "case_count": 26, "multi_image_case_count": 0, "description": "Spatial · Viewpoint Generation — accuracy (%)"}, {"key": "S13", "code": "S13", "label": "Environmental Structure Reasoning", "dimension": "spatial", "subcategory": "spatial_structure", "case_count": 19, "multi_image_case_count": 2, "description": "Spatial · Environmental Structure Reasoning — accuracy (%)"}, {"key": "S14", "code": "S14", "label": "Egocentric Scene Reconstruction", "dimension": "spatial", "subcategory": "spatial_structure", "case_count": 10, "multi_image_case_count": 10, "description": "Spatial · Egocentric Scene Reconstruction — accuracy (%)"}, {"key": "L01", "code": "L01", "label": "Path Searching", "dimension": "logical", "subcategory": "logical_explicit_rule_deduction", "case_count": 24, "multi_image_case_count": 0, "description": "Logical · Path Searching — accuracy (%)"}, {"key": "L02", "code": "L02", "label": "Mathematical Derivation", "dimension": "logical", "subcategory": "logical_explicit_rule_deduction", "case_count": 27, "multi_image_case_count": 0, "description": "Logical · Mathematical Derivation — accuracy (%)"}, {"key": "L03", "code": "L03", "label": "Game Deduction", "dimension": "logical", "subcategory": "logical_explicit_rule_deduction", "case_count": 37, "multi_image_case_count": 0, "description": "Logical · Game Deduction — accuracy (%)"}, {"key": "L04", "code": "L04", "label": "Puzzle Solving", "dimension": "logical", "subcategory": "logical_explicit_rule_deduction", "case_count": 35, "multi_image_case_count": 0, "description": "Logical · Puzzle Solving — accuracy (%)"}, {"key": "L05", "code": "L05", "label": "Pattern Prediction", "dimension": "logical", "subcategory": "logical_implicit_pattern_induction", "case_count": 39, "multi_image_case_count": 0, "description": "Logical · Pattern Prediction — accuracy (%)"}, {"key": "L06", "code": "L06", "label": "Visual Oddity Detection", "dimension": "logical", "subcategory": "logical_implicit_pattern_induction", "case_count": 18, "multi_image_case_count": 0, "description": "Logical · Visual Oddity Detection — accuracy (%)"}, {"key": "L07", "code": "L07", "label": "Rule Transfer", "dimension": "logical", "subcategory": "logical_implicit_pattern_induction", "case_count": 20, "multi_image_case_count": 20, "description": "Logical · Rule Transfer — accuracy (%)"}, {"key": "F01", "code": "F01", "label": "Physical Counterfactual", "dimension": "counterfactual", "subcategory": "counterfactual_counterfactual_imagination", "case_count": 23, "multi_image_case_count": 0, "description": "Counterfactual · Physical Counterfactual — accuracy (%)"}, {"key": "F02", "code": "F02", "label": "Chemical Counterfactual", "dimension": "counterfactual", "subcategory": "counterfactual_counterfactual_imagination", "case_count": 9, "multi_image_case_count": 0, "description": "Counterfactual · Chemical Counterfactual — accuracy (%)"}, {"key": "F03", "code": "F03", "label": "Biological Counterfactual", "dimension": "counterfactual", "subcategory": "counterfactual_counterfactual_imagination", "case_count": 8, "multi_image_case_count": 0, "description": "Counterfactual · Biological Counterfactual — accuracy (%)"}, {"key": "F04", "code": "F04", "label": "Astronomy Counterfactual", "dimension": "counterfactual", "subcategory": "counterfactual_counterfactual_imagination", "case_count": 7, "multi_image_case_count": 0, "description": "Counterfactual · Astronomy Counterfactual — accuracy (%)"}, {"key": "F05", "code": "F05", "label": "Geography Counterfactual", "dimension": "counterfactual", "subcategory": "counterfactual_counterfactual_imagination", "case_count": 8, "multi_image_case_count": 0, "description": "Counterfactual · Geography Counterfactual — accuracy (%)"}, {"key": "F06", "code": "F06", "label": "History Counterfactual", "dimension": "counterfactual", "subcategory": "counterfactual_counterfactual_imagination", "case_count": 7, "multi_image_case_count": 0, "description": "Counterfactual · History Counterfactual — accuracy (%)"}, {"key": "F07", "code": "F07", "label": "Music Theory Counterfactual", "dimension": "counterfactual", "subcategory": "counterfactual_counterfactual_imagination", "case_count": 4, "multi_image_case_count": 0, "description": "Counterfactual · Music Theory Counterfactual — accuracy (%)"}, {"key": "F08", "code": "F08", "label": "Computer Science Counterfactual", "dimension": "counterfactual", "subcategory": "counterfactual_counterfactual_imagination", "case_count": 4, "multi_image_case_count": 0, "description": "Counterfactual · Computer Science Counterfactual — accuracy (%)"}, {"key": "F09", "code": "F09", "label": "Anatomical Errors", "dimension": "counterfactual", "subcategory": "counterfactual_anomaly_correction_and_generation", "case_count": 10, "multi_image_case_count": 0, "description": "Counterfactual · Anatomical Errors — accuracy (%)"}, {"key": "F10", "code": "F10", "label": "Structural Anomalies", "dimension": "counterfactual", "subcategory": "counterfactual_anomaly_correction_and_generation", "case_count": 11, "multi_image_case_count": 0, "description": "Counterfactual · Structural Anomalies — accuracy (%)"}, {"key": "F11", "code": "F11", "label": "Relational Anomalies", "dimension": "counterfactual", "subcategory": "counterfactual_anomaly_correction_and_generation", "case_count": 9, "multi_image_case_count": 0, "description": "Counterfactual · Relational Anomalies — accuracy (%)"}], "links": {"paper": "https://arxiv.org/abs/2610.12343", "data": "https://huggingface.co/datasets/VisionXLab/RISEBench-plusplus", "outputs": "https://huggingface.co/datasets/VisionXLab/RISEBench-plusplus_Outputs", "github": "https://github.com/VisionXLab/RISEBench/tree/main/RISEBench%2B%2B"}, "judges": {"instruction_reasoning": "Gemini-3-Flash", "appearance_consistency": "Gemini-3-Flash", "visual_plausibility": "Gemini-3.1-Flash-Lite"}, "results_by_language": {"en": {"models": [{"id": "gpt-image-2-5-sunburst", "name": "GPT-Image-2.5 Sunburst"}, {"id": "nano-banana-pro", "name": "Nano Banana Pro"}, {"id": "nano-banana-2", "name": "Nano Banana 2"}, {"id": "gpt-image-2", "name": "GPT-Image-2"}, {"id": "gpt-image-2-5-flare", "name": "GPT-Image-2.5 Flare"}, {"id": "luma-uni-1", "name": "Luma Uni-1"}, {"id": "qwen-image-3-0", "name": "Qwen-Image-3.0"}, {"id": "nano-banana-2-lite", "name": "Nano Banana 2 Lite"}, {"id": "flux-2-max", "name": "FLUX.2 Max"}, {"id": "gpt-image-1-5", "name": "GPT-Image-1.5"}, {"id": "flux-2-pro", "name": "FLUX.2 Pro"}, {"id": "nano-banana", "name": "Nano Banana"}, {"id": "hunyuanimage-3-5", "name": "HunyuanImage-3.5"}, {"id": "wan2-7-image-pro", "name": "Wan2.7-Image-Pro"}, {"id": "gpt-image-1", "name": "GPT-Image-1"}, {"id": "qwen-image-2-0", "name": "Qwen-Image-2.0"}, {"id": "seedream-4-5", "name": "Seedream 4.5"}, {"id": "seedream-5-0", "name": "Seedream 5.0"}, {"id": "step-image-edit-2", "name": "Step Image Edit 2"}, {"id": "hunyuanimage-3-0-instruct", "name": "HunyuanImage-3.0-Instruct"}, {"id": "qwen-image-edit-2511", "name": "Qwen-Image-Edit-2511"}, {"id": "qwen-image-2-1", "name": "Qwen-Image-2.1"}, {"id": "firered-image-edit-1-0", "name": "FireRed-Image-Edit-1.0"}, {"id": "firered-image-edit-1-1", "name": "FireRed-Image-Edit-1.1"}, {"id": "qwen-image-edit-2509", "name": "Qwen-Image-Edit-2509"}, {"id": "hidream-o1-image", "name": "HiDream-O1-Image"}, {"id": "flux-2-dev", "name": "FLUX.2 Dev"}, {"id": "flux-2-klein-9b", "name": "FLUX.2 Klein 9B"}, {"id": "joyai-image-edit-plus", "name": "JoyAI-Image-Edit-Plus"}, {"id": "sensenova-u1-a3b-mot-sft", "name": "SenseNova-U1-A3B-MoT-SFT"}, {"id": "unipic-3-0", "name": "UniPic 3.0"}, {"id": "bagel-w-cot", "name": "BAGEL (w/ CoT)"}, {"id": "sensenova-u1-8b-mot-sft", "name": "SenseNova-U1-8B-MoT-SFT"}, {"id": "flux-2-klein-4b", "name": "FLUX.2 Klein 4B"}, {"id": "uniworld-v2", "name": "UniWorld-V2"}, {"id": "bagel", "name": "BAGEL"}, {"id": "omnigen2", "name": "OmniGen2"}, {"id": "omnigen", "name": "OmniGen"}, {"id": "emu2-gen", "name": "Emu2-Gen"}, {"id": "joyai-image-edit", "name": "JoyAI-Image-Edit"}, {"id": "step1x-edit-thinking", "name": "Step1X-Edit (thinking)"}, {"id": "boogu-image-0-1-edit", "name": "Boogu-Image-0.1-Edit"}, {"id": "step1x-edit-thinking-reflection", "name": "Step1X-Edit (thinking + reflection)"}, {"id": "longcat-image-edit", "name": "LongCat-Image-Edit"}, {"id": "step1x-edit-base", "name": "Step1X-Edit (base)"}, {"id": "internvl-u-w-cot", "name": "InternVL-U (w/ CoT)"}, {"id": "flux-1-kontext-dev", "name": "FLUX.1 Kontext Dev"}, {"id": "llada-image", "name": "LLaDA-Image"}, {"id": "ovis-u1", "name": "Ovis-U1"}, {"id": "internvl-u", "name": "InternVL-U"}, {"id": "unipic2-sd3-5m-kontext-2b", "name": "UniPic2-SD3.5M-Kontext-2B"}, {"id": "lumina-dimoo", "name": "Lumina-DiMOO"}, {"id": "uniworld-v1", "name": "UniWorld-V1"}, {"id": "rise-agent-ours", "name": "RISE-Agent (Ours)"}, {"id": "mindbrush", "name": "MindBrush"}, {"id": "interleavethinker", "name": "InterleaveThinker"}, {"id": "intentedit", "name": "IntentEdit"}, {"id": "imagent", "name": "ImAgent"}]}, "zh": {"models": [{"id": "gpt-image-2-5-sunburst", "name": "GPT-Image-2.5 Sunburst"}, {"id": "nano-banana-pro", "name": "Nano Banana Pro"}, {"id": "nano-banana-2", "name": "Nano Banana 2"}, {"id": "luma-uni-1", "name": "Luma Uni-1"}, {"id": "gpt-image-2", "name": "GPT-Image-2"}, {"id": "qwen-image-3-0", "name": "Qwen-Image-3.0"}, {"id": "gpt-image-2-5-flare", "name": "GPT-Image-2.5 Flare"}, {"id": "flux-2-max", "name": "FLUX.2 Max"}, {"id": "nano-banana-2-lite", "name": "Nano Banana 2 Lite"}, {"id": "gpt-image-1-5", "name": "GPT-Image-1.5"}, {"id": "nano-banana", "name": "Nano Banana"}, {"id": "flux-2-pro", "name": "FLUX.2 Pro"}, {"id": "hunyuanimage-3-5", "name": "HunyuanImage-3.5"}, {"id": "wan2-7-image-pro", "name": "Wan2.7-Image-Pro"}, {"id": "qwen-image-2-0", "name": "Qwen-Image-2.0"}, {"id": "seedream-4-5", "name": "Seedream 4.5"}, {"id": "seedream-5-0", "name": "Seedream 5.0"}, {"id": "gpt-image-1", "name": "GPT-Image-1"}, {"id": "step-image-edit-2", "name": "Step Image Edit 2"}, {"id": "hunyuanimage-3-0-instruct", "name": "HunyuanImage-3.0-Instruct"}, {"id": "qwen-image-2-1", "name": "Qwen-Image-2.1"}, {"id": "firered-image-edit-1-1", "name": "FireRed-Image-Edit-1.1"}, {"id": "flux-2-dev", "name": "FLUX.2 Dev"}, {"id": "qwen-image-edit-2511", "name": "Qwen-Image-Edit-2511"}, {"id": "qwen-image-edit-2509", "name": "Qwen-Image-Edit-2509"}, {"id": "firered-image-edit-1-0", "name": "FireRed-Image-Edit-1.0"}, {"id": "sensenova-u1-a3b-mot-sft", "name": "SenseNova-U1-A3B-MoT-SFT"}, {"id": "joyai-image-edit-plus", "name": "JoyAI-Image-Edit-Plus"}, {"id": "flux-2-klein-9b", "name": "FLUX.2 Klein 9B"}, {"id": "bagel-w-cot", "name": "BAGEL (w/ CoT)"}, {"id": "hidream-o1-image", "name": "HiDream-O1-Image"}, {"id": "flux-2-klein-4b", "name": "FLUX.2 Klein 4B"}, {"id": "uniworld-v2", "name": "UniWorld-V2"}, {"id": "sensenova-u1-8b-mot-sft", "name": "SenseNova-U1-8B-MoT-SFT"}, {"id": "unipic-3-0", "name": "UniPic 3.0"}, {"id": "bagel", "name": "BAGEL"}, {"id": "omnigen2", "name": "OmniGen2"}, {"id": "omnigen", "name": "OmniGen"}, {"id": "emu2-gen", "name": "Emu2-Gen"}, {"id": "joyai-image-edit", "name": "JoyAI-Image-Edit"}, {"id": "boogu-image-0-1-edit", "name": "Boogu-Image-0.1-Edit"}, {"id": "step1x-edit-thinking-reflection", "name": "Step1X-Edit (thinking + reflection)"}, {"id": "step1x-edit-thinking", "name": "Step1X-Edit (thinking)"}, {"id": "step1x-edit-base", "name": "Step1X-Edit (base)"}, {"id": "longcat-image-edit", "name": "LongCat-Image-Edit"}, {"id": "flux-1-kontext-dev", "name": "FLUX.1 Kontext Dev"}, {"id": "llada-image", "name": "LLaDA-Image"}, {"id": "internvl-u-w-cot", "name": "InternVL-U (w/ CoT)"}, {"id": "ovis-u1", "name": "Ovis-U1"}, {"id": "internvl-u", "name": "InternVL-U"}, {"id": "lumina-dimoo", "name": "Lumina-DiMOO"}, {"id": "uniworld-v1", "name": "UniWorld-V1"}, {"id": "unipic2-sd3-5m-kontext-2b", "name": "UniPic2-SD3.5M-Kontext-2B"}, {"id": "rise-agent-ours", "name": "RISE-Agent (Ours)"}, {"id": "mindbrush", "name": "MindBrush"}, {"id": "interleavethinker", "name": "InterleaveThinker"}, {"id": "intentedit", "name": "IntentEdit"}, {"id": "imagent", "name": "ImAgent"}]}}}, {"id": "risebench", "name": "RISEBench", "case_count": 360, "available_result_languages": ["en"], "accuracy_unit": "%", "metric_unit": "/100", "score_decimals": 1, "default_sort": "total", "dimensions": [{"key": "temporal", "label": "Temporal", "description": "Infer how a scene changes over time."}, {"key": "causal", "label": "Causal", "description": "Reason about causes, actions, and their consequences."}, {"key": "spatial", "label": "Spatial", "description": "Reason about spatial relationships and transformations."}, {"key": "logical", "label": "Logical", "description": "Apply explicit rules, patterns, and logical constraints."}], "metrics": [{"key": "instruction_reasoning", "label": "Instruction Reasoning", "description": "Whether the edit realizes the intended reasoning outcome."}, {"key": "appearance_consistency", "label": "Appearance Consistency", "description": "Whether content that should remain unchanged is preserved."}, {"key": "visual_plausibility", "label": "Visual Plausibility", "description": "Visual quality and plausibility; logical tasks are excluded."}], "accuracy_columns": [{"key": "temporal", "label": "Temporal", "description": "Infer how a scene changes over time."}, {"key": "causal", "label": "Causal", "description": "Reason about causes, actions, and their consequences."}, {"key": "spatial", "label": "Spatial", "description": "Reason about spatial relationships and transformations."}, {"key": "logical", "label": "Logical", "description": "Apply explicit rules, patterns, and logical constraints."}, {"key": "total", "label": "Overall", "description": "Accuracy on the complete RISEBench-360 benchmark."}], "links": {"paper": "https://arxiv.org/abs/2504.02826", "data": "https://huggingface.co/datasets/PhoenixZ/RISEBench", "outputs": "https://huggingface.co/datasets/zpy777/RISEBench_Outputs", "github": "https://github.com/VisionXLab/RISEBench/tree/main/RISEBench"}, "judges": {"instruction_reasoning": "GPT-4o", "appearance_consistency": "GPT-4o", "visual_plausibility": "GPT-4o"}, "results_by_language": {"en": {"models": [{"id": "gpt-image-1-5", "name": "GPT-Image-1.5"}, {"id": "gpt-image-2", "name": "GPT-Image-2"}, {"id": "gemini-3-pro-image-preview-nano-banana-pro", "name": "Gemini-3-pro-image-preview (Nano Banana-pro)"}, {"id": "gemini-2-5-flash-image-nano-banana", "name": "Gemini-2.5-Flash-Image (Nano Banana)"}, {"id": "gpt-image-1", "name": "GPT-Image-1"}, {"id": "gpt-image-1-mini", "name": "GPT-Image-1-mini"}, {"id": "qwen-image-edit-2511", "name": "Qwen-Image-Edit-2511"}, {"id": "bagel-w-cot", "name": "BAGEL (w/ CoT)"}, {"id": "gemini-2-0-flash-exp", "name": "Gemini-2.0-Flash-exp"}, {"id": "seedream-4-0", "name": "Seedream-4.0"}, {"id": "gemini-2-0-flash-pre", "name": "Gemini-2.0-Flash-pre"}, {"id": "qwen-image-edit-2509", "name": "Qwen-Image-Edit-2509"}, {"id": "bagel", "name": "BAGEL"}, {"id": "flux-1-kontext-dev", "name": "FLUX.1-Kontext-Dev"}, {"id": "ovis-u1", "name": "Ovis-U1"}, {"id": "step1x-edit", "name": "Step1X-Edit"}, {"id": "omnigen", "name": "OmniGen"}, {"id": "emu2", "name": "EMU2"}, {"id": "hidream-edit", "name": "HiDream-Edit"}, {"id": "flux-1-canny", "name": "FLUX.1-Canny"}]}}}]}</script><script src="portal.js" defer></script></body></html>