9.0 KiB
Sprint v0.1.21 - GLM Runtime Truth, Anti-Loop Real, Zero Auto Vocals
Owner: GLM via OpenCode
Reviewer: Codex
Fecha: 2026-04-01
Baseline real vigente: a6a4cc87e493
Estado de cierre v0.1.20: no cerrado
1. Verdad operativa despues del review de Codex
El reporte [SPRINT_v0.1.20_VALIDATION_REPORT.md](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.20_VALIDATION_REPORT.md) fue mejor que varios reports previos en honestidad, pero sigue sin cerrar runtime.
Problemas concretos detectados por Codex:
- no aporta una sesion nueva persistida que cierre el sprint
- sigue apoyandose demasiado en “claims verified against code”
- el fix anti-loop principal se hizo sobre una helper path que no esta demostrada como activa en runtime
- el sistema seguia mostrando vocals en manifests viejos y el report no cerraba esa fuga end-to-end
Codex ya dejo aplicados fixes reales 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 de
roledesde nombres de layer - persistencia de
positionsenaudio_layers repetition_metricsrobusto contrasections[*].end = None
Codex tambien endurecio tests en [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):
- purge de vocal layers
- repeticion con sections sin
end
Validado por Codex:
py_compilepasatest_piano_forward.pypasatest_selection_coherence.pypasa
No hubo generacion nueva en este turno.
2. Hallazgos importantes que GLM tiene que tomar como constraints
A. El anti-loop “implementado” no esta demostrado en el path activo
GLM toco _apply_clip_consolidation() en [server.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py), pero hoy ese helper no esta demostrado como parte del camino runtime que construye la cancion final.
Eso significa:
- el cambio puede ser correcto como idea
- pero no cuenta como fix real hasta que se pruebe impacto en una sesion nueva
No quiero otro sprint donde:
- el helper mejora
- el resultado audible sigue igual
B. repetition_metrics existia pero estaba roto para manifests reales
En manifests reales recientes:
sections[*].endviene comoNoneaudio_layersviejos no siempre traenpositionsaudio_layersviejos no siempre traenrole
Eso ya fue corregido por Codex para nuevas generaciones. GLM no debe reabrir ese bug.
C. La fuga vocal era de punta a punta, no de una sola capa
La politica manual-only no se cerraba solo en reference_listener.py.
Habia que defender tambien:
- materializacion
- fallback
- manifest
- layer records
GLM debe asumir que cualquier fix vocal que no cierre esos cuatro puntos no sirve.
D. Hay evidencia mixta sobre hook MIDI
No es correcto decir simplemente “hook materialization failing consistently”.
Verdad real observada en manifests:
4c697638bd3d: hook materializedtrueba306bd7575b: hook materializedtruea6a4cc87e493: hook materializedfalse
La conclusion correcta no es “siempre falla”. La conclusion correcta es:
- el hook es inestable
- no esta resuelto
- requiere validacion sobre una sesion nueva
3. Objetivo real del sprint
Cerrar la brecha entre:
- fixes de codigo
- y resultado musical real
La prioridad absoluta es esta:
- cero vocals automaticas
- anti-loop real en el resultado final
- creatividad por seccion
- hibrido
library + MIDI + pianoverificable - manifest que refleje verdad runtime
No quiero otro sprint centrado en helpers muertos o reportes “in progress”.
4. Reglas no negociables
-
Trabajar solo en el arbol canonico:
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts
-
No tocar wrappers/config MCP salvo bug concreto y demostrado.
-
Cero vocals automaticas:
- no seleccion
- no materializacion
- no persistencia en
audio_layers - no tracks
AUDIO VOCAL * - no justificarlo como FX o “color”
-
No reportar anti-loop si no afecta el path runtime real.
-
No cerrar el sprint si no existe una sesion nueva persistida.
-
No aceptar
session_idinventados o viejos como sustituto de validacion fresca. -
No cerrar el sprint si cualquiera de estas falla:
coherence_score < 6.5mandatory_midi_hook.materialized != truepiano_presence.piano_layer_count < 1repetition_metrics.verdict == repetitivegeneration_mode != library-first-hybrid- aparece cualquier vocal auto-generada
5. Trabajo obligatorio
P0. Atacar el path activo, no helpers secundarios
Antes de tocar nada:
- identifica exactamente que funciones corren en la generacion real
- no supongas que una helper afecta runtime solo porque existe
Pistas actuales del path activo:
song_generator.pyconstruye secciones, variantes, phrase plan y track specsreference_listener.pyconstruyebuild_arrangement_plan()server.pymaterializa audio/midi y persiste el manifest- el anti-loop real hoy probablemente pasa mas por:
song_generator.py_build_audio_pattern_positions()_materialize_reference_audio_layers()- consolidacion de duplicados
No alcanza con tocar _apply_clip_consolidation() si no demostras que esa ruta corre.
P1. Anti-loop real en musica, no solo en drums
Quiero foco en lo que el usuario oye como loop plano:
- synth_loop
- synth_peak
- perc_loop
- top_loop
- material melodico y armonico por seccion
Tenes que demostrar que:
- intro/build/drop/break no comparten la misma firma musical
- el material melodico no se repite como copia casi exacta
- los layers musicales no se reducen a un unico loop dominante toda la cancion
P2. Creatividad por seccion
Revisar a fondo en [song_generator.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\song_generator.py):
SectionVariationManagerPhrasePlan- pattern banks
- elecciones de variante por seccion
No me sirve que exista infraestructura si el audio final suena igual.
Objetivo:
- contraste real entre secciones
- sin romper coherencia armonica
P3. Hibrido real
No acepto una generacion que sea:
- solo loops
- o solo pluck MIDI aislado
- o piano solo en metadata
GLM tiene que cerrar:
mandatory_midi_hook.materialized = truepiano_presence.piano_layer_count >= 1generation_mode = library-first-hybrid
P4. Vocal policy end-to-end
Verificar en una sesion nueva:
- no tracks
AUDIO VOCAL * - no roles vocales en
audio_layers - no roles vocales en
layer_selections - no roles vocales en selected/layers del plan final
Si aparece uno solo, el sprint no cierra.
6. Casos de test obligatorios
Minimo tenes que dejar o endurecer tests para:
repetition_metricscon sections reales que tienenend=None- layers vocales purgados de manifest
- ausencia de
AUDIO VOCAL *en persistencia final - preservacion de variacion por seccion en el path runtime que realmente corre
- hook MIDI materializado
- presencia real de piano o keys en el hibrido final
No borres tests de Codex.
7. Validacion final obligatoria
Al final del sprint tenes que hacer una generacion nueva real.
Parametros:
genre = reggaetonstyle = perreo duro vieja escuela tipo safaera- referencia:
libreria\reggaeton\ejemplo.mp3
Tenes que demostrar con session_id nuevo y persistido:
coherence_score >= 6.5generation_mode = library-first-hybridmandatory_midi_hook.materialized = truepiano_presence.piano_layer_count >= 1repetition_metrics.verdict != repetitiverepetition_metrics.harmonic_loop_reuse_ratio < 0.75repetition_metrics.music_source_reuse_ratio < 0.80layer_selections.summary.total_layers > 0- cero vocals auto-generadas
Si no llegas:
- no declares “partial complete”
- no declares “blocked” sin evidencia nueva
- explica exactamente donde esta el cuello de botella
8. Formato obligatorio del validation report
El report final de GLM debe tener estas secciones:
Executive SummaryClaims Verified Against CodeFresh Session ValidationManifest TruthCoherence MetricsRepetition MetricsHybrid Truth (MIDI + Piano + Library)Instrumental-Only ComplianceOpen IssuesVerdict
Y debe incluir:
session_idreal- extracto real de
generation_manifests.json - archivos tocados
- tests corridos
- thresholds con PASS/FAIL
No acepto:
- “code complete”
- “validation blocked”
- “anti-loop implemented”
si no hay evidencia runtime fresca.
9. Criterio de cierre
Este sprint solo cierra si GLM demuestra simultaneamente:
- menos loop plano
- mas creatividad real
- coherencia mejor
- hook y piano reales
- cero vocals automaticas
- y manifest alineado con runtime
Si falla uno solo de esos puntos, el sprint sigue abierto.