danbrooks's picture
Experiment #1 release: checkpoints, deck pool, games, report (CC BY 4.0)
069f76c verified
Raw History Blame Contribute Delete
83.6 kB
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Format knowledge</title>
<style>
:root{
--bg:#ffffff; --panel:#f7f7f8; --ink:#16161a; --muted:#6b6b76; --line:#e3e3e8; --grid:#ededf1;
--accent:#3b6fd4; --accent2:#c2410c; --good:#15803d;
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
--bg:#121216; --panel:#1a1a20; --ink:#ececf1; --muted:#9a9aa6; --line:#2a2a33; --grid:#24242c;
--accent:#7aa2f7; --accent2:#f0883e; --good:#4ade80;
}}
:root[data-theme="dark"]{
--bg:#121216; --panel:#1a1a20; --ink:#ececf1; --muted:#9a9aa6; --line:#2a2a33; --grid:#24242c;
--accent:#7aa2f7; --accent2:#f0883e; --good:#4ade80;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
font:14px/1.55 ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
.wrap{max-width:1100px;margin:0 auto;padding:28px 16px 64px}
h1{font-size:22px;margin:0 0 2px} h2{font-size:16px;margin:32px 0 6px}
h3{font-size:13px;margin:0;font-weight:600}
p.sub{color:var(--muted);margin:0 0 4px} p.blurb{color:var(--muted);margin:0 0 14px;max-width:72ch}
a{color:var(--accent)}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin:14px 0}
.tile{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.tile .k{color:var(--muted);font-size:12px} .tile .v{font-size:23px;font-weight:600;margin-top:2px}
.tile .s{color:var(--muted);font-size:11px;margin-top:3px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:12px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px}
.unit{color:var(--muted);font-size:11px;margin-bottom:6px}
svg{width:100%;height:auto;display:block;overflow:visible}
.tablewrap{max-height:430px;overflow:auto;border:1px solid var(--line);border-radius:10px;margin-top:8px}
table{border-collapse:collapse;width:100%;font-size:12.5px}
th,td{padding:6px 10px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--line)}
th:first-child,td:first-child{text-align:left}
th{position:sticky;top:0;background:var(--panel);cursor:pointer;font-weight:600;z-index:1}
tbody tr:hover{background:var(--grid)}
.empty{color:var(--muted);padding:22px 0;text-align:center}
.legend{display:flex;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:11px;margin-top:6px}
.sw{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:middle}
@media (max-width:640px){ .wrap{padding:20px 16px 48px} h1{font-size:19px} }
</style>
</head>
<body>
<div class="wrap">
<h1 id="title">Format knowledge</h1>
<p class="sub" id="subtitle"></p>
<p class="sub"><a href="dashboard.html">← training health dashboard</a></p>
<div id="root"></div>
</div>
<script>
const D = {"window_gens": 10, "min_card_games": 30, "selfplay_games": {"network": 1615, "recent": 498, "heuristic": 0}, "gih_rho": {"network": 0.33101495432919054, "network_cards": 231, "recent": 0.17347031458534928, "recent_cards": 127, "heuristic": null, "heuristic_cards": 0}, "rho_series": [{"gen": 2, "series": "network self-play, all gens", "v": 0.29999999999999993, "cards": 5}, {"gen": 3, "series": "network self-play, all gens", "v": 0.18447548878111292, "cards": 21}, {"gen": 4, "series": "network self-play, all gens", "v": 0.11698402346256997, "cards": 38}, {"gen": 5, "series": "network self-play, all gens", "v": 0.004808518016982671, "cards": 64}, {"gen": 6, "series": "network self-play, all gens", "v": 0.0950837847102088, "cards": 76}, {"gen": 7, "series": "network self-play, all gens", "v": 0.12531957263182672, "cards": 91}, {"gen": 8, "series": "network self-play, all gens", "v": 0.16288109792320954, "cards": 108}, {"gen": 9, "series": "network self-play, all gens", "v": 0.1138598855407581, "cards": 121}, {"gen": 10, "series": "network self-play, all gens", "v": 0.13980040483719344, "cards": 131}, {"gen": 11, "series": "network self-play, all gens", "v": 0.2269047816336006, "cards": 139}, {"gen": 12, "series": "network self-play, all gens", "v": 0.2318130530813025, "cards": 144}, {"gen": 13, "series": "network self-play, all gens", "v": 0.2214392602871602, "cards": 151}, {"gen": 14, "series": "network self-play, all gens", "v": 0.2275174065464559, "cards": 163}, {"gen": 15, "series": "network self-play, all gens", "v": 0.24039751469889611, "cards": 173}, {"gen": 16, "series": "network self-play, all gens", "v": 0.2592314084773244, "cards": 182}, {"gen": 17, "series": "network self-play, all gens", "v": 0.2530276657237218, "cards": 187}, {"gen": 18, "series": "network self-play, all gens", "v": 0.29697223460027505, "cards": 193}, {"gen": 19, "series": "network self-play, all gens", "v": 0.30824698778701726, "cards": 197}, {"gen": 20, "series": "network self-play, all gens", "v": 0.30348838426352737, "cards": 202}, {"gen": 21, "series": "network self-play, all gens", "v": 0.2736527702946663, "cards": 203}, {"gen": 22, "series": "network self-play, all gens", "v": 0.263900904903358, "cards": 205}, {"gen": 23, "series": "network self-play, all gens", "v": 0.30041211362139353, "cards": 210}, {"gen": 24, "series": "network self-play, all gens", "v": 0.30141350306655695, "cards": 214}, {"gen": 25, "series": "network self-play, all gens", "v": 0.3008458373459055, "cards": 216}, {"gen": 26, "series": "network self-play, all gens", "v": 0.31022375887518816, "cards": 219}, {"gen": 27, "series": "network self-play, all gens", "v": 0.30085939808507106, "cards": 220}, {"gen": 28, "series": "network self-play, all gens", "v": 0.2962209392950985, "cards": 222}, {"gen": 29, "series": "network self-play, all gens", "v": 0.3309771062690341, "cards": 226}, {"gen": 30, "series": "network self-play, all gens", "v": 0.33410836546915523, "cards": 227}, {"gen": 31, "series": "network self-play, all gens", "v": 0.33489610149049, "cards": 228}, {"gen": 32, "series": "network self-play, all gens", "v": 0.33528445731558437, "cards": 228}, {"gen": 33, "series": "network self-play, all gens", "v": 0.33101495432919054, "cards": 231}], "cards": [{"card": "Abrade", "games": 148, "wr": 0.34459459459459457, "recent_games": 47, "recent_wr": 0.2553191489361702, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5723537967562228, "ref_games": 36439}, {"card": "Abyssal Harvester", "games": 78, "wr": 0.6153846153846154, "recent_games": 27, "recent_wr": 0.5185185185185185, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5568301468550845, "ref_games": 18045}, {"card": "Adventuring Gear", "games": 4, "wr": 0.5, "recent_games": 1, "recent_wr": 0.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.4672704816797036, "ref_games": 2429}, {"card": "Aegis Turtle", "games": 59, "wr": 0.5423728813559322, "recent_games": 14, "recent_wr": 0.6428571428571429, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.49876456053653373, "ref_games": 11332}, {"card": "Aetherize", "games": 49, "wr": 0.42857142857142855, "recent_games": 19, "recent_wr": 0.47368421052631576, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5011574074074074, "ref_games": 12096}, {"card": "Affectionate Indrik", "games": 109, "wr": 0.5321100917431193, "recent_games": 36, "recent_wr": 0.75, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5549441849418099, "ref_games": 25262}, {"card": "Ajani's Pridemate", "games": 147, "wr": 0.5850340136054422, "recent_games": 39, "recent_wr": 0.6666666666666666, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5575978545816133, "ref_games": 33187}, {"card": "Ajani, Caller of the Pride", "games": 29, "wr": 0.5172413793103449, "recent_games": 9, "recent_wr": 1.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5760010537407798, "ref_games": 7592}, {"card": "Akroma's Memorial", "games": 2, "wr": 0.0, "recent_games": 0, "recent_wr": null, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5535900104058272, "ref_games": 961}, {"card": "Alesha, Who Laughs at Fate", "games": 77, "wr": 0.5584415584415584, "recent_games": 23, "recent_wr": 0.4782608695652174, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6182555044761674, "ref_games": 16532}, {"card": "Ambush Wolf", "games": 163, "wr": 0.5398773006134969, "recent_games": 39, "recent_wr": 0.6410256410256411, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5528161216505499, "ref_games": 40641}, {"card": "An Offer You Can't Refuse", "games": 5, "wr": 0.2, "recent_games": 1, "recent_wr": 0.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.48086253369272236, "ref_games": 1855}, {"card": "Angel of Finality", "games": 146, "wr": 0.6438356164383562, "recent_games": 44, "recent_wr": 0.5909090909090909, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5667691485095575, "ref_games": 29924}, {"card": "Anthem of Champions", "games": 25, "wr": 0.48, "recent_games": 10, "recent_wr": 0.6, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5550416281221091, "ref_games": 8648}, {"card": "Apothecary Stomper", "games": 81, "wr": 0.4567901234567901, "recent_games": 28, "recent_wr": 0.42857142857142855, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5162326431783367, "ref_games": 20237}, {"card": "Arahbo, the First Fang", "games": 93, "wr": 0.5806451612903226, "recent_games": 28, "recent_wr": 0.6785714285714286, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6092069892473119, "ref_games": 17856}, {"card": "Arbiter of Woe", "games": 206, "wr": 0.5485436893203883, "recent_games": 64, "recent_wr": 0.546875, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5853986874684488, "ref_games": 41599}, {"card": "Arcane Epiphany", "games": 183, "wr": 0.4644808743169399, "recent_games": 59, "recent_wr": 0.5084745762711864, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5585976718313299, "ref_games": 36853}, {"card": "Archmage of Runes", "games": 82, "wr": 0.5609756097560976, "recent_games": 21, "recent_wr": 0.6190476190476191, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5546119367775418, "ref_games": 16956}, {"card": "Armasaur Guide", "games": 61, "wr": 0.4918032786885246, "recent_games": 16, "recent_wr": 0.625, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5052325123927925, "ref_games": 12709}, {"card": "Ashroot Animist", "games": 51, "wr": 0.5098039215686274, "recent_games": 15, "recent_wr": 0.6, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5846628470691935, "ref_games": 11345}, {"card": "Authority of the Consuls", "games": 14, "wr": 0.5, "recent_games": 3, "recent_wr": 1.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.520273154075971, "ref_games": 4686}, {"card": "Axgard Cavalry", "games": 130, "wr": 0.4307692307692308, "recent_games": 34, "recent_wr": 0.38235294117647056, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5213961271814487, "ref_games": 33464}, {"card": "Bake into a Pie", "games": 454, "wr": 0.5066079295154186, "recent_games": 135, "recent_wr": 0.4962962962962963, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5801402610895727, "ref_games": 103949}, {"card": "Balmor, Battlemage Captain", "games": 113, "wr": 0.37168141592920356, "recent_games": 35, "recent_wr": 0.45714285714285713, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5560005588413356, "ref_games": 21473}, {"card": "Banishing Light", "games": 418, "wr": 0.5143540669856459, "recent_games": 114, "recent_wr": 0.543859649122807, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5744893554177175, "ref_games": 88026}, {"card": "Banner of Kinship", "games": 17, "wr": 0.47058823529411764, "recent_games": 6, "recent_wr": 0.3333333333333333, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5062344139650873, "ref_games": 2807}, {"card": "Battlesong Berserker", "games": 154, "wr": 0.564935064935065, "recent_games": 47, "recent_wr": 0.5957446808510638, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5759343270684814, "ref_games": 32403}, {"card": "Beast-Kin Ranger", "games": 227, "wr": 0.5814977973568282, "recent_games": 74, "recent_wr": 0.581081081081081, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5522770647008195, "ref_games": 53446}, {"card": "Bigfin Bouncer", "games": 487, "wr": 0.5051334702258727, "recent_games": 131, "recent_wr": 0.4732824427480916, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5708625986573294, "ref_games": 96673}, {"card": "Billowing Shriekmass", "games": 83, "wr": 0.43373493975903615, "recent_games": 25, "recent_wr": 0.36, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5368192278189722, "ref_games": 23466}, {"card": "Bite Down", "games": 240, "wr": 0.5541666666666667, "recent_games": 84, "recent_wr": 0.5357142857142857, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5556526019913929, "ref_games": 62971}, {"card": "Blanchwood Armor", "games": 9, "wr": 0.3333333333333333, "recent_games": 1, "recent_wr": 0.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.52015732546706, "ref_games": 3051}, {"card": "Blasphemous Edict", "games": 94, "wr": 0.5, "recent_games": 26, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5936776798463735, "ref_games": 20309}, {"card": "Bloodfell Caves", "games": 158, "wr": 0.4873417721518987, "recent_games": 54, "recent_wr": 0.46296296296296297, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5440299454383961, "ref_games": 31524}, {"card": "Bloodthirsty Conqueror", "games": 39, "wr": 0.46153846153846156, "recent_games": 18, "recent_wr": 0.6111111111111112, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6272054018732303, "ref_games": 9182}, {"card": "Bloom Tender", "games": 5, "wr": 0.8, "recent_games": 2, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5425149700598803, "ref_games": 835}, {"card": "Blossoming Sands", "games": 86, "wr": 0.5581395348837209, "recent_games": 34, "recent_wr": 0.6764705882352942, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5374318294496777, "ref_games": 22187}, {"card": "Boltwave", "games": 1, "wr": 0.0, "recent_games": 0, "recent_wr": null, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.44738988580750405, "ref_games": 2452}, {"card": "Brass's Bounty", "games": 0, "wr": null, "recent_games": 0, "recent_wr": null, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.37142857142857144, "ref_games": 35}, {"card": "Brazen Scourge", "games": 74, "wr": 0.5, "recent_games": 33, "recent_wr": 0.5151515151515151, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.522589710332901, "ref_games": 18504}, {"card": "Brineborn Cutthroat", "games": 173, "wr": 0.48554913294797686, "recent_games": 47, "recent_wr": 0.574468085106383, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5430148285168451, "ref_games": 32977}, {"card": "Broken Wings", "games": 31, "wr": 0.6774193548387096, "recent_games": 6, "recent_wr": 0.8333333333333334, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.4917156600748263, "ref_games": 7484}, {"card": "Bulk Up", "games": 15, "wr": 0.4, "recent_games": 5, "recent_wr": 0.4, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.4830008429334083, "ref_games": 3559}, {"card": "Burglar Rat", "games": 490, "wr": 0.5061224489795918, "recent_games": 144, "recent_wr": 0.5069444444444444, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5629493799160353, "ref_games": 103615}, {"card": "Burnished Hart", "games": 33, "wr": 0.3939393939393939, "recent_games": 8, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.4841587764020393, "ref_games": 10984}, {"card": "Burst Lightning", "games": 436, "wr": 0.45642201834862384, "recent_games": 135, "recent_wr": 0.45185185185185184, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5788672959466963, "ref_games": 90050}, {"card": "Bushwhack", "games": 223, "wr": 0.4663677130044843, "recent_games": 66, "recent_wr": 0.48484848484848486, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5375698534964507, "ref_games": 52968}, {"card": "Cackling Prowler", "games": 155, "wr": 0.5419354838709678, "recent_games": 45, "recent_wr": 0.5333333333333333, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.541109198911897, "ref_games": 36026}, {"card": "Campus Guide", "games": 157, "wr": 0.4713375796178344, "recent_games": 47, "recent_wr": 0.44680851063829785, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5138730318880599, "ref_games": 37663}, {"card": "Cat Collector", "games": 198, "wr": 0.5707070707070707, "recent_games": 50, "recent_wr": 0.6, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.585706988397266, "ref_games": 41111}, {"card": "Cathar Commando", "games": 350, "wr": 0.52, "recent_games": 105, "recent_wr": 0.5904761904761905, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5557555439531753, "ref_games": 72782}, {"card": "Celestial Armor", "games": 83, "wr": 0.5301204819277109, "recent_games": 22, "recent_wr": 0.5909090909090909, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6199745870393901, "ref_games": 19675}, {"card": "Cephalid Inkmage", "games": 100, "wr": 0.49, "recent_games": 25, "recent_wr": 0.56, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5341913880604824, "ref_games": 19113}, {"card": "Chandra, Flameshaper", "games": 52, "wr": 0.4230769230769231, "recent_games": 18, "recent_wr": 0.3888888888888889, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6160916795989018, "ref_games": 8377}, {"card": "Claws Out", "games": 66, "wr": 0.5606060606060606, "recent_games": 16, "recent_wr": 0.6875, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5358889414734185, "ref_games": 19017}, {"card": "Clinquant Skymage", "games": 46, "wr": 0.45652173913043476, "recent_games": 10, "recent_wr": 0.4, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.48725656776891907, "ref_games": 15302}, {"card": "Condemn", "games": 6, "wr": 0.5, "recent_games": 1, "recent_wr": 0.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5662751677852349, "ref_games": 1192}, {"card": "Consuming Aberration", "games": 34, "wr": 0.5294117647058824, "recent_games": 7, "recent_wr": 0.2857142857142857, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5195924764890282, "ref_games": 11484}, {"card": "Courageous Goblin", "games": 170, "wr": 0.49411764705882355, "recent_games": 55, "recent_wr": 0.509090909090909, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5384649819817804, "ref_games": 44677}, {"card": "Crackling Cyclops", "games": 34, "wr": 0.5, "recent_games": 13, "recent_wr": 0.46153846153846156, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.48530634876628775, "ref_games": 7214}, {"card": "Crypt Feaster", "games": 42, "wr": 0.35714285714285715, "recent_games": 14, "recent_wr": 0.35714285714285715, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5038066465256797, "ref_games": 8275}, {"card": "Crystal Barricade", "games": 7, "wr": 0.2857142857142857, "recent_games": 3, "recent_wr": 0.3333333333333333, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.48695652173913045, "ref_games": 3565}, {"card": "Curator of Destinies", "games": 104, "wr": 0.49038461538461536, "recent_games": 27, "recent_wr": 0.4444444444444444, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6208645585816122, "ref_games": 21884}, {"card": "Dauntless Veteran", "games": 67, "wr": 0.43283582089552236, "recent_games": 18, "recent_wr": 0.4444444444444444, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5193490054249548, "ref_games": 19355}, {"card": "Day of Judgment", "games": 83, "wr": 0.5421686746987951, "recent_games": 25, "recent_wr": 0.52, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5911183319794205, "ref_games": 14772}, {"card": "Dazzling Angel", "games": 416, "wr": 0.5576923076923077, "recent_games": 114, "recent_wr": 0.5789473684210527, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5777587795752052, "ref_games": 90067}, {"card": "Diregraf Ghoul", "games": 79, "wr": 0.5443037974683544, "recent_games": 25, "recent_wr": 0.64, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5426982794796475, "ref_games": 19064}, {"card": "Dismal Backwater", "games": 229, "wr": 0.4672489082969432, "recent_games": 78, "recent_wr": 0.44871794871794873, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5626657442638072, "ref_games": 43365}, {"card": "Divine Resilience", "games": 29, "wr": 0.3448275862068966, "recent_games": 7, "recent_wr": 0.5714285714285714, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5078740157480315, "ref_games": 8636}, {"card": "Doubling Season", "games": 2, "wr": 1.0, "recent_games": 1, "recent_wr": 1.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.39450441609421, "ref_games": 1019}, {"card": "Dragon Trainer", "games": 149, "wr": 0.4966442953020134, "recent_games": 48, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5647418368988258, "ref_games": 31085}, {"card": "Drake Hatcher", "games": 85, "wr": 0.6, "recent_games": 24, "recent_wr": 0.7083333333333334, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5673403485329325, "ref_games": 17961}, {"card": "Drakuseth, Maw of Flames", "games": 42, "wr": 0.5476190476190477, "recent_games": 13, "recent_wr": 0.3076923076923077, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5429515418502202, "ref_games": 9080}, {"card": "Dreadwing Scavenger", "games": 203, "wr": 0.458128078817734, "recent_games": 59, "recent_wr": 0.4406779661016949, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6043287281293711, "ref_games": 40751}, {"card": "Dwynen's Elite", "games": 130, "wr": 0.5, "recent_games": 37, "recent_wr": 0.5135135135135135, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5307329842931937, "ref_games": 38200}, {"card": "Dwynen, Gilt-Leaf Daen", "games": 52, "wr": 0.5576923076923077, "recent_games": 23, "recent_wr": 0.6521739130434783, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5293367346938775, "ref_games": 15680}, {"card": "Eager Trufflesnout", "games": 102, "wr": 0.5784313725490197, "recent_games": 28, "recent_wr": 0.6071428571428571, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5647119710179546, "ref_games": 25119}, {"card": "Eaten Alive", "games": 459, "wr": 0.4923747276688453, "recent_games": 156, "recent_wr": 0.4935897435897436, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5612768882419538, "ref_games": 98928}, {"card": "Electroduplicate", "games": 4, "wr": 0.5, "recent_games": 3, "recent_wr": 0.6666666666666666, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5143918291550603, "ref_games": 2154}, {"card": "Elementalist Adept", "games": 238, "wr": 0.4495798319327731, "recent_games": 59, "recent_wr": 0.4576271186440678, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5258657739374335, "ref_games": 44209}, {"card": "Elenda, Saint of Dusk", "games": 74, "wr": 0.6891891891891891, "recent_games": 31, "recent_wr": 0.6774193548387096, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6154158921933085, "ref_games": 17216}, {"card": "Elfsworn Giant", "games": 109, "wr": 0.5504587155963303, "recent_games": 33, "recent_wr": 0.6060606060606061, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5260782021304234, "ref_games": 30792}, {"card": "Elvish Archdruid", "games": 27, "wr": 0.5925925925925926, "recent_games": 8, "recent_wr": 0.625, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5410215774716567, "ref_games": 8203}, {"card": "Elvish Regrower", "games": 113, "wr": 0.5575221238938053, "recent_games": 38, "recent_wr": 0.631578947368421, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5647677178704645, "ref_games": 29490}, {"card": "Embercleave", "games": 6, "wr": 0.8333333333333334, "recent_games": 2, "recent_wr": 1.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6379928315412187, "ref_games": 1395}, {"card": "Empyrean Eagle", "games": 142, "wr": 0.5140845070422535, "recent_games": 37, "recent_wr": 0.6216216216216216, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5910207061322007, "ref_games": 30136}, {"card": "Erudite Wizard", "games": 120, "wr": 0.4666666666666667, "recent_games": 30, "recent_wr": 0.43333333333333335, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.51065530920385, "ref_games": 32519}, {"card": "Essence Scatter", "games": 234, "wr": 0.45726495726495725, "recent_games": 63, "recent_wr": 0.4126984126984127, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5806230818484909, "ref_games": 45291}, {"card": "Etali, Primal Storm", "games": 46, "wr": 0.6086956521739131, "recent_games": 13, "recent_wr": 0.46153846153846156, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5326333473330533, "ref_games": 11905}, {"card": "Evolving Wilds", "games": 497, "wr": 0.4507042253521127, "recent_games": 147, "recent_wr": 0.43537414965986393, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5458696322025827, "ref_games": 107097}, {"card": "Exemplar of Light", "games": 81, "wr": 0.5555555555555556, "recent_games": 30, "recent_wr": 0.6, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5899402210011473, "ref_games": 16561}, {"card": "Exsanguinate", "games": 3, "wr": 0.0, "recent_games": 1, "recent_wr": 0.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.4818111455108359, "ref_games": 2584}, {"card": "Extravagant Replication", "games": 33, "wr": 0.3333333333333333, "recent_games": 7, "recent_wr": 0.2857142857142857, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5205031695721077, "ref_games": 10096}, {"card": "Faebloom Trick", "games": 253, "wr": 0.4901185770750988, "recent_games": 63, "recent_wr": 0.5555555555555556, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5908033674330527, "ref_games": 48583}, {"card": "Fake Your Own Death", "games": 269, "wr": 0.4684014869888476, "recent_games": 66, "recent_wr": 0.4696969696969697, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5581302988966208, "ref_games": 57913}, {"card": "Fanatical Firebrand", "games": 99, "wr": 0.43434343434343436, "recent_games": 26, "recent_wr": 0.38461538461538464, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5300212539851222, "ref_games": 30112}, {"card": "Felidar Savior", "games": 423, "wr": 0.5602836879432624, "recent_games": 114, "recent_wr": 0.5964912280701754, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5736415275512211, "ref_games": 86439}, {"card": "Felling Blow", "games": 128, "wr": 0.6484375, "recent_games": 38, "recent_wr": 0.6578947368421053, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.587093354535215, "ref_games": 30186}, {"card": "Fiend Artisan", "games": 2, "wr": 0.5, "recent_games": 0, "recent_wr": null, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5512367491166078, "ref_games": 1132}, {"card": "Fiendish Panda", "games": 115, "wr": 0.5478260869565217, "recent_games": 36, "recent_wr": 0.4166666666666667, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5534025787965616, "ref_games": 27920}, {"card": "Fiery Annihilation", "games": 156, "wr": 0.4935897435897436, "recent_games": 51, "recent_wr": 0.47058823529411764, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.581711436384108, "ref_games": 37302}, {"card": "Firebrand Archer", "games": 85, "wr": 0.3411764705882353, "recent_games": 24, "recent_wr": 0.20833333333333334, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.49698310539018503, "ref_games": 24860}, {"card": "Firespitter Whelp", "games": 58, "wr": 0.43103448275862066, "recent_games": 12, "recent_wr": 0.4166666666666667, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5155866470299459, "ref_games": 16296}, {"card": "Fishing Pole", "games": 6, "wr": 0.5, "recent_games": 3, "recent_wr": 0.3333333333333333, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.42684766214177977, "ref_games": 1989}, {"card": "Flamewake Phoenix", "games": 35, "wr": 0.42857142857142855, "recent_games": 10, "recent_wr": 0.2, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5196510736196319, "ref_games": 10432}, {"card": "Fleeting Distraction", "games": 367, "wr": 0.43869209809264303, "recent_games": 96, "recent_wr": 0.5104166666666666, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5483041396050646, "ref_games": 76215}, {"card": "Fleeting Flight", "games": 286, "wr": 0.458041958041958, "recent_games": 77, "recent_wr": 0.4935064935064935, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5644294956497864, "ref_games": 58273}, {"card": "Forest", "games": 916, "wr": 0.5163755458515283, "recent_games": 293, "recent_wr": 0.552901023890785, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5393322262040031, "ref_games": 251702}, {"card": "Frenzied Goblin", "games": 47, "wr": 0.44680851063829785, "recent_games": 9, "recent_wr": 0.5555555555555556, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5152994035169262, "ref_games": 12909}, {"card": "Garruk's Uprising", "games": 61, "wr": 0.5737704918032787, "recent_games": 16, "recent_wr": 0.625, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5211116667857398, "ref_games": 13997}, {"card": "Genesis Wave", "games": 5, "wr": 0.4, "recent_games": 1, "recent_wr": 1.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.48812664907651715, "ref_games": 2274}, {"card": "Ghalta, Primal Hunger", "games": 51, "wr": 0.5294117647058824, "recent_games": 21, "recent_wr": 0.5714285714285714, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5522743947175348, "ref_games": 10904}, {"card": "Giada, Font of Hope", "games": 72, "wr": 0.5972222222222222, "recent_games": 16, "recent_wr": 0.625, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.604277179071975, "ref_games": 17909}, {"card": "Giant Growth", "games": 131, "wr": 0.48091603053435117, "recent_games": 47, "recent_wr": 0.425531914893617, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.541913632514818, "ref_games": 30706}, {"card": "Gleaming Barrier", "games": 45, "wr": 0.4, "recent_games": 15, "recent_wr": 0.4666666666666667, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.4777367773677737, "ref_games": 12195}, {"card": "Gnarlid Colony", "games": 187, "wr": 0.47058823529411764, "recent_games": 50, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5300471327572663, "ref_games": 50920}, {"card": "Goblin Boarders", "games": 165, "wr": 0.5151515151515151, "recent_games": 53, "recent_wr": 0.5283018867924528, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5364130977338525, "ref_games": 40068}, {"card": "Goblin Bushwhacker", "games": 1, "wr": 0.0, "recent_games": 0, "recent_wr": null, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5299600532623169, "ref_games": 751}, {"card": "Goblin Negotiation", "games": 35, "wr": 0.34285714285714286, "recent_games": 9, "recent_wr": 0.3333333333333333, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5194996320824136, "ref_games": 8154}, {"card": "Goblin Surprise", "games": 183, "wr": 0.3770491803278688, "recent_games": 55, "recent_wr": 0.32727272727272727, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5256718674823012, "ref_games": 43647}, {"card": "Goldvein Pick", "games": 269, "wr": 0.4646840148698885, "recent_games": 69, "recent_wr": 0.5507246376811594, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5356711837522844, "ref_games": 58002}, {"card": "Good-Fortune Unicorn", "games": 51, "wr": 0.5686274509803921, "recent_games": 19, "recent_wr": 0.7894736842105263, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.518642972536349, "ref_games": 15475}, {"card": "Gorehorn Raider", "games": 244, "wr": 0.4959016393442623, "recent_games": 76, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5666119737473988, "ref_games": 49976}, {"card": "Grappling Kraken", "games": 56, "wr": 0.5357142857142857, "recent_games": 16, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5320285982523291, "ref_games": 13847}, {"card": "Grim Tutor", "games": 1, "wr": 0.0, "recent_games": 1, "recent_wr": 0.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.48404255319148937, "ref_games": 188}, {"card": "Grow from the Ashes", "games": 79, "wr": 0.5443037974683544, "recent_games": 33, "recent_wr": 0.5757575757575758, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.4809224504249292, "ref_games": 22592}, {"card": "Guarded Heir", "games": 134, "wr": 0.664179104477612, "recent_games": 42, "recent_wr": 0.7142857142857143, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5676124403332444, "ref_games": 33729}, {"card": "Gutless Plunderer", "games": 216, "wr": 0.4398148148148148, "recent_games": 70, "recent_wr": 0.4857142857142857, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5390706859031192, "ref_games": 49628}, {"card": "Hare Apparent", "games": 83, "wr": 0.5060240963855421, "recent_games": 19, "recent_wr": 0.631578947368421, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5070912201313393, "ref_games": 18121}, {"card": "Healer's Hawk", "games": 432, "wr": 0.5787037037037037, "recent_games": 112, "recent_wr": 0.5982142857142857, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5751470118977071, "ref_games": 87748}, {"card": "Heartfire Immolator", "games": 176, "wr": 0.4602272727272727, "recent_games": 53, "recent_wr": 0.5283018867924528, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5692528170399304, "ref_games": 35587}, {"card": "Helpful Hunter", "games": 444, "wr": 0.5495495495495496, "recent_games": 126, "recent_wr": 0.6031746031746031, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5744974093264249, "ref_games": 96500}, {"card": "Herald of Eternal Dawn", "games": 30, "wr": 0.6, "recent_games": 8, "recent_wr": 0.625, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5773195876288659, "ref_games": 6790}, {"card": "Heraldic Banner", "games": 80, "wr": 0.4875, "recent_games": 25, "recent_wr": 0.52, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5479149852031208, "ref_games": 18585}, {"card": "Hero's Downfall", "games": 168, "wr": 0.49404761904761907, "recent_games": 57, "recent_wr": 0.5087719298245614, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5708335375116381, "ref_games": 40814}, {"card": "Heroic Reinforcements", "games": 99, "wr": 0.41414141414141414, "recent_games": 25, "recent_wr": 0.4, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5577856911621885, "ref_games": 21623}, {"card": "Hidetsugu's Second Rite", "games": 16, "wr": 0.375, "recent_games": 4, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5623639191290825, "ref_games": 3215}, {"card": "High Fae Trickster", "games": 60, "wr": 0.5, "recent_games": 17, "recent_wr": 0.47058823529411764, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5498344979771975, "ref_games": 16314}, {"card": "High-Society Hunter", "games": 71, "wr": 0.5352112676056338, "recent_games": 20, "recent_wr": 0.65, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.586200009985521, "ref_games": 20029}, {"card": "Homunculus Horde", "games": 61, "wr": 0.4918032786885246, "recent_games": 20, "recent_wr": 0.45, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5104120513956579, "ref_games": 11285}, {"card": "Hungry Ghoul", "games": 414, "wr": 0.48792270531400966, "recent_games": 134, "recent_wr": 0.44029850746268656, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5561754050630098, "ref_games": 89986}, {"card": "Icewind Elemental", "games": 213, "wr": 0.460093896713615, "recent_games": 52, "recent_wr": 0.4807692307692308, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5381112324589421, "ref_games": 48529}, {"card": "Imprisoned in the Moon", "games": 54, "wr": 0.4074074074074074, "recent_games": 12, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5005139500734215, "ref_games": 13620}, {"card": "Incinerating Blast", "games": 131, "wr": 0.48854961832061067, "recent_games": 41, "recent_wr": 0.43902439024390244, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5237966923776483, "ref_games": 29689}, {"card": "Infernal Vessel", "games": 218, "wr": 0.5275229357798165, "recent_games": 66, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5823473195594794, "ref_games": 43948}, {"card": "Infestation Sage", "games": 427, "wr": 0.5269320843091335, "recent_games": 130, "recent_wr": 0.5153846153846153, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5668555146199481, "ref_games": 89843}, {"card": "Inspiration from Beyond", "games": 66, "wr": 0.45454545454545453, "recent_games": 20, "recent_wr": 0.6, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5329097116843703, "ref_games": 10544}, {"card": "Inspiring Call", "games": 13, "wr": 0.38461538461538464, "recent_games": 2, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.46062775330396477, "ref_games": 3632}, {"card": "Inspiring Paladin", "games": 210, "wr": 0.6095238095238096, "recent_games": 68, "recent_wr": 0.6617647058823529, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5387066579036466, "ref_games": 50211}, {"card": "Involuntary Employment", "games": 142, "wr": 0.4788732394366197, "recent_games": 47, "recent_wr": 0.3404255319148936, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5556920292197298, "ref_games": 30938}, {"card": "Island", "games": 1466, "wr": 0.4665757162346521, "recent_games": 433, "recent_wr": 0.47575057736720555, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5450378724564753, "ref_games": 341013}, {"card": "Joust Through", "games": 145, "wr": 0.3931034482758621, "recent_games": 35, "recent_wr": 0.4, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5637112480444431, "ref_games": 31321}, {"card": "Juggernaut", "games": 30, "wr": 0.5, "recent_games": 8, "recent_wr": 0.375, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.48625544753603755, "ref_games": 5966}, {"card": "Jungle Hollow", "games": 77, "wr": 0.4935064935064935, "recent_games": 24, "recent_wr": 0.4166666666666667, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5277068437180796, "ref_games": 23496}, {"card": "Kaito, Cunning Infiltrator", "games": 41, "wr": 0.5121951219512195, "recent_games": 11, "recent_wr": 0.36363636363636365, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.582683579657861, "ref_games": 8593}, {"card": "Kellan, Planar Trailblazer", "games": 65, "wr": 0.4461538461538462, "recent_games": 18, "recent_wr": 0.3333333333333333, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5902136806170186, "ref_games": 15818}, {"card": "Kiora, the Rising Tide", "games": 92, "wr": 0.4782608695652174, "recent_games": 31, "recent_wr": 0.5161290322580645, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6037866772402855, "ref_games": 20176}, {"card": "Koma, World-Eater", "games": 48, "wr": 0.6458333333333334, "recent_games": 14, "recent_wr": 0.7142857142857143, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5693293464331483, "ref_games": 11705}, {"card": "Krenko, Mob Boss", "games": 52, "wr": 0.5384615384615384, "recent_games": 14, "recent_wr": 0.5714285714285714, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5532994923857868, "ref_games": 14578}, {"card": "Kykar, Zephyr Awakener", "games": 82, "wr": 0.5, "recent_games": 23, "recent_wr": 0.5652173913043478, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5743712877543283, "ref_games": 15826}, {"card": "Lathril, Blade of the Elves", "games": 18, "wr": 0.6666666666666666, "recent_games": 7, "recent_wr": 0.8571428571428571, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.49165575916230364, "ref_games": 6112}, {"card": "Leyline Axe", "games": 83, "wr": 0.5180722891566265, "recent_games": 21, "recent_wr": 0.47619047619047616, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6118122977346279, "ref_games": 18540}, {"card": "Lightshell Duo", "games": 262, "wr": 0.46564885496183206, "recent_games": 74, "recent_wr": 0.4189189189189189, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5571538659131775, "ref_games": 46716}, {"card": "Liliana, Dreadhorde General", "games": 48, "wr": 0.6458333333333334, "recent_games": 14, "recent_wr": 0.7142857142857143, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6411526794742164, "ref_games": 9890}, {"card": "Llanowar Elves", "games": 222, "wr": 0.536036036036036, "recent_games": 82, "recent_wr": 0.6219512195121951, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5705192091303649, "ref_games": 62210}, {"card": "Loot, Exuberant Explorer", "games": 50, "wr": 0.48, "recent_games": 21, "recent_wr": 0.7142857142857143, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5583476764199655, "ref_games": 11620}, {"card": "Luminous Rebuke", "games": 388, "wr": 0.5515463917525774, "recent_games": 116, "recent_wr": 0.5517241379310345, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5771196560783377, "ref_games": 83740}, {"card": "Lunar Insight", "games": 11, "wr": 0.45454545454545453, "recent_games": 4, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5279650932169774, "ref_games": 5042}, {"card": "Macabre Waltz", "games": 187, "wr": 0.45454545454545453, "recent_games": 64, "recent_wr": 0.421875, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5185450721728324, "ref_games": 41844}, {"card": "Make Your Move", "games": 214, "wr": 0.5, "recent_games": 57, "recent_wr": 0.45614035087719296, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5526191696565864, "ref_games": 48775}, {"card": "Marauding Blight-Priest", "games": 105, "wr": 0.49523809523809526, "recent_games": 31, "recent_wr": 0.5483870967741935, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5272277227722773, "ref_games": 30300}, {"card": "Meteor Golem", "games": 93, "wr": 0.5268817204301075, "recent_games": 31, "recent_wr": 0.5806451612903226, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5453472863445162, "ref_games": 19494}, {"card": "Micromancer", "games": 239, "wr": 0.4435146443514644, "recent_games": 68, "recent_wr": 0.36764705882352944, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5910560750006266, "ref_games": 39893}, {"card": "Midnight Snack", "games": 5, "wr": 0.8, "recent_games": 1, "recent_wr": 0.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.4863530023394853, "ref_games": 3847}, {"card": "Mild-Mannered Librarian", "games": 115, "wr": 0.4782608695652174, "recent_games": 39, "recent_wr": 0.5128205128205128, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5677104514030094, "ref_games": 27049}, {"card": "Mischievous Mystic", "games": 280, "wr": 0.5142857142857142, "recent_games": 76, "recent_wr": 0.5131578947368421, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5957374356509024, "ref_games": 49923}, {"card": "Mischievous Pup", "games": 70, "wr": 0.4714285714285714, "recent_games": 17, "recent_wr": 0.35294117647058826, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5158756317292903, "ref_games": 18204}, {"card": "Mocking Sprite", "games": 114, "wr": 0.43859649122807015, "recent_games": 28, "recent_wr": 0.2857142857142857, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.49976951171944256, "ref_games": 28201}, {"card": "Mossborn Hydra", "games": 26, "wr": 0.5769230769230769, "recent_games": 9, "recent_wr": 0.6666666666666666, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.550289960130482, "ref_games": 11036}, {"card": "Mountain", "games": 1153, "wr": 0.4744145706851691, "recent_games": 366, "recent_wr": 0.45901639344262296, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5505657598606084, "ref_games": 289257}, {"card": "Muldrotha, the Gravetide", "games": 18, "wr": 0.4444444444444444, "recent_games": 5, "recent_wr": 0.4, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5417530631479736, "ref_games": 5305}, {"card": "Needletooth Pack", "games": 83, "wr": 0.43373493975903615, "recent_games": 32, "recent_wr": 0.5625, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5341740469772814, "ref_games": 20776}, {"card": "Nessian Hornbeetle", "games": 111, "wr": 0.5315315315315315, "recent_games": 37, "recent_wr": 0.6216216216216216, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5641035092892952, "ref_games": 27128}, {"card": "Nine-Lives Familiar", "games": 52, "wr": 0.4807692307692308, "recent_games": 20, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5366545159983799, "ref_games": 12345}, {"card": "Niv-Mizzet, Visionary", "games": 10, "wr": 0.3, "recent_games": 2, "recent_wr": 0.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.4679966749792186, "ref_games": 2406}, {"card": "Omniscience", "games": 0, "wr": null, "recent_games": 0, "recent_wr": null, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.37037037037037035, "ref_games": 27}, {"card": "Overrun", "games": 82, "wr": 0.5, "recent_games": 26, "recent_wr": 0.5769230769230769, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5498664917787043, "ref_games": 21347}, {"card": "Painful Quandary", "games": 8, "wr": 0.5, "recent_games": 2, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.4479768786127168, "ref_games": 2422}, {"card": "Paradise Druid", "games": 6, "wr": 0.8333333333333334, "recent_games": 3, "recent_wr": 0.6666666666666666, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5380997177798683, "ref_games": 1063}, {"card": "Perforating Artist", "games": 112, "wr": 0.5446428571428571, "recent_games": 39, "recent_wr": 0.5384615384615384, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5748022244850004, "ref_games": 25534}, {"card": "Phyrexian Arena", "games": 68, "wr": 0.4852941176470588, "recent_games": 15, "recent_wr": 0.6666666666666666, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5436829904375543, "ref_games": 13804}, {"card": "Pilfer", "games": 222, "wr": 0.5, "recent_games": 59, "recent_wr": 0.5254237288135594, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.556519660571292, "ref_games": 41835}, {"card": "Plains", "games": 1503, "wr": 0.5362608117099135, "recent_games": 458, "recent_wr": 0.5524017467248908, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5547638760413267, "ref_games": 370801}, {"card": "Preposterous Proportions", "games": 17, "wr": 0.47058823529411764, "recent_games": 3, "recent_wr": 0.6666666666666666, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5401947679969448, "ref_games": 5237}, {"card": "Prideful Parent", "games": 343, "wr": 0.5451895043731778, "recent_games": 97, "recent_wr": 0.5876288659793815, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5481153170420061, "ref_games": 75132}, {"card": "Progenitus", "games": 0, "wr": null, "recent_games": 0, "recent_wr": null, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.3619047619047619, "ref_games": 105}, {"card": "Quakestrider Ceratops", "games": 31, "wr": 0.3870967741935484, "recent_games": 13, "recent_wr": 0.38461538461538464, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5251731017486211, "ref_games": 8521}, {"card": "Quick-Draw Katana", "games": 44, "wr": 0.4772727272727273, "recent_games": 9, "recent_wr": 0.3333333333333333, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5091020658621395, "ref_games": 9778}, {"card": "Quilled Greatwurm", "games": 24, "wr": 0.6666666666666666, "recent_games": 6, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5500158780565259, "ref_games": 6298}, {"card": "Raise the Past", "games": 11, "wr": 0.45454545454545453, "recent_games": 3, "recent_wr": 0.3333333333333333, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5093951849677041, "ref_games": 3406}, {"card": "Ravenous Amulet", "games": 62, "wr": 0.3387096774193548, "recent_games": 23, "recent_wr": 0.34782608695652173, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5171393341553637, "ref_games": 12165}, {"card": "Reassembling Skeleton", "games": 125, "wr": 0.48, "recent_games": 41, "recent_wr": 0.43902439024390244, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5235706108155431, "ref_games": 29698}, {"card": "Reclamation Sage", "games": 41, "wr": 0.4878048780487805, "recent_games": 12, "recent_wr": 0.6666666666666666, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.49561117156329343, "ref_games": 13785}, {"card": "Refute", "games": 483, "wr": 0.453416149068323, "recent_games": 125, "recent_wr": 0.472, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5755410594292696, "ref_games": 91672}, {"card": "Resolute Reinforcements", "games": 145, "wr": 0.4413793103448276, "recent_games": 41, "recent_wr": 0.43902439024390244, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5394871119597063, "ref_games": 30377}, {"card": "Revenge of the Rats", "games": 28, "wr": 0.5, "recent_games": 7, "recent_wr": 0.42857142857142855, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.513951692952465, "ref_games": 9067}, {"card": "Rise of the Dark Realms", "games": 8, "wr": 0.25, "recent_games": 3, "recent_wr": 0.3333333333333333, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5396039603960396, "ref_games": 3232}, {"card": "Rite of the Dragoncaller", "games": 11, "wr": 0.36363636363636365, "recent_games": 5, "recent_wr": 0.2, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5162899911945994, "ref_games": 3407}, {"card": "Rogue's Passage", "games": 68, "wr": 0.45588235294117646, "recent_games": 21, "recent_wr": 0.38095238095238093, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.555798209215986, "ref_games": 13737}, {"card": "Ruby, Daring Tracker", "games": 65, "wr": 0.49230769230769234, "recent_games": 21, "recent_wr": 0.47619047619047616, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5699128682354336, "ref_games": 16871}, {"card": "Rugged Highlands", "games": 75, "wr": 0.5333333333333333, "recent_games": 24, "recent_wr": 0.5833333333333334, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5391426359589704, "ref_games": 20668}, {"card": "Run Away Together", "games": 145, "wr": 0.4068965517241379, "recent_games": 38, "recent_wr": 0.39473684210526316, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5149615098087906, "ref_games": 32216}, {"card": "Rune-Scarred Demon", "games": 87, "wr": 0.4827586206896552, "recent_games": 27, "recent_wr": 0.48148148148148145, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5753074394253014, "ref_games": 16426}, {"card": "Rune-Sealed Wall", "games": 75, "wr": 0.4266666666666667, "recent_games": 22, "recent_wr": 0.2727272727272727, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5177087455480808, "ref_games": 20216}, {"card": "Sanguine Syphoner", "games": 148, "wr": 0.4797297297297297, "recent_games": 49, "recent_wr": 0.5714285714285714, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5325758823206542, "ref_games": 36438}, {"card": "Savannah Lions", "games": 66, "wr": 0.5303030303030303, "recent_games": 24, "recent_wr": 0.4166666666666667, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5328, "ref_games": 16875}, {"card": "Scavenging Ooze", "games": 54, "wr": 0.6111111111111112, "recent_games": 18, "recent_wr": 0.7777777777777778, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6173156083406438, "ref_games": 14819}, {"card": "Scoured Barrens", "games": 169, "wr": 0.5266272189349113, "recent_games": 51, "recent_wr": 0.49019607843137253, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5485910688985675, "ref_games": 38114}, {"card": "Scrawling Crawler", "games": 90, "wr": 0.4222222222222222, "recent_games": 25, "recent_wr": 0.48, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5755054141996053, "ref_games": 18747}, {"card": "Searslicer Goblin", "games": 72, "wr": 0.5, "recent_games": 21, "recent_wr": 0.5714285714285714, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6029403185345079, "ref_games": 17141}, {"card": "Secluded Courtyard", "games": 7, "wr": 0.5714285714285714, "recent_games": 5, "recent_wr": 0.8, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.46761734997029114, "ref_games": 1683}, {"card": "Seeker's Folly", "games": 139, "wr": 0.5467625899280576, "recent_games": 39, "recent_wr": 0.5641025641025641, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5662444113263786, "ref_games": 26840}, {"card": "Seismic Rupture", "games": 21, "wr": 0.6190476190476191, "recent_games": 8, "recent_wr": 0.625, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5012623364700483, "ref_games": 4357}, {"card": "Self-Reflection", "games": 50, "wr": 0.54, "recent_games": 14, "recent_wr": 0.7857142857142857, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5450534906804897, "ref_games": 9067}, {"card": "Serra Angel", "games": 109, "wr": 0.5412844036697247, "recent_games": 34, "recent_wr": 0.47058823529411764, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.54765003615329, "ref_games": 27660}, {"card": "Shivan Dragon", "games": 33, "wr": 0.5454545454545454, "recent_games": 7, "recent_wr": 0.5714285714285714, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5118356021850342, "ref_games": 11533}, {"card": "Sire of Seven Deaths", "games": 54, "wr": 0.5370370370370371, "recent_games": 16, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.620250626566416, "ref_games": 9975}, {"card": "Skyknight Squire", "games": 66, "wr": 0.4696969696969697, "recent_games": 24, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5885431811573132, "ref_games": 17195}, {"card": "Skyship Buccaneer", "games": 192, "wr": 0.4375, "recent_games": 52, "recent_wr": 0.46153846153846156, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5648508430609598, "ref_games": 37008}, {"card": "Slagstorm", "games": 29, "wr": 0.5172413793103449, "recent_games": 4, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.555810859837949, "ref_games": 8269}, {"card": "Slumbering Cerberus", "games": 138, "wr": 0.5072463768115942, "recent_games": 44, "recent_wr": 0.5227272727272727, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5575283378473267, "ref_games": 29907}, {"card": "Snakeskin Veil", "games": 95, "wr": 0.45263157894736844, "recent_games": 35, "recent_wr": 0.5428571428571428, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.545378996632113, "ref_games": 22863}, {"card": "Solemn Simulacrum", "games": 51, "wr": 0.5098039215686274, "recent_games": 16, "recent_wr": 0.75, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5657577006890865, "ref_games": 16979}, {"card": "Soul-Shackled Zombie", "games": 223, "wr": 0.5336322869955157, "recent_games": 63, "recent_wr": 0.5079365079365079, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5505455447181352, "ref_games": 48392}, {"card": "Soulstone Sanctuary", "games": 74, "wr": 0.47297297297297297, "recent_games": 17, "recent_wr": 0.4117647058823529, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5675320886814469, "ref_games": 13712}, {"card": "Sower of Chaos", "games": 67, "wr": 0.5074626865671642, "recent_games": 22, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.542455006922012, "ref_games": 13002}, {"card": "Spectral Sailor", "games": 236, "wr": 0.4322033898305085, "recent_games": 72, "recent_wr": 0.4444444444444444, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5862226178328738, "ref_games": 46061}, {"card": "Sphinx of Forgotten Lore", "games": 32, "wr": 0.53125, "recent_games": 7, "recent_wr": 0.5714285714285714, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5771205357142857, "ref_games": 8960}, {"card": "Sphinx's Tutelage", "games": 4, "wr": 0.0, "recent_games": 0, "recent_wr": null, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5039473684210526, "ref_games": 760}, {"card": "Spinner of Souls", "games": 69, "wr": 0.5652173913043478, "recent_games": 21, "recent_wr": 0.5238095238095238, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6210773115306, "ref_games": 16634}, {"card": "Spitfire Lagac", "games": 9, "wr": 0.5555555555555556, "recent_games": 4, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.4870651204281891, "ref_games": 4484}, {"card": "Squad Rallier", "games": 215, "wr": 0.5534883720930233, "recent_games": 74, "recent_wr": 0.5945945945945946, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5559494634657023, "ref_games": 42029}, {"card": "Stab", "games": 547, "wr": 0.473491773308958, "recent_games": 179, "recent_wr": 0.45251396648044695, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5785858257183402, "ref_games": 110637}, {"card": "Strix Lookout", "games": 351, "wr": 0.46153846153846156, "recent_games": 90, "recent_wr": 0.4777777777777778, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5495543133403837, "ref_games": 79428}, {"card": "Stroke of Midnight", "games": 30, "wr": 0.3333333333333333, "recent_games": 9, "recent_wr": 0.3333333333333333, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5113555351868826, "ref_games": 9819}, {"card": "Stromkirk Bloodthief", "games": 57, "wr": 0.45614035087719296, "recent_games": 20, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5253384047432599, "ref_games": 17878}, {"card": "Strongbox Raider", "games": 107, "wr": 0.5233644859813084, "recent_games": 31, "recent_wr": 0.5806451612903226, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5525388013129635, "ref_games": 24677}, {"card": "Sun-Blessed Healer", "games": 193, "wr": 0.5699481865284974, "recent_games": 54, "recent_wr": 0.5740740740740741, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5848470363288719, "ref_games": 41840}, {"card": "Sure Strike", "games": 100, "wr": 0.38, "recent_games": 23, "recent_wr": 0.30434782608695654, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5241285794049613, "ref_games": 25074}, {"card": "Swamp", "games": 1624, "wr": 0.49261083743842365, "recent_games": 516, "recent_wr": 0.49224806201550386, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5473922799242108, "ref_games": 395307}, {"card": "Swiftblade Vindicator", "games": 22, "wr": 0.36363636363636365, "recent_games": 4, "recent_wr": 0.25, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5332517963614126, "ref_games": 6541}, {"card": "Swiftfoot Boots", "games": 9, "wr": 0.4444444444444444, "recent_games": 4, "recent_wr": 0.75, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.4384433962264151, "ref_games": 4240}, {"card": "Swiftwater Cliffs", "games": 110, "wr": 0.45454545454545453, "recent_games": 35, "recent_wr": 0.37142857142857144, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5420703722590515, "ref_games": 25493}, {"card": "Sylvan Scavenging", "games": 58, "wr": 0.4827586206896552, "recent_games": 15, "recent_wr": 0.5333333333333333, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6183111233860388, "ref_games": 14483}, {"card": "Tatyova, Benthic Druid", "games": 78, "wr": 0.47435897435897434, "recent_games": 26, "recent_wr": 0.46153846153846156, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5237698853126156, "ref_games": 21624}, {"card": "Temporal Manipulation", "games": 3, "wr": 0.6666666666666666, "recent_games": 1, "recent_wr": 1.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5383319292333614, "ref_games": 1187}, {"card": "Think Twice", "games": 471, "wr": 0.4543524416135881, "recent_games": 125, "recent_wr": 0.392, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5658466309619382, "ref_games": 90931}, {"card": "Thornwood Falls", "games": 115, "wr": 0.5304347826086957, "recent_games": 40, "recent_wr": 0.6, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5377774340731575, "ref_games": 25862}, {"card": "Thousand-Year Storm", "games": 3, "wr": 0.0, "recent_games": 0, "recent_wr": null, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.34788732394366195, "ref_games": 710}, {"card": "Thrill of Possibility", "games": 117, "wr": 0.4700854700854701, "recent_games": 35, "recent_wr": 0.4857142857142857, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5148904750184593, "ref_games": 28441}, {"card": "Time Stop", "games": 14, "wr": 0.35714285714285715, "recent_games": 9, "recent_wr": 0.3333333333333333, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.4750666940283193, "ref_games": 4873}, {"card": "Tinybones, Bauble Burglar", "games": 67, "wr": 0.582089552238806, "recent_games": 23, "recent_wr": 0.6521739130434783, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5711182858820076, "ref_games": 17035}, {"card": "Tolarian Terror", "games": 255, "wr": 0.40784313725490196, "recent_games": 67, "recent_wr": 0.43283582089552236, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5219810489202292, "ref_games": 54456}, {"card": "Tragic Banshee", "games": 255, "wr": 0.49411764705882355, "recent_games": 75, "recent_wr": 0.5733333333333334, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5817290940766551, "ref_games": 45920}, {"card": "Tranquil Cove", "games": 181, "wr": 0.4972375690607735, "recent_games": 57, "recent_wr": 0.5087719298245614, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5562974709957432, "ref_games": 35943}, {"card": "Treetop Snarespinner", "games": 173, "wr": 0.5664739884393064, "recent_games": 45, "recent_wr": 0.6, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5462127764734956, "ref_games": 48558}, {"card": "Twinblade Blessing", "games": 16, "wr": 0.4375, "recent_games": 3, "recent_wr": 0.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.46827021494370524, "ref_games": 3908}, {"card": "Twinflame Tyrant", "games": 40, "wr": 0.6, "recent_games": 11, "recent_wr": 0.7272727272727273, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6047928513403736, "ref_games": 7386}, {"card": "Uncharted Voyage", "games": 400, "wr": 0.4575, "recent_games": 102, "recent_wr": 0.43137254901960786, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5632142095558259, "ref_games": 79721}, {"card": "Valkyrie's Call", "games": 23, "wr": 0.5652173913043478, "recent_games": 9, "recent_wr": 0.5555555555555556, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5790322580645161, "ref_games": 7440}, {"card": "Vampire Gourmand", "games": 249, "wr": 0.4819277108433735, "recent_games": 73, "recent_wr": 0.4657534246575342, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5838160680755863, "ref_games": 50062}, {"card": "Vampire Nighthawk", "games": 175, "wr": 0.5485714285714286, "recent_games": 58, "recent_wr": 0.6379310344827587, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5822675877895441, "ref_games": 41833}, {"card": "Vampire Soulcaller", "games": 244, "wr": 0.5286885245901639, "recent_games": 79, "recent_wr": 0.5569620253164557, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5397574765376635, "ref_games": 52531}, {"card": "Vanguard Seraph", "games": 210, "wr": 0.5714285714285714, "recent_games": 57, "recent_wr": 0.5614035087719298, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.544900188697984, "ref_games": 50345}, {"card": "Vengeful Bloodwitch", "games": 130, "wr": 0.5384615384615384, "recent_games": 42, "recent_wr": 0.5952380952380952, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5358097457336715, "ref_games": 29182}, {"card": "Vivien Reid", "games": 32, "wr": 0.75, "recent_games": 7, "recent_wr": 0.8571428571428571, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6139213143104194, "ref_games": 6939}, {"card": "Wardens of the Cycle", "games": 46, "wr": 0.3695652173913043, "recent_games": 15, "recent_wr": 0.5333333333333333, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5115277593745859, "ref_games": 15094}, {"card": "Wary Thespian", "games": 228, "wr": 0.4692982456140351, "recent_games": 80, "recent_wr": 0.4875, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5540147296569068, "ref_games": 55670}, {"card": "Wildwood Scourge", "games": 59, "wr": 0.5423728813559322, "recent_games": 20, "recent_wr": 0.6, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5120849024306744, "ref_games": 14605}, {"card": "Wind-Scarred Crag", "games": 117, "wr": 0.5470085470085471, "recent_games": 32, "recent_wr": 0.625, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.53658635845678, "ref_games": 24572}, {"card": "Witness Protection", "games": 184, "wr": 0.375, "recent_games": 44, "recent_wr": 0.38636363636363635, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5281544105918009, "ref_games": 43883}, {"card": "Youthful Valkyrie", "games": 130, "wr": 0.5692307692307692, "recent_games": 28, "recent_wr": 0.6785714285714286, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5569135231551826, "ref_games": 30274}, {"card": "Zimone, Paradox Sculptor", "games": 39, "wr": 0.46153846153846156, "recent_games": 9, "recent_wr": 0.4444444444444444, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.6262556286802909, "ref_games": 8661}, {"card": "Zombify", "games": 63, "wr": 0.47619047619047616, "recent_games": 19, "recent_wr": 0.47368421052631576, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5314333612740989, "ref_games": 15509}, {"card": "Zul Ashur, Lich Lord", "games": 65, "wr": 0.6461538461538462, "recent_games": 18, "recent_wr": 0.6666666666666666, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5457869080779945, "ref_games": 11488}], "colors": [{"colors": "WB", "games": 523, "wins": 292, "wr": 0.5583173996175909, "lo": 0.5154855487477971, "hi": 0.6002987780783305, "recent_games": 168, "recent_wr": 0.5654761904761905, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5514178505725701}, {"colors": "UB", "games": 486, "wins": 213, "wr": 0.4382716049382716, "lo": 0.3948127375324485, "hi": 0.4826986865687304, "recent_games": 136, "recent_wr": 0.4264705882352941, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5484292063004521}, {"colors": "WU", "games": 396, "wins": 204, "wr": 0.5151515151515151, "lo": 0.46601852850385495, "hi": 0.5639933562024888, "recent_games": 114, "recent_wr": 0.5175438596491229, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5595157530641401}, {"colors": "BR", "games": 331, "wins": 157, "wr": 0.4743202416918429, "lo": 0.4211289497977929, "hi": 0.5281007755409942, "recent_games": 118, "recent_wr": 0.4491525423728814, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5513267626990144}, {"colors": "UR", "games": 258, "wins": 103, "wr": 0.3992248062015504, "lo": 0.34136485382542503, "hi": 0.46004179813514967, "recent_games": 76, "recent_wr": 0.3815789473684211, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5292873357639127}, {"colors": "WG", "games": 222, "wins": 127, "wr": 0.5720720720720721, "lo": 0.50630400659589, "hi": 0.6353882237106613, "recent_games": 74, "recent_wr": 0.6891891891891891, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5427337191295134}, {"colors": "WR", "games": 220, "wins": 108, "wr": 0.4909090909090909, "lo": 0.4255735841265989, "hi": 0.5565566365294364, "recent_games": 56, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5563306774294562}, {"colors": "RG", "games": 212, "wins": 112, "wr": 0.5283018867924528, "lo": 0.4611981877743932, "hi": 0.5943981384203718, "recent_games": 73, "recent_wr": 0.4794520547945205, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.558239742502639}, {"colors": "UG", "games": 180, "wins": 95, "wr": 0.5277777777777778, "lo": 0.45502894184771125, "hi": 0.5993657109403411, "recent_games": 51, "recent_wr": 0.5882352941176471, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5252301515885651}, {"colors": "BG", "games": 149, "wins": 62, "wr": 0.4161073825503356, "lo": 0.34004194796846454, "hi": 0.4963900181978148, "recent_games": 53, "recent_wr": 0.4528301886792453, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5177159093318632}, {"colors": "G", "games": 60, "wins": 34, "wr": 0.5666666666666667, "lo": 0.44103214654694856, "hi": 0.6842779960559936, "recent_games": 19, "recent_wr": 0.7368421052631579, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5653139810426541}, {"colors": "W", "games": 45, "wins": 25, "wr": 0.5555555555555556, "lo": 0.4117588341636533, "hi": 0.6906129145096089, "recent_games": 8, "recent_wr": 0.625, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5971755990276653}, {"colors": "B", "games": 31, "wins": 17, "wr": 0.5483870967741935, "lo": 0.37771879603669134, "hi": 0.7083851716341388, "recent_games": 9, "recent_wr": 0.3333333333333333, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5644703421485133}, {"colors": "WUB", "games": 22, "wins": 9, "wr": 0.4090909090909091, "lo": 0.23255559668820378, "hi": 0.6126552261710619, "recent_games": 7, "recent_wr": 0.42857142857142855, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5108796726799331}, {"colors": "UBG", "games": 21, "wins": 8, "wr": 0.38095238095238093, "lo": 0.20750767797982506, "hi": 0.5912170418449848, "recent_games": 4, "recent_wr": 0.5, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.4804045512010114}, {"colors": "U", "games": 20, "wins": 6, "wr": 0.3, "lo": 0.14547527396899385, "hi": 0.5189767762289793, "recent_games": 8, "recent_wr": 0.25, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5237734706238644}, {"colors": "UBR", "games": 11, "wins": 6, "wr": 0.5454545454545454, "lo": 0.28008775568998817, "hi": 0.7872904245601196, "recent_games": 4, "recent_wr": 0.25, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5064077669902912}, {"colors": "BRG", "games": 7, "wins": 2, "wr": 0.2857142857142857, "lo": 0.0822171657090155, "hi": 0.6410709098517873, "recent_games": 4, "recent_wr": 0.25, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.4855270344074276}, {"colors": "WBG", "games": 7, "wins": 5, "wr": 0.7142857142857143, "lo": 0.35892909014821267, "hi": 0.9177828342909844, "recent_games": 3, "recent_wr": 0.3333333333333333, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.4420362903225806}, {"colors": "WUG", "games": 6, "wins": 2, "wr": 0.3333333333333333, "lo": 0.09676933255921683, "hi": 0.7000116786584712, "recent_games": 5, "recent_wr": 0.2, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.498292220113852}, {"colors": "R", "games": 6, "wins": 3, "wr": 0.5, "lo": 0.18761280689940868, "hi": 0.8123871931005913, "recent_games": 1, "recent_wr": 0.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5627943485086342}, {"colors": "WRG", "games": 6, "wins": 2, "wr": 0.3333333333333333, "lo": 0.09676933255921683, "hi": 0.7000116786584712, "recent_games": 1, "recent_wr": 1.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.483451536643026}, {"colors": "WBR", "games": 5, "wins": 1, "wr": 0.2, "lo": 0.03622316096978745, "hi": 0.6244717358814613, "recent_games": 1, "recent_wr": 0.0, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.49326047358834246}, {"colors": "WUR", "games": 4, "wins": 2, "wr": 0.5, "lo": 0.15003570882017148, "hi": 0.8499642911798285, "recent_games": 3, "recent_wr": 0.3333333333333333, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.5005464480874317}, {"colors": "URG", "games": 2, "wins": 0, "wr": 0.0, "lo": 0.0, "hi": 0.6576280471103807, "recent_games": 0, "recent_wr": null, "heuristic_games": 0, "heuristic_wr": null, "ref_wr": 0.489937106918239}], "decks_seen": 3821, "run_id": "2026-09-22_02-46-01", "stage": "done", "current_gen": 34, "completed": true, "has_reference": true};
const $ = (t, c, txt) => { const e = document.createElement(t); if (c) e.className = c;
if (txt != null) e.textContent = txt; return e; };
const S = (t, a) => { const e = document.createElementNS("http://www.w3.org/2000/svg", t);
for (const k in a) e.setAttribute(k, a[k]); return e; };
const pct = v => v == null ? "–" : (v * 100).toFixed(1) + "%";
const num = (v, d = 2) => v == null ? "–" : v.toFixed(d);
const root = document.getElementById("root");
document.getElementById("subtitle").textContent =
`Run ${D.run_id} Β· ${D.completed ? "complete" : `in progress: gen ${D.current_gen}, stage ${D.stage}`}`;
// ── headline tiles ───────────────────────────────────────────
const tiles = $("div", "tiles");
const tile = (k, v, s) => { const t = $("div", "tile");
t.append($("div", "k", k), $("div", "v", v)); if (s) t.append($("div", "s", s));
tiles.append(t); };
const r = D.gih_rho, sg = D.selfplay_games;
tile("GIH rank corr., network", num(r.network), `${r.network_cards} cards Β· ${sg.network} self-play games`);
tile(`GIH rank corr., last ${D.window_gens} gens`, num(r.recent), `${r.recent_cards} cards Β· ${sg.recent} games`);
tile("GIH rank corr., heuristic gen 0", num(r.heuristic), `${r.heuristic_cards} cards Β· ${sg.heuristic} games`);
tile("Distinct decks played", (D.decks_seen || 0).toLocaleString(), "drawn at random from the pools");
root.append(tiles);
root.append($("p", "blurb",
`Does the agent value cards and colours the way strong human players do? GIH ("game in hand") win rate is the ` +
`win rate in games where a player drew the card, as 17lands defines it. These come from self-play, so the average ` +
`is 50% by construction and only the ranking is comparable: ρ is the Spearman rank correlation with 17lands' GIH WR ` +
`over cards seen in at least ${D.min_card_games} games. Gen 0 is heuristic search with no network β€” the baseline for ` +
`how much card sense search alone has. Expect slow movement: each card needs hundreds of games.`));
// ── line chart: rho by generation ────────────────────────────
function lineChart(host, series) {
const W = 480, H = 210, m = { l: 44, r: 12, t: 10, b: 26 };
const all = [].concat(...series.map(s => s.points));
if (!all.length) { host.append($("div", "empty", "no data yet")); return; }
const gs = all.map(p => p.gen), vs = all.map(p => p.v);
const x0 = Math.min(...gs), x1 = Math.max(...gs, x0 + 1);
let y0 = Math.min(...vs, 0), y1 = Math.max(...vs, 0.1);
const padY = (y1 - y0) * 0.12 || 0.05; y0 -= padY; y1 += padY;
const X = v => m.l + (v - x0) / (x1 - x0) * (W - m.l - m.r);
const Y = v => H - m.b - (v - y0) / (y1 - y0) * (H - m.t - m.b);
const svg = S("svg", { viewBox: `0 0 ${W} ${H}`, role: "img",
"aria-label": "GIH rank correlation by generation" });
for (let i = 0; i <= 4; i++) {
const v = y0 + (y1 - y0) * i / 4;
svg.append(S("line", { x1: m.l, x2: W - m.r, y1: Y(v), y2: Y(v), stroke: "var(--grid)",
"vector-effect": "non-scaling-stroke" }));
const t = S("text", { x: m.l - 7, y: Y(v) + 3.5, "text-anchor": "end", "font-size": 10,
fill: "var(--muted)" });
t.textContent = v.toFixed(2); svg.append(t);
}
if (y0 < 0 && y1 > 0) svg.append(S("line", { x1: m.l, x2: W - m.r, y1: Y(0), y2: Y(0),
stroke: "var(--muted)", "stroke-dasharray": "3 3", "vector-effect": "non-scaling-stroke" }));
const ticks = [...new Set([x0, Math.round((x0 + x1) / 2), x1])];
for (const g of ticks) {
const t = S("text", { x: X(g), y: H - 8, "text-anchor": "middle", "font-size": 10, fill: "var(--muted)" });
t.textContent = `gen ${g}`; svg.append(t);
}
series.forEach((s, i) => {
const col = i === 0 ? "var(--accent)" : "var(--accent2)";
const pts = s.points.slice().sort((a, b) => a.gen - b.gen);
if (pts.length > 1) {
svg.append(S("path", { d: pts.map((p, j) => `${j ? "L" : "M"}${X(p.gen)},${Y(p.v)}`).join(" "),
fill: "none", stroke: col, "stroke-width": 2, "vector-effect": "non-scaling-stroke" }));
}
for (const p of pts) {
const c = S("circle", { cx: X(p.gen), cy: Y(p.v), r: 2.8, fill: col });
const tt = S("title", {}); tt.textContent = `gen ${p.gen}: ρ=${p.v.toFixed(3)} (${p.cards} cards)`;
c.append(tt); svg.append(c);
}
});
host.append(svg);
const leg = $("div", "legend");
series.forEach((s, i) => {
const e = $("span", null, null);
const sw = $("span", "sw"); sw.style.background = i === 0 ? "var(--accent)" : "var(--accent2)";
e.append(sw, document.createTextNode(s.name)); leg.append(e);
});
host.append(leg);
}
// ── scatter: agent vs 17lands ────────────────────────────────
function scatter(host) {
const useNet = D.selfplay_games.network > 0;
const key = useNet ? "wr" : "heuristic_wr", nkey = useNet ? "games" : "heuristic_games";
const pts = (D.cards || []).filter(c => c[nkey] >= D.min_card_games && c.ref_wr != null && c[key] != null);
host.append($("div", "unit",
`${pts.length} cards with β‰₯${D.min_card_games} games Β· ${useNet ? "network" : "heuristic gen 0"} Β· hover for names`));
if (!pts.length) { host.append($("div", "empty", "not enough games per card yet")); return; }
const W = 480, H = 210, m = { l: 44, r: 12, t: 10, b: 30 };
const xs = pts.map(p => p.ref_wr), ys = pts.map(p => p[key]);
const x0 = Math.min(...xs) - .01, x1 = Math.max(...xs) + .01;
const y0 = Math.min(...ys, .35) - .01, y1 = Math.max(...ys, .65) + .01;
const X = v => m.l + (v - x0) / (x1 - x0) * (W - m.l - m.r);
const Y = v => H - m.b - (v - y0) / (y1 - y0) * (H - m.t - m.b);
const svg = S("svg", { viewBox: `0 0 ${W} ${H}`, role: "img",
"aria-label": "card GIH win rate, agent versus 17lands" });
for (let i = 0; i <= 3; i++) {
const v = y0 + (y1 - y0) * i / 3;
svg.append(S("line", { x1: m.l, x2: W - m.r, y1: Y(v), y2: Y(v), stroke: "var(--grid)",
"vector-effect": "non-scaling-stroke" }));
const t = S("text", { x: m.l - 7, y: Y(v) + 3.5, "text-anchor": "end", "font-size": 10,
fill: "var(--muted)" });
t.textContent = pct(v); svg.append(t);
}
for (const v of [x0 + .01, (x0 + x1) / 2, x1 - .01]) {
const t = S("text", { x: X(v), y: H - 12, "text-anchor": "middle", "font-size": 10, fill: "var(--muted)" });
t.textContent = pct(v); svg.append(t);
}
// y=x: where the agent would agree with 17lands exactly. The axes cover very different
// ranges (agent per-card WR is far noisier), so this looks shallow and needs labelling or
// it reads as a fitted trend line.
const lo = Math.max(x0, y0), hi = Math.min(x1, y1);
if (hi > lo) {
svg.append(S("line", { x1: X(lo), y1: Y(lo), x2: X(hi), y2: Y(hi),
stroke: "var(--muted)", "stroke-dasharray": "4 4", "vector-effect": "non-scaling-stroke" }));
const lbl = S("text", { x: X(hi) - 3, y: Y(hi) - 5, "text-anchor": "end", "font-size": 9,
fill: "var(--muted)" });
lbl.textContent = "agrees with 17lands"; svg.append(lbl);
}
for (const p of pts) {
const c = S("circle", { cx: X(p.ref_wr), cy: Y(p[key]), r: 2.6,
fill: "var(--accent)", "fill-opacity": .65 });
const tt = S("title", {});
tt.textContent = `${p.card}: agent ${pct(p[key])} (${p[nkey]} games), 17lands ${pct(p.ref_wr)}`;
c.append(tt); svg.append(c);
}
svg.append((() => { const t = S("text", { x: (m.l + W - m.r) / 2, y: H - 1, "text-anchor": "middle",
"font-size": 10, fill: "var(--muted)" }); t.textContent = "x: 17lands GIH WR Β· y: agent GIH WR"; return t; })());
host.append(svg);
}
// ── sortable table ───────────────────────────────────────────
function table(host, cols, rows, initial) {
if (!rows.length) { host.append($("div", "empty", "nothing to show yet")); return; }
const wrap = $("div", "tablewrap"), t = $("table"), head = $("tr"), body = document.createElement("tbody");
let sortKey = initial || cols[0].k, asc = false;
const draw = () => {
const rs = rows.slice().sort((a, b) => {
const x = a[sortKey], y = b[sortKey];
if (typeof x === "string" || typeof y === "string")
return String(x).localeCompare(String(y)) * (asc ? 1 : -1);
return ((x ?? -Infinity) - (y ?? -Infinity)) * (asc ? 1 : -1);
});
body.replaceChildren(...rs.map(rw => {
const tr = $("tr");
cols.forEach(c => tr.append($("td", null, c.f ? c.f(rw) : (rw[c.k] ?? "–"))));
return tr;
}));
};
cols.forEach(c => {
const th = $("th", null, c.h);
th.onclick = () => { asc = sortKey === c.k ? !asc : false; sortKey = c.k; draw(); };
head.append(th);
});
t.append(head, body); wrap.append(t); host.append(wrap); draw();
}
// ── assemble ─────────────────────────────────────────────────
const grid = $("div", "grid");
const c1 = $("div", "card");
c1.append($("h3", null, "GIH rank correlation with 17lands"), $("div", "unit", "Spearman ρ · cumulative from gen 1"));
const byName = {};
for (const p of (D.rho_series || [])) {
if (p.v == null) continue;
(byName[p.series] = byName[p.series] || []).push(p);
}
lineChart(c1, Object.entries(byName).map(([name, points]) => ({ name, points })));
grid.append(c1);
const c2 = $("div", "card");
c2.append($("h3", null, "Card GIH win rate vs 17lands"));
scatter(c2);
grid.append(c2);
root.append(grid);
if (!D.has_reference) {
root.append($("p", "blurb",
"No 17lands reference loaded, so ρ and the comparison columns are empty. " +
"Build one with `python -m draftzero.reference`."));
}
root.append($("h2", null, "Cards"));
root.append($("p", "blurb",
`Agent GIH win rate per card against the 17lands reference. Ξ” is agent minus 17lands: ` +
`strongly negative means the agent under-uses a card humans win with. Click a header to sort.`));
table(root, [
{ k: "card", h: "Card" },
{ k: "games", h: "Games", f: r => r.games || 0 },
{ k: "wr", h: "Agent GIH", f: r => pct(r.wr) },
{ k: "ref_wr", h: "17lands GIH", f: r => pct(r.ref_wr) },
{ k: "delta", h: "Ξ”", f: r => r.delta == null ? "–" : (r.delta > 0 ? "+" : "") + (r.delta * 100).toFixed(1) },
{ k: "heuristic_wr", h: "Gen 0", f: r => pct(r.heuristic_wr) },
], (D.cards || []).filter(c => (c.games || 0) >= D.min_card_games || (c.heuristic_games || 0) >= D.min_card_games)
.map(c => ({ ...c, delta: (c.wr != null && c.ref_wr != null) ? c.wr - c.ref_wr : null })), "games");
root.append($("h2", null, "Deck colours"));
root.append($("p", "blurb",
"Win rate by main colours, with 95% Wilson intervals. Self-play averages 50% overall, so read these " +
"as which colour pairs the agent handles better than others, not as absolute strength."));
table(root, [
{ k: "colors", h: "Colours" },
{ k: "games", h: "Games" },
{ k: "wr", h: "Win rate", f: r => pct(r.wr) },
{ k: "ci", h: "95% CI", f: r => (r.lo == null ? "–" : `${pct(r.lo)} – ${pct(r.hi)}`) },
{ k: "ref_wr", h: "17lands", f: r => pct(r.ref_wr) },
{ k: "heuristic_wr", h: "Gen 0", f: r => pct(r.heuristic_wr) },
], (D.colors || []), "games");
</script>
</body>
</html>