# Sprint v0.1.18 - Coherence-First Instrumental Mode **Owner:** Kimi via OpenCode **Reviewer:** Codex **Fecha:** 2026-04-01 **Baseline real vigente:** `0de71b5cf9c7` **Estado de cierre v0.1.17:** no cerrado --- ## 1. Verdad operativa después del review de Codex El reporte [SPRINT_v0.1.17_VALIDATION_REPORT.md](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.17_VALIDATION_REPORT.md) fue honestamente `INCOMPLETE`, pero seguía mezclando dos problemas: 1. problemas reales de coherencia e hibridación 2. una política de vocals que nunca estuvo bien definida y contaminaba selección, budget y coherencia Codex ya dejó aplicada una política nueva y explícita: - vocals pasan a ser `manual-only` - el pipeline automático ya no debe seleccionar ni materializar `vocal_loop`, `vocal_build`, `vocal_peak` ni `vocal_shot` - el usuario grabará las voces manualmente Cambios reales ya aplicados por Codex: - [reference_listener.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\reference_listener.py) ahora define `MANUAL_RECORDING_ROLES`, filtra esos roles antes y después de selección, y expone `manual_recording_roles` / `auto_vocal_layers_enabled=false` en el plan. - [server.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py) ya no materializa vocals en audio fallback. - [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 esta política con tests. Validado por Codex: - `py_compile` pasa - `test_piano_forward.py` pasa - `test_selection_coherence.py` pasa Lo que sigue abierto: - la coherencia sigue por debajo de lo requerido - el sistema todavía necesita mejorar `generation_mode`, `mandatory_midi_hook` y la verdad del manifest - los reportes siguen siendo frágiles porque leen métricas desde lugares inconsistentes o desactualizados --- ## 2. Objetivo del sprint Cerrar la transición de: - `genera instrumental sin vocals automáticas` a: - `genera instrumental coherente de verdad` - `library-first-hybrid` consistente - `hook MIDI + piano truth + librería del usuario` - `manifest legible, estable y audit-ready` La prioridad absoluta de este sprint es la coherencia. No quiero features cosméticas nuevas. No quiero “más cosas sonando”. Quiero menos dispersión, mejor criterio y verdad persistida. --- ## 3. Reglas no negociables 1. Trabajar solo en el árbol canónico: - `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts` 2. No tocar wrappers/config MCP salvo bug concreto. 3. No generar vocals automáticas. - prohibido seleccionar - prohibido materializar - prohibido usar samples de voz grabada o chops como reemplazo de hook o FX decorativo 4. Si en algún punto querés dejar soporte para grabación manual: - solo un placeholder explícito y vacío - no audio materializado - no sample retrieval - no uso de la librería vocal - y solo si hace falta de verdad 5. No reportar métricas desde paths inventados. - si la métrica vive en `layer_selections.summary`, se reporta desde ahí - si querés un alias top-level, lo implementás de forma explícita y lo documentás 6. No cerrar el sprint si cualquiera de estas falla: - `coherence_score < 6.5` - `generation_mode != library-first-hybrid` - `mandatory_midi_hook.materialized != true` - `family_adherence_rate < 0.60` - `pack_coherence.overall < 0.50` - `pack_coherence.music < 0.65` - aparece cualquier rol vocal auto-generado en `audio_layers`, `selected`, `layer_selections` o tracks creados 7. No aceptar session ids que no existan hoy en: - `C:\Users\ren\.abletonmcp_ai\generation_manifests.json` --- ## 4. Problemas concretos a resolver ### P0. Coherence metrics con schema estable y senior-proof Problema: - el sistema mezcla métricas entre top-level, `layer_selections.summary` y reportes auxiliares - eso hace que Kimi lea “faltan métricas” cuando en realidad están en otro path Qué tenés que hacer: - definir un schema de manifest claro y estable para coherencia - mínimo esperado: - `coherence_score` - `coherence_verdict` - `coherence_metrics.family_adherence_rate` - `coherence_metrics.pack_coherence.overall` - `coherence_metrics.pack_coherence.music` - `coherence_metrics.pack_coherence.drums` - `coherence_metrics.pack_coherence.fx` - `coherence_metrics.harmonic_layers_evaluated` - `coherence_metrics.manual_vocals_enabled` Importante: - podés mantener compatibilidad con `layer_selections.summary` - pero el reporte nuevo no debe depender de adivinar el path correcto ### P1. Coherencia musical real del bus `music` Problema: - el bus `music` sigue siendo el cuello de botella principal - hoy mezcla demasiado entre packs/familias y la armonía pierde identidad Qué tenés que hacer: - endurecer selección del bus `music` - permitir: - 1 pack dominante principal - 1 pack secundario solo si tiene función clara - reforzar: - `primary_harmonic_family` - `preferred_secondary_families` - relación entre hook, synth loop, layer secundaria y piano support No quiero: - tres packs musicales compitiendo entre sí - pads/pianos random que suben el KPI pero bajan identidad ### P2. Instrumental-only debe mejorar la coherencia, no solo quitar vocals Problema: - si quitamos vocals pero el sistema sigue calculando como si el bus vocal importara igual, no ganamos claridad real Qué hacer: - cuando `auto_vocal_layers_enabled=false`, el sistema no debe: - gastar budget en vocals - seleccionar candidates vocales - introducir tokens vocales en scoring armónico principal - degradar la lectura de coherencia por ausencia de vocales Esperado: - instrumental-only es un modo de producto real - no una ausencia accidental de layers ### P3. Hook MIDI y piano truth deben seguir vivos Problema: - el usuario quiere más coherencia, no un sistema “mudo” o solo de loops - quitar vocals no puede matar el híbrido Qué hacer: - mantener `mandatory_midi_hook` real - mantener `piano truth` real - la combinación esperada sigue siendo: - librería del usuario como base - hook MIDI de soporte/anchor cuando aplique - piano/keys/rhodes solo si ayuda a la coherencia No quiero: - instrumental-only convertido en `drums + bass + loops random` - hook planeado pero no materializado - `piano_presence = 0` cuando el híbrido sí existe ### P4. Limpiar fuga de vocals en subsistemas secundarios Codex ya deshabilitó el path principal, pero quiero que revises si quedan fugas en: - `sample_selector.py` - `pack_brain.py` - `reference_listener.py` - `server.py` - manifests/reporting Objetivo: - ningún rol vocal automático debe influir el resultado final Esto incluye: - no usar folders vocales para justificar coherencia - no contar samples vocales como mejora de color o FX - no dejar `vocal_shot` como reemplazo encubierto de transición ### P5. Validación senior real Tenés que hacer una única validación real al final del sprint, pero instrumental-only. Parámetros: - `genre = reggaeton` - `style = perreo duro vieja escuela tipo safaera` - referencia: - `libreria\reggaeton\ejemplo.mp3` Tenés que demostrar: - `session_id` nuevo - persistencia real en `generation_manifests.json` - `generation_mode = library-first-hybrid` - `mandatory_midi_hook.materialized = true` - `coherence_score >= 6.5` - `coherence_metrics.pack_coherence.overall >= 0.50` - `coherence_metrics.pack_coherence.music >= 0.65` - `coherence_metrics.family_adherence_rate >= 0.60` - `auto_vocal_layers_enabled = false` - ausencia total de roles vocales auto-generados --- ## 5. Archivos probables a tocar - `AbletonMCP_AI\AbletonMCP_AI\MCP_Server\reference_listener.py` - `AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py` - `AbletonMCP_AI\AbletonMCP_AI\MCP_Server\sample_selector.py` - `AbletonMCP_AI\AbletonMCP_AI\MCP_Server\pack_brain.py` - tests: - `AbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_piano_forward.py` - `AbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_selection_coherence.py` --- ## 6. Casos de test obligatorios 1. Un test donde `auto_vocal_layers_enabled=false` implique que ningún rol vocal entra a selección. 2. Un test donde `audio fallback` no cree tracks vocales ni posiciones vocales. 3. Un test donde `coherence_metrics` tenga schema estable y no obligue a leer paths ambiguos. 4. Un test donde `music` mantenga mejor coherencia sin vocals automáticas. 5. Un test donde el hook MIDI siga materializándose en instrumental-only. --- ## 7. Formato de entrega Archivo obligatorio: - `docs/SPRINT_v0.1.18_VALIDATION_REPORT.md` Debe incluir: - qué arreglaste realmente - session id real - path exacto desde donde leíste cada métrica - métricas reales - lista de tracks/layers auto-generados - prueba explícita de que no hay vocals automáticas - qué quedó abierto si no cerrás el sprint No acepto: - claims de “coherencia mejoró” sin números - claims de “faltan métricas” si estaban en otro path - sessions inexistentes - vocales automáticas escondidas como FX o chops --- ## 8. Criterio de cierre Solo podés cerrar v0.1.18 si: - el sistema sigue siendo `library-first-hybrid` - la coherencia sube de verdad - el manifest es claro - no hay vocals auto-generadas - el sistema deja una base instrumental coherente y grabable por el usuario Si no llegás, no lo declares terminado.