# Sprint v0.1.10 Next Ultima revision: 2026-03-30 ## Objetivo Cerrar lo que v0.1.9 dejo a medio camino y usar la nueva observabilidad para validar con runtime real. La prioridad no es agregar mas features. La prioridad es: 1. referencia real 2. hook MIDI real 3. budget real 4. coherencia real ## Punto de partida real Ya esta corregido: - `PhrasePlan` y `Phrase` se serializan y restauran con notas reales - `server.py` ya no pasa un `dict` roto al hook MIDI - `temp/smoke_test_async.py` ya acepta `--reference` - el smoke async ya mide `delta` de tracks contra baseline - Ralph ya tiene estado de run y timeline para dashboard local Todavia no esta demostrado: - que el hook MIDI quede materializado en una corrida nueva - que el budget limite todo el flujo a 16 tracks o menos - que `reference_path` fuerce realmente key y BPM en el resultado final - que el track suene claramente mas cerca de `ejemplo.mp3` ## Trabajo a hacer ### 1. Validacion runtime con referencia real Ejecutar: ```powershell python temp\smoke_test_async.py ` --use-track ` --genre reggaeton ` --structure minimal ` --reference "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\libreria\reggaeton\ejemplo.mp3" ` --save-report "temp\smoke_report_v010_reference.json" ``` Guardar evidencia de: - baseline de tracks - delta de tracks - key usada - BPM usado - si hubo hook MIDI ### 2. Confirmar hook MIDI end-to-end No alcanza con logs. Hay que demostrar: - track creado en Live - clip MIDI creado - notas escritas - nombre de track/familia coherente (`piano`, `pluck`, `keys`, `pad`, `lead`) ### 3. Cerrar budget leak estructural No tocar solo `SongGenerator`. Revisar en `server.py` todos los caminos que crean tracks despues del plan principal: - audio fallback - reference audio layers - derived layers - buses auxiliares - materializacion del hook Criterio: - budget final <= 16 tracks - si algo excede el budget, debe omitirse y quedar registrado en manifest o log ### 4. Mejorar coherencia sin sumar capas Si el track sigue sonando a loops sueltos: - bajar capas - mantener una sola familia dominante - mantener una sola idea melodica - prohibir layers redundantes si no agregan contraste real ### 5. Validar Ralph dashboard con un dry run No lanzar swarm largo. Solo comprobar: - `current_run.json` - `events.jsonl` - la GUI muestra implementer, reviewers, codex master y fix pass ## Archivos a tocar primero - `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py` - `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\song_generator.py` - `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\temp\smoke_test_async.py` - `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\ralph\scripts\Start-RalphAutopilot.ps1` - `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\ralph\gui\app.py` ## Criterio de salida El sprint solo se cierra si hay evidencia de estas 5 cosas: 1. el smoke usa `ejemplo.mp3` de verdad 2. el delta real de tracks queda en 16 o menos 3. existe al menos un hook MIDI armonico principal 4. key y BPM finales siguen la referencia o explican el override 5. el dashboard refleja el estado real del swarm sin ejecutar codigo adicional