Chi-Bi's picture
Publish RoleCall copy of PlotPoints benchmark with upstream attribution
b37ee5e verified
Raw History Blame Contribute Delete
13.8 kB
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>PlotPoints Leaderboard · RoleCall</title><link href="https://fonts.googleapis.com/css2?family=Cinzel:wght@700;800;900&family=Inter:wght@400;500;700&family=JetBrains+Mono:wght@500;700&display=swap" rel="stylesheet"><style>
/* RoleCall — Vaudeville design system. Neobrutalist on a dark stage.
Brand = rose #e11d48. Violet is the user-accent (secondary).
Gold = featured/awards only (the benchmark). Hard 3px black borders,
6px offset shadows, zero radius, Cinzel marquee with 4px black punch. */
:root{
--canvas:#0a0a0b; --bg-panel:#1c1a22; --bg-higher:#26232d; --line:#3f3f46; --hard:#000;
--ink:#fafaf9; --ink-soft:#e4e4e7; --ink-muted:#a1a1aa; --ink-dim:#71717a;
--brand:#e11d48; --brand-soft:#fb7185; --brand-deep:#9f1239;
--accent:#8b5cf6; --accent-soft:#a78bfa; --gold:#eab308; --gold-soft:#fcd34d; --amber:#f59e0b; --pink:#ec4899; --pink-soft:#f9a8d4;
--font-display:'Cinzel',Georgia,serif; --font-serif:'Cormorant Garamond',Garamond,Georgia,serif;
--font-body:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif; --font-mono:'JetBrains Mono',ui-monospace,monospace;
--border:3px solid var(--hard); --shadow:6px 6px 0 0 var(--hard); --shadow-sm:3px 3px 0 0 var(--hard);
}
*{box-sizing:border-box}
body{margin:0; background:var(--canvas); color:var(--ink-soft); font-family:var(--font-body);
font-size:16px; line-height:1.55; -webkit-font-smoothing:antialiased; min-height:100vh;
background-image:
radial-gradient(ellipse 80% 50% at 50% -10%, rgba(225,29,72,.10), transparent),
radial-gradient(ellipse 60% 40% at 90% 100%, rgba(139,92,246,.07), transparent);
background-attachment:fixed;}
::selection{background:var(--brand); color:var(--ink)}
.readme{max-width:840px; margin:0 auto; padding:48px 24px 84px}
a{color:var(--brand-soft); text-decoration:none; transition:color .12s ease-out}
a:hover{color:var(--accent-soft); text-decoration:underline; text-underline-offset:3px}
/* ── header ── */
.head{text-align:center; padding:14px 0 30px}
.logo{width:74px; height:auto; margin:0 auto 20px; display:block}
.eyebrow{font-family:var(--font-body); font-weight:700; font-size:.72rem; letter-spacing:.22em;
text-transform:uppercase; color:var(--brand); margin-bottom:16px}
.head h1{font-family:var(--font-display); font-weight:900; font-size:42px; letter-spacing:.04em;
text-transform:uppercase; margin:0; line-height:1.05; color:var(--ink); text-shadow:4px 4px 0 var(--hard)}
.tagline{font-family:var(--font-serif); font-style:italic; font-weight:500; font-size:21px; color:var(--ink-soft); margin-top:14px}
.badges{display:flex; gap:10px; justify-content:center; flex-wrap:wrap; margin-top:24px}
.badge{display:inline-flex; align-items:stretch; font-family:var(--font-body); font-weight:700; font-size:11px;
letter-spacing:.12em; text-transform:uppercase; border:var(--border); box-shadow:var(--shadow-sm);
transition:transform .1s ease-out, box-shadow .1s ease-out}
.badge:hover{transform:translate(-1px,-1px); box-shadow:5px 5px 0 0 var(--hard)}
.badge .k{background:var(--hard); color:var(--ink-soft); padding:6px 10px}
.badge .v{padding:6px 11px; color:var(--canvas)}
.badge.disc .v{background:var(--accent)} .badge.reddit .v{background:var(--amber)} .badge.x .v{background:var(--ink-soft)}
/* stat strip — mono knockout tiles */
.stats{display:flex; gap:12px; flex-wrap:wrap; margin:4px 0 20px}
.stat{flex:1; min-width:118px; background:var(--hard); border:var(--border); padding:14px 16px}
.stat .n{font-family:var(--font-mono); font-weight:700; font-size:26px; color:var(--brand-soft); line-height:1}
.stat .l{font-weight:600; font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-muted); margin-top:8px}
/* sparkle divider — echoes the logo */
.ornament{display:flex; align-items:center; gap:16px; margin:30px 0}
.ornament::before,.ornament::after{content:""; flex:1; height:3px; background:var(--hard)}
.ornament span{color:var(--brand); font-size:14px; letter-spacing:.4em}
hr{border:0; border-top:var(--border); margin:30px 0}
/* ── section heads ── */
h2{font-family:var(--font-display); font-weight:800; font-size:23px; text-transform:uppercase; letter-spacing:.04em;
color:var(--ink); margin:38px 0 16px; padding-bottom:12px; display:flex; align-items:center; gap:13px;
border-bottom:var(--border); text-shadow:2px 2px 0 var(--hard)}
h2::before{content:""; width:15px; height:15px; background:var(--brand); border:var(--border); flex:0 0 auto}
h2 .em{color:var(--brand-soft)}
p{margin:0 0 16px; color:var(--ink-soft)}
strong{color:var(--ink)}
blockquote{margin:6px 0 26px; padding:0; text-align:center}
blockquote p{margin:0 auto; max-width:760px; font-family:var(--font-display); font-weight:700; font-size:clamp(17px,2.1vw,23px); letter-spacing:.04em; line-height:1.35; color:var(--ink-soft); text-shadow:2px 2px 0 var(--hard)}
.note{font-size:13.5px; color:var(--ink-muted); border-left:3px solid var(--pink); background:rgba(236,72,153,.06); padding:.55em 1em; margin:0 0 10px}
.note:last-of-type{margin-bottom:22px}
.note strong{color:var(--pink-soft)} .note a{color:var(--pink-soft)}
ul{margin:0 0 16px; padding-left:1.3em} li{margin:.32em 0} li::marker{color:var(--brand)}
/* ── table ── */
.tablewrap{border:var(--border); box-shadow:var(--shadow); margin:6px 0 24px}
table{border-collapse:collapse; width:100%; font-size:15px; background:var(--bg-panel)}
th,td{border:1px solid var(--line); padding:12px 15px; text-align:left; vertical-align:top}
thead th{background:var(--hard); color:var(--brand-soft); font-family:var(--font-body); font-weight:700;
font-size:11px; letter-spacing:.16em; text-transform:uppercase}
tbody tr{transition:background .12s ease-out}
tbody tr:nth-child(even){background:var(--bg-higher)}
tbody tr:hover{background:rgba(225,29,72,.08)}
td .nm{font-family:var(--font-display); font-weight:700; font-size:15px; letter-spacing:.03em; text-transform:uppercase}
td.r1 .nm{color:var(--brand-soft)} td.r2 .nm{color:var(--accent-soft)} td.r3 .nm{color:var(--gold-soft)}
td.lk{white-space:nowrap; font-family:var(--font-mono); font-size:13px}
.foot{color:var(--ink-dim); font-size:12px; text-align:center; margin-top:46px; font-family:var(--font-mono); letter-spacing:.08em}
.round-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:20px 0 26px}
.round-card{border:var(--border);box-shadow:var(--shadow);background:var(--bg-panel);padding:22px;min-width:0}
.round-number{font:700 11px var(--font-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--pink-soft)}
.round-card h3{font:800 20px var(--font-display);color:var(--ink);margin:12px 0}
.round-card p{font-size:14px;color:var(--ink-muted)}
.round-card ul{margin-bottom:0;font-size:14px}
.round-nav{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}
.round-nav a{border:var(--border);background:var(--bg-panel);padding:7px 12px;font:600 12px var(--font-mono)}
@media(max-width:600px){h2{flex-wrap:wrap;font-size:20px;gap:6px}.round-grid{grid-template-columns:1fr}.head h1{font-size:32px}.readme{padding:28px 18px 60px}}
.readme{max-width:1100px}input,select{background:var(--bg-panel);color:var(--ink);border:var(--border);padding:12px;font:inherit;max-width:100%}.filters{display:flex;gap:12px;flex-wrap:wrap;margin:20px 0}.tablewrap{overflow-x:auto}th button{background:none;border:0;color:inherit;font:inherit;cursor:pointer;text-align:left;padding:0}.tablewrap table{min-width:720px}</style></head><body><main class="readme"><div class="head"><div class="eyebrow">RoleCall Studios · Open benchmark</div><h1>PlotPoints</h1><p class="tagline">Read the results. Inspect the data.</p></div><p><a href="https://huggingface.co/spaces/RoleCall/rolecall-studios">RoleCall Studios</a> · <a href="https://huggingface.co/datasets/RoleCall/roleplay-bench">Full dataset</a> · <a href="https://plotlightstudios.com/plotpoints">Vote on PlotLight</a></p><h2>Round 04 <span class="em">Willingness</span></h2><p>J combines first-ask boundary holding with over-refusal on the harder escalation steps. Writing quality and human preference are separate. Treat J values within about 0.3 as tied.</p><div class="filters"><label>Find a model <input id="search" type="search" placeholder="Model name" autocomplete="off"></label><label>Group <select id="group"><option value="">All models</option><option>CALIBRATED</option><option>OVER-CAUTIOUS</option><option>PERMISSIVE</option><option>CONFUSED</option><option value="unranked">Unranked</option></select></label></div><p id="count" aria-live="polite">Loading results…</p><div class="tablewrap"><table><thead><tr><th>Rank</th><th><button data-sort="name">Model ↕</button></th><th><button data-sort="J">J ↕</button></th><th>Held first</th><th>Over-refusal</th><th>Group</th></tr></thead><tbody id="rows"></tbody></table></div><p class="note">The hard-limit score rests on four first asks for most models. Empty replies are excluded from J and reported separately; they can hide silent refusals. Held under a second push is reported in the source, outside J. This table is a published snapshot, not live human standings.</p><p><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/blob/main/analysis/round4_willingness_leaderboard.json">Source JSON &amp; definitions</a> · <a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/blob/main/analysis/profile_cards_v2.md">Full model cards</a></p><h2>Data <span class="em">By Round</span></h2><div class="round-grid"><article class="round-card" id="round-01"><div class="round-number">Round 01</div><h3>First impressions</h3><p class="round-count"><strong>11 models in the single-turn human arena.</strong></p><p>Single replies, blind human votes, and the original writing tests.</p><ul><li><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/viewer/community_arena/train">Human standings</a></li><li><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/viewer/community_votes/train">Raw ballots</a></li><li><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/viewer/seeds/train">Seed scenarios</a></li><li><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/viewer/rubric/train">Writing rubric</a></li></ul></article>
<article class="round-card" id="round-02"><div class="round-number">Round 02</div><h3>Can it hold a scene?</h3><p class="round-count"><strong>20 models in the full-session human arena.</strong></p><p>Full multi-turn scenes: consistency, momentum, agency, and adversarial failures.</p><ul><li><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/blob/main/analysis/multiturn_arena_bayesian.json">Final human ratings</a></li><li><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/blob/main/analysis/adversarial_analysis.json">Adversarial results</a></li><li><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/viewer/adversarial_seeds/train">Adversarial seeds</a></li><li><a href="https://plotlightstudios.com/plotpoints/round/2">Round archive</a></li></ul></article>
<article class="round-card" id="round-03"><div class="round-number">Round 03</div><h3>After Dark</h3><p class="round-count"><strong>21 models in the standard track; 40 in the NSFW track.</strong></p><p>A refreshed model pool and a separate NSFW track. Judge findings and human preferences are different signals.</p><ul><li><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/blob/main/analysis/round3_multi_judge.json">NSFW judge results</a></li><li><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/blob/main/analysis/round3_kappa.json">Judge agreement</a></li><li><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/viewer/round4_continuity/train">Across-round comparisons</a></li><li><a href="https://plotlightstudios.com/plotpoints/round/3">Round archive & standings</a></li></ul></article>
<article class="round-card" id="round-04"><div class="round-number">Round 04</div><h3>The Darker Berry</h3><p class="round-count"><strong>71 models overall: 70 craft-scored, 58 willingness-tested, and 55 ranked by J.</strong></p><p>Adult intimacy, bondage play, graphic violence, and boundary probes. Willingness and writing quality are shown separately.</p><ul><li><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/viewer/round4_leaderboard/train">Willingness results · J</a></li><li><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/viewer/round4_overview/train">Model overview</a></li><li><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/viewer/round4_track_a_seeds/train">Escalation seeds</a></li><li><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/viewer/round4_track_b_probes/train">Boundary requests</a></li><li><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/viewer/round4_rater_agreement/train">Rater labels</a></li><li><a href="https://huggingface.co/datasets/RoleCall/roleplay-bench/blob/main/analysis/profile_cards_v2.md">Model cards</a></li><li><a href="https://github.com/LeviTheWeasel/rp-benchmark/blob/main/docs/ROUND4_FOR_READERS.md">Plain-English guide</a></li><li><a href="https://github.com/LeviTheWeasel/rp-benchmark/blob/main/docs/METHODOLOGY.md">Full methodology</a></li></ul></article></div><p>Benchmark and original data: <a href="https://github.com/LeviTheWeasel/rp-benchmark">LeviTheWeasel/rp-benchmark</a>. Dataset license: CC BY-NC 4.0.</p></main><script src="dashboard.js"></script></body></html>