{
  "schema": "s2s-bench-v1",
  "exhibit": "reciprocal-rank-fusion",
  "dataset": "reciprocal-rank-fusion-longmemeval-s",
  "generated_utc": "2026-11-09T13:47:59Z",
  "licence": "CC BY 4.0",
  "attribution": "strata→signal research, research.strata2signal.com",
  "contact": "hello@strata2signal.com",
  "what_this_is": "The records behind the LongMemEval figures of the exhibit *Reciprocal rank fusion* (https://research.strata2signal.com/reciprocal-rank-fusion/): retrieval on LongMemEval-S's 500 chat-history questions, read as every@5 over the 470 answerable. `longmemeval-2026-10/` holds the October bench's four lists: A0, BM25 alone; A1, nomic-embed-text alone; A2, their reciprocal rank fusion, with the test registered against A0; A5, the fusion of BM25 and BGE-small that deep-recall ships, untested. `learned-sparse-2026-11-07/` holds the second registered run: S1, a learned-sparse list, its three fusions F1, F2 and F3, three exploratory fusions the registration named and never gated (F1h, F2h, F3h, not on the page), a second scorer's recount of each list, and the five registered comparisons.",
  "run_id": "longmemeval-s-retrieval-2026-10-09-to-2026-11-07",
  "run_window_utc": {
    "a0_bm25_started_utc": "2026-10-09T23:22:41Z",
    "a5_bge_small_fusion_started_utc": "2026-10-10T13:25:40Z",
    "a1_nomic_embed_text_started_utc": "2026-10-17T07:34:58Z",
    "a2_nomic_embed_text_fusion_started_utc": "2026-10-17T07:57:04Z",
    "a1_a2_registered_scorer_utc": "2026-10-17T10:15:42Z",
    "learned_sparse_registration_frozen_utc": "2026-11-07T03:56:44Z",
    "s1_learned_sparse_utc": [
      "2026-11-07T03:57:08Z",
      "2026-11-07T06:25:43Z"
    ],
    "note": "Each start is its lock's own `started_utc`, the registered scorer's time its output's `utc`, and the learned-sparse run's end its summary's `finished_utc`. That run's registration was frozen 24 seconds before its first question, by the registration's own stamp (the registration is not in this kit). The fusions F1, F2 and F3 were computed from the stored lists after S1 finished."
  },
  "cut_by": {
    "tool": "tools/kit_sanitise.py",
    "how": "Every file below was COPIED from the bench's own record and then rewritten only by the named rules, applied in the order they are listed here, by one program. Nothing was edited by hand, nothing was reworded, and nothing was dropped from inside a file. `--check` re-derives every byte from the private record and refuses on a single byte of drift; `--fence` proves that no figure moved.",
    "rule_order": [
      "digest-withheld",
      "record-path-to-kit-path",
      "box-name-to-role"
    ],
    "files_cut": 34
  },
  "sanitisation_rules": {
    "digest-withheld": "the withholding rule every kit cut by rule on this shelf has carried since 2026-09-29 (UTC): a sha256 the record itself printed — whole, shortened to its first 8 or more hex characters, or written head…tail — of a file as it stood BEFORE a rule below rewrote it becomes the literal `withheld-2026-09-29`, because beside the rewritten copy such a digest would check a guess at what the rule replaced. Here the learned-sparse run's family of comparisons and its reading printed the digests of files the path rule rewrites (the seven recounts, the family and the fusions' record); those become the marker. Every digest of a file no rule touched is left as the record printed it, and checks against the copy in this kit.",
    "record-path-to-kit-path": "an absolute path into the private bench archive, printed by the learned-sparse run's scorer, fuser and reading to name the files they read, becomes the path of the same file in this kit: that run's receipts folder becomes `learned-sparse-2026-11-07/` and the October bench's receipts folder `longmemeval-2026-10/`, so each path a record prints names its file here, or one the README lists as left out. The private root carries a home directory and the operator's account name; the rest of each path, the file it names and every byte around it are unchanged.",
    "box-name-to-role": "the A1 lock's `route` field named the machine its embedding calls were sent to; that name becomes `desktop`, the role the machine played (the desktop computer holding the card the same lock names). This shelf publishes what a bench measured, never which box ran it. The card's name is left as the lock recorded it."
  },
  "rule_firings_total": {
    "box-name-to-role": 1,
    "record-path-to-kit-path": 39,
    "digest-withheld": 13
  },
  "what_was_not_touched": "Only what a rule rewrote, each rule counted per file in `provenance.json`: the absolute paths the learned-sparse run's records printed, to the paths of the same files in this kit; the A1 lock's route, to the role its machine played; and the digests those records printed of files the path rule rewrote, to `withheld-2026-09-29`. Every row, list, score, count, p-value and registered word is as the bench wrote it. No figure moved on the way out, and `index.json` carries the sha256 of every file it lists, as served.",
  "omitted": {
    "The registrations and the results records.": "The October bench's registration and the learned-sparse run's, and the bench's internal results records, are not here: they name machines, people and private paths. The page states in words each rule it uses, and each lock here pins the harness by sha256.",
    "The question text.": "No question, answer or chat session from LongMemEval is in any file here: sessions are named by blind file names and questions by the dataset's own ids. The dataset is public; see `licence_note` in `index.json`.",
    "The embedding vectors.": "A1's stored vectors (1,000 files of the dataset's text, embedded) are not here; no figure on the page reads them.",
    "The rest of the October bench.": "The OpenJev reranker arm cut at 44 of 50 questions and never scored, the cross-encoder rerank (432 of 470 on the page, exploratory), the run of deep-recall's own code (its top 10 identical on 499 of 500 questions, and the two fused scores at rank 10), and the logs are not here; those page figures rest on the bench's records, which are not published.",
    "The rest of the learned-sparse run.": "The scorer's self-attack, a per-question table of S1's outcomes (the same outcomes are in `rescore-s1.json`), the smoke runs, the control run's own folder and the step stamps are not here; no record in this kit prints a path to any of them."
  },
  "files": [
    {
      "file": "longmemeval-2026-10/a0/run/rows.ndjson",
      "role": "A0, BM25 alone (2026-10-09): one row per question, with `qid`, `type`, `abstention`, `gold` (the answer-holding sessions, by blind file name), the 50 files BM25 kept (`ranked`) and their scores (`bm25`), the top 10 scored (`search`), the four outcomes (`score`), counts and seconds.",
      "media_type": "application/octet-stream",
      "bytes": 904485,
      "sha256": "4d545fdcd364ce86f688250b8b46f8f36db782aba683fde49497425c6f421e55",
      "sha256_original": "4d545fdcd364ce86f688250b8b46f8f36db782aba683fde49497425c6f421e55",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "longmemeval-2026-10/a0/run/run.json",
      "role": "A0's lock, written before its first question: the arm, the dataset's file name and sha256, n 500, 50 kept, blind file names, deep-recall's commit, the harness files' sha256s, the Python and SQLite versions, the start time (UTC) and the run's environment switches.",
      "media_type": "application/json",
      "bytes": 1178,
      "sha256": "825284c97d9b4443e0ebc8db21502b61ac25aea46bbc923863e99c99621fea47",
      "sha256_original": "825284c97d9b4443e0ebc8db21502b61ac25aea46bbc923863e99c99621fea47",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "longmemeval-2026-10/a0/a0-per-question.tsv",
      "role": "A0's outcomes per question: id, type, abstention, the number of answer-holding sessions, their ranks among the 50 kept, and 0/1 for any@1, any@5, all@5 (every@5) and all@10. The learned-sparse run's comparisons read A0 from this file.",
      "media_type": "application/octet-stream",
      "bytes": 22487,
      "sha256": "83584b3f7520a5cce1e03359e370f20d32705d71fafa759db353253bc3f3de9e",
      "sha256_original": "83584b3f7520a5cce1e03359e370f20d32705d71fafa759db353253bc3f3de9e",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "longmemeval-2026-10/w7/rows/a1/legs.ndjson",
      "role": "A1, nomic-embed-text alone (2026-10-17): one row per question, with `qid`, `n_files`, the embedding list cut at 50 (`leg50`) and at 150 (`leg150`), by blind file name, and their similarities (`sim50`, `sim150`). A1's scored list is the first 10 of `leg50`.",
      "media_type": "application/octet-stream",
      "bytes": 1411814,
      "sha256": "6a4299d76c89e38818fe6d69062c3fb6b9b9bbc2836915793374bdc889bf7994",
      "sha256_original": "6a4299d76c89e38818fe6d69062c3fb6b9b9bbc2836915793374bdc889bf7994",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "longmemeval-2026-10/w7/rows/a1/run.json",
      "role": "A1's lock: the arm, the batch size, the card the model ran on, the dataset's sha256, the two prefixes the model's card asks for, the model tag, n 500, the machine the calls were sent to (by the role it played; see `provenance.json`) and the start time (UTC).",
      "media_type": "application/json",
      "bytes": 400,
      "sha256": "521e7b653926e4dfbddfe26cf721813ba89801a50da3b50edf69c3b1c9d2fc22",
      "sha256_original": null,
      "identical_to_original": false,
      "stripped": [
        "box-name-to-role"
      ],
      "strip_counts": {
        "box-name-to-role": 1
      }
    },
    {
      "file": "longmemeval-2026-10/w7/rows/a2/a2.ndjson",
      "role": "A2, the fusion with the registered test, RRF of BM25 and nomic-embed-text at k 60, weight 1.0 on nomic-embed-text and 0.5 on BM25 (2026-10-17): one row per question, with `qid`, `type`, `abstention`, `gold`, the fused top 10 (`top10`) and their fused scores (`rrf10`), the top 20 and the 150-deep fused list (`pool20`, `wide150`), the four outcomes (`score`) and each list's kept counts.",
      "media_type": "application/octet-stream",
      "bytes": 911249,
      "sha256": "eb489cdba861b7795d07bd2ec187eb585ed0e9d5a90ea97d939e41fa3bcdd8a6",
      "sha256_original": "eb489cdba861b7795d07bd2ec187eb585ed0e9d5a90ea97d939e41fa3bcdd8a6",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "longmemeval-2026-10/w7/rows/a2/run.json",
      "role": "A2's lock: the arm, the dataset's sha256, the keyword weight 0.5, n 500, RRF's k 60 and the start time (UTC).",
      "media_type": "application/json",
      "bytes": 229,
      "sha256": "b42f34bf70e7ea98d6a42317b29169a4ec05d2650bc285547ea2abead18512b7",
      "sha256_original": "b42f34bf70e7ea98d6a42317b29169a4ec05d2650bc285547ea2abead18512b7",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "longmemeval-2026-10/w7/w7-per-question.tsv",
      "role": "Per question: id, type, abstention and 0/1 outcomes for A1, A2 and A0 on any@1, any@5, all@5 (every@5) and all@10. The paired input for the page's 23 and 14, and the file the learned-sparse run's comparisons read A1 and A2 from.",
      "media_type": "application/octet-stream",
      "bytes": 27581,
      "sha256": "612af3d11aa62e71b92fd01a2c6d25141306bcd750c7c76732c2884cfdea8c20",
      "sha256_original": "612af3d11aa62e71b92fd01a2c6d25141306bcd750c7c76732c2884cfdea8c20",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "longmemeval-2026-10/w7/score-registered-w7.json",
      "role": "The registered scorer's own output for A1 and A2: each list's counts overall and by type, A0 recomputed, and the registered test of A2 against A0 on every@5 (23 and 14, McNemar's exact two-sided p, the margin, the verdict) and on any@5, with its note on the Holm adjustment.",
      "media_type": "application/json",
      "bytes": 8623,
      "sha256": "8f3da50a4267e4bf71ecbfc0a6dc63c0642eadef8d231a54223660ea80f5ccf0",
      "sha256_original": "8f3da50a4267e4bf71ecbfc0a6dc63c0642eadef8d231a54223660ea80f5ccf0",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "longmemeval-2026-10/a5/run/rows.ndjson",
      "role": "A5, the RRF of BM25 and BGE-small that deep-recall ships, untested (2026-10-10): as A2's rows, plus the arm, the number of files, per-question seconds, a stand-in flag and the machine's one-minute load average at each question's start.",
      "media_type": "application/octet-stream",
      "bytes": 981098,
      "sha256": "11b778721600031baf8fca0d5b83b85a9b49a8aed840b80354f58dfb5705c534",
      "sha256_original": "11b778721600031baf8fca0d5b83b85a9b49a8aed840b80354f58dfb5705c534",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "longmemeval-2026-10/a5/run/run.json",
      "role": "A5's lock: BGE-small and the sha256 of each of its ONNX files (Hugging Face repository `qdrant/bge-small-en-v1.5-onnx-q`, revision pinned), deep-recall's commit and file pins, the harness pins, the driver's sha256, library versions, k 60, weight 1.0 on BGE-small and 0.5 on BM25, the pools and the start time (UTC).",
      "media_type": "application/json",
      "bytes": 3114,
      "sha256": "55f33084c3dde80671ca1bce9988bf31f989145ea03aafb1555746432c6481f2",
      "sha256_original": "55f33084c3dde80671ca1bce9988bf31f989145ea03aafb1555746432c6481f2",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "longmemeval-2026-10/a5/run/legs.ndjson",
      "role": "A5's BGE-small embedding list for each question, at 50 and 150 (blind names and similarities), with the embedding calls' counts, so A5 can be re-fused from A0's BM25 lists.",
      "media_type": "application/octet-stream",
      "bytes": 1552000,
      "sha256": "de7cf181265a937790b61077d50fbb7d1a191e0134fbfab402e5ed7374e16453",
      "sha256_original": "de7cf181265a937790b61077d50fbb7d1a191e0134fbfab402e5ed7374e16453",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "longmemeval-2026-10/a5/a5-per-question.tsv",
      "role": "A5's outcomes per question, in A0's file's form (the ranks are in the 150-deep fused list). The learned-sparse run's comparisons read A5 from this file.",
      "media_type": "application/octet-stream",
      "bytes": 22462,
      "sha256": "34dc22ad11181b4bba43f2c6d5e8875dccde9b13d35a347578b1f0d01725c8cc",
      "sha256_original": "34dc22ad11181b4bba43f2c6d5e8875dccde9b13d35a347578b1f0d01725c8cc",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "learned-sparse-2026-11-07/s2-skip.json",
      "role": "The reference model the learned-sparse run was to include, naver/splade-v3, as its host described it on 2026-11-07 (UTC): gated behind a licence acceptance, `cc-by-nc-sa-4.0`, its weights only as a Python pickle (`pytorch_model.bin`), and the verdict: skipped, no file downloaded.",
      "media_type": "application/json",
      "bytes": 836,
      "sha256": "533b8965472f7617be2f3d0a24567498f85885ce8fe16f52e3ca1c063fb9b7af",
      "sha256_original": "533b8965472f7617be2f3d0a24567498f85885ce8fe16f52e3ca1c063fb9b7af",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/control-card.json",
      "role": "The activation's positive control, run in the scored run's environment before the first question: the model card's own example scored with the activation the run used (`card-v3`) and with a second one (`st-log1p`), beside the values the card prints (`card`), with the per-word weights each gave; and the sha256 of each model file.",
      "media_type": "application/json",
      "bytes": 1386,
      "sha256": "b5356f0e5ad05e7fa216e91db09b9dab93f3d4762ea05ea6291f520d009ef0d0",
      "sha256_original": "b5356f0e5ad05e7fa216e91db09b9dab93f3d4762ea05ea6291f520d009ef0d0",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/run/run.json",
      "role": "S1's lock, written before the first question: the model (opensearch-project/opensearch-neural-sparse-encoding-doc-v3-distill) at its pinned revision and the sha256 of each of its files, the activation, the 510-token window, the dataset's and the question list's sha256, n 500, 50 kept, threads and batch, the device (CPU), the harness files' sha256s, library versions, the start time (UTC) and the run's environment switches.",
      "media_type": "application/json",
      "bytes": 2133,
      "sha256": "02a152f7f182d79ef43970c2922baf06a1737cb2b6e67330f5154330aa982961",
      "sha256_original": "02a152f7f182d79ef43970c2922baf06a1737cb2b6e67330f5154330aa982961",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/run/rows.ndjson",
      "role": "S1, the learned-sparse list alone (2026-11-07): one row per question, with `qid`, `type`, `abstention`, `gold`, the 50 files kept (`ranked`) and their scores (`s1`), the top 10 scored (`search`), the four outcomes (`score`), and per-question counts (texts, windows, texts windowed, tokens, query terms) and seconds.",
      "media_type": "application/octet-stream",
      "bytes": 983184,
      "sha256": "724a352b8417129bb059fbfdbc28eaba64c061da25d9a1edbf7ab08819887432",
      "sha256_original": "724a352b8417129bb059fbfdbc28eaba64c061da25d9a1edbf7ab08819887432",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/run/summary.json",
      "role": "S1's own summary: every@5 and any@5, the four outcomes over the answerable questions, over all 500 and by question type, the timing and the run's end (UTC).",
      "media_type": "application/json",
      "bytes": 3663,
      "sha256": "8d1559929ec7185d583edb8f6b37f253af36c2b12ce337add36976ff7a449b79",
      "sha256_original": "8d1559929ec7185d583edb8f6b37f253af36c2b12ce337add36976ff7a449b79",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/fuse/fuse.json",
      "role": "The fusions: for each of the three registered (F1, F2, F3) and the three exploratory (F1h, F2h, F3h), its lists and weights (`spec`), every@5 and any@5, the questions with an exact tie across ranks 5 and 6 and across 10 and 11, and the sha256 of its rows file; the input lists' paths and sha256s; and the control that rebuilt A2's stored top 10 from its two lists (`ctrl_a2_rebuild`: 500 of 500 equal).",
      "media_type": "application/json",
      "bytes": 3300,
      "sha256": "8593f3a5c1c802617255172a3e8cbb510a5f68f2850d2c4c1764841ef787e8e8",
      "sha256_original": null,
      "identical_to_original": false,
      "stripped": [
        "record-path-to-kit-path"
      ],
      "strip_counts": {
        "record-path-to-kit-path": 4
      }
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/fuse/F1.rows.ndjson",
      "role": "F1, the RRF of S1 (weight 1.0) and BM25 (0.5): one row per question, with `qid`, `type`, `abstention`, `gold`, the fused top 10 (`top10`) and their fused scores (`rrf10`), whether an exact tie fell across ranks 5 and 6 or 10 and 11 (`tie_at_5`, `tie_at_10`), and the four outcomes (`score`).",
      "media_type": "application/octet-stream",
      "bytes": 278919,
      "sha256": "becbdca73b15fd048e1da267aa57e98d9bcbc2816dc321e17c1343f62ccc0f80",
      "sha256_original": "becbdca73b15fd048e1da267aa57e98d9bcbc2816dc321e17c1343f62ccc0f80",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/fuse/F2.rows.ndjson",
      "role": "F2, the RRF of S1 (1.0) and nomic-embed-text (1.0), S1 named first: one row per question, with `qid`, `type`, `abstention`, `gold`, the fused top 10 (`top10`) and their fused scores (`rrf10`), whether an exact tie fell across ranks 5 and 6 or 10 and 11 (`tie_at_5`, `tie_at_10`), and the four outcomes (`score`).",
      "media_type": "application/octet-stream",
      "bytes": 279067,
      "sha256": "65595bad63ee4c831950539e264af93d7de2f9580cfff3782617bbc24159434e",
      "sha256_original": "65595bad63ee4c831950539e264af93d7de2f9580cfff3782617bbc24159434e",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/fuse/F3.rows.ndjson",
      "role": "F3, the RRF of S1 (1.0), nomic-embed-text (1.0) and BM25 (0.5): one row per question, with `qid`, `type`, `abstention`, `gold`, the fused top 10 (`top10`) and their fused scores (`rrf10`), whether an exact tie fell across ranks 5 and 6 or 10 and 11 (`tie_at_5`, `tie_at_10`), and the four outcomes (`score`).",
      "media_type": "application/octet-stream",
      "bytes": 279115,
      "sha256": "abeade6c724cbe8cfd50b4377b26c459e0b86925b5a73446344507ba7ee3538b",
      "sha256_original": "abeade6c724cbe8cfd50b4377b26c459e0b86925b5a73446344507ba7ee3538b",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/fuse/F1h.rows.ndjson",
      "role": "F1h, an exploratory fusion the registration named and never gated (S1 at 0.5, in BM25's seat): the RRF of S1 (0.5) and BM25 (0.5). Not on the page: one row per question, with `qid`, `type`, `abstention`, `gold`, the fused top 10 (`top10`) and their fused scores (`rrf10`), whether an exact tie fell across ranks 5 and 6 or 10 and 11 (`tie_at_5`, `tie_at_10`), and the four outcomes (`score`).",
      "media_type": "application/octet-stream",
      "bytes": 279243,
      "sha256": "edf226e9c74bd47f2f0e80f43f8e8a971b80e29331db47e1248cb04b2829d9d2",
      "sha256_original": "edf226e9c74bd47f2f0e80f43f8e8a971b80e29331db47e1248cb04b2829d9d2",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/fuse/F2h.rows.ndjson",
      "role": "F2h, exploratory and never gated: the RRF of nomic-embed-text (1.0) and S1 (0.5), nomic-embed-text named first. Not on the page: one row per question, with `qid`, `type`, `abstention`, `gold`, the fused top 10 (`top10`) and their fused scores (`rrf10`), whether an exact tie fell across ranks 5 and 6 or 10 and 11 (`tie_at_5`, `tie_at_10`), and the four outcomes (`score`).",
      "media_type": "application/octet-stream",
      "bytes": 278858,
      "sha256": "380b7b203b21d9848808bad92265f742020c9283d689342ac0133a38bc565941",
      "sha256_original": "380b7b203b21d9848808bad92265f742020c9283d689342ac0133a38bc565941",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/fuse/F3h.rows.ndjson",
      "role": "F3h, exploratory and never gated: the RRF of nomic-embed-text (1.0), S1 (0.5) and BM25 (0.5). Not on the page: one row per question, with `qid`, `type`, `abstention`, `gold`, the fused top 10 (`top10`) and their fused scores (`rrf10`), whether an exact tie fell across ranks 5 and 6 or 10 and 11 (`tie_at_5`, `tie_at_10`), and the four outcomes (`score`).",
      "media_type": "application/octet-stream",
      "bytes": 278932,
      "sha256": "28d17f889f2423994c678ac5b804e59b63f06ff80240afbbaa6830124f82aa5f",
      "sha256_original": "28d17f889f2423994c678ac5b804e59b63f06ff80240afbbaa6830124f82aa5f",
      "identical_to_original": true,
      "stripped": [],
      "strip_counts": {}
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/score/rescore-s1.json",
      "role": "The second, independently written scorer's recount of S1's list: its checks (`g0_problems`, `row_diffs` and `summary_diffs`, each empty), the counts over the 470 answerable questions and over all 500, and each question's four outcomes (`per_question`). The family of comparisons reads its counts from this file.",
      "media_type": "application/json",
      "bytes": 76080,
      "sha256": "72d7bf476dfbf128ae88c7eb7f0ce18ca4da1e1f93c61d3c0a82b86990a3872d",
      "sha256_original": null,
      "identical_to_original": false,
      "stripped": [
        "record-path-to-kit-path"
      ],
      "strip_counts": {
        "record-path-to-kit-path": 1
      }
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/score/rescore-F1.json",
      "role": "The second, independently written scorer's recount of F1's fused list: its checks (`g0_problems`, `row_diffs` and `summary_diffs`, each empty), the counts over the 470 answerable questions and over all 500, and each question's four outcomes (`per_question`). The family of comparisons reads its counts from this file.",
      "media_type": "application/json",
      "bytes": 76068,
      "sha256": "08d723c9dab755e265f886266a8162ed156a4a5b6ae0c96f726e231cd41dcbdf",
      "sha256_original": null,
      "identical_to_original": false,
      "stripped": [
        "record-path-to-kit-path"
      ],
      "strip_counts": {
        "record-path-to-kit-path": 1
      }
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/score/rescore-F2.json",
      "role": "The second, independently written scorer's recount of F2's fused list: its checks (`g0_problems`, `row_diffs` and `summary_diffs`, each empty), the counts over the 470 answerable questions and over all 500, and each question's four outcomes (`per_question`). The family of comparisons reads its counts from this file.",
      "media_type": "application/json",
      "bytes": 76062,
      "sha256": "f11e04de8a97edd3217a8708d17d05e445e5b931629f925a01b27279c60c3145",
      "sha256_original": null,
      "identical_to_original": false,
      "stripped": [
        "record-path-to-kit-path"
      ],
      "strip_counts": {
        "record-path-to-kit-path": 1
      }
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/score/rescore-F3.json",
      "role": "The second, independently written scorer's recount of F3's fused list: its checks (`g0_problems`, `row_diffs` and `summary_diffs`, each empty), the counts over the 470 answerable questions and over all 500, and each question's four outcomes (`per_question`). The family of comparisons reads its counts from this file.",
      "media_type": "application/json",
      "bytes": 76043,
      "sha256": "f549b99fbec3bd5b7f9312861c622e81c3bfd73f56850bfbfaff6ce7276a6089",
      "sha256_original": null,
      "identical_to_original": false,
      "stripped": [
        "record-path-to-kit-path"
      ],
      "strip_counts": {
        "record-path-to-kit-path": 1
      }
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/score/rescore-F1h.json",
      "role": "The second scorer's recount of the exploratory fusion F1h's list, in the form of the recounts above. The reading's three exploratory comparisons read it; no registered comparison does.",
      "media_type": "application/json",
      "bytes": 76061,
      "sha256": "ff2b85d2bd5e340f9c60be4d6a1816cff78d79ffaba7b7f63c48a4c320b7d643",
      "sha256_original": null,
      "identical_to_original": false,
      "stripped": [
        "record-path-to-kit-path"
      ],
      "strip_counts": {
        "record-path-to-kit-path": 1
      }
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/score/rescore-F2h.json",
      "role": "The second scorer's recount of the exploratory fusion F2h's list, in the form of the recounts above. The reading's three exploratory comparisons read it; no registered comparison does.",
      "media_type": "application/json",
      "bytes": 76076,
      "sha256": "ea35451c54b928ddadaa26e72368fd4b3f015fb18d61707e4a1a5a50f90db40f",
      "sha256_original": null,
      "identical_to_original": false,
      "stripped": [
        "record-path-to-kit-path"
      ],
      "strip_counts": {
        "record-path-to-kit-path": 1
      }
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/score/rescore-F3h.json",
      "role": "The second scorer's recount of the exploratory fusion F3h's list, in the form of the recounts above. The reading's three exploratory comparisons read it; no registered comparison does.",
      "media_type": "application/json",
      "bytes": 76060,
      "sha256": "6ca29c4a8aa9d0ba258c6f76456c2e6a2dc530b414b95b42f7bbdd71f9f82fa5",
      "sha256_original": null,
      "identical_to_original": false,
      "stripped": [
        "record-path-to-kit-path"
      ],
      "strip_counts": {
        "record-path-to-kit-path": 1
      }
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/score/family.json",
      "role": "The five registered comparisons (`primary`) and their five secondary forms on any@5 (`secondary`): for each, the two counts, the questions only one side hit, the gain, the margin, McNemar's exact two-sided p, the Holm-adjusted p across the five (primary) and the registered words; and the file each list was read from, with its sha256 (`sources`).",
      "media_type": "application/json",
      "bytes": 4312,
      "sha256": "e4476f210e53d5e8a57d9e508344c5fc4a66770619a51d8543bc2f212190390a",
      "sha256_original": null,
      "identical_to_original": false,
      "stripped": [
        "digest-withheld",
        "record-path-to-kit-path"
      ],
      "strip_counts": {
        "digest-withheld": 4,
        "record-path-to-kit-path": 8
      }
    },
    {
      "file": "learned-sparse-2026-11-07/full-s1/score/reading.json",
      "role": "The reading: every list's counts overall and by type; the five comparisons recomputed with the registered harness's own McNemar and Holm (`family_crosscheck`, all equal); the question ids behind each comparison's one-sided counts; the three exploratory comparisons; the tie counts and the exploratory reversal of F2's tie order (`f2_ties_reversed_exploratory`); the run's integrity extras; S1's run counts (`s1_run`, the texts windowed among them); a breakdown of S1's misses; and the files read, with their sha256s (`sources`).",
      "media_type": "application/json",
      "bytes": 24607,
      "sha256": "9a3d9b7deb9fbd90d57954aac8cf7317d750f5e33752bfa7d686863143e267d4",
      "sha256_original": null,
      "identical_to_original": false,
      "stripped": [
        "digest-withheld",
        "record-path-to-kit-path"
      ],
      "strip_counts": {
        "digest-withheld": 9,
        "record-path-to-kit-path": 20
      }
    }
  ]
}
