Structure discovery — AABA form via beat-synced chroma → recurrence + agglomerative

A 16 s AABA clip (A = C-major triad texture, B = F♯-major — disjoint pitch classes — over a 120 BPM click layer) runs the real-audio pipeline: beat_trackfeature.chroma_stftsync (beat-synchronous chroma) → segment.recurrenceMatrix (affinity, cosine, sym) → segment.agglomerative(k=3). The known section grid (A|A boundary at 4 s is feature-invisible — identical texture — so the detectable boundaries are 8 s and 12 s) gates the badges.

Honest scope note: this is the recurrence + agglomerative slice of the McFee–Ellis Laplacian method. The complete method additionally needs a normalized graph Laplacian, a symmetric eigensolver, and k-means — none of which exist in pleco yet (ledgered as missing, not faked).

beat-synced chroma (12 × beat segments) with detected boundaries + section labels

recurrence matrix (affinity, cosine, sym) — A↔A repeats light up off-diagonal