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