# 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
