{
  "generated_at": "2026-10-31T10:21:57Z",
  "host": "showcase.party",
  "workload": "frozen 106-visit sequence, in-memory, in-process, single-threaded",
  "time": 20,
  "rows": [
    {
      "id": "rails",
      "label": "Rails",
      "kind": "rails",
      "runtime": "cruby",
      "yjit": true,
      "jit": "YJIT",
      "state": "ok",
      "failed_visits": null,
      "drift_pct": -1.1,
      "yjit_stats": null,
      "ms_mean": 517.87,
      "ms_median": 515.35,
      "ms_min": 508.77,
      "ms_max": 538.72,
      "iters": 20,
      "warmup": 15,
      "ruby": "ruby 4.0.5 (2026-05-20 revision 64336ffd0e) +YJIT +PRISM [x86_64-linux]",
      "rails": "8.1.1",
      "sqlite": "3.50.3",
      "gc": null,
      "gc_stat": null,
      "visits": 106,
      "partial": null,
      "rss_boot_kb": 187784,
      "rss_final_kb": 341120,
      "rss_peak_kb": 349764,
      "content_total": null,
      "content_equivalent": null,
      "content_differs": null,
      "content_routes": null,
      "content_rules": null,
      "content_gaps": null,
      "content_undeclared": null,
      "content_scope": null,
      "content_deferred": null,
      "vs_rails": 1.0
    },
    {
      "id": "rails-int",
      "label": "Rails",
      "kind": "rails",
      "runtime": "cruby",
      "yjit": false,
      "jit": "no JIT",
      "state": "ok",
      "failed_visits": null,
      "drift_pct": 0.0,
      "yjit_stats": null,
      "ms_mean": 870.0,
      "ms_median": 866.1,
      "ms_min": 858.28,
      "ms_max": 900.93,
      "iters": 20,
      "warmup": 15,
      "ruby": "ruby 4.0.5 (2026-05-20 revision 64336ffd0e) +PRISM [x86_64-linux]",
      "rails": "8.1.1",
      "sqlite": "3.50.3",
      "gc": null,
      "gc_stat": null,
      "visits": 106,
      "partial": null,
      "rss_boot_kb": 179200,
      "rss_final_kb": 299416,
      "rss_peak_kb": 316540,
      "content_total": null,
      "content_equivalent": null,
      "content_differs": null,
      "content_routes": null,
      "content_rules": null,
      "content_gaps": null,
      "content_undeclared": null,
      "content_scope": null,
      "content_deferred": null,
      "vs_rails": 1.0
    },
    {
      "id": "ruby",
      "label": "Roundhouse",
      "kind": "emit",
      "runtime": "cruby",
      "yjit": true,
      "jit": "YJIT",
      "state": "ok",
      "failed_visits": 0,
      "drift_pct": 14.6,
      "yjit_stats": {
        "before": {
          "code_region_size": 4112384,
          "inline_code_size": 1368700,
          "outlined_code_size": 1469730,
          "code_gc_count": 0,
          "freed_code_size": 0,
          "live_page_count": 251,
          "freed_page_count": 0,
          "invalidation_count": 91,
          "compiled_iseq_count": 1318,
          "compiled_block_count": 28276,
          "compile_time_ns": 857959991
        },
        "after": {
          "code_region_size": 4124672,
          "inline_code_size": 1372839,
          "outlined_code_size": 1475018,
          "code_gc_count": 0,
          "freed_code_size": 0,
          "live_page_count": 252,
          "freed_page_count": 0,
          "invalidation_count": 91,
          "compiled_iseq_count": 1323,
          "compiled_block_count": 28358,
          "compile_time_ns": 860764231
        },
        "delta": {
          "code_region_size": 12288,
          "inline_code_size": 4139,
          "outlined_code_size": 5288,
          "code_gc_count": 0,
          "freed_code_size": 0,
          "live_page_count": 1,
          "freed_page_count": 0,
          "invalidation_count": 0,
          "compiled_iseq_count": 5,
          "compiled_block_count": 82,
          "compile_time_ns": 2804240
        }
      },
      "ms_mean": 162.57,
      "ms_median": 156.89,
      "ms_min": 152.63,
      "ms_max": 181.35,
      "iters": 45,
      "warmup": 15,
      "ruby": "ruby 4.0.5 (2026-05-20 revision 64336ffd0e) +YJIT +PRISM [x86_64-linux]",
      "rails": null,
      "sqlite": "3.50.3",
      "gc": null,
      "gc_stat": null,
      "visits": 106,
      "partial": false,
      "rss_boot_kb": 112148,
      "rss_final_kb": 147252,
      "rss_peak_kb": 147252,
      "content_total": 26,
      "content_equivalent": 25,
      "content_differs": 1,
      "content_routes": [
        {
          "route": "rss",
          "verdict": "differs",
          "diff_tokens": 25,
          "hunks": [
            {
              "op": "changed",
              "after": [
                "</author>",
                "<pubDate>"
              ],
              "ref": [
                "\"Tue, 18 Jul 2023 05:29:46 -0500\""
              ],
              "cand": [
                "\"Tue, 18 Jul 2023 10:29:46 +0000\""
              ]
            },
            {
              "op": "changed",
              "after": [
                "</author>",
                "<pubDate>"
              ],
              "ref": [
                "\"Tue, 18 Jul 2023 05:29:46 -0500\""
              ],
              "cand": [
                "\"Tue, 18 Jul 2023 10:29:46 +0000\""
              ]
            },
            {
              "op": "changed",
              "after": [
                "</author>",
                "<pubDate>"
              ],
              "ref": [
                "\"Tue, 18 Jul 2023 05:29:46 -0500\""
              ],
              "cand": [
                "\"Tue, 18 Jul 2023 10:29:46 +0000\""
              ]
            },
            {
              "op": "changed",
              "after": [
                "</author>",
                "<pubDate>"
              ],
              "ref": [
                "\"Tue, 18 Jul 2023 05:29:46 -0500\""
              ],
              "cand": [
                "\"Tue, 18 Jul 2023 10:29:46 +0000\""
              ]
            },
            {
              "op": "changed",
              "after": [
                "</author>",
                "<pubDate>"
              ],
              "ref": [
                "\"Tue, 18 Jul 2023 05:29:46 -0500\""
              ],
              "cand": [
                "\"Tue, 18 Jul 2023 10:29:46 +0000\""
              ]
            },
            {
              "op": "changed",
              "after": [
                "</author>",
                "<pubDate>"
              ],
              "ref": [
                "\"Tue, 18 Jul 2023 05:29:46 -0500\""
              ],
              "cand": [
                "\"Tue, 18 Jul 2023 10:29:46 +0000\""
              ]
            }
          ]
        }
      ],
      "content_rules": [
        {
          "name": "csrf-token",
          "kind": "mask",
          "why": "per-session token; a fresh value on every boot",
          "applications": 29
        },
        {
          "name": "relative-time",
          "kind": "mask",
          "why": "\"3 hours ago\" is a function of when the replay ran — the COUNT is masked, the unit is not",
          "applications": 109
        },
        {
          "name": "clock-countdown",
          "kind": "mask",
          "why": "\"stop accepting comments in N minutes\" ticks between the two replays",
          "applications": 1
        },
        {
          "name": "timestamp-value",
          "kind": "mask",
          "why": "title=/datetime= instants differ by the gap between replays — digits are masked, the FORMAT is not",
          "applications": 109
        },
        {
          "name": "totp-secret",
          "kind": "mask",
          "why": "a 2FA enrolment draws a fresh random secret: the otpauth URI's secret= and the QR code drawn from it are masked, the page around them is not",
          "applications": 0
        },
        {
          "name": "mini-profiler",
          "kind": "known",
          "why": "the Spinel tree's rack-mini-profiler package injects its panel tag for a moderator; the CRuby tree loads the gem without its middleware",
          "applications": 0
        },
        {
          "name": "asset-prefix",
          "kind": "known",
          "why": "emit serves /assets/NAME where Rails serves /stylesheets/ and /javascripts/",
          "applications": 46
        },
        {
          "name": "request-scheme",
          "kind": "known",
          "why": "the Rails replay builds https:// envs, the emit replay http:// — a harness artifact, not an app difference",
          "applications": 1
        }
      ],
      "content_gaps": [],
      "content_undeclared": [
        "/rss"
      ],
      "content_scope": 26,
      "content_deferred": 0,
      "vs_rails": 3.19,
      "parity_routes": 22,
      "parity_ms_median": 128.69,
      "parity_base_ms": 457.23,
      "vs_rails_parity": 3.55
    },
    {
      "id": "ruby-int",
      "label": "Roundhouse",
      "kind": "emit",
      "runtime": "cruby",
      "yjit": false,
      "jit": "no JIT",
      "state": "ok",
      "failed_visits": 0,
      "drift_pct": 1.0,
      "yjit_stats": null,
      "ms_mean": 234.56,
      "ms_median": 228.06,
      "ms_min": 223.36,
      "ms_max": 247.78,
      "iters": 28,
      "warmup": 15,
      "ruby": "ruby 4.0.5 (2026-05-20 revision 64336ffd0e) +PRISM [x86_64-linux]",
      "rails": null,
      "sqlite": "3.50.3",
      "gc": null,
      "gc_stat": null,
      "visits": 106,
      "partial": false,
      "rss_boot_kb": 111680,
      "rss_final_kb": 124312,
      "rss_peak_kb": 125332,
      "content_total": 26,
      "content_equivalent": 25,
      "content_differs": 1,
      "content_routes": [
        {
          "route": "rss",
          "verdict": "differs",
          "diff_tokens": 25,
          "hunks": [
            {
              "op": "changed",
              "after": [
                "</author>",
                "<pubDate>"
              ],
              "ref": [
                "\"Tue, 18 Jul 2023 05:29:46 -0500\""
              ],
              "cand": [
                "\"Tue, 18 Jul 2023 10:29:46 +0000\""
              ]
            },
            {
              "op": "changed",
              "after": [
                "</author>",
                "<pubDate>"
              ],
              "ref": [
                "\"Tue, 18 Jul 2023 05:29:46 -0500\""
              ],
              "cand": [
                "\"Tue, 18 Jul 2023 10:29:46 +0000\""
              ]
            },
            {
              "op": "changed",
              "after": [
                "</author>",
                "<pubDate>"
              ],
              "ref": [
                "\"Tue, 18 Jul 2023 05:29:46 -0500\""
              ],
              "cand": [
                "\"Tue, 18 Jul 2023 10:29:46 +0000\""
              ]
            },
            {
              "op": "changed",
              "after": [
                "</author>",
                "<pubDate>"
              ],
              "ref": [
                "\"Tue, 18 Jul 2023 05:29:46 -0500\""
              ],
              "cand": [
                "\"Tue, 18 Jul 2023 10:29:46 +0000\""
              ]
            },
            {
              "op": "changed",
              "after": [
                "</author>",
                "<pubDate>"
              ],
              "ref": [
                "\"Tue, 18 Jul 2023 05:29:46 -0500\""
              ],
              "cand": [
                "\"Tue, 18 Jul 2023 10:29:46 +0000\""
              ]
            },
            {
              "op": "changed",
              "after": [
                "</author>",
                "<pubDate>"
              ],
              "ref": [
                "\"Tue, 18 Jul 2023 05:29:46 -0500\""
              ],
              "cand": [
                "\"Tue, 18 Jul 2023 10:29:46 +0000\""
              ]
            }
          ]
        }
      ],
      "content_rules": [
        {
          "name": "csrf-token",
          "kind": "mask",
          "why": "per-session token; a fresh value on every boot",
          "applications": 29
        },
        {
          "name": "relative-time",
          "kind": "mask",
          "why": "\"3 hours ago\" is a function of when the replay ran — the COUNT is masked, the unit is not",
          "applications": 109
        },
        {
          "name": "clock-countdown",
          "kind": "mask",
          "why": "\"stop accepting comments in N minutes\" ticks between the two replays",
          "applications": 1
        },
        {
          "name": "timestamp-value",
          "kind": "mask",
          "why": "title=/datetime= instants differ by the gap between replays — digits are masked, the FORMAT is not",
          "applications": 109
        },
        {
          "name": "totp-secret",
          "kind": "mask",
          "why": "a 2FA enrolment draws a fresh random secret: the otpauth URI's secret= and the QR code drawn from it are masked, the page around them is not",
          "applications": 0
        },
        {
          "name": "mini-profiler",
          "kind": "known",
          "why": "the Spinel tree's rack-mini-profiler package injects its panel tag for a moderator; the CRuby tree loads the gem without its middleware",
          "applications": 0
        },
        {
          "name": "asset-prefix",
          "kind": "known",
          "why": "emit serves /assets/NAME where Rails serves /stylesheets/ and /javascripts/",
          "applications": 46
        },
        {
          "name": "request-scheme",
          "kind": "known",
          "why": "the Rails replay builds https:// envs, the emit replay http:// — a harness artifact, not an app difference",
          "applications": 1
        }
      ],
      "content_gaps": [],
      "content_undeclared": [
        "/rss"
      ],
      "content_scope": 26,
      "content_deferred": 0,
      "vs_rails": 3.71,
      "parity_routes": 22,
      "parity_ms_median": 193.96,
      "parity_base_ms": 783.32,
      "vs_rails_parity": 4.04
    },
    {
      "id": "spinel",
      "label": "Roundhouse",
      "kind": "emit",
      "runtime": "spinel",
      "yjit": null,
      "jit": "AOT",
      "state": "failed",
      "stage": "replay",
      "detail": "lobsters-spinel-replay: build: spin build failed after 333.1s"
    },
    {
      "id": "futamura",
      "label": "Futamura",
      "kind": "futamura",
      "runtime": "cruby",
      "yjit": true,
      "jit": "YJIT",
      "state": "ok",
      "failed_visits": null,
      "drift_pct": -3.4,
      "yjit_stats": null,
      "ms_mean": 663.68,
      "ms_median": 650.1,
      "ms_min": 630.22,
      "ms_max": 734.52,
      "iters": 20,
      "warmup": 15,
      "ruby": "ruby 4.1.0dev (2026-10-11T13:56:36Z master 2d08b5f42f) +YJIT +PRISM [x86_64-linux]",
      "rails": "8.1.1",
      "sqlite": "3.50.3",
      "gc": null,
      "gc_stat": null,
      "visits": 106,
      "partial": null,
      "rss_boot_kb": 216596,
      "rss_final_kb": 382092,
      "rss_peak_kb": 382092,
      "content_total": 26,
      "content_equivalent": 26,
      "content_differs": 0,
      "content_routes": [],
      "content_rules": [
        {
          "name": "csrf-token",
          "kind": "mask",
          "why": "per-session token; a fresh value on every boot",
          "applications": 29
        },
        {
          "name": "relative-time",
          "kind": "mask",
          "why": "\"3 hours ago\" is a function of when the replay ran — the COUNT is masked, the unit is not",
          "applications": 109
        },
        {
          "name": "clock-countdown",
          "kind": "mask",
          "why": "\"stop accepting comments in N minutes\" ticks between the two replays",
          "applications": 1
        },
        {
          "name": "timestamp-value",
          "kind": "mask",
          "why": "title=/datetime= instants differ by the gap between replays — digits are masked, the FORMAT is not",
          "applications": 109
        },
        {
          "name": "totp-secret",
          "kind": "mask",
          "why": "a 2FA enrolment draws a fresh random secret: the otpauth URI's secret= and the QR code drawn from it are masked, the page around them is not",
          "applications": 0
        },
        {
          "name": "mini-profiler",
          "kind": "known",
          "why": "the Spinel tree's rack-mini-profiler package injects its panel tag for a moderator; the CRuby tree loads the gem without its middleware",
          "applications": 0
        },
        {
          "name": "asset-prefix",
          "kind": "known",
          "why": "emit serves /assets/NAME where Rails serves /stylesheets/ and /javascripts/",
          "applications": 46
        },
        {
          "name": "request-scheme",
          "kind": "known",
          "why": "the Rails replay builds https:// envs, the emit replay http:// — a harness artifact, not an app difference",
          "applications": 1
        }
      ],
      "content_gaps": [],
      "content_undeclared": [],
      "content_scope": 26,
      "content_deferred": 0,
      "vs_rails": 0.78
    }
  ]
}