373 lines
11 KiB
Markdown
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.
|