{
 "schema": "s2s-bench-v1",
 "kind": "data-kit-index",
 "exhibit": "the-typist-and-the-developer",
 "exhibit_title": "The Typist and the Developer",
 "exhibit_url": "https://research.strata2signal.com/the-typist-and-the-developer/index.html",
 "licence": "CC BY 4.0",
 "attribution": "strata→signal research, research.strata2signal.com",
 "contact": "hello@strata2signal.com",
 "run_window_utc": {
  "opened": "2026-08-26T18:18:02Z",
  "closed": "2026-08-26T18:18:37Z",
  "elapsed_s": 35,
  "note": "the run as it landed, per the registration's ADDENDUM 1 — later than declared and 35 seconds long, not the half hour the declaration padded for."
 },
 "run_id": "contention-0826",
 "not_a_standard": "A five-sample mini-bench of one pair of workloads on one card, sized to one question — not a leaderboard and not a benchmark. Every median prints with its own min-max spread.",
 "sanitisation": "Sanitised at the pen, never copied raw. provenance.json names every rule applied to every file, with the count of times each one fired.",
 "files": [
  {
   "file": "prereg.md",
   "role": "The pre-registration, written 2026-08-26 ~13:4xZ before any measured call, with its one dated addendum: the declared window and the beside-traffic disclosure, the two stacks in their production shapes, the five rows and their sample counts, the four named self-refutation checks, and the publication plan. Every rule and UTC date is as registered — including the declared window that the addendum then corrects.",
   "media_type": "text/markdown",
   "bytes": 4064,
   "sha256": "ac2257656fa5bedeeb324766c02de672fc2d93c25e49e32de411246f1603feed",
   "stripped": [
    "operator-name-to-the-operators",
    "internal-slug-to-product-name"
   ]
  },
  {
   "file": "rows.jsonl",
   "role": "Every sample this bench paid, one JSON object per line — the 47 recorded rows plus the harness's own open and close lines: five solo token rows, five solo renders, five contended token rows with the six background renders that kept the card busy, five contended renders, the re-grab readings (the chat model's load time on the first call after a render burst) and the free-memory reads before and after. The first line is the provenance header added at publication; everything after it is as the harness wrote it. The excluded-failures list is empty because nothing failed.",
   "media_type": "application/x-ndjson",
   "bytes": 8203,
   "sha256": "d935c8ff1723cccf3fc242d4213352703e6c1f515e5b5f3bace7c5a701f3b33f",
   "stripped": [
    "provenance-header-added"
   ]
  },
  {
   "file": "residency-klein-0825.json",
   "role": "The two-painter residency probe from the klein bake-off of 2026-08-25 (the same 96 GB card, one day before the contention rows): each entry is one render — its label, the painter's own execution seconds, and the card's free memory before and after. The alternation the piece re-quotes (32.7 ↔ 16.2 GiB free as the two paint sets evict each other; +2.9 s per swap) is read straight off these rows. Published byte-for-byte; it names no box.",
   "bytes": 628,
   "sha256": "d0196f98bbcf541d90968913a6e14f2e29698e3f99cf9938ac7d60d4472198bf"
  },
  {
   "file": "README.md",
   "role": "What this directory holds and under what licence, the table of every file with what it holds and what was applied to it, the three named sanitisation rules in full, what the rows will and will not tell you, and why five samples per row is not a standard.",
   "media_type": "text/markdown",
   "bytes": 4861,
   "sha256": "efc6b1ca41f28e809d774180ffde41ca8754ab171048e253393dea4a6f9c0463"
  }
 ]
}