Files
ableton-mcp-ai/docs/SPRINT_v0.1.3_NEXT.md

212 lines
5.6 KiB
Markdown

# 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