This view is limited to 50 files because it contains too many changes. See the raw diff here.
Files changed (50) hide show
  1. CLAUDE.md +4 -1
  2. benchmarks.py +55 -0
  3. cref/README.md +5 -0
  4. cref/__init__.py +0 -0
  5. cref/charts.py +148 -0
  6. cref/controls.py +73 -0
  7. cref/data/v1/leaderboard/all_samples/history/2026-07-04.json +0 -0
  8. cref/data/v1/leaderboard/all_samples/history/2026-07-11.json +0 -0
  9. cref/data/v1/leaderboard/all_samples/history/2026-07-18.json +0 -0
  10. cref/data/v1/leaderboard/all_samples/history/2026-07-25.json +0 -0
  11. cref/data/v1/leaderboard/all_samples/history/2026-08-01.json +0 -0
  12. cref/data/v1/leaderboard/all_samples/history/2026-08-08.json +0 -0
  13. cref/data/v1/leaderboard/all_samples/history/2026-08-15.json +0 -0
  14. cref/data/v1/leaderboard/all_samples/history/2026-08-22.json +0 -0
  15. cref/data/v1/leaderboard/all_samples/history/2026-08-29.json +0 -0
  16. cref/data/v1/leaderboard/all_samples/history/2026-09-05.json +0 -0
  17. cref/data/v1/leaderboard/all_samples/history/2026-09-12.json +0 -0
  18. cref/data/v1/leaderboard/all_samples/history/2026-09-19.json +0 -0
  19. cref/data/v1/leaderboard/all_samples/history/2026-09-26.json +0 -0
  20. cref/data/v1/leaderboard/all_samples/history/2026-10-03.json +0 -0
  21. cref/data/v1/leaderboard/all_samples/history/2026-10-10.json +0 -0
  22. cref/data/v1/leaderboard/all_samples/history/2026-10-17.json +0 -0
  23. cref/data/v1/leaderboard/all_samples/history/2026-10-24.json +0 -0
  24. cref/data/v1/leaderboard/all_samples/history/2026-10-31.json +0 -0
  25. cref/data/v1/leaderboard/all_samples/history/2026-11-01.json +0 -0
  26. cref/data/v1/leaderboard/all_samples/history/2026-11-02.json +0 -0
  27. cref/data/v1/leaderboard/all_samples/history/2026-11-03.json +0 -0
  28. cref/data/v1/leaderboard/all_samples/history/2026-11-04.json +0 -0
  29. cref/data/v1/leaderboard/all_samples/latest.json +0 -0
  30. cref/data/v1/leaderboard/history/2026-07-04.json +0 -0
  31. cref/data/v1/leaderboard/history/2026-07-11.json +0 -0
  32. cref/data/v1/leaderboard/history/2026-07-18.json +0 -0
  33. cref/data/v1/leaderboard/history/2026-07-25.json +0 -0
  34. cref/data/v1/leaderboard/history/2026-08-01.json +0 -0
  35. cref/data/v1/leaderboard/history/2026-08-08.json +0 -0
  36. cref/data/v1/leaderboard/history/2026-08-15.json +0 -0
  37. cref/data/v1/leaderboard/history/2026-08-22.json +0 -0
  38. cref/data/v1/leaderboard/history/2026-08-29.json +0 -0
  39. cref/data/v1/leaderboard/history/2026-09-05.json +0 -0
  40. cref/data/v1/leaderboard/history/2026-09-12.json +0 -0
  41. cref/data/v1/leaderboard/history/2026-09-19.json +0 -0
  42. cref/data/v1/leaderboard/history/2026-09-26.json +0 -0
  43. cref/data/v1/leaderboard/history/2026-10-03.json +0 -0
  44. cref/data/v1/leaderboard/history/2026-10-10.json +0 -0
  45. cref/data/v1/leaderboard/history/2026-10-17.json +0 -0
  46. cref/data/v1/leaderboard/history/2026-10-24.json +0 -0
  47. cref/data/v1/leaderboard/history/2026-10-31.json +0 -0
  48. cref/data/v1/leaderboard/history/2026-11-01.json +0 -0
  49. cref/data/v1/leaderboard/history/2026-11-02.json +0 -0
  50. cref/data/v1/leaderboard/history/2026-11-03.json +0 -0
