# Sprint v0.1.3 - Continuacion Real Despues Del Consolidado Fecha: 2026-03-30 Este sprint reemplaza a `docs/SPRINT_v0.1.2_NEXT.md` como sprint activo. Si eres Kimi K2: - lee este archivo despues de `KIMI_K2_ACTIVE_HANDOFF.md` - no asumas que `docs/CONSOLIDADO_v0.1.1_v0.1.2_PARA_CODEX.md` es exacto en todo - valida siempre contra diffs, codigo activo y runtime ## Lo que se reviso Se comparo: - `docs/CONSOLIDADO_v0.1.1_v0.1.2_PARA_CODEX.md` - `git diff --stat` - `git diff --name-only` - codigo activo en `sample_selector.py`, `server.py`, `groove_extractor.py`, `abletonmcp_init.py` ## Lo que del consolidado si esta bien - `clear_all_tracks` existe en el runtime activo y los tests ad hoc pasan - `zai_judges.py` existe y esta integrado en `server.py` - `groove_extractor.py` ahora escanea recursivamente - `temp\smoke_test_async.py` existe - `sample_selector.py` tiene estructuras nuevas para same-pack, section context y joint scoring ## Lo que el consolidado sobrevendio o no dijo bien ### 1. "Codigo implementado 100%" Eso es falso. Hay codigo nuevo, pero no todo esta cableado al flujo real. ### 2. "Selector por seccion implementado" Esto esta incompleto. Hecho real: - `sample_selector.py` tiene `set_section_context()` - tiene `SECTION_ROLE_PROFILES` - tiene `JOINT_SCORING_GROUPS` Problema real: - no hay llamadas desde `server.py` ni desde el flujo principal que seteen `self._section_context` - por lo tanto, la logica por seccion y joint scoring esta mayormente muerta hoy ### 3. Regresion real que el consolidado no reporto `sample_selector.py` quedo roto por merge: - desaparecio el metodo `_calculate_repetition_penalty` - su cuerpo quedo colgado despues de `get_section_selections()` - eso podia romper el selector en runtime aunque el archivo compilara Eso ya fue corregido en este turno. ## Arreglo aplicado en este turno Archivo: - `AbletonMCP_AI/AbletonMCP_AI/MCP_Server/sample_selector.py` Fix: - se restauro `_calculate_repetition_penalty` - se elimino el residuo muerto del merge - se dejo el modulo otra vez consistente para scoring real Validacion hecha: - `python test_same_pack_selection.py` - `python test_clear_tracks.py` - `python test_clear_messy.py` - `python AbletonMCP_AI/AbletonMCP_AI/MCP_Server/tests/test_sample_selector.py` - compilacion local de los `.py` principales ## Objetivo real de v0.1.3 Pasar de "hay estructuras nuevas" a "esas estructuras afectan la generacion real". ## Tarea 1 - Cablear section-aware selection al flujo real Problema: - la logica por seccion existe en `sample_selector.py` - pero no entra en juego en la generacion real porque nadie llama `set_section_context()` Haz esto: 1. encontrar el flujo real donde se seleccionan samples por rol 2. setear `section_context` antes de cada bloque de seleccion 3. limpiar el contexto al terminar 4. verificar que `record_section_selection()` se use de verdad Archivos probables: - `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` Criterio de salida: - logs muestran `SECTION_CONTEXT` y `JOINT_SCORE` en una generacion real - los picks cambian por seccion, no solo por rol global ## Tarea 2 - Agregar test que capture la regresion del selector Problema: - el archivo compilaba aunque le faltaba un metodo critico - los tests existentes no lo detectaron Haz esto: 1. agregar un test que llame el camino de scoring real 2. cubrir `_calculate_sample_score` 3. cubrir section context + joint scoring Archivos: - `AbletonMCP_AI/AbletonMCP_AI/MCP_Server/tests/test_sample_selector.py` - o test nuevo en root si no puedes usar `pytest` Criterio de salida: - si vuelve a faltar `_calculate_repetition_penalty`, el test falla ## Tarea 3 - Validar de verdad el camino async con Live Problema: - el consolidado reconoce que `server.py` sigue bloqueando en algunos casos - esto sigue siendo un riesgo real Haz esto: 1. ejecutar `temp\smoke_test_async.py` con Live abierto 2. probar `--use-track` 3. probar `generate_song_async` 4. revisar `get_generation_job_status` 5. confirmar si el bloqueo esta en job queue, transport o generacion larga Archivos: - `temp\smoke_test_async.py` - `AbletonMCP_AI/AbletonMCP_AI/MCP_Server/server.py` Criterio de salida: - job queued - job running - job completed - manifest util - sin falsos "success" ## Tarea 4 - Bajar claims inflados de la documentacion Problema: - el consolidado tiene verdad util, pero tambien claims demasiado fuertes Haz esto: 1. no borres el consolidado 2. si corriges algo grande, agrega una seccion "Reality Check" 3. cambia frases tipo "100% implementado" por estado verificable Archivo: - `docs/CONSOLIDADO_v0.1.1_v0.1.2_PARA_CODEX.md` Criterio de salida: - la doc no promete mas de lo que el runtime demuestra ## Tarea 5 - Limpiar artefactos de trabajo del repo Problema: - hay artefactos mezclados con codigo real - ejemplos: `scan_log.txt`, `diversity_memory.json`, scripts temporales y tests ad hoc en root Haz esto: 1. decidir que archivos son runtime real 2. decidir que archivos son artefactos locales 3. mover o ignorar lo que no deba versionarse Archivos probables: - `.gitignore` - `AbletonMCP_AI/.gitignore` - root del repo Criterio de salida: - menos ruido en `git status` - menos chance de que otro agente edite el archivo equivocado ## Reglas duras para este sprint - no declares que section-aware selection funciona hasta verla en logs o runtime - no uses solo compilacion como prueba de salud - no confundas "codigo existe" con "codigo esta conectado" - si un claim del consolidado contradice el diff o el runtime, gana el runtime