9.7 KiB
Sprint v0.1.17 - Persisted Validation and Hybrid Coherence Closure
Owner: Kimi via OpenCode
Reviewer: Codex
Fecha: 2026-04-01
Baseline real vigente: e3c3691cc922
Estado de cierre v0.1.16: no aceptado como validación real
1. Resultado del review de v0.1.16
El archivo [SPRINT_v0.1.16_VALIDATION_REPORT.md](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.16_VALIDATION_REPORT.md) no cierra el sprint. Es un informe de implementación, no una validación real.
Verdades confirmadas por Codex:
- Kimi sí implementó piezas bus-aware en
reference_listener.py. - Kimi sí agregó verdad híbrida en
_calculate_piano_presence()y consolidación de duplicados enserver.py. - El reporte no aporta una generación persistida nueva con métricas reales.
- La última verdad persistida sigue siendo
e3c3691cc922.
Regresiones reales encontradas y corregidas por Codex en reference_listener.py:
build_arrangement_plan()rompía siselect_dominant_palette()devolvíastrlegacy en vez dedict.verify_pack_coherence(...)se llamaba conprimary_harmonic_family, variable inexistente en ese scope.palette_info["dominant_pack"]escribía una variabledominant_packinexistente.
Además se endureció test_piano_forward.py para fijar:
- normalización legacy -> bus-aware de
dominant_packs - persistencia de
palette_info.dominant_pack - persistencia de
palette_info.dominant_packs.music
Estado real después del review:
py_compilepasatest_piano_forward.pypasatest_selection_coherence.pypasa- no existe todavía una nueva sesión validada que reemplace
e3c3691cc922
2. Verdad operativa hoy
Lo último realmente persistido y verificable sigue siendo e3c3691cc922:
generation_mode = library-first-hybridmandatory_midi_hook.materialized = true- hook materializado como
HARMONY_PIANO_MIDI primary_harmonic_anchor = pluckcoherence_score = 4.6pack_coherence_ratio = 0.25piano_presencequedó desfasado respecto del hook híbrido en esa sesión vieja
Hallazgo adicional importante:
- durante este review se intentó una nueva generación real
- Live siguió ejecutando comandos
- el wrapper/MCP terminó en timeout
- no quedó una nueva sesión persistida en
C:\Users\ren\.abletonmcp_ai\generation_manifests.json
Conclusión senior:
- v0.1.16 mejoró wiring y tests
- v0.1.16 no cerró la validación end-to-end
- el sistema todavía no prueba de forma confiable que la nueva coherencia por bus mejore una generación real persistida
3. Objetivo del sprint
Cerrar la transición de:
bus-aware implementation present
a:
bus-aware generation realmente persistidalibrary-first hybrid con hook MIDI + piano truth + librería del usuariocoherence_score >= 6.5con manifest real
Este sprint no es para inventar features laterales. Es para cerrar verdad de runtime y coherencia útil.
4. Reglas no negociables
-
Trabajar solo sobre el árbol canónico:
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts
-
No tocar wrappers/config MCP salvo que rompas algo concreto.
- OpenCode y Codex deben seguir usando el wrapper canónico.
-
No reportar
COMPLETEsin una sesión nueva persistida en:C:\Users\ren\.abletonmcp_ai\generation_manifests.json
-
No cerrar con
PASSsi cualquiera de estas falla:coherence_score < 6.5mandatory_midi_hook.materialized != truegeneration_mode != library-first-hybridpack_coherence.music < 0.65pack_coherence.overall < 0.50
-
No “mejorar coherencia” eliminando el híbrido.
- La salida debe seguir siendo
library-first. - El hook MIDI debe seguir existiendo como soporte armónico cuando haya hints/phrase plan.
- La salida debe seguir siendo
-
No “mejorar piano” mintiendo con audio inexistente.
- Si el soporte piano viene del hook MIDI, el manifest debe decirlo.
- Si aparece audio piano adicional, debe venir de la librería y tener función musical clara.
-
Si
generate_tracko el tool MCP hacen timeout:- no declarar ni éxito ni fracaso por el timeout solo
- revisar log de Live
- revisar persistencia en
generation_manifests.json - revisar estado real del set antes de escribir el reporte
5. Trabajo obligatorio
P0. Cerrar el gap entre generación real y manifest persistido
Problema:
- Hoy el runtime puede dejar Live ocupado y el tool puede vencer por timeout sin dejar una sesión persistida nueva.
- Eso bloquea una validación senior real.
Qué tenés que hacer:
- revisar el camino:
generate_track_asyncget_generation_job_status- persistencia final en
generation_manifests.json
- asegurar que una generación completada deje una sesión nueva persistida
- si la generación sigue en progreso al superar el timeout del cliente, el sistema debe dejar trazabilidad suficiente para recuperarla
No quiero:
- otro reporte “todo implementado” sin
session_idnuevo - ni un sistema que haga música en Live pero no la persista
P1. Validar el híbrido real en una sesión nueva
Tenés que producir una sesión nueva y demostrar en manifest:
mandatory_midi_hook.materialized = truetrack_nameoembedded_track_namedel hook- familia del hook
piano_presence.has_piano = truepiano_presence.has_hybrid_piano = truecuando el soporte venga del hook- si hay audio piano adicional:
piano_presence.has_audio_piano = true- listar las capas reales de audio
No acepto:
- volver a
piano_presence = 0con hook piano materializado - ni reportes sin citar el manifest persistido
P2. Subir la coherencia musical sin romper library-first
Problema real hoy:
drumspueden mezclar razonablementemusic/harmonicsigue dispersándose demasiado- la verdad persistida sigue siendo
4.6/10
Qué tenés que hacer:
- endurecer la selección del bus
music - permitir como máximo:
- 1 pack dominante principal en
music - 1 pack secundario justificable para soporte
- 1 pack dominante principal en
- reducir dispersión en
vocal/fxsi destruye el score general - mantener libertad relativa en
drums, pero no meter clutter innecesario
Objetivo de salida:
pack_coherence.music >= 0.65pack_coherence.overall >= 0.50family_adherence_rate >= 0.60sobre capas armónicas
P3. No olvidar armonía MIDI + piano + librería
Esto es central porque el usuario lo marcó explícitamente.
La sesión final debe conservar los tres elementos:
- ancla armónica principal
- soporte MIDI híbrido real
- audio real de la librería del usuario
Política esperada:
- anchor principal claro, probablemente
plucko equivalente según referencia - 1 hook MIDI de soporte armónico
- 0 o 1 capa secundaria
piano/keys/rhodessi mejora musicalidad real - no llenar el arreglo de capas armónicas redundantes
No quiero:
- sesiones donde el sistema “olvide” el hook MIDI
- sesiones donde el sistema “olvide” el piano support
- sesiones donde el sistema vuelva a puro loop genérico sin identidad de librería
P4. Reducir fragmentación útil vs ruido
Revisar si los duplicados consolidados en server.py realmente ayudan.
Debés validar:
- no más duplicados arbitrarios por rol
- no más capas repetidas solo por nombre distinto
- no más cientos de clips cortos sin justificación
Si una duplicación queda:
- justificar qué contraste musical aporta
P5. Validación final senior real
Generar con:
genre = reggaetonstyle = perreo duro vieja escuela tipo safaerabpm = 95key = Am- referencia:
libreria\reggaeton\ejemplo.mp3
Validar obligatoriamente:
session_idnuevo- presencia del
session_idengeneration_manifests.json coherence_scorepack_coherence.overallpack_coherence.musicmandatory_midi_hookpiano_presenceprimary_harmonic_familyaudio_layersreales con source path- track count real del set
Además:
- correr
validate_set - correr
diagnose_generated_set - si algún tool timeoutea, recuperar la verdad por log/manifest antes de concluir
6. Archivos probables a tocar
AbletonMCP_AI\AbletonMCP_AI\MCP_Server\reference_listener.pyAbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.pyAbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_piano_forward.pyAbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_selection_coherence.py- opcionalmente tooling de smoke/validación en
temp\si sirve para recuperar session ids reales
7. Casos de test obligatorios
- Un test donde
select_dominant_palette()devuelva string legacy ybuild_arrangement_plan()siga construyendopalette_infobus-aware correcto. - Un test donde
verify_pack_coherence()no rompa por variables mal cableadas y use la familia primaria real. - Un test donde un hook
pianomaterializado dejehas_hybrid_piano = true. - Un test donde
musicuse un pack dominante ydrumsotro, sin castigo global inválido.
8. Formato de entrega
Archivo obligatorio:
docs/SPRINT_v0.1.17_VALIDATION_REPORT.md
Ese md debe incluir:
- cambios reales
- bugs encontrados durante la validación
session_idreal nuevo- extracto de métricas del manifest persistido
- qué quedó abierto si no llegás a umbral
No acepto:
- “status: implementado” como sustituto de validación
session_idinexistentes- claims auditivos sin respaldo del manifest
- ocultar un
WEAKo un timeout en una nota menor
9. Criterio de cierre
Solo podés cerrar v0.1.17 si:
- existe una sesión nueva persistida
- el sistema mantiene
library-first hybrid - el manifest cuenta la verdad del hook MIDI y del piano support
- la coherencia sube de forma real, no cosmética
- la validación no depende de adivinar qué pasó después de un timeout
Si no llegás, dejá el sistema mejor, pero no lo declares terminado.