# Sprint v0.1.20 - GLM Coherence Recovery, No Vocals, Anti-Loop **Owner:** GLM via OpenCode **Reviewer:** Codex **Fecha:** 2026-04-01 **Baseline real vigente:** `a6a4cc87e493` **Estado de cierre v0.1.19:** rechazado --- ## 1. Verdad operativa despues del review de Codex El reporte [SPRINT_v0.1.19_VALIDATION_REPORT.md](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.19_VALIDATION_REPORT.md) no se acepta como verdad final del sistema. Motivos concretos: 1. declara bloqueo total por jobs `5b6a3df6e04a` y `cff063342422`, pero hoy existe un manifest mas nuevo persistido: - `a6a4cc87e493` 2. declara `instrumental-only compliant`, pero la verdad persistida sigue mostrando capas con nombre vocal en manifests recientes 3. declara `anti-loop metrics implemented`, pero el manifest seguia ciego en dos puntos: - no siempre persistia `positions` - no siempre persistia `role` Codex ya corrigio en [server.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py): - sanitizacion defensiva de capas vocales manual-only - inferencia consistente de `role` desde nombres de layer - persistencia de `positions` en `audio_layers` - repeticion calculada sobre layers ya sanitizados - purge defensivo tambien en materializacion y fallback layer records Codex tambien endurecio [test_piano_forward.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_piano_forward.py) con tests nuevos para: - `manual-only vocal layers` - `repetition_metrics` - schema estable de coherencia Validado por Codex en este turno: - `py_compile` pasa - `test_piano_forward.py` pasa - `test_selection_coherence.py` pasa No hubo generacion nueva en este turno. La verdad runtime vigente sigue viniendo de manifests ya existentes y del feedback auditivo del usuario. --- ## 2. Feedback de producto que manda este sprint El usuario ya dio el veredicto auditivo y hay que tomarlo como dato de producto, no como opinion accesoria: - la cancion sigue demasiado loopeada - sigue siendo poco creativa - sigue sintiendose demasiado parecida a otras generaciones - sigue metiendo vocals, aunque la politica del producto es manual-only Eso significa que v0.1.19 no resolvio lo importante. No quiero otro sprint de “code deployed, validation blocked”. Quiero una mejora real en el resultado musical. --- ## 3. Reglas no negociables 1. Trabajar solo en el arbol canonico: - `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts` 2. No tocar wrappers MCP ni config salvo bug concreto y demostrado. 3. Politica de vocals: - `vocal_loop`, `vocal_build`, `vocal_peak`, `vocal_shot` siguen siendo `manual-only` - no se seleccionan - no se materializan - no se persisten en `audio_layers` - no se justifican como “fx” - no se usan para levantar color o energia 4. No mejorar coherencia matando creatividad. 5. No mejorar creatividad abriendo caos de packs. 6. No cerrar el sprint si cualquiera de estas falla: - `coherence_score < 6.5` - `generation_mode != library-first-hybrid` - `mandatory_midi_hook.materialized != true` - `layer_selections.summary.total_layers <= 0` - `piano_presence.piano_layer_count < 1` - `repetition_metrics.verdict == repetitive` - aparece cualquier layer o track vocal auto-generado 7. No uses session ids inventados. - todo `session_id` citado debe existir en: - `C:\Users\ren\.abletonmcp_ai\generation_manifests.json` --- ## 4. Problemas reales abiertos ### P0. Reportes que no reflejan la verdad actual Problema: - GLM no puede volver a basarse en reports que dicen “bloqueado” mientras ya existe una nueva sesion persistida - eso genera debugging sobre fantasmas Que hacer: - usar como baseline real el ultimo `session_id` persistido - si hay una generacion nueva en Live pero no en manifest, no la cuentes como cierre - en el report final incluir extracto real del manifest ### P1. Fuga vocal todavia abierta a nivel producto Problema: - aunque parte del pipeline ya filtra vocals, el usuario sigue viendo resultado con vocals - eso indica que el bloqueo no estaba cerrado end-to-end Estado despues de Codex: - `server.py` ya sanea layers vocales en: - materializacion - manifest - fallback layer records - `_build_audio_pattern_positions()` ya no agrega posiciones vocales de forma activa Lo que GLM tiene que hacer: 1. revisar si queda fuga vocal en: - `reference_listener.py` - `song_generator.py` - cualquier path de report o manifest secundario 2. asegurar que ningun track vocal automatico aparezca ni por nombre ni por rol 3. revisar que `clear/reset` de sesion no deje tracks vocales residuales que luego parezcan parte de la generacion nueva ### P2. Anti-loop de verdad, no solo metrica decorativa Problema: - la cancion sigue demasiado plana y repetitiva - `repetition_metrics` por si solo no arregla nada si el pipeline sigue generando el mismo material Lo que GLM tiene que hacer: 1. revisar la cadena completa: - `song_generator.py` - `PhrasePlan` - `MusicalTheme` - pattern banks - consolidacion en `server.py` 2. verificar que intro/build/drop/break no queden con la misma firma musical real 3. medir reuse real de: - motivo armonico - source file musical - firma de seccion 4. no conformarse con logs - demostrarlo en manifest ### P3. Creatividad recuperada sin perder identidad Problema: - hubo un retroceso: antes habia mas sensacion de tema, ahora parece “la misma pista” con cambios menores Hipotesis principal: - demasiada consolidacion - demasiado cierre del bus `music` - demasiado reuse de un unico material musical Objetivo: - una base coherente - pero con contraste real entre secciones - sin volver a mezclar packs arbitrarios ### P4. Hibrido instrumental todavia flojo Problema: - el sistema sigue olvidandose de: - armonias MIDI - presencia real de piano/keys - hook materializado No quiero: - solo audio loops - solo pluck suelto - piano solo en metadata Quiero: - libreria del usuario - soporte armonico MIDI real - piano/keys/rhodes cuando sumen - hook materializado y verificable --- ## 5. Trabajo obligatorio ### A. No romper los fixes de Codex No reabras ni simplifiques: - sanitizacion de vocal layers - inferencia de `role` - persistencia de `positions` - schema estable de `coherence_metrics` Si vas a tocar eso, tiene que ser para mejorarlo con evidencia. ### B. Auditar creatividad en el codigo real Tenes que leer y verificar: - `AbletonMCP_AI\AbletonMCP_AI\MCP_Server\song_generator.py` - `AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py` - `AbletonMCP_AI\AbletonMCP_AI\MCP_Server\reference_listener.py` Busco especialmente: - donde se repite exactamente el mismo motivo - donde se consolidan capas que deberian seguir separadas - donde una capa musical de soporte queda igual en todas las secciones - donde el sistema vuelve a elegir el mismo material aunque existan variantes validas ### C. Endurecer la verdad del manifest El manifest final de una generacion valida debe dejar clarisimo: - que capas armonicas hubo realmente - si hubo hook MIDI materializado - si hubo piano real - cuanta repeticion hubo - cuanta variacion real hubo - que roles se omitieron por politica `manual-only` Si el manifest no puede mostrar eso, el sprint no esta cerrado. ### D. Mantener instrumental-only estricto GLM no puede “resolver creatividad” con voces. Si necesitas subir energia o memoria: - usa armonia - usa contraste de seccion - usa textura instrumental - usa mejor variacion ritmica No vocals. --- ## 6. Casos de test obligatorios Como minimo, tenes que dejar o endurecer tests para: 1. capas vocales manual-only purgadas de `audio_layers` 2. `repetition_metrics` detectando secciones repetitivas reales 3. `generation_mode` hibrido no degradado 4. `coherence_metrics` estable 5. ausencia de vocals auto-generadas en fallback 6. presencia real de variacion entre secciones armonicas No borres los tests que Codex agrego. Si cambias el comportamiento, actualizalos con criterio senior y explicacion en el report. --- ## 7. Validacion final obligatoria Al final del sprint tenes que hacer una validacion real con una generacion nueva. Parametros: - `genre = reggaeton` - `style = perreo duro vieja escuela tipo safaera` - referencia: - `libreria\reggaeton\ejemplo.mp3` Tenes que demostrar con `session_id` real persistido: - `coherence_score >= 6.5` - `generation_mode = library-first-hybrid` - `mandatory_midi_hook.materialized = true` - `piano_presence.piano_layer_count >= 1` - `layer_selections.summary.total_layers > 0` - `repetition_metrics.verdict != repetitive` - `repetition_metrics.harmonic_loop_reuse_ratio < 0.75` - `repetition_metrics.music_source_reuse_ratio < 0.80` - `variant_summary.total_layers_with_variants >= 3` - `variant_summary.total_variants >= 6` - `auto_vocal_layers_enabled = false` - cero layers vocales auto-generados Si no llegas: - no cierres el sprint - no lo maquilles como “blocked” - explicita exactamente si fallo por: - creatividad - coherencia - hook - piano - vocals - materializacion --- ## 8. Formato obligatorio del validation report El md final de GLM debe tener estas secciones, en este orden: 1. `Executive Summary` 2. `Claims Verified Against Code` 3. `Fresh Session Validation` 4. `Manifest Truth` 5. `Coherence Metrics` 6. `Repetition Metrics` 7. `Hybrid Truth (MIDI + Piano + Library)` 8. `Instrumental-Only Compliance` 9. `Open Issues` 10. `Verdict` Y debe incluir: - `session_id` real - extracto real de `generation_manifests.json` - archivos tocados - tests corridos - thresholds con PASS/FAIL No acepto: - “validation blocked” sin probar el codigo actual - “instrumental-only compliant” si aparecen vocals en tracks o manifest - “anti-loop implemented” si la cancion sigue igual de plana - “sin regresiones” sin evidencia --- ## 9. Archivos probables a tocar - `AbletonMCP_AI\AbletonMCP_AI\MCP_Server\song_generator.py` - `AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py` - `AbletonMCP_AI\AbletonMCP_AI\MCP_Server\reference_listener.py` - tests: - `AbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_piano_forward.py` - `AbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_selection_coherence.py` Toca menos archivos si podes. Pero no esquives `song_generator.py` si ahi esta el origen real del aplanado musical. --- ## 10. Criterio de cierre Este sprint solo cierra si GLM demuestra simultaneamente: - mas coherencia - menos loop plano - mas creatividad real por seccion - hibrido instrumental verdadero - cero vocals automaticas - y sin romper MCP ni runtime Si mejora solo una parte, el sprint sigue abierto.