CLAUDE.md CHANGED
@@ -30,7 +30,9 @@ No test or lint frameworks are configured.
30
  ```
31
  fev-leaderboard-app.py # Main entry point (Streamlit multi-page router)
32
  save_tables.py # Generates tables/ and src/vendor/ from a single fev commit (run at Docker build)
33
- pages/
 
 
34
  ├── fev_bench.py # Main leaderboard: computes leaderboard/pairwise, renders them
35
  └── about.py # Help page with links
36
  src/
@@ -38,6 +40,7 @@ src/
38
  ├── strings.py # UI text, metric descriptions, paper citations
39
  ├── task_groups.py # Task groupings by frequency and domain
40
  └── vendor/ # GENERATED, gitignored: compute logic copied from the fev repo
 
41
  └── fev_bench_compute.py
42
  tables/ # GENERATED by save_tables.py, gitignored
43
  ├── summaries.csv # Raw evaluation summaries (leaderboards are computed from these)
 
30
  ```
31
  fev-leaderboard-app.py # Main entry point (Streamlit multi-page router)
32
  save_tables.py # Generates tables/ and src/vendor/ from a single fev commit (run at Docker build)
33
+ benchmarks.py # Combined navigation of fev-bench and CREF, and the switcher between them
34
+ fev_pages/ # Not pages/: Streamlit would read that as a page folder and show
35
+ # "Page not found" on the first visit to /cref after a restart
36
  ├── fev_bench.py # Main leaderboard: computes leaderboard/pairwise, renders them
37
  └── about.py # Help page with links
38
  src/
 
40
  ├── strings.py # UI text, metric descriptions, paper citations
41
  ├── task_groups.py # Task groupings by frequency and domain
42
  └── vendor/ # GENERATED, gitignored: compute logic copied from the fev repo
43
+ cref/ # The CREF leaderboard (/cref pages); see cref/README.md
44
  └── fev_bench_compute.py
45
  tables/ # GENERATED by save_tables.py, gitignored
46
  ├── summaries.csv # Raw evaluation summaries (leaderboards are computed from these)
