5.1 KiB
Sprint v0.1.11 - Runtime Coherence Closure
Fecha: 2026-04-01
Estado: pendiente
Objetivo: cerrar la coherencia sonora end-to-end en runtime, no solo en blueprint/tests
Contexto
En v0.1.10 quedaron avances reales en:
PhrasePlancon family lock soportado en constructor y serialización.reference_listener.pydevolviendoprimary_harmonic_familyy evitando hardcodearreggaetonen la selección con budget.- wiring documental y skill actualizados al layout real del repo.
Pero todavía hay huecos de runtime que impiden dar por cerrado el problema de coherencia:
server.pysigue siendo el punto crítico del flujo real.- el budget real todavía puede divergir del estado físico si no reserva lugar para el hook obligatorio antes de crear tracks opcionales.
- el reintegro de datos de referencia en
server.pymezcla variables no definidas con estado derivado del plan. sample_selector.pysigue teniendoJOINT_SCORE, pero el flujo principal de remake por referencia todavía no está gobernado por ese score de forma contractual.
Regla de trabajo
Este sprint no se considera completo con logs verdes ni con tests unitarios aislados.
Tiene que cerrar el camino:
reference_listener.py -> server.py reference context -> song_generator.py -> materialización real en Ableton -> manifest final
Tareas
1. Cerrar server.py como fuente de verdad del contexto híbrido
Arreglar el bloque de reintegración de reference_audio_plan para que use variables definidas explícitamente:
ref_phrase_planref_musical_themeref_harmonic_hintsref_micro_stemref_synth_hintref_primary_family
Además:
- propagar
primary_harmonic_familyalconfig - evitar reescrituras redundantes o inconsistentes entre
reference_context,reference_audio_planyconfig
2. Convertir el budget real en contrato físico, no contable
Eliminar cualquier intento de “hacer lugar” solo bajando contadores o removiendo entradas de memoria.
El comportamiento correcto:
- reservar slot para
HOOK_MIDIantes de que los opcionales consuman el budget - liberar la reserva cuando el hook se materializa
- si el slot reservado se pierde, fallar explícitamente en manifest y logs
No aceptar:
replaced_by_mandatorysin remover track físico real en Ableton- mismatch silencioso entre
budget_realy runtime real
3. Materializar el hook obligatorio bajo presupuesto correcto
El hook MIDI debe seguir siendo obligatorio, pero con reglas consistentes:
- si existe
hook_plan, reservar su slot antes de crear capas opcionales/derivadas - si no existe
hook_plan, crear fallback explícito y marcarlo como tal mandatory_midi_hook.planned,materializedytrack_exists_in_abletondeben concordar
4. Integrar JOINT_SCORE en el flujo principal de referencia
Hoy sample_selector.py tiene scoring más rico que el flujo principal de reference_listener.py.
El sprint debe:
- decidir una sola fuente de verdad para scoring de selección
- hacer que la selección principal de capas harmónicas y variantes use ese score
- dejar evidencia en logs/manifest de por qué una capa ganó
Si no se integra completo, al menos debe quedar el adapter listo y el flujo antiguo marcado como transitorio.
5. Endurecer validación y tests
Agregar validación que falle si ocurre cualquiera de estos casos:
phrase_planrestaurado pierdeprimary_harmonic_familymandatory_midi_hook.planned = trueymaterialized = falsebudget_real.created > 16budget_real.created != runtime_track_deltacuando el cálculo apliqueprimary_harmonic_familyno aparece en manifest de generaciones con referencia
Actualizar test_phrase_plan.py para que no imprima “FAIL” y siga como si nada.
Ese test debe usar assert real y tokens normalizados en minúscula.
Archivos foco
C:\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\reference_listener.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\sample_selector.pyC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\test_phrase_plan.pyC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\abletonmcp_init.py
Criterio de salida
El sprint cierra solo si:
- compilan los archivos tocados
test_phrase_plan.pyfalla de verdad si se rompe el family lock- el hook obligatorio queda materializado o el manifest falla explícitamente
- no hay hardcodes de género en la selección con budget
- el manifest final expone
primary_harmonic_family, estado real del hook y resumen confiable de budget
Nota operativa
Antes de editar server.py o abletonmcp_init.py, cerrar Ableton Live 12 Suite si está corriendo.
En este entorno Windows esos archivos pueden quedar bloqueados por el proceso y dejar el sprint a mitad de camino.