{
  "_comment": [
    "PLN's ear-verified boundary corrections for OPAL-26 v4, 2026-08-16.",
    "GROUND TRUTH. Two automated detectors were validated against these and both",
    "failed (cuts verify passed 3 of them wrongly; cut_lens.py missed by a median",
    "24s). Do not overwrite these with a detector's output.",
    "Times are absolute MASTER time in seconds. `start` corrections only; ends",
    "follow from the next track's start since the set is butt-joined.",
    "Source: decisions-opal-festival-2026.json comments + follow-up messages."
  ],
  "gig": "opal-festival-2026",
  "verified": {
    "3": {
      "start": 893.0,
      "note": "WAP bass bleeds ~1.5s, silence, real start 0:03; END misses the last note"
    },
    "4": {
      "start": 1118.4,
      "note": "4s too much at start; Sunshine begins at 7:15 inside this track"
    },
    "5": {
      "start": 1549.4,
      "note": "missing its head (it is inside #4); ends abrupt"
    },
    "6": {
      "start": 1808.1,
      "note": "sunshine bass still present; clear bass-texture change at 0:10"
    },
    "7": {
      "start": 2248.8,
      "note": "first 21s are still Take Five Drops \u2014 the xfade"
    },
    "9": {
      "start": 2954.4,
      "note": "CORRECT as-is: 'perfect starts perfect'"
    },
    "10": {
      "start": 3269.0,
      "note": "opens on a Perfect sound; real Gimme Acid at 0:16.7"
    },
    "8": {
      "start": 2726.4,
      "note": "piment until 0:02, xfade starts, but unfortunate MIDI events make a clean single start only at 0:06.4; PLN also floats xfading it ourselves from 0:10.9 in postprod",
      "alt_start": 2730.9,
      "alt_note": "0:10.9 \u2014 only if we craft our own crossfade"
    },
    "1": {
      "start": 1.45,
      "note": "GO, but 'trim leading silence tho' (PLN). The amount is now MEASURED, not detected: the head is literal digital silence \u2014 every sample is exactly zero up to sample 64038 (= 1.452109 s @ 44.1 kHz), and the first audible frame peaks at -28 dBFS. Cutting at 1.45 keeps a ~2 ms guard before the first transient so the attack cannot be clipped.",
      "measured": {
        "first_nonzero_sample": 64038,
        "first_nonzero_s": 1.452109,
        "all_zero_before": true,
        "source": "tracks_v4_streaming/01 - Ceci n'est pas Une Bombe.flac",
        "method": "sample-exact scan; NOT a threshold and NOT a detector estimate",
        "date": "2026-08-16"
      }
    },
    "11": {
      "start": 3557.33,
      "note": "takeover is the right cut time here. \u2014 ear call via boundary lab 2026-08-16 (source: playhead); machine takeover 3557.2 was +0.13s"
    },
    "12": {
      "start": 3681.76,
      "note": "release-check 2026-08-16: PLN marked the seam 1.66s late and confirmed 'move the cut 1.66s later'. Was 3680.10 (his earlier call of `mid`); heard again in context as a seam, it wants 1.66s more of Ghosts."
    },
    "13": {
      "start": 3887.25,
      "note": "ear call via boundary lab 2026-08-16 (source: playhead)"
    },
    "15": {
      "start": 4547.57,
      "note": "ear call via boundary lab 2026-08-16 (source: playhead)"
    },
    "14": {
      "start": 4166.3,
      "note": "PLN 2026-08-16 in the boundary lab: '00:31:3 is a decent end of crimewave to cut early on end of the crime sound'. Read off the transport, which shows CLIP time; #14's clip starts at 4135.0, so 31.3 -> master 4166.3. This is the END of #13 Vague de CRIME, not a track start: Desire is cut from the release. Audio agrees: the crime sound gaps to -71 dB at 4164.5, and 4166.3 sits just past that on its decay, 13.7 s earlier than the nominal 4180.0.",
      "is_end_of": 13
    }
  },
  "unjudged": [],
  "release_signoff": {
    "date": "2026-08-16",
    "by": "PLN",
    "method": "by ear, on the RENDERED files via bounds.html?set=opal-festival-2026-release",
    "quote": "listened to 13... perfect end for crime. revolution starts good. listened to 99... all good perfect ending!",
    "confirms": [
      "seam 13 CRIME->REVOLUTION, with the 1s duck to 50% AND the 2.0s rest",
      "the close, with the MORE reverb tail (650ms top tap) baked in"
    ],
    "segments": "segments_v4.json",
    "why_it_matters": "Both clips were audio BUILT FROM his approvals, not audio he had approved. The rest and the MORE tail existed only as instructions until this listen. Nothing may be uploaded from a render that postdates this signoff without a fresh one — re-run render_release + build_release_joins and get the ear again."
  },
  "cut_from_release": {
    "14": {
      "title": "Desire",
      "note": "PLN 2026-08-16, CONFIRMED: 'i confirm skip desire stronger set without'. #13 Vague de CRIME becomes the last OFFICIAL track; #15 REVOLUTION remains the Encore (its section in tracks.json). Release is 14 tracks."
    }
  },
  "edits": {
    "1": {
      "end": 530.35,
      "why": "PLN: 'can trim silence to 1s silence from 00:17 to the seam'. Measured: audible material ends 527.90 (track time), then 2.0s of -60..-100 dBFS. Ending at 528.90 leaves exactly 1s."
    },
    "2": {
      "end": 892.955,
      "fade_out_s": 0.03,
      "why": "PLN: 'sound just at seam ... is an error can we fade-in to hide it?'. Measured at 10ms resolution: WAP's last 40ms jump -57 -> -15 dBFS \u2014 a sound truncated mid-decay. An 80ms fade only got it to -26.8 dB (verified by ratio against the unfiltered master), i.e. hidden, not gone. Dropping the burst outright (end 45ms early) removes it; the 30ms fade then keeps the new edge from clicking in turn. Drums still starts at 893.00, so the 45ms is dropped from the record rather than handed to the next track."
    },
    "13": {
      "end": 4156.3,
      "fade_out_s": 1.0,
      "fade_out_to": 0.5,
      "pad_end_s": 2.0,
      "why": "PLN on the CRIME->REVOLUTION seam: 'cut at 0:10 its better. have fade from 0:09 to 0:10 from 100 to 50% to lower the sudden cut'. Clip 0:10 = master 4156.30, i.e. 10.0s earlier than the old end. Then 2026-08-16, having heard it: 'approved #13 seam, but lets add after seam 2s silence in crime file, then seam is start of REVOLUTION' -> pad_end_s 2.0. This is a REST, not a trim artefact: the 2s belongs to CRIME (it ships inside track 13, and inside the continuous mix at the same place), so the last official track ends on its own silence and the encore starts clean. Note the ducked fade is kept AND the silence added — the duck softens the cut, the rest separates the encore; they answer different complaints."
    },
    "15": {
      "start": 4566.47,
      "fade_in_s": 2.0,
      "end": 4771.37,
      "why": "PLN: 'start revolution at 0:38:9 on a fade of the drums to not be so sudden' -> clip 38.9 = 18.9s into REVOLUTION = master 4566.47. And 'end at 0:15' on the close clip = master 4771.37 (-15.0s). 'maybe with reverb over last 5s so we hear it slightly echo as last sound' -> A/B rendered (dry / subtle / more). PLN first said 'pick subtle', then after living with the record: 'allez lets use the B version, the more option' (2026-08-16) -> MORE. The preset is the SAME table the A/B used, so what ships is what he heard.",
      "reverb_tail_s": 5.0,
      "reverb_preset": "more"
    }
  },
  "_edits_comment": [
    "`edits` are per-track and DESTRUCTIVE to the timeline: an `end` here drops",
    "audio rather than handing it to the next track, so a gap opens and the",
    "continuous mix must skip it too. A boundary MOVE belongs in `verified`.",
    "Keeping the two apart is the whole point \u2014 confusing them silently gives a",
    "neighbour a second of someone else's silence."
  ]
}
