130 lines
4.0 KiB
Markdown
130 lines
4.0 KiB
Markdown
# Sprint v0.1.5 - Revision de Codex
|
|
|
|
Fecha: 2026-03-30
|
|
|
|
Este documento reemplaza la version anterior de `SPRINT_v0.1.5_CHANGES.md`, que mezclaba avances reales con conclusiones demasiado fuertes.
|
|
|
|
## Resumen honesto
|
|
|
|
Kimi si dejo trabajo util en este sprint, pero no quedo cerrado como el documento original sugeria.
|
|
|
|
Lo que si existe en codigo:
|
|
|
|
- `server.py` ahora guarda mas estado en `_generation_jobs`
|
|
- `server.py` tiene cache de routing y se usa en al menos 3 callsites reales
|
|
- `zai_judges.py` redujo backoff y aumento TTL de cache
|
|
- `reference_listener.py` sigue mostrando que el `section-aware` esta solo parcialmente integrado
|
|
|
|
Lo que no quedo demostrado:
|
|
|
|
- que el timeout async ya este resuelto
|
|
- que el timeout sea definitivamente `O(n^2)` por routing y nada mas
|
|
- que `JOINT_SCORE` participe de la generacion real end-to-end
|
|
- que las ultimas generaciones sean musicalmente coherentes
|
|
|
|
## Lo que Codex verifico
|
|
|
|
### Codigo
|
|
|
|
- `server.py` compila
|
|
- `reference_listener.py` compila
|
|
- `zai_judges.py` compila
|
|
- `temp\smoke_test_async.py` compila
|
|
- `test_sample_selector.py` sigue pasando `25/25`
|
|
|
|
### Evidencia runtime disponible
|
|
|
|
Archivo revisado:
|
|
|
|
- `temp\smoke_test_async_report.json`
|
|
|
|
Estado real del ultimo reporte disponible:
|
|
|
|
- `connection_check`: PASS
|
|
- `launch_async_job`: PASS
|
|
- `verify_tracks_created`: PASS
|
|
- `poll_job_status`: FAIL por timeout a `300s`
|
|
|
|
Dato importante:
|
|
|
|
- durante ese timeout la cuenta de tracks subio de `122` a `165`
|
|
|
|
Eso demuestra que el job estaba haciendo trabajo real. No demuestra por si solo cual es el root cause exacto del timeout.
|
|
|
|
## Correccion del diagnostico async
|
|
|
|
La version anterior del documento afirmaba demasiado:
|
|
|
|
- que el timeout ya estaba diagnosticado con precision completa
|
|
- que el problema era definitivamente `O(n^2)` por routing
|
|
- que las optimizaciones aplicadas deberian dejar el job por debajo de `300s`
|
|
|
|
Eso hoy no esta probado.
|
|
|
|
Lo correcto es:
|
|
|
|
- el routing repetido es un candidato fuerte a cuello de botella
|
|
- los retries de `ZAIJudges` tambien pueden estar inflando la duracion
|
|
- el sistema async sigue necesitando mejor instrumentacion para mostrar progreso real mientras corre
|
|
|
|
## Correccion del diagnostico section-aware
|
|
|
|
La observacion importante de Kimi fue buena:
|
|
|
|
- `reference_listener.py` selecciona roles principales antes del loop de secciones
|
|
- en esa seleccion global no se pasa contexto por seccion
|
|
- `_select_candidate()` sigue usando logica local hardcoded
|
|
|
|
Pero el fix sugerido en el documento original no es correcto tal como estaba escrito.
|
|
|
|
No sirve simplemente pasar `current_kind` o `current_energy` en la linea donde se seleccionan roles principales, porque esa seleccion ocurre antes del loop de secciones y no existe una seccion actual unica en ese punto.
|
|
|
|
La conclusion correcta es:
|
|
|
|
- el flujo necesita rediseño, no solo un parametro extra
|
|
- si queremos section-aware real, hay que:
|
|
- mover mas seleccion dentro del loop de secciones
|
|
- o derivar las variantes de seccion desde un palette global coherente
|
|
- o ambas
|
|
|
|
## Problema de producto mas importante
|
|
|
|
El problema principal ya no es solo tecnico.
|
|
|
|
Segun las ultimas pruebas del usuario:
|
|
|
|
- el sistema genera pistas
|
|
- pero el resultado suena como sonidos tirados al azar
|
|
- falta coherencia melodica, armonica y de arreglo
|
|
|
|
Eso cambia la prioridad del proyecto.
|
|
|
|
La siguiente etapa no debe enfocarse solo en "que termine" o "que cree tracks".
|
|
Debe enfocarse en:
|
|
|
|
- coherencia por pack
|
|
- coherencia tonal
|
|
- coherencia de hook/motivo
|
|
- presupuesto de tracks
|
|
- mutacion por seccion a partir de un mismo tema
|
|
|
|
## Estado real al cerrar esta revision
|
|
|
|
- avances utiles: SI
|
|
- sprint 0.1.5 totalmente cerrado: NO
|
|
- siguiente prioridad: coherencia musical real
|
|
|
|
## Archivos relevantes
|
|
|
|
- `AbletonMCP_AI/AbletonMCP_AI/MCP_Server/server.py`
|
|
- `AbletonMCP_AI/AbletonMCP_AI/MCP_Server/reference_listener.py`
|
|
- `AbletonMCP_AI/AbletonMCP_AI/MCP_Server/zai_judges.py`
|
|
- `temp\smoke_test_async.py`
|
|
- `temp\smoke_test_async_report.json`
|
|
|
|
## Siguiente sprint
|
|
|
|
El sprint activo a partir de ahora es:
|
|
|
|
- `docs/SPRINT_v0.1.6_NEXT.md`
|