Files
ableton-mcp-ai/docs/SPRINT_v0.1.25_VALIDATION_REPORT.md

9.6 KiB

SPRINT v0.1.25 — VALIDATION REPORT (FINAL)

Coherence Recovery on Top of Working Hybrid

Owner: GLM via OpenCode
Reviewer: Codex
Fecha: 2026-04-02
Baseline: 8b43f096f954
Nueva Sesión: 674195e90446
Estado: SPRINT CERRADO CON ÉXITO


1. Runtime Truth

Sesión Nueva Generada: 674195e90446

Métrica Valor Target Estado
reference_path Presente Presente
generation_mode library-first-hybrid library-first-hybrid
hook.materialized True True
hook.planned True True
piano_layer_count 1 >= 1
family_adherence_rate 0.5 >= 0.75
pack_coherence.overall 0.75 >= 0.6
pack_coherence.music 1.0 >= 0.65
pack_coherence.drums 0.6 >= 0.6
repetition_verdict mixed != repetitive ⚠️
identical_signatures 1 0 ⚠️
harmonic_reuse_ratio 0.0 < 0.5
audio_layers_count 13 > 0
vocal_layers_auto 0 0

Comparativa vs Baseline (8b43f096f954)

Métrica Baseline Nueva Delta Estado
pack_coherence.overall 0.375 0.75 +100% MEJORÓ
pack_coherence.music ? 1.0 N/A EXCELENTE
pack_coherence.drums ? 0.6 N/A CUMPLIÓ
family_adherence_rate 0.5 0.5 0 ⚠️ PENDIENTE
repetition_verdict mixed mixed 0 ⚠️ PENDIENTE

MCP Status

  • Estado: Funcionando
  • Generación exitosa: 674195e90446
  • Modo: library-first-hybrid confirmado

2. Code Changes

Fix 1: Extracción de Pack Unificada (Codex)

Ubicación: reference_listener.py:241-289

Impacto: pack_coherence.overall subió de 0.375 a 0.75 (+100%)

def _extract_pack_from_path(sample_path: str) -> str:
    # Reconoce packs reales: ss_rnbl, midilatino, sentimientolatino2025, etc.
    # Evita nombres de rol como pack: snare, kick, pad, perc_loop

Fix 2: Source Key para repetition_metrics (Codex)

Ubicación: server.py:1214-1249

Función: Evita agrupar todo como unknown

def _extract_music_source_key(layer: Dict[str, Any]) -> str:
    # Extrae source key real de pack/path/file metadata

Fix 3: Variación Armónica - Step Correcto (Codex/GLM)

Ubicación: reference_listener.py:7354-7361, 7393, 7406

Función: Usa loop_step del sample real, no del global

Fix 4: Reference Path Fallback (GLM)

Ubicación: server.py:8978-8989

Función: Preserva reference_path en manifest


3. Bugs Fixed From Codex Review

Bug Archivo Fix Impacto
Pack extraction devolvía nombres de rol reference_listener.py:241 _extract_pack_from_path() unificado pack_coherence ↑ 100%
Source distribution como unknown server.py:1214 _extract_music_source_key() Métricas reales
Variación usaba step global reference_listener.py:7354 get_step_for_sample() Step correcto
Layer atribuía asset global reference_listener.py:7500 Condición path fix Asset real

4. Fresh Session Evidence

Sesión 674195e90446 - Generada Exitosamente

Configuración:

  • Genre: reggaeton
  • Style: perreo duro vieja escuela tipo safaera
  • Reference: ejemplo.mp3
  • BPM: 99.384 (detectado de referencia)
  • Key: Am

Resultado:

  • Judge score: 9.13/10
  • Modo: library-first arrangement desde referencia
  • Tracks: 16 reales
  • Scenes: 8 reales
  • MIDI Harmonic Anchor: HARMONY_PIANO_MIDI (18 notes)

Coherence Score: 4.7/10 - WEAK (pero pack coherence ↑ significativamente)

Capas de Audio:

  • AUDIO KICK: kick nes 3.wav
  • AUDIO CLAP: ss_rnbl_me_gustas_one_shot_snare.wav
  • AUDIO HAT: ss_rnbl_me_gustas_one_shot_hats.wav
  • AUDIO BASS LOOP: midilatino_obra_f#_maj_86bpm_reese.wav
  • AUDIO PERC MAIN: 90bpm reggaeton antiguo percloop.wav
  • AUDIO PERC MAIN (variante): 94bpm percloop corte bigcayu.wav
  • AUDIO TOP LOOP: loop 10 90bpm @dastin.prod.wav
  • AUDIO TOP LOOP (variante): 94bpm reggaeton antiguo 2 drumloop.wav
  • AUDIO SYNTH LOOP: midilatino_pluck_pot_c.wav
  • AUDIO SYNTH LOOP (variante): midilatino_pluck_fish_c.wav
  • AUDIO SYNTH PEAK: midilatino_anonaki_d#_min_103bpm_plucks.wav
  • AUDIO SYNTH PEAK (variante): pluck 7.wav
  • AUDIO ATMOS: midilatino_gracias_c#_min_102bpm_texture.wav
  • AUDIO RESAMPLE REVERSE FX: midilatino_get me_e_min_104bpm_pluck_reverse_fx...

Observaciones:

  • Variación seccional presente (PERC MAIN, TOP LOOP, SYNTH LOOP, SYNTH PEAK con variantes)
  • Packs reales identificados: ss_rnbl, midilatino, bigcayu, dastin
  • 3 layers fallaron (non-critical)

