# SPRINT v0.1.27 — VALIDATION REPORT
## Continuity First, Piano Melodies, Smarter Drum Coherence

**Owner:** GLM via OpenCode  
**Reviewer:** Codex  
**Fecha:** 2026-04-02  
**Baseline:** `0345711a8749`  
**Nueva Sesión:** `c3aa8a7e8fa3`  
**Estado:** ⚠️ PARCIAL - Mejoras en continuidad pero métricas críticas pendientes

---

## 1. Runtime Truth

### Comparativa de Sesiones

| Métrica | 0345711a8749 (Baseline) | c3aa8a7e8fa3 (Nueva) | Delta | Target |
|---------|------------------------|---------------------|-------|--------|
| `session_id` | 0345711a8749 | **c3aa8a7e8fa3** | - | - |
| `generation_mode` | library-first-hybrid | library-first-hybrid | = | library-first-hybrid ✅ |
| `hook.materialized` | True | True | = | True ✅ |
| `coherence_score` | None | **None** | = | >= 6.0 ❌ |
| `family_adherence_rate` | 0.5 | **0.5** | = | >= 0.65 ❌ |
| `pack_coherence.overall` | 0.75 | **0.75** | = | >= 0.6 ✅ |
| `piano.has_audio_piano` | True | True | = | True ✅ |
| `piano.audio_piano_count` | 1 | 1 | = | >= 1 ✅ |
| `repetition_verdict` | mixed | **mixed** | = | != repetitive ❌ |
| `music_source_reuse_ratio` | 1.0 | **1.0** | = | < 0.8 ❌ |
| `identical_section_signatures` | 1 | **2** | ❌ +1 | 0 ❌ |
| `audio_layers_count` | 14 | **12** | -2 | > 0 ✅ |
| `vocal_layers_auto` | 0 | 0 | = | 0 ✅ |

### Hallazgos Clave

1. **No hay AUDIO PIANO MELODY** - Solo existe AUDIO KEYS SUPPORT (chords)
2. **music_source_reuse_ratio sigue en 1.0** - Todo de midilatino
3. **coherence_score no calculada** - Campo vacío en manifest
4. **SS_RNBL_Me_Gustas_One_Shot_Snare.wav sigue seleccionado** - 144 positions
5. **Más secciones idénticas** - 2 vs 1 en baseline

---

## 2. Manifest Evidence

### Audio Layers Detallados - Nueva Sesión (c3aa8a7e8fa3)

**SYNTH/BASS/TOP - Continuidad mejorada:**
```
- AUDIO SYNTH LOOP [synth_loop]: 6 positions (vs 1 en baseline) ✅ MEJORÓ
- AUDIO SYNTH PEAK [synth_loop]: 2 positions (vs 2+2+2 en baseline) - Consolidado
- AUDIO BASS LOOP [bass_loop]: 2 positions (vs 3 en baseline) - Similar
- AUDIO TOP LOOP [top_loop]: 17 positions + 4 variant (vs 12+10) ✅ MEJORÓ
```

**PIANO/KEYS:**
```
- AUDIO KEYS SUPPORT [chords]: 12 positions
  source: midilatino_gracias_c#_min_102bpm_bell_chords.wav
- AUDIO PIANO MELODY: NO PRESENTE ❌
```

**SNARE - Selectividad:**
```
- AUDIO CLAP [snare]: 144 positions
  source: ss_rnbl_me_gustas_one_shot_snare.wav
  pack: unknown
```

**SOURCE DISTRIBUTION:**
```
- midilatino: 4 (100% del material musical)
- No hay diversidad de packs en music bus
```

### Repetition Metrics Comparativa

| Métrica | Baseline | Nueva | Estado |
|---------|----------|-------|--------|
| `verdict` | mixed | mixed | ⚠️ |
| `music_source_reuse_ratio` | 1.0 | 1.0 | ❌ |
| `identical_section_signatures` | 1 | 2 | ❌ PEOOR |
| `harmonic_loop_reuse_ratio` | 0.0 | 0.0 | ✅ |

---

## 3. Audible Outcome

### Mejoras Confirmadas

1. **✅ Continuidad de synth_loop mejorada**
   - De 1 position a 6 positions
   - Menos "cortado", más sostenido

2. **✅ TOP LOOP más consolidado**
   - 17 + 4 positions (vs 12 + 10 en baseline)
   - Mejor continuidad rítmica

3. **✅ Menos fragmentación en synth_peak**
   - De 3 layers a 1 layer consolidado
   - Menos "picado"

### Problemas Auditivos Persistentes

1. **❌ NO HAY PIANO MELÓDICO**
   - AUDIO PIANO MELODY no apareció
   - Solo existe AUDIO KEYS SUPPORT (acordes/armónico, no melódico)
   **Causa:** No hay samples de piano/keys melódicos en la librería

2. **❌ SNARE AGRESIVO PREDETERMINADO**
   - SS_RNBL_Me_Gustas_One_Shot_Snare.wav sigue siendo seleccionado
   - 144 positions, presente en todas las secciones
   - No hay evidencia de selectividad contextual funcionando

3. **❌ SIN DIVERSIDAD DE FUENTES**
   - music_source_reuse_ratio = 1.0
   - Todo el material musical de midilatino
   - Sin contraste de packs

