{
 "schema_version": "1.0",
 "page_kind": "article",
 "pack_kind": "generate",
 "slug": "the-ceiling-is-not-the-corpus",
 "title": "The Ceiling Is Not the Corpus",
 "dek": "We trained a fifth adapter for ACE-Step, our text-to-music engine, on 416 Creative Commons house tracks — twice the last training set, measurably tighter, captioned from the artists’ own tags, the best pass shipped instead of the last — and then one of us listened blind to twenty-four pairs and still preferred the model untouched, on every request that asked for house. The last adapter of the series, and the page says why: the ceiling is the composition, not the corpus.",
 "published": "2026-09-09",
 "series": [
  "guide",
  "bench"
 ],
 "licence": "CC BY 4.0",
 "status": "pending-judge",
 "pack_note": "no judge is seated, so every chip is held",
 "notice": "items with published:false are held and are not this page's published words",
 "source": {
  "url": "https://research.strata2signal.com/the-ceiling-is-not-the-corpus/",
  "md_url": "https://research.strata2signal.com/the-ceiling-is-not-the-corpus/index.md",
  "md_sha": "13c7b29fc4e8d48b9593b4bc5742c1dcbf4238bb9db5ed8bb9211c293e91ed50",
  "html_sha": "95d9e35ba04d9d355a6303123f97cae5807f2e0a10a8d197f5d75efb12588912",
  "anchors_sha": "c64dd58650dae121a77be8fdbe6b625817eda149270abc77d4abdafff85e66f3"
 },
 "short": {
  "paragraph": "We trained a fifth adapter for ACE-Step, this time on house music - four hundred and sixteen Creative Commons tracks by ninety-five artists, twice the last training set, measurably tighter on the instrument we had sealed to measure it, captioned from the artists' own tags, the best training pass shipped instead of the last - and then one of us sat down blind with twenty-four pairs. The untouched model was preferred on eleven and the adapter on four; it needed eighteen to clear. On the four requests that asked for house by name, the untouched model won every time it could be told apart. The corpus was not the ceiling. What our listener heard as wrong is how the music is built - where it goes, what arrives and leaves - and that is not a layer an adapter of this kind can reach. Every clip plays on the companion page; every record is in the kit.",
  "from_dek": false,
  "counts": {
   "words": 5837,
   "minutes": 27,
   "tables": 3,
   "kit": true
  },
  "bullets": [
   {
    "text": "the quality floor for the adapter was set at 7.6527",
    "figure": "7.6527",
    "cite": "what-the-adapter-actually-did",
    "quote": "The untouched model scored 7.9527 on that instrument, putting the floor at 7.6527; the adapter's clips scored 7.9462 - six and a half thousandths below it and nowhere near the floor.",
    "span": [
     24138,
     24145
    ]
   },
   {
    "text": "the adapter's renders scored 7.9462",
    "figure": "7.9462",
    "cite": "what-the-adapter-actually-did",
    "quote": "The untouched model scored 7.9527 on that instrument, putting the floor at 7.6527; the adapter's clips scored 7.9462 - six and a half thousandths below it and nowhere near the floor.",
    "span": [
     24173,
     24180
    ]
   }
  ]
 },
 "sections": [
  {
   "id": "what-we-were-testing",
   "heading": "What we were testing",
   "level": 2,
   "span": [
    2245,
    4054
   ],
   "chunks": [
    [
     2245,
     4054
    ]
   ],
   "chars": 1809,
   "digest": "the authors tested an adapter for the ACE-Step 1.5 model to see if repairing a corpus would change the ear's verdict. after a previous minimal techno run failed, this fifth run aimed to fix faults in the corpus and recipe to see if the results would improve.",
   "digest_skipped": null
  },
  {
   "id": "four-hundred-and-sixteen-tracks",
   "heading": "Four hundred and sixteen tracks",
   "level": 2,
   "span": [
    4054,
    6940
   ],
   "chunks": [
    [
     4054,
     6940
    ]
   ],
   "chars": 2886,
   "digest": "the corpus consists of 416 tracks from the MTG-Jamendo dataset. after applying a style fence and removing tracks where artists had moved to more restrictive licences, the final set includes 35.1 hours of music from 95 artists.",
   "digest_skipped": null
  },
  {
   "id": "the-audio-came-the-slow-way-on-purpose",
   "heading": "The audio came the slow way, on purpose",
   "level": 2,
   "span": [
    6940,
    8491
   ],
   "chunks": [
    [
     6940,
     8491
    ]
   ],
   "chars": 1551,
   "digest": "to ensure byte-perfect accuracy, the authors performed a ranged walk to fetch audio from archives rather than using an API. this process involved 45,603 requests and transferred 6.2 gigabytes to secure the 574 tracks.",
   "digest_skipped": null
  },
  {
   "id": "the-other-corpus-and-why-it-isnt-here",
   "heading": "The other corpus, and why it isn't here",
   "level": 2,
   "span": [
    8491,
    10484
   ],
   "chunks": [
    [
     8491,
     10484
    ]
   ],
   "chars": 1993,
   "digest": null,
   "digest_skipped": "credits"
  },
  {
   "id": "what-the-captions-say",
   "heading": "What the captions say",
   "level": 2,
   "span": [
    10484,
    11695
   ],
   "chunks": [
    [
     10484,
     11695
    ]
   ],
   "chars": 1211,
   "digest": "captions use artists' own tags, including genre, instrument, and mood, but exclude titles, artists, tempo, and key. the tag vocabulary is thin, as nearly half the corpus contains only genre words.",
   "digest_skipped": null
  },
  {
   "id": "forty-minutes-on-a-card-bought-over-five-years-ago",
   "heading": "Forty minutes on a card bought over five years ago",
   "level": 2,
   "span": [
    11695,
    15338
   ],
   "chunks": [
    [
     11695,
     15338
    ]
   ],
   "chars": 3643,
   "digest": null,
   "digest_skipped": null
  },
  {
   "id": "the-corpus-really-was-tighter",
   "heading": "The corpus really was tighter",
   "level": 2,
   "span": [
    15338,
    18169
   ],
   "chunks": [
    [
     15338,
     18169
    ]
   ],
   "chars": 2831,
   "digest": null,
   "digest_skipped": "credits"
  },
  {
   "id": "the-blind-sitting",
   "heading": "The blind sitting",
   "level": 2,
   "span": [
    18169,
    21496
   ],
   "chunks": [
    [
     18169,
     21496
    ]
   ],
   "chars": 3327,
   "digest": "a blind listening test of 24 scored pairs showed no large effect in the adapter's favour. the listener preferred the untouched model in 11 cases and the adapter in 4 cases, with 9 instances of no preference.",
   "digest_skipped": null
  },
  {
   "id": "what-the-adapter-actually-did",
   "heading": "What the adapter actually did",
   "level": 2,
   "span": [
    21496,
    24349
   ],
   "chunks": [
    [
     21496,
     24349
    ]
   ],
   "chars": 2853,
   "digest": "the adapter lost every house prompt the listener could separate, though it won four requests for other genres. the adapter did not make the audio worse, passing a quality floor of 7.6527.",
   "digest_skipped": null
  },
  {
   "id": "what-this-page-does-not-claim",
   "heading": "What this page does not claim",
   "level": 2,
   "span": [
    24349,
    26419
   ],
   "chunks": [
    [
     24349,
     26419
    ]
   ],
   "chars": 2070,
   "digest": "the authors clarify that nothing in the article is a claim about captions, corpus size, or music models in general. they also report that the memorisation screen was computed as a description rather than a verdict.",
   "digest_skipped": null
  },
  {
   "id": "two-faults-in-our-own-listening-copies",
   "heading": "Two faults in our own listening copies",
   "level": 2,
   "span": [
    26419,
    29236
   ],
   "chunks": [
    [
     26419,
     29236
    ]
   ],
   "chars": 2817,
   "digest": "the authors disclose two faults in the listening copies: 38 of the 85 clips had not been turned up evenly, and renders of the same request at the same seed are not byte-identical across different machines.",
   "digest_skipped": null
  },
  {
   "id": "what-to-take-with-you",
   "heading": "What to take with you",
   "level": 2,
   "span": [
    29236,
    31558
   ],
   "chunks": [
    [
     29236,
     31558
    ]
   ],
   "chars": 2322,
   "digest": "the authors conclude that the adapter cannot fix track composition because composition lives in the planner, which the adapter does not reach. the adapter only patches the painting half of the engine.",
   "digest_skipped": null
  },
  {
   "id": "the-rest-of-the-seminar",
   "heading": "The rest of the seminar",
   "level": 2,
   "span": [
    31558,
    32526
   ],
   "chunks": [
    [
     31558,
     32526
    ]
   ],
   "chars": 968,
   "digest": null,
   "digest_skipped": "credits"
  },
  {
   "id": "how-to-check-our-work",
   "heading": "How to check our work",
   "level": 2,
   "span": [
    32526,
    34156
   ],
   "chunks": [
    [
     32526,
     34156
    ]
   ],
   "chars": 1630,
   "digest": null,
   "digest_skipped": "credits"
  },
  {
   "id": "who-ran-this-and-thanks",
   "heading": "Who ran this, and thanks",
   "level": 2,
   "span": [
    34156,
    36562
   ],
   "chunks": [
    [
     34156,
     36562
    ]
   ],
   "chars": 2406,
   "digest": null,
   "digest_skipped": "credits"
  }
 ],
 "chips": [
  {
   "id": "c-c426317b",
   "q": "what was the goal of this specific training run?",
   "a": "The researchers aimed to determine if repairing all common corpus faults—such as metadata errors, inconsistent licensing, and poor captioning—would result in a change in how the ear perceives the model's output.",
   "cites": [
    "what-we-were-testing"
   ],
   "published": false,
   "publish_state": "held",
   "quote": "",
   "quote_cite": ""
  },
  {
   "id": "c-f79ebff6",
   "q": "how many tracks were included in the final house music corpus?",
   "a": "The final corpus consists of 416 tracks, totaling 35.1 hours of audio, featuring 95 artists and a mix of 278 CC BY-SA and 138 CC BY licenses.",
   "cites": [
    "four-hundred-and-sixteen-tracks"
   ],
   "published": false,
   "publish_state": "held",
   "quote": "",
   "quote_cite": ""
  },
  {
   "id": "c-0183f9fc",
   "q": "how was the audio data retrieved from the dataset mirror?",
   "a": "The team used a ranged walk to read specific byte ranges from archives one connection at a time, ensuring every file matched the original SHA-256 checksums from the 2019 dataset.",
   "cites": [
    "the-audio-came-the-slow-way-on-purpose"
   ],
   "published": false,
   "publish_state": "held",
   "quote": "",
   "quote_cite": ""
  },
  {
   "id": "c-bc64853e",
   "q": "how are the tracks described in the training captions?",
   "a": "Captions use the artists' own tags, including genre, instrument, and mood, in an alphabetical, de-camelised format. They exclude titles, artist names, tempo, and key.",
   "cites": [
    "what-the-captions-say"
   ],
   "published": false,
   "publish_state": "held",
   "quote": "",
   "quote_cite": ""
  },
  {
   "id": "c-77758061",
   "q": "how many training passes were completed during the run?",
   "a": "The model read the 331 training tracks five times over, resulting in 415 small corrections. The third pass was selected as the shipped adapter.",
   "cites": [
    "forty-minutes-on-a-card-bought-over-five-years-ago"
   ],
   "published": false,
   "publish_state": "held",
   "quote": "",
   "quote_cite": ""
  },
  {
   "id": "c-2eb54db3",
   "q": "what was the result of the blind listening test?",
   "a": "The adapter did not clear the threshold. Out of 15 answered pairs, the listener preferred the untouched model 11 times and the adapter only 4 times.",
   "cites": [
    "the-blind-sitting"
   ],
   "published": false,
   "publish_state": "held",
   "quote": "",
   "quote_cite": ""
  },
  {
   "id": "c-33c7a754",
   "q": "how did the adapter perform on house music requests?",
   "a": "On the four requests specifically asking for house subgenres, the listener expressed a preference for the untouched model all five times recorded.",
   "cites": [
    "what-the-adapter-actually-did"
   ],
   "published": false,
   "publish_state": "held",
   "quote": "",
   "quote_cite": ""
  },
  {
   "id": "c-dea7f61d",
   "q": "what is the fundamental limitation of the adapter?",
   "a": "The adapter only patches the audio painting half of the engine. Because musical composition is handled by a separate planner, the adapter cannot improve the underlying arrangement of the tracks.",
   "cites": [
    "what-to-take-with-you"
   ],
   "published": false,
   "publish_state": "held",
   "quote": "",
   "quote_cite": ""
  }
 ],
 "related": [
  {
   "slug": "ten-minutes-with-living-artists",
   "why": "shares ground with § What the adapter actually did · § Twelve requests, four ways"
  },
  {
   "slug": "listen-for-yourself",
   "why": "shares ground with § What the adapter actually did · § What to listen for"
  },
  {
   "slug": "hear-it-for-yourself",
   "why": "shares ground with § The blind sitting · § The blind sheet, unsealed"
  }
 ],
 "thanks": "## Who ran this, and thanks {#who-ran-this-and-thanks}\n\nThe music first. Four hundred and sixteen tracks by ninety-five artists, licensed CC BY and CC BY-SA\nby the artists themselves on Jamendo and catalogued by the Music Technology Group at Universitat\nPompeu Fabra in the [MTG-Jamendo dataset](https://github.com/MTG/mtg-jamendo-dataset), where we read\nevery tag, licence and checksum, and whose mirror — served from Freesound's content network —\nanswered the archives our walk read from. The dataset itself is offered for non-commercial research\nand academic use, and its metadata under Attribution-NonCommercial-ShareAlike; this work is private\nresearch, and the audio's own licences are the artists'. Each track is credited by title, artist and licence in the\nkit. The share-alike terms travel with the adapter and with anything made from it. Seventeen further\ntracks are named in the credits as excluded, with the licences their artists have since chosen; they\nare not in the corpus and are not credited as though they were.\n\nThe engine: [ACE-Step 1.5](https://github.com/ace-step/ACE-Step-1.5), MIT-licensed — its row on our\n[licence ledger](/licences/). Its repository asks that AI involvement be disclosed, and every clip\nthis run produced is AI-generated and says so. The trainer:\n[Side-Step](https://github.com/koda-dernet/Side-Step), the corrected-timestep LoRA trainer vendored\ninside it, whose upstream licence is CC BY-NC-SA 4.0 while the vendored copy points at ACE-Step's\nMIT; we proceed on the stricter reading and have written to ask.\n\nThe instruments. The coherence bench ran on LAION's CLAP, the `laion_clap` package at 1.1.7 with the\n`lukewys/laion_clap` music checkpoint, whose licence file on disk reads CC0 1.0 — the same package\nand checkpoint the previous article pinned, so the two runs' numbers are comparable. The quality\nfloor ran on Meta's Audiobox-Aesthetics at 0.0.4, CC BY 4.0.\n\nBeneath all of it, the open tools this work stood on without modifying: PyTorch, Hugging Face's PEFT,\nNumPy, and FFmpeg, which decoded every training file, cut every crop, and measured every loudness\nfigure. Every fetch went out under a user agent that names us and says how to reach us:\n`strata2signal-research/1.0 (private research; contact via strata2signal.com)`.\n\nA small team and a fleet of AI agents did the work; the humans signed the numbers, and one human did\nall of the listening.",
 "kit": {
  "url": "https://research.strata2signal.com/the-ceiling-is-not-the-corpus/data/",
  "licence": "CC BY 4.0",
  "files": [
   "MANIFEST.sha256",
   "PREREG-HOUSE-ARMS.md",
   "README.md",
   "api-digest-check.json",
   "api-route-verdict.md",
   "archive-survey-verdict.md",
   "archive-survey.md",
   "blind-key.json",
   "caption-template.py",
   "captions-examples.txt",
   "coherence/RESULTS.md",
   "coherence/RESULTS.sha256",
   "coherence/corpus-crop.log",
   "coherence/corpus-crops.csv",
   "coherence/corpus-embed.log",
   "coherence/corpus-embeddings-index.csv",
   "coherence/corpus-embeddings.npz",
   "coherence/house-metrics.json",
   "coherence/house-render-metrics.json",
   "coherence/house_metrics.py",
   "coherence/house_render_metrics.py",
   "coherence/plan_house_crops.py",
   "coherence/render-centroid.csv",
   "coherence/render-crops.csv",
   "coherence/render-embeddings-index.csv",
   "coherence/render-embeddings.npz",
   "coherence/render-pairs.csv",
   "coherence/screen.py",
   "companion/gain-probe.json",
   "companion/master-records.json",
   "companion/records.json",
   "corpus-manifest.jsonl",
   "corpus-manifest.sha256",
   "corpus-provenance.md",
   "credits.md",
   "dataset.json",
   "fence-report.json",
   "freeze-receipt.json",
   "freeze-receipts.md",
   "house-wide-fence.json",
   "intake-receipt.md",
   "licence-census.json",
   "listener-answers-raw-2026-09-06.txt",
   "near-duplicate-scan.json",
   "preprocess.log",
   "ranged-walk.log",
   "ranged-walk.py",
   "relicensed-excluded.jsonl",
   "run-timeline.json",
   "s-per-step.md",
   "score-sitting.py",
   "sitting-scored.json",
   "split-rule.py",
   "split.json",
   "style-excluded.jsonl",
   "tag-words.json",
   "train-events.tfevents",
   "train-launch.sh",
   "train-lr-series.csv",
   "train-vram.log",
   "train.log",
   "walk-receipt.txt"
  ]
 },
 "seat_class": {
  "writer": "gemma-class",
  "judge": null,
  "writer_runtime": "vllm"
 },
 "bench": {
  "bullets_written": 3,
  "bullets_kept": 2,
  "digests_written": 10,
  "digests_kept": 9,
  "chips_written": 8,
  "chips_kept": 8,
  "chips_grounded": 0,
  "chips_published": 0,
  "dropped_by": {
   "new_noun": 0,
   "figure": 0,
   "length": 0,
   "cite": 0,
   "judge": 0,
   "quote": 0,
   "directive": 0,
   "redaction": 2,
   "profanity": 0
  },
  "new_noun_tokens_checked": [
   "1.5",
   "11",
   "128",
   "138",
   "15",
   "2019",
   "24",
   "278",
   "3090",
   "331",
   "35.1",
   "38",
   "39",
   "4",
   "41",
   "415",
   "416",
   "45",
   "56",
   "574",
   "6.2",
   "603",
   "64",
   "7.6527",
   "7.9462",
   "85",
   "9",
   "95",
   "ACE-Step",
   "API",
   "BY-SA",
   "CC",
   "LoRA",
   "MTG-Jamendo",
   "SHA-256"
  ],
  "new_noun_tokens_withheld": 2,
  "figure_definition": "v3",
  "drops": [
   {
    "kind": "digest",
    "reason": "redaction",
    "item": null,
    "item_chars": 201,
    "withheld": "a string carrying a fenced literal",
    "detail": ""
   },
   {
    "kind": "bullet",
    "reason": "redaction",
    "item": null,
    "item_chars": 51,
    "withheld": "a string carrying a fenced literal",
    "detail": ""
   }
  ]
 },
 "generated_utc": "2026-09-09T05:06:45Z",
 "meta_refreshed_utc": "2026-09-10T10:17:31Z"
}