benchmarks.py ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ from cref import navigation
4
+
5
+ SWITCHER_STYLE = """<style>
6
+ .benchmarks {position: relative; width: fit-content; font-weight: 700}
7
+ .benchmarks summary {display: flex; align-items: center; gap: 0.6rem; padding: 0.1rem 0.6rem 0.1rem 0.3rem;
8
+ margin-left: -0.3rem; border-radius: 0.5rem; font-size: 1.4rem; color: #31333f; cursor: pointer; list-style: none}
9
+ .benchmarks summary::-webkit-details-marker {display: none}
10
+ .benchmarks summary::after {content: ""; width: 0.45rem; height: 0.45rem; border: solid #6093c4;
11
+ border-width: 0 2.5px 2.5px 0; transform: translateY(-25%) rotate(45deg)}
12
+ .benchmarks[open] summary::after {transform: translateY(25%) rotate(-135deg)}
13
+ .benchmarks summary:hover, .benchmarks[open] summary {background: #f0f2f6}
14
+ .benchmarks div {position: absolute; z-index: 1000; top: calc(100% + 0.3rem); left: -0.3rem; min-width: 10rem;
15
+ padding: 0.3rem; background: #fff; border: 1px solid #e3e6ea; border-radius: 0.6rem;
16
+ box-shadow: 0 6px 20px rgb(0 0 0 / 8%)}
17
+ .benchmarks a {display: block; padding: 0.4rem 0.6rem; border-radius: 0.4rem; font-size: 1rem; color: #31333f;
18
+ text-decoration: none}
19
+ .benchmarks a:hover {background: #f0f2f6}
20
+ .benchmarks a[aria-current="page"] {color: #6093c4}
21
+ </style>"""
22
+
23
+ BENCHMARKS = [("fev-bench", "/"), ("CREF", "/cref")]
24
+
25
+
26
+ # Plain links, so a switch loads the other benchmark afresh instead of keeping fev's sidebar.
27
+ def switcher(current: str) -> str:
28
+ links = "".join(
29
+ f'<a href="{href}" aria-current="{"page" if name == current else "false"}">{name}</a>'
30
+ for name, href in BENCHMARKS
31
+ )
32
+ return f'{SWITCHER_STYLE}<details class="benchmarks"><summary>{current}</summary><div>{links}</div></details>'
33
+
34
+
35
+ def run(fev: list[st.Page]) -> None:
36
+ cref = navigation.pages()
37
+ page = st.navigation(fev + cref, position="hidden")
38
+ # huggingface.co/spaces/autogluon/fev-bench?benchmark=cref: Hugging Face passes only the
39
+ # query string into the app, so this opens CREF on the first load.
40
+ if not st.session_state.get("routed"):
41
+ st.session_state["routed"] = True
42
+ if st.query_params.get("benchmark") == "cref" and page not in cref:
43
+ st.switch_page(cref[0])
44
+ if page in cref:
45
+ navigation.page_config()
46
+ with st.container(horizontal=True, vertical_alignment="center", gap="large"):
47
+ st.html(switcher("CREF"), width="content")
48
+ for link in cref:
49
+ st.page_link(link)
50
+ else:
51
+ with st.sidebar:
52
+ st.html(switcher("fev-bench"))
53
+ for link in fev:
54
+ st.page_link(link)
55
+ page.run()
cref/README.md ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ # CREF leaderboard
2
+
3
+ The CREF leaderboard, served at `/cref`. It reads the published leaderboards from
4
+ `CREF_DATA_URL`, or from `cref/data/` when that is unset. Model names, types and links are
5
+ in `models.toml`; the tasks are in `tasks.csv`.
cref/__init__.py ADDED
File without changes
cref/charts.py ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Sequence
4
+ from typing import Any
5
+
6
+ import altair as alt
7
+ import pandas as pd
8
+
9
+ from cref import views
10
+ from cref.views import COLUMNS
11
+
12
+ PALETTE = [
13
+ "#4E79A7", "#F28E2B", "#59A14F", "#E15759", "#B07AA1", "#76B7B2", "#EDC948", "#9C755F",
14
+ "#FF9DA7", "#BAB0AC", "#A0CBE8", "#FFBE7D", "#8CD17D", "#FF9D9A", "#D4A6C8", "#86BCB6",
15
+ "#F1CE63", "#D7B5A6", "#499894", "#79706E", "#1F3A93", "#6B4226", "#2E7D32", "#8E24AA",
16
+ ] # fmt: skip
17
+ LEGEND_COLUMNS = 3
18
+ PAIRWISE = {
19
+ "win_rate": ("Win rate (%)", [0, 100], 50),
20
+ "skill_score": ("Skill score (%)", [-40, 40], 0),
21
+ }
22
+
23
+
24
+ def skill_chart(df: pd.DataFrame, models: views.Models) -> alt.LayerChart:
25
+ data = views.competitors(df.dropna(subset=["skill_score"]), models)
26
+ labels = views.unique_labels(zip(data["model_id"], data["model"], strict=True))
27
+ data = pd.DataFrame(
28
+ {
29
+ "label": data["model_id"].map(labels),
30
+ "skill_score": data["skill_score"],
31
+ "type": [views.kind(m, models).label for m in data["model_id"]],
32
+ }
33
+ )
34
+ kinds = [k for k in [*views.MODEL_TYPES.values(), views.OTHER] if k.label in set(data["type"])]
35
+ y = alt.Y("label:N", sort=None, title=None, axis=alt.Axis(labelLimit=320, ticks=False))
36
+ x = alt.X("skill_score:Q", title=COLUMNS["skill_score"], axis=alt.Axis(grid=False))
37
+ bars = (
38
+ alt.Chart(data)
39
+ .mark_bar(cornerRadiusEnd=3)
40
+ .encode(
41
+ x=x,
42
+ y=y,
43
+ color=alt.Color(
44
+ "type:N",
45
+ scale=alt.Scale(domain=[k.label for k in kinds], range=[k.bar for k in kinds]),
46
+ title=None,
47
+ legend=alt.Legend(orient="top"),
48
+ ),
49
+ tooltip=[alt.Tooltip("skill_score:Q", title=COLUMNS["skill_score"], format=".1f")],
50
+ )
51
+ )
52
+ values = [
53
+ alt.Chart(data)
54
+ .transform_filter(test)
55
+ .mark_text(align=align, dx=dx, fontSize=11, color="#414D5C")
56
+ .encode(x=x, y=y, text=alt.Text("skill_score:Q", format=".1f"))
57
+ for test, align, dx in [
58
+ ("datum.skill_score >= 0", "left", 4),
59
+ ("datum.skill_score < 0", "right", -4),
60
+ ]
61
+ ]
62
+ return alt.layer(bars, *values).properties(height=max(120, 26 * len(data)))
63
+
64
+
65
+ def pairwise_frame(
66
+ df: pd.DataFrame, models: views.Models, pairwise: dict[str, Any], value: str
67
+ ) -> tuple[pd.DataFrame, list[str]]:
68
+ shown = views.competitors(df, models)
69
+ labels = views.unique_labels(zip(shown["model_id"], shown["model"], strict=True))
70
+ cells = [
71
+ {"model": labels[a], "opponent": labels[b], "value": 100 * cell[value]}
72
+ for a in labels
73
+ for b, cell in pairwise.get(a, {}).items()
74
+ if b in labels and cell[value] is not None
75
+ ]
76
+ return pd.DataFrame(cells, columns=["model", "opponent", "value"]), list(labels.values())
77
+
78
+
79
+ def pairwise_chart(cells: pd.DataFrame, order: Sequence[str], value: str) -> alt.LayerChart:
80
+ title, domain, mid = PAIRWISE[value]
81
+ far = (domain[1] - mid) * 0.6
82
+ axis = {"labelLimit": 320, "ticks": False, "domain": False}
83
+ base = alt.Chart(cells).encode(
84
+ x=alt.X(
85
+ "opponent:N",
86
+ sort=list(order),
87
+ title=None,
88
+ axis=alt.Axis(orient="top", labelAngle=-90, **axis),
89
+ ),
90
+ y=alt.Y("model:N", sort=list(order), title=None, axis=alt.Axis(**axis)),
91
+ )
92
+ heat = base.mark_rect().encode(
93
+ color=alt.Color(
94
+ "value:Q",
95
+ legend=None,
96
+ scale=alt.Scale(scheme="purplegreen", domain=domain, domainMid=mid, clamp=True),
97
+ ),
98
+ tooltip=[alt.Tooltip("value:Q", title=title, format=".1f")],
99
+ )
100
+ text = base.mark_text(fontSize=9).encode(
101
+ text=alt.Text("value:Q", format=".0f"),
102
+ color=alt.condition(
103
+ f"abs(datum.value - {mid}) > {far}", alt.value("#FFFFFF"), alt.value("#31333F")
104
+ ),
105
+ )
106
+ return alt.layer(heat, text).properties(height=alt.Step(22))
107
+
108
+
109
+ def trend_frame(rows: list[dict[str, Any]], column: str, labels: dict[str, str]) -> pd.DataFrame:
110
+ df = pd.DataFrame(rows, columns=["date", "model_id", column])
111
+ df = df[df["model_id"].isin(list(labels))].dropna(subset=[column])
112
+ return pd.DataFrame(
113
+ {
114
+ "date": pd.to_datetime(df["date"]),
115
+ "value": 100 * df[column],
116
+ "model": df["model_id"].map(labels),
117
+ }
118
+ )
119
+
120
+
121
+ def trend_chart(df: pd.DataFrame, order: Sequence[str], title: str) -> alt.Chart:
122
+ order = list(order)
123
+ picked = alt.selection_point(fields=["model"], bind="legend")
124
+ colors = [PALETTE[i % len(PALETTE)] for i in range(len(order))]
125
+ return (
126
+ alt.Chart(df)
127
+ .mark_line(point=True)
128
+ .encode(
129
+ x=alt.X("date:T", title=None, axis=alt.Axis(format="%b %d")),
130
+ y=alt.Y("value:Q", title=title, scale=alt.Scale(zero=False)),
131
+ color=alt.Color(
132
+ "model:N",
133
+ scale=alt.Scale(domain=order, range=colors),
134
+ title=None,
135
+ legend=alt.Legend(
136
+ orient="bottom", columns=LEGEND_COLUMNS, symbolLimit=0, labelLimit=320
137
+ ),
138
+ ),
139
+ opacity=alt.condition(picked, alt.value(1.0), alt.value(0.12)),
140
+ tooltip=[
141
+ alt.Tooltip("date:T", title="Day"),
142
+ alt.Tooltip("value:Q", title=title, format=".1f"),
143
+ ],
144
+ )
145
+ .add_params(picked)
146
+ # The height includes the legend, about 30 px a row.
147
+ .properties(height=460 + 30 * -(-len(order) // LEGEND_COLUMNS))
148
+ )
cref/controls.py ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+ import streamlit as st
4
+
5
+ from cref import source
6
+ from cref import views
7
+
8
+
9
+ @st.cache_resource(on_release=source.Source.close)
10
+ def data_source(variant: str = "release") -> source.Source:
11
+ return source.Source.from_env(variant)
12
+
13
+
14
+ @st.cache_resource(on_release=source.History.close)
15
+ def history(variant: str = "release") -> source.History:
16
+ return source.History.from_env(variant)
17
+
18
+
19
+ @st.cache_resource
20
+ def models() -> views.Models:
21
+ return views.load_models()
22
+
23
+
24
+ @st.cache_resource
25
+ def tasks():
26
+ return views.load_tasks()
27
+
28
+
29
+ def metric_control() -> str:
30
+ return st.segmented_control(
31
+ "Metric",
32
+ list(views.METRICS),
33
+ default="mase",
34
+ required=True,
35
+ format_func=views.METRICS.get,
36
+ help=views.METRIC_HELP,
37
+ )
38
+
39
+
40
+ def type_controls(models: views.Models) -> set[str]:
41
+ present = [t for t in views.MODEL_TYPES if any(i.get("type") == t for i in models.values())]
42
+ if not present:
43
+ return set(views.MODEL_TYPES)
44
+ picked = st.pills(
45
+ "Model types",
46
+ present,
47
+ selection_mode="multi",
48
+ default=present,
49
+ format_func=lambda t: views.MODEL_TYPES[t].label,
50
+ help="Hides the other models. The seasonal naive baseline is always shown.",
51
+ )
52
+ return set(picked or ())
53
+
54
+
55
+ def board_controls(models: views.Models) -> tuple[str, str, set[str]]:
56
+ variants = data_source("all").get().board is not None
57
+ cells = st.columns([1, 1.5, 3] if variants else [1, 4], vertical_alignment="bottom")
58
+ with cells[0]:
59
+ metric = metric_control()
60
+ variant = "release"
61
+ if variants:
62
+ with cells[1]:
63
+ variant = st.segmented_control(
64
+ "Pretrained samples counted",
65
+ list(views.VARIANTS),
66
+ default="release",
67
+ required=True,
68
+ format_func=views.VARIANTS.get,
69
+ help=views.VARIANT_HELP,
70
+ )
71
+ with cells[-1]:
72
+ types = type_controls(models)
73
+ return metric, variant, types
cref/data/v1/leaderboard/all_samples/history/2026-07-04.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-07-11.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-07-18.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-07-25.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-08-01.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-08-08.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-08-15.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-08-22.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-08-29.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-09-05.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-09-12.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-09-19.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-09-26.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-10-03.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-10-10.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-10-17.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-10-24.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-10-31.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-11-01.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-11-02.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-11-03.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/history/2026-11-04.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/all_samples/latest.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-07-04.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-07-11.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-07-18.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-07-25.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-08-01.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-08-08.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-08-15.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-08-22.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-08-29.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-09-05.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-09-12.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-09-19.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-09-26.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-10-03.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-10-10.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-10-17.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-10-24.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-10-31.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-11-01.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-11-02.json ADDED
The diff for this file is too large to render. See raw diff
 
cref/data/v1/leaderboard/history/2026-11-03.json ADDED
The diff for this file is too large to render. See raw diff