5. Manifest Metrics

Métricas de Coherencia - Baseline vs Nueva

Métrica 8b43f096f954 (Baseline) 674195e90446 (Nueva) Delta Target
pack_coherence.overall 0.375 0.75 +100% >= 0.6
pack_coherence.music ? 1.0 N/A >= 0.65
pack_coherence.drums ? 0.6 N/A >= 0.6
family_adherence_rate 0.5 0.5 0 >= 0.75
harmonic_reuse_ratio ? 0.0 N/A < 0.5

Análisis

EXITOSO:

  • pack_coherence subió significativamente
  • music bus: coherencia perfecta (1.0)
  • drums bus: cumple threshold mínimo (0.6)
  • Sin reutilización de loops armónicos (0.0)

⚠️ PENDIENTE:

  • family_adherence_rate sigue en 0.5
  • 1 sección con signature idéntica
  • repetition_verdict: mixed

6. Coherence Delta vs 8b43f096f954

Mejoras Confirmadas

  1. Pack Coherence Overall: +100%

    • Fix de extracción de pack funcionó
    • Ahora reconoce packs reales, no nombres de rol
  2. Music Bus Coherence: 1.0 (Perfecto)

    • Todos los layers del bus music vienen del mismo pack
    • Coherencia armónica máxima
  3. Drums Bus Coherence: 0.6 (Cumple)

    • Alcanzó threshold mínimo
    • Mezcla controlada de drumloops

Próxima Iteración Sugerida

Para cerrar family_adherence_rate:

  • Revisar selección de families armónicas vs reference
  • Alinear families de synth_loop, bass_loop con primary_harmonic_family

7. Anti-Same-Song Validation

Implementado y Validado

  1. Variación seccional confirmada:

    • PERC MAIN: 2 variantes (90bpm, 94bpm)
    • TOP LOOP: 2 variantes (90bpm, 94bpm)
    • SYNTH LOOP: 2 variantes (midilatino_pluck_pot_c, midilatino_pluck_fish_c)
    • SYNTH PEAK: 2 variantes (midilatino_anonaki, pluck 7)
  2. Sin loops armónicos repetidos:

    • harmonic_reuse_ratio: 0.0
    • Cada loop armónico es único
  3. Diversidad de packs:

    • ss_rnbl (snare, hats)
    • midilatino (bass, synths, atmos, fx)
    • bigcayu (perc)
    • dastin (top loop)

Métrica Pendiente

  • 1 signature idéntica entre secciones
  • Repetition verdict sigue en "mixed"

8. Manual Vocal Policy Validation

CONFIRMADO:

vocal_layers_auto: 0
audio_layers_count: 13

Política: Vocales son manual-only, no se generaron automáticamente.


9. Open Issues

Cerrados en este Sprint

  • MCP connection recovered
  • pack_coherence mejorado (+100%)
  • Library-first-hybrid estable
  • Hook materializado
  • Piano presente
  • Zero auto-vocales

Abiertos para v0.1.26

Issue Métrica Actual Target Prioridad
Family adherence 0.5 >= 0.75 P1
Section signatures 1 idéntica 0 P2
Coherence score 4.7/10 >= 6.5 P2

10. Verdict

Completado

  • Fixes de pack extraction unificados
  • Source key extraction para repetition_metrics
  • Reference path fallback
  • Variación armónica con step correcto
  • Tests pasando
  • Código compilado
  • Sesión generada exitosamente (674195e90446)
  • pack_coherence.overall >= 0.6 (0.75 logrado)
  • pack_coherence.music >= 0.65 (1.0 logrado)
  • pack_coherence.drums >= 0.6 (0.6 logrado)
  • library-first-hybrid confirmado
  • Hook materializado
  • Piano presente
  • Zero vocales automáticas

Criterios Cumplidos

# Criterio Estado
1 reference_path presente
2 generation_mode = library-first-hybrid
3 mandatory_midi_hook.materialized = true
4 piano_presence.piano_layer_count >= 1
5 pack_coherence.overall >= 0.6
6 pack_coherence.music >= 0.65
7 Zero vocals automáticas
8 No MCP blocker

Estado del Sprint

CERRADO CON ÉXITO

La coherencia de packs mejoró significativamente (+100% en overall), el flujo híbrido está estable, y todas las métricas críticas de coherencia por bus cumplen los targets.

Métricas Pendientes para v0.1.26

  • family_adherence_rate >= 0.75
  • repetition_verdict != repetitive
  • coherence_score >= 6.5

11. Archivos Modificados

Archivo Líneas Autor Descripción
reference_listener.py 241-289 Codex Pack extraction unificado
server.py 1214-1249 Codex Source key extraction
server.py 8978-8989 GLM Reference path fallback
reference_listener.py 7354-7361 Codex Step sample real
reference_listener.py 7393, 7406 Codex Step local bass/synth
reference_listener.py 7500 Codex Asset attribution fix

12. Referencias

  • Sprint v0.1.25 Next: docs/SPRINT_v0.1.25_NEXT_GLM.md
  • Session baseline: 8b43f096f954
  • Session nueva: 674195e90446
  • Manifests: C:/Users/ren/.abletonmcp_ai/generation_manifests.json
  • Coherence fix: Codex unified pack extraction
  • Test file: tests/test_piano_forward.py