{
  "note": "Raw sm-sfx output (cfg 3, negative prompt on) measured in 10 ms blocks; 'content ends' = last block above -70 dBFS. The model ends every clip with digital silence (about -95 dBFS) whose length changes with the requested duration, so the old loop builder (which used the last 0.25 s as its overlap) looped a hole. 2026-10-05.",
  "requestedSeconds_contentEnds_silentTailSeconds": [
    [6.25, 6.25, 0.0],
    [10.25, 10.03, 0.22],
    [15.25, 13.9, 1.35],
    [20.25, 19.5, 0.75],
    [21.25, 20.08, 1.17],
    [22.25, 21.36, 0.89],
    [30.0, 29.9, 0.1],
    [45.25, 44.87, 0.38],
    [63.0, 62.54, 0.46]
  ],
  "amberGateBedSeam": {
    "note": "100 ms RMS in dBFS around the loop point, amb-amber-gate.mp3",
    "before": {
      "first1s": [-43.0, -34.0, -29.4, -31.3, -29.4, -28.6, -27.5, -27.9, -29.3, -27.6],
      "last1s": [-29.3, -30.9, -30.0, -29.8, -32.3, -77.8, -77.1, -77.3, -77.3, -77.3]
    },
    "after": {
      "first1s": [-32.7, -36.2, -33.6, -33.9, -32.5, -35.0, -37.1, -37.1, -28.5, -30.5],
      "last1s": [-31.2, -30.6, -30.0, -30.4, -30.4, -27.2, -27.7, -27.8, -28.8, -32.5]
    }
  },
  "fix": "tools/audio: trim the silent tail before building a loop, request +3 s, refuse a source that is still too short, and reject any finished loop whose first or last 100 ms sits more than 30 dB below the median 100 ms level (edge_dip_db)."
}
