Files
ableton-mcp-ai/docs/SPRINT_v0.1.14_NEXT.md

5.3 KiB

Sprint v0.1.14 - Persisted Truth and Section-Aware Piano

Fecha: 2026-04-01
Estado: pendiente
Objetivo: convertir el piano-forward en una mejora real y verificable end-to-end, con manifest persistido confiable, hook materializado y coherencia musical por sección

Contexto

Se revisó docs/SPRINT_v0.1.13_VALIDATION_REPORT.md contra:

  • el código actual
  • temp/v013_end_to_end_validation.json
  • el manifest persistido en C:\Users\ren\.abletonmcp_ai\generation_manifests.json

Resultado de esa verificación:

  • el report acierta en que existe trabajo real sobre preferred_secondary_families, piano_presence y test_piano_forward.py
  • el report exagera el estado final de la validación
  • la sesión a1ad924f1970 persistida muestra problemas reales que el report no refleja:
    • layer_selections quedó con error
    • piano_presence quedó con error en ese manifest
    • mandatory_midi_hook quedó planned=true y materialized=false

En esta revisión ya se corrigió código para:

  • evitar que el bonus piano-forward premie por error a pad genérico
  • hacer que piano_presence lea el shape real de layer_selections
  • endurecer test_piano_forward.py para validar implementación real y no solo constantes

Pero todavía falta la prueba definitiva:

  • rerun real
  • manifest persistido correcto
  • hook materializado
  • mejora audible y verificable por sección

Regla de trabajo

Este sprint no se puede cerrar con un json que solo diga “PASS”.

Tiene que cumplirse todo esto a la vez:

  • el manifest persistido debe quedar bien
  • get_generation_manifest(session_id) debe devolver el manifest correcto
  • layer_selections no puede quedar como error
  • piano_presence no puede quedar como error
  • el hook obligatorio debe quedar realmente materializado

Tareas

1. Cerrar la brecha entre “validation json” y manifest persistido

Hoy existe una diferencia entre:

  • el artifact temp/v013_end_to_end_validation.json
  • el manifest persistido real
  • la consulta MCP de get_generation_manifest

El sprint debe:

  • verificar por qué una validación puede marcar PASS aunque el manifest persistido tenga errores
  • dejar un único criterio de verdad
  • agregar un check explícito que falle si layer_selections.error o piano_presence.error existen

2. Resolver definitivamente mandatory_midi_hook

El manifest real de a1ad924f1970 dejó:

  • planned = true
  • materialized = false
  • error = "Hook planned but not materialized - state confusion bug"

Eso sigue siendo una falla de coherencia crítica.

El sprint debe cerrar:

  • reserva de slot
  • creación real del hook
  • verificación en Ableton
  • persistencia correcta en manifest

3. Hacer el piano-forward realmente section-aware

Hoy el bonus existe, pero sigue siendo esencialmente por rol.

Agregar una política por sección:

  • intro/break/build: más probabilidad de piano/keys/rhodes
  • drop/lead/hook: preservar prioridad de familia primaria
  • evitar que el mismo piano invada todo el track si no corresponde

4. Mejorar la auditabilidad del piano-forward

El manifest debe permitir responder estas preguntas sin releer logs:

  • qué capas ganaron por bonus piano-forward
  • qué roles usaron piano/keys/rhodes
  • qué familias secundarias preferidas estaban activas
  • qué capas no recibieron bonus y por qué

Mínimo esperado:

  • layer_selections.layers[].winner.scores.piano_bonus
  • layer_selections.layers[].selection_context.preferred_secondary_families
  • piano_presence sin errores y con datos consistentes

5. Subir coherencia global sin perder piano

El piano-forward no debe empeorar:

  • pack coherence
  • motif coverage
  • key coherence

Agregar al menos una validación que controle:

  • piano-forward activo
  • hook materializado
  • coherence_score no peor que el baseline comparable

6. End-to-end real y persistido

Correr una generación nueva con referencia y verificar:

  1. temp/...validation.json marca PASS
  2. get_generation_manifest(session_id) devuelve manifest válido
  3. el archivo persistido contiene el mismo session_id
  4. layer_selections está poblado
  5. piano_presence tiene datos reales, no error
  6. mandatory_midi_hook.materialized == true

Archivos foco

  • C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\reference_listener.py
  • 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\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_piano_forward.py
  • C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs
  • C:\Users\ren\.abletonmcp_ai\generation_manifests.json

Criterio de salida

El sprint cierra solo si:

  1. el piano-forward sigue favoreciendo piano/keys en roles y secciones de soporte
  2. pad genérico no recibe por error el bonus de piano
  3. layer_selections y piano_presence quedan correctos en el manifest persistido
  4. el hook MIDI obligatorio queda materializado de verdad
  5. el manifest es recuperable tanto por MCP como por historial persistido
  6. la validación end-to-end confirma mejora audible sin ocultar errores estructurales