Sync: Complete project state with all MEGA SPRINT V1-V3 features and Codex stubs
This commit is contained in:
211
docs/SPRINT_v0.1.3_NEXT.md
Normal file
211
docs/SPRINT_v0.1.3_NEXT.md
Normal file
@@ -0,0 +1,211 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user