358 lines
9.1 KiB
Markdown
358 lines
9.1 KiB
Markdown
# Sprint v0.1.25 - GLM Coherence Recovery on Top of Working Hybrid
|
|
|
|
**Owner:** GLM via OpenCode
|
|
**Reviewer:** Codex
|
|
**Fecha:** 2026-04-02
|
|
**Baseline real vigente:** `8b43f096f954`
|
|
**Estado de cierre v0.1.24:** no cerrado
|
|
|
|
---
|
|
|
|
## 1. Verdad operativa despues del review de Codex
|
|
|
|
El reporte [SPRINT_v0.1.24_VALIDATION_REPORT.md](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.24_VALIDATION_REPORT.md) quedo desactualizado durante el mismo ciclo.
|
|
|
|
Codex verifico contra:
|
|
|
|
- [generation_manifests.json](C:\Users\ren\.abletonmcp_ai\generation_manifests.json)
|
|
- [reference_listener.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\reference_listener.py)
|
|
- [server.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py)
|
|
- OpenCode real via `opencode mcp list --print-logs`
|
|
|
|
Verdad real observada hoy:
|
|
|
|
1. OpenCode MCP si funciona:
|
|
- `ableton-mcp-ai connected`
|
|
- `toolCount = 77`
|
|
|
|
2. Existe una sesion nueva real y persistida:
|
|
- `session_id = 8b43f096f954`
|
|
|
|
3. El flujo hibrido volvio a aparecer en esa sesion:
|
|
- `reference_path` presente
|
|
- `generation_mode = library-first-hybrid`
|
|
- `mandatory_midi_hook.materialized = true`
|
|
- `piano_presence.piano_layer_count = 1`
|
|
- cero vocales automaticas en `audio_layers`
|
|
|
|
4. Pero la coherencia sigue abierta:
|
|
- `family_adherence_rate = 0.5`
|
|
- `pack_coherence.overall = 0.375`
|
|
- `repetition_metrics.verdict = mixed`
|
|
- `music_source_reuse_ratio` sigue alto
|
|
|
|
Conclusion:
|
|
|
|
- v0.1.24 recupero parte del wiring correcto
|
|
- no recupero todavia la coherencia que escucha el usuario
|
|
|
|
---
|
|
|
|
## 2. Code Review de Codex sobre lo que hizo GLM
|
|
|
|
### A. El report de GLM siguio tratando al MCP como blocker cuando ya no lo era
|
|
|
|
El report afirmaba:
|
|
|
|
- cliente MCP no conectado
|
|
- validacion runtime bloqueada por OpenCode
|
|
|
|
Codex lo reprodujo y hoy OpenCode responde bien.
|
|
|
|
Regla nueva:
|
|
|
|
- no volver a usar `MCP blocker` como conclusion sin evidencia fresca del cliente y del wrapper
|
|
|
|
### B. GLM si recupero el hibrido, pero no lo reconocio bien en su propio report
|
|
|
|
La sesion `8b43f096f954` demuestra:
|
|
|
|
- referencia real
|
|
- modo hibrido real
|
|
- hook MIDI real
|
|
- piano via hook
|
|
|
|
Entonces el problema ya no es "volver a salir de midi-first".
|
|
El problema ahora es:
|
|
|
|
- mejorar coherencia
|
|
- dejar de repetir material
|
|
- hacer que las metricas reflejen mejor esa realidad
|
|
|
|
### C. Habia dos bugs reales en la variacion armonica seccional
|
|
|
|
Codex ya corrigio:
|
|
|
|
1. el `loop_step` se calculaba con el sample global en vez del sample alternativo real
|
|
2. el layer podia quedar persistido como si hubiera usado el asset global aunque el sample real fuese otro
|
|
|
|
Eso quedo cubierto con test real.
|
|
|
|
### D. Habia dos bugs reales en las metricas de coherencia/repeticion
|
|
|
|
Codex ya corrigio:
|
|
|
|
1. `repetition_metrics` agrupaba demasiadas fuentes como `unknown`
|
|
2. la extraccion de `pack` en `reference_listener.py` devolvia valores basura como:
|
|
- `snare`
|
|
- `pad`
|
|
- `perc_loop`
|
|
|
|
Eso hacia que:
|
|
|
|
- `dominant_packs` quedara contaminado
|
|
- la coherencia por buses fuera poco confiable
|
|
- el analisis anti-loop perdiera precision
|
|
|
|
### E. El foco correcto ya cambio
|
|
|
|
No quiero otro sprint centrado en:
|
|
|
|
- reference fallback
|
|
- hook inexistente
|
|
- MCP blocker
|
|
|
|
Eso ya no es el cuello principal.
|
|
|
|
Ahora el cuello principal es:
|
|
|
|
- coherencia musical real
|
|
- coherencia de packs real
|
|
- reducir la sensacion de misma cancion
|
|
|
|
---
|
|
|
|
## 3. Fixes ya aplicados por Codex en este turno
|
|
|
|
### server.py
|
|
|
|
Codex agrego `_extract_music_source_key()` y lo conecto a `repetition_metrics` para que use metadata real de source/pack/path en vez de agrupar todo como `unknown`.
|
|
|
|
### reference_listener.py
|
|
|
|
Codex unifico la extraccion de pack hacia `_extract_pack_from_path()` y corrigio heuristicas para reconocer mejor:
|
|
|
|
- `ss_rnbl`
|
|
- `midilatino`
|
|
- `sentimientolatino2025`
|
|
- `reggaeton 3`
|
|
- `bigcayu`
|
|
- `dastin`
|
|
- `drumloops`
|
|
|
|
Ademas elimino la degradacion a nombres de rol como `snare`, `kick`, `pad`, `perc_loop`.
|
|
|
|
### test_piano_forward.py
|
|
|
|
Codex endurecio tests para verificar:
|
|
|
|
1. variacion armonica usando el sample real
|
|
2. extraccion de source key desde paths reales
|
|
3. extraccion de pack desde paths reales
|
|
|
|
GLM no debe revertir estos cambios.
|
|
|
|
---
|
|
|
|
## 4. Objetivo real del sprint
|
|
|
|
Con el hibrido ya recuperado, el objetivo ahora es elevar coherencia real y reducir la sensacion de track repetido.
|
|
|
|
Prioridades:
|
|
|
|
1. mejorar coherencia armonica
|
|
2. mejorar coherencia de packs por bus
|
|
3. mantener creatividad sin volver al mismo tema
|
|
4. conservar el flujo `library-first-hybrid`
|
|
5. mantener cero vocales automaticas
|
|
|
|
---
|
|
|
|
## 5. Reglas no negociables
|
|
|
|
1. Trabajar solo en el arbol canonico:
|
|
- `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts`
|
|
|
|
2. No reabrir vocals automaticas.
|
|
|
|
3. No romper el flujo recuperado:
|
|
- `reference_path` presente
|
|
- `generation_mode = library-first-hybrid`
|
|
- `mandatory_midi_hook.materialized = true`
|
|
|
|
4. No usar `MCP blocker` como comodin.
|
|
|
|
5. No cerrar el sprint si las metricas mejoran solo por parsing pero el audio sigue igual.
|
|
|
|
6. No aceptar `dominant_packs` con nombres de rol o placeholders.
|
|
|
|
---
|
|
|
|
## 6. Trabajo obligatorio para GLM
|
|
|
|
### P0. Mejorar coherencia sobre el flujo hibrido que ya funciona
|
|
|
|
Tomar `8b43f096f954` como baseline real.
|
|
|
|
Objetivos minimos:
|
|
|
|
- `family_adherence_rate` subir de `0.5` a `>= 0.75`
|
|
- `pack_coherence.overall` subir de `0.375` a `>= 0.6`
|
|
- mantener `library-first-hybrid`
|
|
|
|
### P1. Arreglar coherencia de packs por bus de verdad
|
|
|
|
Usando los fixes de Codex ya integrados, GLM tiene que revisar por que:
|
|
|
|
- drums
|
|
- music
|
|
- fx
|
|
|
|
siguen mezclando material de forma poco consistente.
|
|
|
|
Quiero especial foco en:
|
|
|
|
- `dominant_packs`
|
|
- `pack_coherence`
|
|
- seleccion de drum layers
|
|
- seleccion de material armonico principal
|
|
|
|
No me sirve una cancion donde:
|
|
|
|
- el hook esta bien
|
|
- pero drums/music/fx parecen venir de mundos distintos
|
|
|
|
### P2. Reducir sensacion de misma cancion sin destruir coherencia
|
|
|
|
Ahora que `synth_loop` y `bass_loop` ya pueden variar:
|
|
|
|
- validar que la diversidad se escuche en el material principal
|
|
- no solo en FX y adornos
|
|
|
|
Tenes que demostrar contraste real entre:
|
|
|
|
- intro
|
|
- build
|
|
- drop
|
|
- break
|
|
|
|
pero sin bajar la coherencia armonica.
|
|
|
|
### P3. Validar con metricas que ya no sean ciegas
|
|
|
|
Con los fixes de Codex, el proximo report ya no puede decir:
|
|
|
|
- `unknown` para casi todo
|
|
- `dominant_pack` inventado por rol
|
|
|
|
Tenes que mostrar:
|
|
|
|
- `source_distribution` util
|
|
- `dominant_packs` plausibles
|
|
- `pack_coherence` consistente con el material seleccionado
|
|
|
|
### P4. OpenCode / MCP
|
|
|
|
No hay que rediseñar la config.
|
|
OpenCode hoy conecta.
|
|
|
|
Solo si vuelve a fallar, documenta:
|
|
|
|
- comando exacto
|
|
- hora
|
|
- salida real
|
|
- si `opencode mcp list --print-logs` conecta o no
|
|
|
|
Sin eso, no lo uses como blocker.
|
|
|
|
---
|
|
|
|
## 7. Casos de test obligatorios
|
|
|
|
Minimo tenes que dejar o endurecer tests para:
|
|
|
|
1. `dominant_packs` no use nombres de rol como pack
|
|
2. `_extract_pack_from_path()` resuelva tokens reales de libreria
|
|
3. `repetition_metrics.source_distribution` no colapse en `unknown`
|
|
4. `pack_coherence` mantenga shape correcto
|
|
5. el flujo con referencia siga en `library-first-hybrid`
|
|
6. el hook MIDI siga materializandose
|
|
7. cero vocales automaticas siga estable
|
|
|
|
No borres tests de Codex.
|
|
|
|
---
|
|
|
|
## 8. Validacion final obligatoria
|
|
|
|
Al final del sprint tenes que generar una sesion nueva real con:
|
|
|
|
- `genre = reggaeton`
|
|
- `style = perreo duro vieja escuela tipo safaera`
|
|
- referencia:
|
|
- `libreria\reggaeton\ejemplo.mp3`
|
|
|
|
Y demostrar con `session_id` nuevo y persistido:
|
|
|
|
1. `reference_path` presente
|
|
2. `generation_mode = library-first-hybrid`
|
|
3. `mandatory_midi_hook.materialized = true`
|
|
4. `piano_presence.piano_layer_count >= 1`
|
|
5. `family_adherence_rate >= 0.75`
|
|
6. `pack_coherence.overall >= 0.6`
|
|
7. `repetition_metrics.verdict != repetitive`
|
|
8. cero vocals automaticas
|
|
|
|
### Criterio auditivo obligatorio
|
|
|
|
En el report final tenes que explicar:
|
|
|
|
1. que mejoro en coherencia respecto de `8b43f096f954`
|
|
2. que material principal dejo de sonar tan repetido
|
|
3. por que la cancion sigue siendo una misma obra coherente y no un collage
|
|
|
|
Si no podes justificar eso claramente, no esta cerrado.
|
|
|
|
---
|
|
|
|
## 9. Formato obligatorio del validation report
|
|
|
|
El archivo final debe llamarse:
|
|
|
|
- `SPRINT_v0.1.25_VALIDATION_REPORT.md`
|
|
|
|
Y debe tener estas secciones, en este orden:
|
|
|
|
1. `Runtime Truth`
|
|
2. `Code Changes`
|
|
3. `Bugs Fixed From Codex Review`
|
|
4. `Fresh Session Evidence`
|
|
5. `Manifest Metrics`
|
|
6. `Coherence Delta vs 8b43f096f954`
|
|
7. `Anti-Same-Song Validation`
|
|
8. `Manual Vocal Policy Validation`
|
|
9. `Open Issues`
|
|
10. `Verdict`
|
|
|
|
### Reglas del report
|
|
|
|
1. No decir que OpenCode esta bloqueado sin evidencia reproducible.
|
|
2. No usar una sesion vieja si ya existe una mas nueva.
|
|
3. No usar lenguaje hipotetico tipo `should now`.
|
|
4. Si la coherencia sigue floja, decirlo.
|
|
5. Si algun dominant pack sale con nombre de rol, marcarlo como bug.
|
|
|
|
---
|
|
|
|
## 10. Definicion de done real
|
|
|
|
Este sprint solo cierra si:
|
|
|
|
1. el flujo hibrido sigue estable
|
|
2. la coherencia sube de forma medible
|
|
3. las metricas dejan de mentir sobre packs y fuentes
|
|
4. la cancion deja de sentirse como la misma de siempre
|
|
5. no reaparecen vocals automaticas
|
|
|
|
Si falla cualquiera de esos cinco puntos, no esta cerrado.
|