Drop title/intro, freeze through last Friday midday, render dates in UTC
Browse files- Remove the visible title and challenge-explanation paragraph so the plot
embeds cleanly in a blog that already describes the challenge.
- Freeze data through Fri 2026-06-19 16:00 UTC (UNTIL cutoff), excluding the
late-Friday submissions that were only verified afterward — so the SOTA is
byteshark (491.8 TPS), the top verified result as of the snapshot.
- Render all dates (header, axis, hover card) in UTC so the frozen plot reads
identically regardless of the viewer's timezone.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- README.md +10 -0
- build_snapshot.mjs +11 -0
- index.html +0 -0
README.md
CHANGED
|
@@ -49,4 +49,14 @@ rewrites the embedded `<script id="snapshot">` block in place:
|
|
| 49 |
node build_snapshot.mjs
|
| 50 |
```
|
| 51 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 52 |
Override the source with `API_BASE=… node build_snapshot.mjs` if the dashboard ever moves.
|
|
|
|
| 49 |
node build_snapshot.mjs
|
| 50 |
```
|
| 51 |
|
| 52 |
+
The freeze window is controlled by the `UNTIL` cutoff in `build_snapshot.mjs` (currently
|
| 53 |
+
`2026-06-19T16:00:00Z` — last Friday midday UTC). It excludes the late-Friday submissions that
|
| 54 |
+
were only verified afterward, so the plotted SOTA reflects what was verified as of the snapshot.
|
| 55 |
+
Override per-run with an env var — a date (`UNTIL=2026-06-19`, treated as end-of-day UTC), a full
|
| 56 |
+
ISO timestamp, or `UNTIL=` (empty) to include everything:
|
| 57 |
+
|
| 58 |
+
```bash
|
| 59 |
+
UNTIL=2026-06-19T16:00:00Z node build_snapshot.mjs
|
| 60 |
+
```
|
| 61 |
+
|
| 62 |
Override the source with `API_BASE=… node build_snapshot.mjs` if the dashboard ever moves.
|
build_snapshot.mjs
CHANGED
|
@@ -20,6 +20,15 @@ const HTML_PATH = join(HERE, 'index.html');
|
|
| 20 |
// each replaces ~680 individual bucket fetches.
|
| 21 |
const API_BASE = process.env.API_BASE || 'https://gemma-challenge-gemma-dashboard.hf.space';
|
| 22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
const BUCKET_WEB_URL = 'https://huggingface.co/buckets/gemma-challenge/gemma-main-bucket';
|
| 24 |
const TPS_MIN = 0, TPS_MAX = 1_000_000;
|
| 25 |
const FILENAME_RE = /^(\d{8})-(\d{6})(?:-\d{3})?_(.+?)(?:_(.+))?\.md$/;
|
|
@@ -135,6 +144,7 @@ async function getJson(url) {
|
|
| 135 |
|
| 136 |
async function main() {
|
| 137 |
console.log(`Fetching snapshot from ${API_BASE} …`);
|
|
|
|
| 138 |
const [resultsRes, agentsRes, verifyMap] = await Promise.all([
|
| 139 |
getJson(`${API_BASE}/api/results`),
|
| 140 |
getJson(`${API_BASE}/api/agents`),
|
|
@@ -145,6 +155,7 @@ async function main() {
|
|
| 145 |
const entries = (resultsRes.items || [])
|
| 146 |
.map(it => parseResultFile(it.filename, it.content))
|
| 147 |
.filter(Boolean)
|
|
|
|
| 148 |
.map(e => ({ ...e, verification: verificationState(e.filename) }));
|
| 149 |
|
| 150 |
const agents = {};
|
|
|
|
| 20 |
// each replaces ~680 individual bucket fetches.
|
| 21 |
const API_BASE = process.env.API_BASE || 'https://gemma-challenge-gemma-dashboard.hf.space';
|
| 22 |
|
| 23 |
+
// Freeze window: include only submissions up to and including this UTC instant.
|
| 24 |
+
// Set to last Friday midday for the current snapshot — this excludes the late
|
| 25 |
+
// Friday-evening submissions that were only verified afterward, so the SOTA
|
| 26 |
+
// reflects what was verified as of the snapshot (byteshark, 491.8 TPS).
|
| 27 |
+
// Override with UNTIL=YYYY-MM-DD or a full ISO timestamp; UNTIL= (empty) keeps
|
| 28 |
+
// everything. A date with no time is treated as end-of-day UTC.
|
| 29 |
+
const UNTIL = process.env.UNTIL ?? '2026-06-19T16:00:00Z';
|
| 30 |
+
const CUTOFF_MS = UNTIL ? Date.parse(/T/.test(UNTIL) ? UNTIL : `${UNTIL}T23:59:59.999Z`) : Infinity;
|
| 31 |
+
|
| 32 |
const BUCKET_WEB_URL = 'https://huggingface.co/buckets/gemma-challenge/gemma-main-bucket';
|
| 33 |
const TPS_MIN = 0, TPS_MAX = 1_000_000;
|
| 34 |
const FILENAME_RE = /^(\d{8})-(\d{6})(?:-\d{3})?_(.+?)(?:_(.+))?\.md$/;
|
|
|
|
| 144 |
|
| 145 |
async function main() {
|
| 146 |
console.log(`Fetching snapshot from ${API_BASE} …`);
|
| 147 |
+
console.log(`Including submissions ${UNTIL ? `through ${UNTIL} (UTC)` : '(no cutoff)'}`);
|
| 148 |
const [resultsRes, agentsRes, verifyMap] = await Promise.all([
|
| 149 |
getJson(`${API_BASE}/api/results`),
|
| 150 |
getJson(`${API_BASE}/api/agents`),
|
|
|
|
| 155 |
const entries = (resultsRes.items || [])
|
| 156 |
.map(it => parseResultFile(it.filename, it.content))
|
| 157 |
.filter(Boolean)
|
| 158 |
+
.filter(e => (Date.parse(e.date) || 0) <= CUTOFF_MS)
|
| 159 |
.map(e => ({ ...e, verification: verificationState(e.filename) }));
|
| 160 |
|
| 161 |
const agents = {};
|
index.html
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|