Files
ableton-mcp-ai/docs/SPRINT_v0.1.20_NEXT_GLM.md

373 lines
11 KiB
Markdown

# 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.