# CosmicFest 2026-08-23 — recovered tracklist (ZOOM0067.MP3, 62:59)

**Not a verified tracklist.** Two independent lenses, reported with their evidence
so a wrong row is visible rather than laundered. PLN's ears remain the authority;
the gig-log that would have settled this never ran that night.

* **crossmatch** — window embeddings (MFCC+chroma+contrast) vs 30 prior renders of
  the same tracks from OPAL-26 and Montreuil-26. `sim` is a z-score against that
  track's own mean; `margin` is the gap to the runner-up. A thin margin means the
  palette matched but the track may not have.
* **locate** — Shazam-style landmark fingerprints of rare (df<=6) sample banks,
  filtered by offset consistency. Independent of crossmatch: different features,
  different reference material.

## The tracklist

| start | end | len | track | sim | margin | corroborated by locate |
|---|---|---|---|---|---|---|
| 0:00 | 5:04 | 304s | **bombe** | 2.33 | 0.67 | `diams_dj` @1:50 cons 0.85 (1056/1244) |
| 11:33 | 16:58 | 324s | **am_i_doing_it_right** | 1.76 | 0.87 |  |
| 18:13 | 22:32 | 259s | **you_my_sunshine** | 1.91 | 0.82 |  |
| 22:32 | 23:57 | 84s | **quand_on_decolle** | 1.45 | 0.87 |  |
| 24:17 | 26:42 | 144s | **blue_gold** | 1.32 | 0.58 |  |
| 29:57 | 31:17 | 79s | **blue_gold** | 0.66 | 0.44 | `rose` @31:20 cons 0.60 (545/905) |
| 31:27 | 35:46 | 259s | **take5_drops** | 1.91 | 0.58 | `take5` @35:20 cons 0.38 (171/454) |
| 35:36 | 37:21 | 104s | **piment_bresilien** | 2.26 | 0.83 | `take5` @35:20 cons 0.38 (171/454) |
| 38:31 | 41:41 | 189s | **piment_bresilien** | 1.83 | 1.19 |  |
| 42:06 | 44:35 | 149s | **ouais_je_funk** | 1.93 | 0.41 |  |
| 45:45 | 48:25 | 159s | **gimme_acid** | 2.17 | 0.48 |  |
| 48:25 | 51:20 | 174s | **punkachien** | 2.39 | 1.06 |  |
| 51:30 | 54:10 | 159s | **mafia** | 2.21 | 0.69 |  |
| 54:59 | 56:24 | 84s | **gimme_acid** | 1.57 | 0.46 | `love_parade` @56:10 cons 0.40 (114/286) |
| 57:29 | 60:29 | 179s | **vague_de_crime** | 2.15 | 0.82 | `love_parade` @56:10 cons 0.40 (114/286) |
| 61:39 | 62:59 | 79s | **revolution** | 2.15 | 0.48 |  |

⚠ = margin < 0.20, treat as a family not a name.

## locate anchors (independent lens)

| time | rare bank | implies track | offset consistency | agreeing/total |
|---|---|---|---|---|
| 1:50 | `diams_dj` | bombe_dj | 0.849 | 1056/1244 |
| 31:20 | `rose` | rose_rouge | 0.602 | 545/905 |
| 35:20 | `take5` | take_5_drops | 0.377 | 171/454 |
| 56:10 | `love_parade` | livecode_parade | 0.399 | 114/286 |

## Where the two lenses DISAGREE, and why

The disagreements are structural, not mysterious. `crossmatch` can only name a
track it holds a prior render of. Two banks that `locate` is confident about have
no render in either gig:

* **`rose` @31:20, consistency 0.602 (545/905)** — rose_rouge was played at OPAL
  nor Montreuil, so crossmatch labels that region from its nearest available
  reference instead. Trust locate here.
* **`love_parade` @56:10, consistency 0.399 (114/286)** — same: livecode_parade is
  a new track (its .tidal was CREATED in the CosmicFest prep commit eb9221d), so
  no prior render can exist. Trust locate.

That is also the fix for next time: render each new track once and the reference
set covers it forever.

## What this cannot tell you

* A track whose signature never sounded is invisible. Silence is not absence.
* Tracks sharing a palette will not separate — the cafe_* family is one timbre.
* `blue_gold` wins four short scattered segments with thin margins (0.11-0.44).
  That scatter is the signature of a FALLBACK, not a performance: material with no
  matching reference gets assigned to whatever is nearest. Read those as gaps.
* Segment edges come from a 45s median filter, so boundaries are +/- ~20s. They are
  not cut points. Use bounds.html and ears for that.
