13 KiB
Sprint v0.1.19 - Coherence First, Anti-Loop, Creativity Recovery
Owner: Kimi via OpenCode
Reviewer: Codex
Fecha: 2026-04-01
Baseline real vigente: 2f53f3574d2d
Estado de cierre v0.1.18: no cerrado
1. Verdad operativa despues del review de Codex
El reporte [SPRINT_v0.1.18_VALIDATION_REPORT.md](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.18_VALIDATION_REPORT.md) no puede usarse como verdad final del sistema por tres razones:
- toma como bloqueo principal una sesion
5b6a3df6e04aque no existe hoy en:C:\Users\ren\.abletonmcp_ai\generation_manifests.json
- ignora que el baseline persistido real hoy es:
2f53f3574d2d
- da por implementado el schema de coherencia, pero el wiring en
server.pyseguia leyendo shapes viejos del manifest
Codex ya corrigio dos problemas reales en codigo:
- [server.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py) ahora:
- resuelve
generation_modepor intencion de pipeline y no solo por hook creado - consolida
coherence_metricsdesde el shape real delayer_selections.summary/pack_coherence - persiste
manual_vocals_enabled=trueyauto_vocal_layers_enabled=falsede forma estable
- resuelve
- [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) ahora fija:
- el mode
library-first-hybridaunque el hook aun no se haya materializado - el schema estable de
coherence_metrics
- el mode
Validado por Codex en este turno:
py_compilepasatest_piano_forward.pypasatest_selection_coherence.pypasa
Lo que sigue abierto y es la prioridad real:
- coherencia insuficiente
- exceso de loop/repeticion
- perdida de creatividad entre secciones
- tracks demasiado parecidos entre generaciones
- hibrido
MIDI + piano + libreriademasiado flojo o intermitente
2. Problema de producto real
La regresion actual no es solo de coherencia.
El sistema se volvio mas:
- loopeado
- conservador
- repetitivo
- similar entre generaciones
Y menos:
- expresivo
- seccional
- contrastado
- musicalmente memorable
En otras palabras:
- v0.1.18 intento subir coherencia endureciendo seleccion y consolidacion
- pero parte de esa dureza esta aplanando la cancion
- el resultado no es una produccion mas solida, sino una produccion mas monotona
No quiero que resuelvas esto soltando todo de nuevo. No quiero volver al caos. Quiero:
- coherencia alta
- pero con variacion real por seccion
- con una identidad armonica clara
- y sin que todas las canciones suenen al mismo template
3. Reglas no negociables
-
Trabajar solo en el arbol canonico:
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts
-
No tocar wrappers ni config MCP salvo bug concreto y demostrado.
-
Mantener modo instrumental:
auto_vocal_layers_enabled = false- no seleccionar vocals automaticas
- no materializar vocals automaticas
- no usar voces grabadas como chops, textura o truco de color
-
No mejorar coherencia a costa de matar variacion.
- si una mejora sube
pack_coherencepero aplana secciones, no sirve
- si una mejora sube
-
No aceptar como “creatividad” meter mas tracks.
- primero variar mejor
- despues densidad, solo si hace falta
-
No aceptar como “coherencia” repetir el mismo loop 8 veces con otro nombre.
-
No cerrar el sprint si cualquiera de estas falla:
coherence_score < 6.5generation_mode != library-first-hybridmandatory_midi_hook.materialized != trueauto_vocal_layers_enabled != falselayer_selections.summary.total_layers == 0variant_summary.total_layers_with_variants < 3variant_summary.total_variants < 6piano_presence.piano_layer_count < 1
-
No inventar session ids.
- todo
session_idcitado debe existir en:C:\Users\ren\.abletonmcp_ai\generation_manifests.json
- todo
4. Hipotesis tecnica principal
Hoy el retroceso hacia tracks mas loopeados probablemente viene de la combinacion de estos factores:
A. Consolidacion demasiado agresiva
En [server.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py) hay varios puntos que reducen fragmentacion:
_build_audio_pattern_positions(..., consolidate=True)_consolidate_positions_to_loops(...)_apply_clip_consolidation(...)_consolidate_duplicate_layers(...)
Eso esta bien como idea, pero hoy puede estar:
- reduciendo demasiado los cambios por seccion
- convirtiendo patrones con intencion en loops largos demasiado uniformes
- borrando micro-contrastes entre intro/build/drop/break
B. Hardening del bus music demasiado cerrado
En [reference_listener.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\reference_listener.py) el endurecimiento de pack para music puede estar logrando coherencia a costa de diversidad funcional.
El objetivo no es volver a mezclar tres packs musicales. El objetivo es permitir:
- un pack dominante claro
- un secundario justificado
- pero con funciones distintas reales por seccion y por rol
C. Variacion seccional insuficientemente materializada
En [song_generator.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\song_generator.py) existen:
PhrasePlanMusicalThemeGenerator- bancos de variantes para drums, bass y melodic
SectionVariationManager
Pero hoy hay que verificar si eso se traduce en:
- diferencias reales entre secciones
- o solo en metadata / nombres de variant mientras el audio final sigue siendo casi igual
5. Objetivo del sprint
Recuperar creatividad sin romper coherencia.
La salida esperada no es “mas random”. La salida esperada es:
- una identidad armonica clara
- variacion real entre secciones
- menos sensacion de loop reciclado
- menos sensacion de “la misma pista todas las veces”
- hibrido instrumental consistente:
- libreria del usuario
- armonia MIDI
- presencia de piano/keys cuando suma
- sin vocals automaticas
6. Trabajo obligatorio
P0. No romper lo que Codex ya dejo estable
No reabras estas piezas salvo bug demostrado:
- schema estable de
coherence_metrics - politica
manual-onlyde vocals - resolucion de
generation_mode
Antes de tocar nada:
- lee el codigo real en
server.py - lee los tests nuevos en
test_piano_forward.py - no reintroduzcas lecturas desde shapes viejos del manifest
P1. Anti-loop real, no cosmetico
Quiero que analices y corrijas la cadena de consolidacion para que siga reduciendo basura, pero no mate variacion musical.
Tareas:
-
Auditar:
_build_audio_pattern_positions_consolidate_positions_to_loops_apply_clip_consolidation_consolidate_duplicate_layers
-
Separar reglas por tipo de rol:
- drums anchor pueden tolerar mas loop
- bass necesita repeticion controlada, no clonacion plana
- music/harmonic layers no deben quedar reducidas a un unico loop largo por toda la cancion
- FX deben mantener timing expresivo
-
Introducir guardrails anti-aplanado:
- no consolidar si la capa ya tiene
section_variantsreales - no consolidar si al hacerlo intro/build/drop/break quedan con la misma firma musical
- no consolidar dos layers si la “duplicacion” en realidad representa contraste por seccion o registro
- no consolidar si la capa ya tiene
-
Persistir metricas de repeticion en el manifest:
repetition_metrics.identical_section_signaturesrepetition_metrics.harmonic_loop_reuse_ratiorepetition_metrics.music_source_reuse_ratiorepetition_metrics.verdict
No quiero opinion subjetiva solamente. Quiero metricas concretas para detectar si la cancion quedo monotona.
P2. Recuperar creatividad por seccion
Tenes que verificar que la variacion no quede solo en el plan sino tambien en el material final.
Tareas:
-
Revisar en
song_generator.py:PhrasePlanMusicalThemeGeneratorSectionVariationManager- pattern banks de drums, bass y melodic
-
Verificar que:
- intro, build, drop, break y outro no compartan exactamente la misma firma armonica
- las variantes de bass y melodic cambien de verdad
- las frases MIDI no sean solo el mismo motivo duplicado sin mutacion relevante
-
Si hace falta, endurecer:
variant_summarysection_variant_summary- deteccion de secciones identicas
-
Agregar una regla de producto:
- una pista coherente puede repetir anclas
- pero no puede tener la misma capa musical dominante resolviendo igual en todas las secciones
P3. Coherencia sin convertir todo al mismo template
Revisar el hardening del bus music en reference_listener.py.
Objetivo:
- mantener coherencia
- pero evitar que el sistema siempre caiga en la misma solucion facil
Tenes que evaluar:
- si el secundario musical esta demasiado penalizado
- si el criterio de complementariedad esta demasiado angosto
- si la seleccion same-pack esta premiando repeticion del mismo tipo de layer
- si el rerank final termina favoreciendo siempre el mismo pack / misma familia / mismo rol de soporte
Regla:
- no quiero 3 packs musicales
- pero tampoco quiero un bus
musictan cerrado que mate contraste funcional
P4. Hibrido instrumental verdadero
El usuario remarco un problema concreto:
- el sistema “se olvida” de generar armonias MIDI + piano + libreria
Quiero que lo tomes como requisito de producto.
La salida correcta es:
- base desde libreria del usuario
- una capa armonica MIDI real
- piano/keys/rhodes cuando sumen coherencia
- hook o ancla armonica materializada
No acepto:
- solo loops de audio
- o solo MIDI generico
- o piano falso solo en metadata
Tenes que demostrar en codigo y manifest:
mandatory_midi_hook.materialized = truepiano_presence.piano_layer_count >= 1layer_selections.summary.total_layers > 0generation_mode = library-first-hybrid
P5. Modo instrumental sigue estricto
Esto no se negocia:
- vocals automaticas siguen prohibidas
- no uses folders vocales para “levantar creatividad”
- no uses
vocal_shotcomo FX encubierto
Si necesitas placeholders:
- solo placeholders vacios
- nunca retrieval ni materializacion automatica
7. Casos de test obligatorios
Minimo tenes que agregar o endurecer tests para esto:
- Un test donde una capa con
section_variantsreales no sea consolidada como si fuera redundante. - Un test donde dos secciones no terminen con la misma firma musical despues de consolidacion.
- Un test donde
generation_modesiga saliendolibrary-first-hybridaunque el hook este planificado pero todavia no creado. - Un test donde
coherence_metricssiga estable y no dependa de shapes ambiguos. - Un test donde
manual-only vocalssiga firme. - Un test donde
PhrasePlano las variantes seccionales produzcan diferencia real entre al menos dos secciones armonicas.
8. Validacion final obligatoria
Al final del sprint tenes que hacer una validacion real.
Parametros:
genre = reggaetonstyle = perreo duro vieja escuela tipo safaera- referencia:
libreria\reggaeton\ejemplo.mp3
Tenes que demostrar con session_id real persistido:
coherence_score >= 6.5generation_mode = library-first-hybridmandatory_midi_hook.materialized = trueauto_vocal_layers_enabled = falselayer_selections.summary.total_layers > 0piano_presence.piano_layer_count >= 1variant_summary.total_layers_with_variants >= 3variant_summary.total_variants >= 6repetition_metrics.verdict != repetitiverepetition_metrics.identical_section_signatures <= 2repetition_metrics.harmonic_loop_reuse_ratio < 0.75
Si no llegas a esos thresholds:
- no cierres el sprint
- no lo dibujes como PASS
- explica exactamente donde sigue el cuello de botella
9. Formato obligatorio del validation report
El md final de cierre debe tener estas secciones, en este orden:
Executive SummaryClaims Verified Against CodeFresh Session ValidationManifest TruthCoherence MetricsRepetition MetricsHybrid Truth (MIDI + Piano + Library)Instrumental-Only ComplianceOpen IssuesVerdict
Y debe incluir:
session_idreal- extracto de
generation_manifests.json - lista exacta de archivos tocados
- tests corridos
- resultado de cada threshold
No acepto:
- “todo bien”
- “parece mejor”
- “sin regresiones” sin evidencia
- reportes apoyados en sessions inexistentes
10. Archivos probables a tocar
AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.pyAbletonMCP_AI\AbletonMCP_AI\MCP_Server\song_generator.pyAbletonMCP_AI\AbletonMCP_AI\MCP_Server\reference_listener.py- tests:
AbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_piano_forward.pyAbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_selection_coherence.py
Toca menos archivos si podes.
Pero si el problema real esta en song_generator.py, no lo esquives tocando solo docs o logging.
11. Criterio de cierre
Este sprint se cierra solo si Kimi demuestra simultaneamente:
- coherencia mejor
- menos loop plano
- mas variacion real
- hibrido instrumental verdadero
- sin vocals automaticas
- y sin romper MCP ni runtime
Si mejoras solo uno de esos ejes, el sprint no esta cerrado.