{
 "schema": "s2s-bench-v1",
 "kind": "data-kit-index",
 "exhibit": "reading-is-fast",
 "exhibit_title": "Reading is fast, writing is slow — why AI answers arrive word by word",
 "exhibit_url": "https://research.strata2signal.com/reading-is-fast/index.html",
 "published_utc": "2026-08-19",
 "licence": "CC BY 4.0",
 "attribution": "strata→signal research, research.strata2signal.com",
 "contact": "hello@strata2signal.com",
 "what_this_measures": "A physics receipt, not a comparison bench. One already-seated model (qwen3.8:27b, q4 weights, num_ctx 32768, temperature 0) timed on our own serving card: prefill (reading) and decode (writing) throughput from the runtime's own nanosecond counters, n=10 per leg per prompt tier, plus the draft-head acceptance receipt that resolved why the measured decode beat the naive bandwidth arithmetic.",
 "not_a_standard": "One model, one card, one runtime version, one day. The 40× ratio is ours; yours will differ by card, model size, quantisation and runtime — the page's closing section shows how to produce your own numbers with one command.",
 "files": [
  {
   "file": "runs-prefill-decode.json",
   "role": "every timing row behind the page's speed figures: per-call prompt_eval_count/duration and eval_count/duration as the runtime reported them, n=10 per leg, with the prompt tier, options and derived tokens/s per row — the ~5,415 reading and ~135.3 writing medians and the context-tier rows (133.5 at 8k, 127 at 32k) all re-derive from these rows",
   "media_type": "application/json",
   "bytes": 7318,
   "sha256": "a23f09a98eb87e4aeae29b1a89916ab918d5892c6b425a28d5da06dd6be60308",
   "redactions": []
  },
  {
   "file": "drafthead-acceptance-receipt.md",
   "role": "the guesser's report card: the serving-log receipt showing the draft head on by default (draft 4), 49.1% of guesses accepted, ~2.95 tokens riding each trip through the weights, with per-slot acceptance 0.860/0.558/0.372/0.163 — the resolution of the measurement that argued back, sanitized at the pen (box-neutral)",
   "media_type": "text/markdown",
   "bytes": 1349,
   "sha256": "e935f43f8a4c987c59c26dbb5be79fe58bed0ca2f75201f933ea40f5461de0a1",
   "redactions": []
  },
  {
   "file": "MATRIX-PROTOCOL.md",
   "role": "the controlled re-test's pre-registration, verbatim as pinned (sha in the window brief's prep receipts, pinned before any scored call with the 08-18 session archive as temporal witness) — host paths and box names re-expressed in the site's outward forms, disclosed here",
   "media_type": "text/markdown",
   "bytes": 5194,
   "sha256": "8908a44fd9fef38e1df777406677ac45ee8b1193157eefc45c9d7d206c20e8d1",
   "redactions": [
    {
     "rule": "box-neutral",
     "why": "host name and home paths replaced with the-gpu-box / [workspace] forms; nothing measured changed"
    }
   ]
  },
  {
   "file": "MATRIX-RESULTS.md",
   "role": "the matrix lane's full analysis: 270 calls, the bracket's disagreement published as a disagreement, the dispersion finding (draft head multiplies run-to-run scatter 11x-38x), and the C5-corpus non-reproduction flagged as a testable proposition",
   "media_type": "text/markdown",
   "bytes": 21302,
   "sha256": "b947c7e3def0588308ac7b833de6b6daf50d348e9b616ee9fb76313de2bf0726",
   "redactions": []
  },
  {
   "file": "matrix-runs.json",
   "role": "every scored call's runtime counters (279 rows, zero refusals); keep-alive sentinel timestamps re-expressed in UTC (runtime rendered them with a local offset), disclosed here",
   "media_type": "application/json",
   "bytes": 46184,
   "sha256": "4726662e20e7d2ce5d9e1d2ff7b560e39e9156682a648d598ddf2f438b838dfc",
   "redactions": [
    {
     "rule": "utc-restate",
     "why": "8 expires_at sentinel fields carried a local offset; same instants, Z form"
    }
   ]
  },
  {
   "file": "MATRIX-WINDOW-RUN-2026-08-21.md",
   "role": "the window summary: protocol sha verified before and after, per-cell medians with ranges, the MIXED prediction verdict, end-state receipts — box-neutral forms as above",
   "media_type": "text/markdown",
   "bytes": 7568,
   "sha256": "85932199b803e7840270879f6bab60f422b49cff284243cc86d6d87112765697",
   "redactions": [
    {
     "rule": "box-neutral",
     "why": "as MATRIX-PROTOCOL.md"
    }
   ]
  }
 ],
 "post_publication_corrections": [
  {
   "date": "2026-08-21",
   "what": "kit grew four files: the controlled re-test (registration, analysis, rows, window summary) behind the page's new Measured-again note; the inversion did not reappear and the dispersion finding is the honest resolution"
  }
 ]
}