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_presenceytest_piano_forward.py - el report exagera el estado final de la validación
- la sesión
a1ad924f1970persistida muestra problemas reales que el report no refleja:layer_selectionsquedó con errorpiano_presencequedó con error en ese manifestmandatory_midi_hookquedóplanned=trueymaterialized=false
En esta revisión ya se corrigió código para:
- evitar que el bonus piano-forward premie por error a
padgenérico - hacer que
piano_presencelea el shape real delayer_selections - endurecer
test_piano_forward.pypara 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 correctolayer_selectionsno puede quedar como errorpiano_presenceno 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.erroropiano_presence.errorexisten
2. Resolver definitivamente mandatory_midi_hook
El manifest real de a1ad924f1970 dejó:
planned = truematerialized = falseerror = "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_bonuslayer_selections.layers[].selection_context.preferred_secondary_familiespiano_presencesin 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_scoreno peor que el baseline comparable
6. End-to-end real y persistido
Correr una generación nueva con referencia y verificar:
temp/...validation.jsonmarca PASSget_generation_manifest(session_id)devuelve manifest válido- el archivo persistido contiene el mismo
session_id layer_selectionsestá pobladopiano_presencetiene datos reales, no errormandatory_midi_hook.materialized == true
Archivos foco
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\reference_listener.pyC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.pyC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\song_generator.pyC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_piano_forward.pyC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docsC:\Users\ren\.abletonmcp_ai\generation_manifests.json
Criterio de salida
El sprint cierra solo si:
- el piano-forward sigue favoreciendo
piano/keysen roles y secciones de soporte padgenérico no recibe por error el bonus de pianolayer_selectionsypiano_presencequedan correctos en el manifest persistido- el hook MIDI obligatorio queda materializado de verdad
- el manifest es recuperable tanto por MCP como por historial persistido
- la validación end-to-end confirma mejora audible sin ocultar errores estructurales