# 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
