{
 "schema": "s2s-bench-v1",
 "exhibit": "the-ceiling-is-not-the-corpus",
 "exhibit_title": "The Ceiling Is Not the Corpus",
 "exhibit_url": "https://research.strata2signal.com/the-ceiling-is-not-the-corpus/index.html",
 "licence": "CC BY 4.0",
 "licence_note": "CC BY 4.0 covers the records in this directory, which is all of it: this kit ships no audio. The renders and the listening masters are share-alike, because the corpus behind the adapter is, and they are served on the companion page with their own manifests rather than in here.",
 "attribution": "strata→signal research, research.strata2signal.com",
 "contact": "hello@strata2signal.com",
 "kind": "data-kit-index",
 "published": "2026-09-09",
 "run_ids": {
  "house-wide (arm 1, the adapter this page is about)": "20260906T092541Z-house0-r64, shipped checkpoint epoch 3",
  "corpus coherence bench": "ace-house-2026-09/coherence, run 2026-09-06T09:28Z, before the first training step",
  "render coherence bench": "ace-house-2026-09/coherence, run 2026-09-06T11:03Z",
  "blind sitting": "36 presentations, 2026-09-06T23:1xZ - 23:5xZ, key sealed 2026-09-06T11:0xZ"
 },
 "subject": "ACE-Step 1.5 (MIT), turbo variant, plus one LoRA adapter of 44,040,192 trainable parameters (1.81% of 2.44B) trained on 331 tracks from a 416-track Creative-Commons house corpus by 95 artists, on an RTX 3090 at a 250 W cap.",
 "what_varies": "within every pair the listener judged, the written request and the random seed are held fixed and only the adapter moves — absent, or attached at full strength. A second block moves it to half strength; a third sends the trigger word through with no adapter at all.",
 "not_a_standard": "A field guide and a negative result, not a bench. The only listening evidence is one person, blind, thirty-six presentations, one sitting. Every embedding number is MEASURED, NEVER GATING: none of them can pass, fail, promote or retire an adapter, and a null publishes as a null.",
 "sanitisation": "Absolute filesystem paths projected to role-relative ones; machine names replaced by the role each played; the second box's card published by class while the training card is named; GPU serials, a private-network name, local port numbers and an internal shelf's name withheld. provenance.json names every rule and the count of times each fired, per file, and README.md prints the sha256 of the unprojected bytes for every file that changed.",
 "known_absences": "No audio bytes. The adapter weights are not published (they are identified by sha256 in the render records). The corpus audio is not redistributed; its source URLs, licences and checksums are. The Archive survey's per-flag row tables are not republished. README.md names all of it.",
 "self_reference": "index.json, provenance.json and index.html are not listed among the files they describe. index.json carries provenance.json's sha256 and MANIFEST.sha256's; MANIFEST.sha256 covers every kit file except itself, index.json and index.html.",
 "provenance": {
  "file": "provenance.json",
  "sha256": "becee1724189c8f622bf462fc5a2164438cdd26291bb6733bc9af6aac2498680",
  "bytes": 43086,
  "kind": "provenance-manifest"
 },
 "manifest": {
  "file": "MANIFEST.sha256",
  "sha256": "b160e2e434a07c21aee259fbba00ec8e5763143b1539fab54de2ee127a14c3a4",
  "bytes": 5458
 },
 "file_count": 65,
 "files": [
  {
   "file": "MANIFEST.sha256",
   "role": "Every kit file's sha256 in `sha256sum -c` form, over the bytes published here — provenance.json included. It does not list itself, index.json or index.html; index.json carries its digest instead.",
   "media_type": "text/plain",
   "bytes": 5458,
   "sha256": "b160e2e434a07c21aee259fbba00ec8e5763143b1539fab54de2ee127a14c3a4"
  },
  {
   "file": "PREREG-HOUSE-ARMS.md",
   "role": "The pre-registration, sealed before the first training step, with both amendments as they were filed and nothing else added: A-H1 (2026-09-06T01:03Z, before the freeze) and A6-HOUSE (2026-09-06T11:19Z, before the blind sitting's first block). Neither moved a threshold. How to verify the seal is in README.md.",
   "media_type": "text/markdown",
   "bytes": 151175,
   "sha256": "966edc67435fe7819cd9f55a9b755064be3cd612245932f905a2f2d6d788f02b",
   "stripped": [
    "card-to-class",
    "host-to-role",
    "identity-withheld",
    "network-withheld",
    "path-to-role",
    "person-to-role",
    "port-withheld",
    "shelf-to-role"
   ],
   "strip_counts": {
    "card-to-class": 3,
    "host-to-role": 34,
    "identity-withheld": 7,
    "network-withheld": 1,
    "path-to-role": 41,
    "person-to-role": 19,
    "port-withheld": 8,
    "shelf-to-role": 3
   },
   "identical_to_original": false,
   "sha256_before_projection": "1dc9ac70f5498e4920d7641bfef62207f92f0f1f2c421177dfcad1996b7a678f"
  },
  {
   "file": "README.md",
   "role": "What each file is, which promise on the page it keeps, where every number the page prints is written, what was projected out of every file and the sha256 of the bytes before projection, and what is NOT here.",
   "media_type": "text/markdown",
   "bytes": 41654,
   "sha256": "864ffc0e5bd317121a11acb4b88e4ea5aa3bf2ce499ab59d775b6b9d34a36883"
  },
  {
   "file": "api-digest-check.json",
   "role": "The five-file gate on the fast route: five tracks re-fetched from the catalogue's own API and hashed against the dataset's published digests, with each fetched file's format and the licence the API returned. Zero of five matched.",
   "media_type": "application/json",
   "bytes": 3061,
   "sha256": "53bbfddd3e4596bdf68e3acc61ff82276570b146116f13302af02ab8c282c707",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "53bbfddd3e4596bdf68e3acc61ff82276570b146116f13302af02ab8c282c707"
  },
  {
   "file": "api-route-verdict.md",
   "role": "Why the fast route was rejected, in full: the digest gate, the re-encode comparison (correlation after sample-exact alignment, bitrates against the dataset's 320, the lost spectral ceiling), the catalogue decay the audit found, and the two API traps found on the way.",
   "media_type": "text/markdown",
   "bytes": 10331,
   "sha256": "b20705b6fa6be77d8e1b6d3733d2cafab7b6f5cbf3c4fc89f59e72b25451a258",
   "stripped": [
    "host-to-role",
    "path-to-role",
    "person-to-role"
   ],
   "strip_counts": {
    "host-to-role": 1,
    "path-to-role": 6,
    "person-to-role": 1
   },
   "identical_to_original": false,
   "sha256_before_projection": "67757349b23398d341034a1f5308af663226cec7e7be3bfb3b9b89cd45c6ce91"
  },
  {
   "file": "archive-survey-verdict.md",
   "role": "The survey's verdict: what the licence string alone would have bought, the disqualification classes and their counts, the netlabel slice that would be trustworthy, the artist-level overlap with this corpus, and the recommendation. Nothing from the Archive is in this adapter.",
   "media_type": "text/markdown",
   "bytes": 7326,
   "sha256": "e0ecd4c793b7c58b03ea079f09e8d205b996a54cba4f186db9d12d9303efa851",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "e0ecd4c793b7c58b03ea079f09e8d205b996a54cba4f186db9d12d9303efa851"
  },
  {
   "file": "archive-survey.md",
   "role": "The other corpus, surveyed and not used: the Internet Archive census — the audit set, the rule for counting a track, licence-tier totals, artists, the provenance split that changes the picture, the genre census, and the per-item detail for the usable corpus.",
   "media_type": "text/markdown",
   "bytes": 55717,
   "sha256": "73f7b42716842dca5abaaa26c8da3148a4f2fd206b851c11d75af1fdbf8944f4",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "73f7b42716842dca5abaaa26c8da3148a4f2fd206b851c11d75af1fdbf8944f4"
  },
  {
   "file": "blind-key.json",
   "role": "The blind sheet's sealed key: all thirty-six presentations, which arm was A and which was B, the clip id and sha256 of both files in every trial, the order seed, the block threshold and the sentinel band. Sealed on the training box before the listening page existed and opened after the sitting closed.",
   "media_type": "application/json",
   "bytes": 22708,
   "sha256": "df82353c6c846d4c804064d58c91770da426ba16411de14305733e6c067974e8",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "df82353c6c846d4c804064d58c91770da426ba16411de14305733e6c067974e8"
  },
  {
   "file": "caption-template.py",
   "role": "The caption rule of record, as executable code: the head term, the tag order, the caps, and the de-camelisation lookup it applies.",
   "media_type": "text/x-python",
   "bytes": 6298,
   "sha256": "a1d2bcb9237a9aee927d8039ac6ea723c44a9e071dd94d66afa60b28b1716448",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "a1d2bcb9237a9aee927d8039ac6ea723c44a9e071dd94d66afa60b28b1716448"
  },
  {
   "file": "captions-examples.txt",
   "role": "Twenty captions rendered from the frozen manifest, evenly spaced through it so the sample is not just its head.",
   "media_type": "text/plain",
   "bytes": 2483,
   "sha256": "785ae3d3c3f509a317c670a6661932001a168baecaf43b800c3a2f47261ebd5b",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 2
   },
   "identical_to_original": false,
   "sha256_before_projection": "efe48c4402de6110ab57e949397a040153b2ba6e591e74bfbb94346bd81fc030"
  },
  {
   "file": "coherence/RESULTS.md",
   "role": "The coherence bench's results in prose and tables: the corpus spreads with their intervals, both registered tests and their disagreement, the render predictions scored against what was registered, the quality floor, the memorisation screen, and what the run does not license anyone to say.",
   "media_type": "text/markdown",
   "bytes": 23166,
   "sha256": "510ea259c4eb096d02b136e6f80181006a301d542e35035b1482668583a0f46f",
   "stripped": [
    "card-to-class",
    "host-to-role"
   ],
   "strip_counts": {
    "card-to-class": 1,
    "host-to-role": 2
   },
   "identical_to_original": false,
   "sha256_before_projection": "f3e6e9e19529c162a99965a3df254a4097a653688b7ee141e51813f255087aff"
  },
  {
   "file": "coherence/RESULTS.sha256",
   "role": "The bench's OWN receipt over its three output files, computed on the run's unprojected bytes. Files this kit projected will not match it; MANIFEST.sha256 covers the published bytes and README.md names which files differ.",
   "media_type": "text/plain",
   "bytes": 254,
   "sha256": "a4078c5c5c7668a8902866f724d648a3fb452d480ca4693791b7388fd6cc619a",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "a4078c5c5c7668a8902866f724d648a3fb452d480ca4693791b7388fd6cc619a"
  },
  {
   "file": "coherence/corpus-crop.log",
   "role": "The corpus crop stage's transcript.",
   "media_type": "text/plain",
   "bytes": 241,
   "sha256": "81853639d6960d870b34f658db3d5de98ac8362982bb556365d232731849160b",
   "stripped": [
    "host-to-role",
    "path-to-role"
   ],
   "strip_counts": {
    "host-to-role": 1,
    "path-to-role": 1
   },
   "identical_to_original": false,
   "sha256_before_projection": "3560b4fa6e29fcd5fbe711da625af2ce46042c777bdf14e67eeaa939d8c65d8f"
  },
  {
   "file": "coherence/corpus-crops.csv",
   "role": "Every crop the corpus bench took, 2,241 rows: source track, its digest, the window, the offset, the crop's own digest, bytes, duration, sample rate and channels.",
   "media_type": "text/csv",
   "bytes": 724211,
   "sha256": "0aada96f032fcb5d72b8ad1ed8c63169a0b0ade3605ceb99fd05e17bf314948a",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 2241
   },
   "identical_to_original": false,
   "sha256_before_projection": "276803f58229ffaf681e542040335c8abf1704b0cdc3efb8895f3bdedb283fa4"
  },
  {
   "file": "coherence/corpus-embed.log",
   "role": "The corpus embedding stage's transcript, including the loader's own warnings.",
   "media_type": "text/plain",
   "bytes": 29287,
   "sha256": "0d2eaff1b8f31ed8a8870ca8eb33ac0862d7c6153bef0cda501a822438cbf53b",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 2
   },
   "identical_to_original": false,
   "sha256_before_projection": "e266bf995c5de524a184e229165d7a41b8e4fd822206805dade17ebd3d6c5014"
  },
  {
   "file": "coherence/corpus-embeddings-index.csv",
   "role": "The row order of corpus-embeddings.npz — which crop is which vector.",
   "media_type": "text/csv",
   "bytes": 568446,
   "sha256": "4c6a97cf73f3da9b3237f939791513c5a91d589d263a45c1eee96d9ad18a88ec",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 2241
   },
   "identical_to_original": false,
   "sha256_before_projection": "6cf8eb6d2ea3b27891a2f13c597c87655730268e364d6be86cbeb49f2d829e8f"
  },
  {
   "file": "coherence/corpus-embeddings.npz",
   "role": "Every embedding the corpus bench computed, as written. The corpus results are re-derivable from this file and the index beside it.",
   "media_type": "application/octet-stream",
   "bytes": 4255369,
   "sha256": "db0c09422677dd533be13ff926c98a05a4a96731b0a7aaef9930aa17d45dea5c",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "db0c09422677dd533be13ff926c98a05a4a96731b0a7aaef9930aa17d45dea5c"
  },
  {
   "file": "coherence/house-metrics.json",
   "role": "The corpus-coherence results as data: the instrument pins and seeds, every corpus's mean pairwise distance at equal N with its interval, the archived comparator rows read rather than recomputed, both registered tests with their verdicts, and the cross-split near-duplicate scan.",
   "media_type": "application/json",
   "bytes": 23023,
   "sha256": "4d2ca9d6d3b52efbdaa5b350798dfb040ddf0e8d7a0631055357cc1ac9db7197",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 1
   },
   "identical_to_original": false,
   "sha256_before_projection": "a9f73276ae8cc3331dc82dc8f209693131b10e80b4d6f1adba14cce028441c43"
  },
  {
   "file": "coherence/house-render-metrics.json",
   "role": "The render-coherence results as data: the three registered pull predictions and their scores, the trigger-word control against the weights, the perceptual quality floor per arm and per clip, and the memorisation screen with its threshold and the distribution it was read against.",
   "media_type": "application/json",
   "bytes": 50173,
   "sha256": "0ed4c4c52f88c1abb87faa79e382d816054fcdc8b7af3326666cf6e17eac9b0d",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "0ed4c4c52f88c1abb87faa79e382d816054fcdc8b7af3326666cf6e17eac9b0d"
  },
  {
   "file": "coherence/house_metrics.py",
   "role": "The corpus bench itself, verbatim: the corpora it reads, the crop policy, the embedder pin, the metric and the interval procedure.",
   "media_type": "text/x-python",
   "bytes": 20063,
   "sha256": "9b1f700e7ed1a9edf81f8dccf69a02d7fd90a45e5617ed99cc1b5e8fc4c828f1",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 1
   },
   "identical_to_original": false,
   "sha256_before_projection": "5cf5e08f2c51e587f554f235c14b8cf244adbb1551176e3bdad122b88157bdea"
  },
  {
   "file": "coherence/house_render_metrics.py",
   "role": "The render bench itself, verbatim: the predictions, the centroid rule, the quality floor and the memorisation screen.",
   "media_type": "text/x-python",
   "bytes": 21724,
   "sha256": "a2a8ea7abdacd9cc4db887a36385400cfed7952196669a5cda5dde82172f7f69",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "a2a8ea7abdacd9cc4db887a36385400cfed7952196669a5cda5dde82172f7f69"
  },
  {
   "file": "coherence/plan_house_crops.py",
   "role": "The crop planner both benches shell out to.",
   "media_type": "text/x-python",
   "bytes": 9153,
   "sha256": "afbcc58085f3e9557d3aea23919034f73284e14f98f8b87b01672dd0680ebeff",
   "stripped": [
    "host-to-role"
   ],
   "strip_counts": {
    "host-to-role": 1
   },
   "identical_to_original": false,
   "sha256_before_projection": "2a92c2632a4edc4cdbd50e4cacad70fcd04ce6a91e657009a1ffd88981e3ece1"
  },
  {
   "file": "coherence/render-centroid.csv",
   "role": "Each render's distance to the corpus centroid, one row per render.",
   "media_type": "text/csv",
   "bytes": 5132,
   "sha256": "581d9351732401f369de7117da73116a064b46a70c420ebe2aa6c0c8abc1e234",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "fd3296032b39b114e5a76a480bad9c4bfba80a1e4b8164b51e360e6cd8d061ce"
  },
  {
   "file": "coherence/render-crops.csv",
   "role": "Every crop the render bench took, 252 rows, same columns as the corpus crops.",
   "media_type": "text/csv",
   "bytes": 85830,
   "sha256": "c8283540aa7646b48605297051917b9d031ad45224edc3af3c7d6134411019b2",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 252
   },
   "identical_to_original": false,
   "sha256_before_projection": "b5986baf87db6b939272cc3f78822afd0063c836f194d7356538185aac1d2ee6"
  },
  {
   "file": "coherence/render-embeddings-index.csv",
   "role": "The row order of render-embeddings.npz.",
   "media_type": "text/csv",
   "bytes": 69046,
   "sha256": "a2b1da3fe98ad3f6f3efeac5a4ca8b019108abadcc26b1471d3c882f2016d08c",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 252
   },
   "identical_to_original": false,
   "sha256_before_projection": "1e175154a1d08537fc8c28899649df2377fe8f40d939b02e409fcd5f96b0772b"
  },
  {
   "file": "coherence/render-embeddings.npz",
   "role": "Every embedding the render bench computed, as written.",
   "media_type": "application/octet-stream",
   "bytes": 478582,
   "sha256": "09fa3759e1b9f09bdb51b0d30a36d0f552d14ea8c3f39efa0cf0d2a8d9034b5b",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "09fa3759e1b9f09bdb51b0d30a36d0f552d14ea8c3f39efa0cf0d2a8d9034b5b"
  },
  {
   "file": "coherence/render-pairs.csv",
   "role": "Each base/adapter render pair and its two distances — the rows the pull predictions are scored on.",
   "media_type": "text/csv",
   "bytes": 4362,
   "sha256": "c322098f2edc874a40e0dcddb31ee389979d93641438ea5c2348de065d38067a",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "a6eb3d5e556c12029e31c4a7362e9f32afb0fa8ea654c9da80a30818635240c9"
  },
  {
   "file": "coherence/screen.py",
   "role": "The screen the bench applies before it will embed anything.",
   "media_type": "text/x-python",
   "bytes": 1590,
   "sha256": "66d282ba4fb909d2ad0f39007635954c4df8ae5f2194a799c234a1ae33bc87b5",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "66d282ba4fb909d2ad0f39007635954c4df8ae5f2194a799c234a1ae33bc87b5"
  },
  {
   "file": "companion/gain-probe.json",
   "role": "The measurement that found the second loudness fault: for each of the eighty-five listening copies the listener actually heard, the single best-fit multiplier against its own render, the largest residual in int16 units, the fraction of samples off by more than one unit, and the verdict — a constant gain, or not.",
   "media_type": "application/json",
   "bytes": 20051,
   "sha256": "6cf01cfc3d7fa13fd8ceda26f900924ba15d95854ff7c5a471787e6567ebf2a2",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "6cf01cfc3d7fa13fd8ceda26f900924ba15d95854ff7c5a471787e6567ebf2a2"
  },
  {
   "file": "companion/master-records.json",
   "role": "The all-linear re-master the companion page serves: one constant gain per file and nothing else, with the rule stated at the document level and, per clip, the raw and mastered digests, the gain applied, whether it reached the target, what bound it, and the loudness before and after.",
   "media_type": "application/json",
   "bytes": 55387,
   "sha256": "7f13da2560c1ba49015cebde667a66fc7a900a0f6bf3625c08a13c333e04f4c5",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "7f13da2560c1ba49015cebde667a66fc7a900a0f6bf3625c08a13c333e04f4c5"
  },
  {
   "file": "companion/records.json",
   "role": "The render harness's own records for all eighty-five renders: the request exactly as the engine received it — caption as sent, seed, key, tempo, duration, step count, shift, guidance, normalisation — the adapter and its strength, the output digest, timings, VRAM, the loudness measured on the render and on the listening copy, the arm pair checks, the determinism control and the cross-box check.",
   "media_type": "application/json",
   "bytes": 309907,
   "sha256": "faf1d02946a493f5cdd123f581b3791d33c7438a0ec885b943373ed708cfeaf6",
   "stripped": [
    "card-to-class",
    "host-to-role",
    "path-to-role"
   ],
   "strip_counts": {
    "card-to-class": 1,
    "host-to-role": 2,
    "path-to-role": 270
   },
   "identical_to_original": false,
   "sha256_before_projection": "2937e8c5a71ca2e9c72fb7a77c5e7303484db3fcd97ec7d1195ec50642924d6b"
  },
  {
   "file": "corpus-manifest.jsonl",
   "role": "The corpus, one row per track (416): title, artist, album, the source URL, the licence as the dataset recorded it, the digest the dataset published and the digest of the bytes actually written, the mirror archive each came out of, measured duration, bitrate, loudness and bandwidth ceiling, every tag, the caption the template produced, and which side of the split it fell on.",
   "media_type": "application/x-ndjson",
   "bytes": 992866,
   "sha256": "53a70c3656989d8b23a41402459ac9726c2600aa554b144b9fcb41319780637b",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "53a70c3656989d8b23a41402459ac9726c2600aa554b144b9fcb41319780637b"
  },
  {
   "file": "corpus-manifest.sha256",
   "role": "The 416 checksums in `sha256sum -c` form, relative to the corpus audio directory.",
   "media_type": "text/plain",
   "bytes": 37440,
   "sha256": "2be441bbce3c4a4288e61c6547009044eba289e434b7b1064643c0c5120fd0fe",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "2be441bbce3c4a4288e61c6547009044eba289e434b7b1064643c0c5120fd0fe"
  },
  {
   "file": "corpus-provenance.md",
   "role": "How the corpus was assembled and what was measured on it: the route, the verification against the dataset's own digests, the licence audit and what it found, and the exclusions.",
   "media_type": "text/markdown",
   "bytes": 9202,
   "sha256": "de243fb0d210bbc2437272c9ae9412b3aaceec56679eabdc517a1e4ab18a1368",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 1
   },
   "identical_to_original": false,
   "sha256_before_projection": "a6e4b40b445af2e5b122c8a2de8eb45232a3e1984436760fa5ab43c2085cd2fa"
  },
  {
   "file": "credits.md",
   "role": "The attribution owed: every one of the 416 tracks by title, artist and licence, plus the seventeen named as excluded with the licences their artists have since chosen.",
   "media_type": "text/markdown",
   "bytes": 70802,
   "sha256": "a43f6f5b1ee0b54dc48abc24f876abddc3f21d29c2fe4d44cb8ff264a79edbe7",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 1
   },
   "identical_to_original": false,
   "sha256_before_projection": "5a0f0d2476572f91bac789c76d5d63e47bfb811f93c9a50167aac0d6fb2e471e"
  },
  {
   "file": "dataset.json",
   "role": "The training dataset as the trainer received it: 331 samples, each with its audio path and the caption as sent, and the run's preprocessing settings at the head.",
   "media_type": "application/json",
   "bytes": 116167,
   "sha256": "9a93db01f94bcacfaf1c2c14ddd8660f11333a999fcaad791c9eaa5fcb50b1a4",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 331
   },
   "identical_to_original": false,
   "sha256_before_projection": "4e9552c5bab561a0cbb929fc27f506030ad83c19771126d861602f22ad6c8f60"
  },
  {
   "file": "fence-report.json",
   "role": "The style fence applied: the spec's own sha256, the in-tags and out-tags, the removal table by tag, the relicensed class with its drift matrix, and the tag source with its digest.",
   "media_type": "application/json",
   "bytes": 3157,
   "sha256": "e0aa9f4aa2f875333c3a2da890023622048de5d5fc268b0ec4ece0d952e07f3f",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 3
   },
   "identical_to_original": false,
   "sha256_before_projection": "f22fa6de6e4b865e2b5b5b4d75c2f3226310dd08a95c2de9372e4622e9b32983"
  },
  {
   "file": "freeze-receipt.json",
   "role": "The freeze's identity: what was frozen and when, with the file count and byte total for the corpus, the dataset and the tensors.",
   "media_type": "application/json",
   "bytes": 703,
   "sha256": "a5a3a9d1bb238d21f574e4042746d8af513149102852a88e26bd4add7e1ffdbc",
   "stripped": [
    "host-to-role",
    "path-to-role"
   ],
   "strip_counts": {
    "host-to-role": 3,
    "path-to-role": 3
   },
   "identical_to_original": false,
   "sha256_before_projection": "64bdb0ceed76e16de4b778d61caac677026ccea6caf1d489671654b9e6537ed3"
  },
  {
   "file": "freeze-receipts.md",
   "role": "The freeze's own receipts, assertion by assertion, as the freeze script wrote them.",
   "media_type": "text/markdown",
   "bytes": 4656,
   "sha256": "91804e184bd345957faa7cad14c3f706faf9dbe863d6ec2d50571fbf7dbc9e34",
   "stripped": [
    "host-to-role",
    "path-to-role"
   ],
   "strip_counts": {
    "host-to-role": 1,
    "path-to-role": 1
   },
   "identical_to_original": false,
   "sha256_before_projection": "6e8aea38337be19f2ee7fa136c7582c990eb5b689292d663ec4f1bc7effae79b"
  },
  {
   "file": "house-wide-fence.json",
   "role": "The style fence as a machine-readable file: the licences, the in-tags, the out-tags, the title regex and the ruling. This is the fence spec of record; its fingerprint is printed in README.md and echoed by fence-report.json.",
   "media_type": "application/json",
   "bytes": 661,
   "sha256": "088e25e57fe25d26f4d755b8915e13b5c34e320d902f365f64a905feaf10a30d",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "088e25e57fe25d26f4d755b8915e13b5c34e320d902f365f64a905feaf10a30d"
  },
  {
   "file": "intake-receipt.md",
   "role": "The download receipt, frozen at acquisition: what was fetched, from where, and what each response carried.",
   "media_type": "text/markdown",
   "bytes": 9202,
   "sha256": "de243fb0d210bbc2437272c9ae9412b3aaceec56679eabdc517a1e4ab18a1368",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 1
   },
   "identical_to_original": false,
   "sha256_before_projection": "a6e4b40b445af2e5b122c8a2de8eb45232a3e1984436760fa5ab43c2085cd2fa"
  },
  {
   "file": "licence-census.json",
   "role": "The licence re-read that produced the second cut: all 574 tracks of the pool checked against the live catalogue seven years after the snapshot, one row each, with the licence the snapshot recorded, the licence the catalogue serves now, whether the track is there at all, and the UTC moment each was read.",
   "media_type": "application/json",
   "bytes": 294585,
   "sha256": "c98ca262af5f9e108aaf19a4d435472774f73123a1442cf240e13eefb6e6cb1a",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 1
   },
   "identical_to_original": false,
   "sha256_before_projection": "597f53a1e8519718f241a81f3687f8e810fdac203450ebc40f070fcfd007bf4e"
  },
  {
   "file": "listener-answers-raw-2026-09-06.txt",
   "role": "The listener's answers exactly as typed, in the order he typed them, batch by batch, with his own running tallies — recorded before the key was opened. Only the line naming him was projected; not one answer was touched.",
   "media_type": "text/plain",
   "bytes": 2748,
   "sha256": "e10ee738c0f02c0fd63042bd2945216b5240f352532aa9d56462372f7ad6eeb2",
   "stripped": [
    "person-to-role"
   ],
   "strip_counts": {
    "person-to-role": 1
   },
   "identical_to_original": false,
   "sha256_before_projection": "3a79bb6133a4dabab66a143e7872e71d64569b7c43fe5c4fdec52fd20b1b5175"
  },
  {
   "file": "near-duplicate-scan.json",
   "role": "The cross-split near-duplicate scan: every (held-out, training) pair below the first percentile of the training set's own distance distribution, named rather than assumed absent.",
   "media_type": "application/json",
   "bytes": 27814,
   "sha256": "343a747356bf988afcc46332e9b17b60e8c3efcf9c10e2dff4c86a99a60dfd15",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "343a747356bf988afcc46332e9b17b60e8c3efcf9c10e2dff4c86a99a60dfd15"
  },
  {
   "file": "preprocess.log",
   "role": "The preprocessing pass's own log start to finish, with the settings it printed for itself and the 331 it wrote.",
   "media_type": "text/plain",
   "bytes": 1290,
   "sha256": "12e5abf10af27b4272a21ccbac05ea6fb9a8e027ea6a486b375c0a16341eed0a",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 7
   },
   "identical_to_original": false,
   "sha256_before_projection": "5c8c121ad91a0ba382d14f4102e3cc6b5629aed99048848e2911e52658b49572"
  },
  {
   "file": "ranged-walk.log",
   "role": "The walk's own log: every archive opened, every member placed, every digest checked, start to finish.",
   "media_type": "text/plain",
   "bytes": 107528,
   "sha256": "22330e49236db2ee0b9591977db45f2d8b763fb87b22b648911fead13c7404b6",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 2
   },
   "identical_to_original": false,
   "sha256_before_projection": "a0d4c5b57cb2875acd71f046ef275548569e88f826964b92271a90c51ea45b28"
  },
  {
   "file": "ranged-walk.py",
   "role": "The walk itself, verbatim: the ranged reads, the stop rule, the per-file verification against the dataset's published digest, and the resume state.",
   "media_type": "text/x-python",
   "bytes": 15756,
   "sha256": "d528c8acee1d04e6163c779632ee1c38f5d015da154921928cc26b2b9f53bda2",
   "stripped": [
    "host-to-role"
   ],
   "strip_counts": {
    "host-to-role": 2
   },
   "identical_to_original": false,
   "sha256_before_projection": "f329fab95b485f6d9828f85ce9a08c18fcf9caf06bedfd34c153a39f2faeac72"
  },
  {
   "file": "relicensed-excluded.jsonl",
   "role": "The seventeen tracks that left the corpus because their artists have since chosen a more restrictive licence: the old licence, the new one, the URL each was read from, the UTC moment it was read, and the ruling that dropped them.",
   "media_type": "application/x-ndjson",
   "bytes": 8690,
   "sha256": "6ca6bfee00d53b185bf5adf4ec065af042c7d69cafdd9ccd5a2facf536748a5b",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "6ca6bfee00d53b185bf5adf4ec065af042c7d69cafdd9ccd5a2facf536748a5b"
  },
  {
   "file": "run-timeline.json",
   "role": "The run's own clock, read off the stamp files the runbook writes either side of each stage, with the durations those stamps imply and nothing else.",
   "media_type": "application/json",
   "bytes": 1479,
   "sha256": "b9e45e6eb0aec06e2ec9efa3032c7a17916bdffd7119a35d9dd37651c26d7e5a"
  },
  {
   "file": "s-per-step.md",
   "role": "The three instruments that report seconds per optimiser step, all three numbers, the denominator each counts, and which one the lab's ledger marks authoritative — plus the trainer banner's fourth reading, named so it does not ambush anyone.",
   "media_type": "text/markdown",
   "bytes": 3507,
   "sha256": "57783d719e46d25919a07af71cd1c7158706f716c5a75a563ea6ab0fe8a1758f"
  },
  {
   "file": "score-sitting.py",
   "role": "The join, as executable code: it reads the sealed key and the listener's answers, prints both files' digests, and derives every count the page states about the sitting. No tally in this kit is typed.",
   "media_type": "text/x-python",
   "bytes": 6979,
   "sha256": "570c5e3728e9ec7381f9dbe1b6fda956f24181968af98db06784053f3895182d"
  },
  {
   "file": "sitting-scored.json",
   "role": "The output of score-sitting.py, committed so a reader who does not run it still has the numbers: the scoring trials, the directional answers by arm, the sentinels, the adapter's four wins with the style each request asked for, and the subgroup for the four requests that ask for house.",
   "media_type": "application/json",
   "bytes": 2564,
   "sha256": "fcb8df5a5ee1876cc965eb5e78a1724c68c0184d8f36bc09b3a2307ee90c4df8"
  },
  {
   "file": "split-rule.py",
   "role": "The holdout rule as an executable pure function — the one implementation the freeze and any dry run share, so the split cannot disagree with itself.",
   "media_type": "text/x-python",
   "bytes": 9181,
   "sha256": "ca32d504bff9639d6ab4fffda03594254c7a46c29245a38775f8afcd1ccb475b",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "ca32d504bff9639d6ab4fffda03594254c7a46c29245a38775f8afcd1ccb475b"
  },
  {
   "file": "split.json",
   "role": "The split as frozen: the rule verbatim, the caption rule, the per-artist walk that chose the held-back side, the arithmetic, the registered faults, and the 331 training and 85 held-out track ids by name.",
   "media_type": "application/json",
   "bytes": 45583,
   "sha256": "1f829dd6b7979287e0de9a77b8facf8f73cc81215b6b4aad4412db193b550a13",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 2
   },
   "identical_to_original": false,
   "sha256_before_projection": "3e1a1c25eb324e1fe81e35e0b21127fad093589517bb23226f9bf4a1590c0eb9"
  },
  {
   "file": "style-excluded.jsonl",
   "role": "The 141 tracks the style fence removed, one row each: the genre tags they carried, which out-tag removed them, the licence, the duration and the ruling.",
   "media_type": "application/x-ndjson",
   "bytes": 55295,
   "sha256": "46c55b5d5c992a7dbc385d586fda0bb787a4493ac2c7f1dadb9a747329e811cb",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "46c55b5d5c992a7dbc385d586fda0bb787a4493ac2c7f1dadb9a747329e811cb"
  },
  {
   "file": "tag-words.json",
   "role": "The de-camelisation table the caption template applies, 135 mappings across genre, instrument and mood. A tag absent from it is a hard error rather than a silent pass-through.",
   "media_type": "application/json",
   "bytes": 4525,
   "sha256": "a2b9de3bbe0f84fd65dd9e66efcb2aa9a29ab7dd57bebb2c21b6692f429109e0",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 1
   },
   "identical_to_original": false,
   "sha256_before_projection": "dc949cb14ebace0db796612c43d4f36de47753ae5d0ceab2e39967f58b046d68"
  },
  {
   "file": "train-events.tfevents",
   "role": "The training run's TensorBoard event file, exactly as the trainer wrote it: the learning-rate and loss scalars every ten steps, and the per-layer gradient norms every fifty. train-lr-series.csv is read out of this file.",
   "media_type": "application/octet-stream",
   "bytes": 427694,
   "sha256": "3366cfad012ec273f2c7774361e8a4c7b44dd30f428956f5afcbf47ade31a462",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "3366cfad012ec273f2c7774361e8a4c7b44dd30f428956f5afcbf47ade31a462"
  },
  {
   "file": "train-launch.sh",
   "role": "The launch line, verbatim — every flag the run was given, including the 100 warmup steps it asked for and did not get.",
   "media_type": "text/x-shellscript",
   "bytes": 1337,
   "sha256": "05541cf85ea15ecd802a9e621e0f90d0b0eb8e76d8f1ccb7e6c97de80f62b4e4",
   "stripped": [
    "host-to-role",
    "identity-withheld",
    "path-to-role"
   ],
   "strip_counts": {
    "host-to-role": 1,
    "identity-withheld": 1,
    "path-to-role": 5
   },
   "identical_to_original": false,
   "sha256_before_projection": "cac0000109966d0773f6f4a0fb304346a9b9324609e2d7b19fd0e557f76c673f"
  },
  {
   "file": "train-lr-series.csv",
   "role": "The learning-rate series the warmup figure was read from, with the loss logged beside it: 41 rows, one per logged step, each with its UTC stamp. Derived from train-events.tfevents; README.md gives the arithmetic that puts the peak at step 41.",
   "media_type": "text/csv",
   "bytes": 3006,
   "sha256": "45a58d7ffe52bbba13b309b8cbc0d6916858e2fa298c8ebf14d773227ee72358"
  },
  {
   "file": "train-vram.log",
   "role": "The card sampler's 60-second readings across the training window: memory used and free, utilisation, temperature, power draw against the 250 W cap, and host RAM — plus the line that says the sampler stopped when its subject did.",
   "media_type": "text/plain",
   "bytes": 3661,
   "sha256": "94659f5b98680a43378086494db0c556a9e3acba8f92eb9e607b3c861ff4dc98",
   "stripped": [],
   "strip_counts": {},
   "identical_to_original": true,
   "sha256_before_projection": "94659f5b98680a43378086494db0c556a9e3acba8f92eb9e607b3c861ff4dc98"
  },
  {
   "file": "train.log",
   "role": "The trainer's own log start to finish: the configuration it printed for itself, the five per-epoch lines, the five checkpoint writes, and the Training Complete banner. Filesystem paths projected; the card named.",
   "media_type": "text/plain",
   "bytes": 10811,
   "sha256": "9a90d8385092e0b160e8ee0f9afff5a1b22986b48d5d9d55b07287aded5853b4",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 23
   },
   "identical_to_original": false,
   "sha256_before_projection": "4a1594f1433c7ece50f927804b33ab520ad72bc72d276c6fe97e7d9861a1d2cb"
  },
  {
   "file": "walk-receipt.txt",
   "role": "The walk's start and finish lines: what was already on disk, the rate it held itself to, and the counts it finished on.",
   "media_type": "text/plain",
   "bytes": 369,
   "sha256": "ab5556143c1987366a4d96a37755ab010c35b089aec5925917ef60ad5a88871e",
   "stripped": [
    "path-to-role"
   ],
   "strip_counts": {
    "path-to-role": 2
   },
   "identical_to_original": false,
   "sha256_before_projection": "0425ec6e86db9f2a7347fcafc8944ab5edee29ea01b911e3a0418f06beb8e837"
  }
 ]
}