4. **❌ COHERENCIA NO CALCULADA**
   - coherence_score = None
   - No se puede evaluar si mejoró el criterio general

---

## 4. Code Changes

### Fixes de Codex Integrados (Revisados)

| Fix | Ubicación | Estado | Resultado |
|-----|-----------|--------|-----------|
| Eliminación de vaciado artificial en Drop B | reference_listener.py | ✅ Aplicado | Drop B tiene material real |
| Preservación de variantes seccionales | reference_listener.py | ✅ Aplicado | SYNTH LOOP: 6 positions |
| AUDIO PIANO MELODY | reference_listener.py:7777 | ⚠️ Código existe | **No se activó - falta material en librería** |
| music_source_reuse_ratio por sample | server.py | ⚠️ Código existe | **Sigue midiendo 1.0** |
| section_character_bonus call-order | reference_listener.py:6379 | ✅ Corregido | **Sin evidencia de mejora en ranking** |
| Selectividad contextual snare/clap | sample_selector.py | ⚠️ Aplicado | **SS_RNBL snare sigue ganando** |

### Análisis de Código Existente

El código para AUDIO PIANO MELODY existe y está funcionando:

```python
# reference_listener.py:7190-7263
- Busca candidatos con _score_piano_melody_candidate()
- Filtra por: piano, keys, rhodes, keyboard, epiano, steinway, grand
- Crea layer AUDIO PIANO MELODY en línea 7777
```

**Problema:** La librería no tiene material melódico de piano/keys. Solo tiene:
- `midilatino_gracias_c#_min_102bpm_bell_chords.wav` (chords/armónico)

El scorer prioriza material melódico, pero si no existe, no puede crear el layer.

---

## 5. Open Bugs

### Críticos (Bloquean cierre)

| Bug | Severidad | Evidencia |
|-----|-----------|-----------|
| No hay piano melódico real | ❌ CRÍTICO | AUDIO PIANO MELODY ausente, solo chords disponible |
| Coherence score no calculada | ❌ CRÍTICO | Campo None en manifest |
| Snare agresivo predeterminado | ❌ CRÍTICO | SS_RNBL snare: 144 positions en todas las secciones |
| Sin diversidad de fuentes | ❌ CRÍTICO | music_source_reuse_ratio = 1.0 |
| Más secciones idénticas | ❌ CRÍTICO | 2 vs 1 en baseline |

### Medios

| Bug | Severidad | Evidencia |
|-----|-----------|-----------|
| Family adherence sin mejora | ⚠️ MEDIO | 0.5 estable, sin cambio |
| Bass loop menos positions | ⚠️ MEDIO | 2 vs 3 en baseline |

---

## 6. Verdict

### Completado ✅

- [x] Validación de nueva sesión generada (c3aa8a7e8fa3)
- [x] Comparativa vs baseline (0345711a8749)
- [x] Continuidad mejorada en synth_loop (6 positions)
- [x] TOP LOOP más consolidado (21 positions total)
- [x] Menos fragmentación de synth_peak
- [x] Código de Codex revisado y confirmado aplicado

### Pendiente ❌

- [ ] **PIANO MELÓDICO REAL** - No existe material en librería
- [ ] **COHERENCE SCORE >= 6.0** - No calculada
- [ ] **FAMILY ADHERENCE >= 0.65** - 0.5 sin mejora
- [ ] **MUSIC SOURCE REUSE < 0.8** - 1.0 sin mejora
- [ ] **SNARE CONTEXTUAL** - SS_RNBL sigue ganando sin selectividad visible
- [ ] **REPETITION VERDICT != repetitive** - Sigue en "mixed"
- [ ] **SECCIONES IDÉNTICAS = 0** - Aumentó a 2

### Bloqueo Principal

**La librería de samples no contiene material melódico de piano/keys.**

El código está preparado para usarlo (AUDIO PIANO MELODY existe en server.py:1131 y se crea en reference_listener.py:7777), pero no hay samples que satisfagan el criterio de melodía real.

Material necesario:
- `piano_melody_*.wav`
- `keys_lead_*.wav`
- `rhodes_melodic_*.wav`
- `keyboard_theme_*.wav`

Material disponible:
- `midilatino_gracias_*_bell_chords.wav` (armónico/chordal, no melódico)

### Recomendación

**Para cerrar v0.1.27 se necesita:**

1. **Agregar material melódico de piano/keys a la librería** - Sin esto, AUDIO PIANO MELODY nunca aparecerá

2. **Debug de coherence_score** - Investigar por qué no se calcula/persiste

3. **Debug de music_source_reuse_ratio** - Con el fix de Codex debería medir por sample, pero sigue dando 1.0

4. **Verificar selectividad de snare** - El section_character_bonus existe pero no está cambiando el ranking observablemente

### Estado del Sprint

**⚠️ NO CERRADO**

Los objetivos musicales no se lograron por:
- Limitación de librería (sin piano melódico)
- Métricas críticas sin mejorar (coherence, family adherence, source reuse)
- Selectividad de drums no demostrada

---

## 7. Referencias

- Sprint v0.1.27 Next: `docs/SPRINT_v0.1.27_NEXT_GLM.md`
- Session baseline: `0345711a8749`
- Session nueva: `c3aa8a7e8fa3`
- Manifests: `C:/Users/ren/.abletonmcp_ai/generation_manifests.json`
- Librería: 510 samples, sin piano melódico identificado
