File size: 13,789 Bytes
53120c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b37ee5e
53120c3
b37ee5e
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<!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>