Files
ableton-mcp-ai/docs/SPRINT_v0.1.20_VALIDATION_REPORT.md

6.3 KiB

Sprint v0.1.20 Validation Report

Owner: GLM via OpenCode Date: 2026-04-01 (Updated) Baseline Session: a6a4cc87e493 Status: IN PROGRESS - MCP Connection Timed Out


Executive Summary

This sprint focused on fixing critical issues identified in v0.1.19:

  1. P1: Vocal Leak - Vocal roles were being auto-generated despite manual-only policy
  2. P2: Anti-Loop - Section variation was being flattened during consolidation
  3. P4: Hybrid Truth - MIDI hook materialization failing

CRITICAL FINDING: Anti-Loop Fix Was in WRONG Path

Discovery: The anti-loop fix added to _apply_clip_consolidation() was NOT in the active runtime path. The ACTUAL consolidation happens in:

  • _materialize_reference_audio_layers() lines 4599-4647
  • _build_audio_pattern_positions() lines 3784-3833

Fix Applied: Added anti-flattening logic to _materialize_reference_audio_layers() at lines 4618-4667:

  • Check section_variants BEFORE consolidation
  • Skip consolidation for music/harmonic roles with section variants
  • Skip consolidation for SECTION_VARIATION_ROLES

Changes Implemented (v0.1.20 FINAL)

P1: Vocal Leak Fixes (COMPLETED)

File Line Change
song_generator.py 5880 Removed 'vocal' from OPTIONAL track budget
song_generator.py 11741 Removed ('VOCAL CHOP', 'vocal', ...) from reggaeton track specs
song_generator.py 11843 Removed ('VOCAL CHOP', 'vocal', ...) insert for house/tech-house/trance
song_generator.py 11867 Removed ('VOCAL', 'vocal', ...) from drum-and-bass track specs
song_generator.py 5672 Removed 'vocal_shot' and 'vocal_loop' from VARIATION_ROLES
reference_listener.py 5626-5632 Added _is_manual_recording_role() filter in CORE_ROLES selection loop
reference_listener.py 5874-5880 Added _is_manual_recording_role() filter in OPTIONAL_ROLES selection loop
reference_listener.py 7125-7138 Added conditional skip for vocal_alt selection when manual-only

P2: Anti-Loop Fixes (COMPLETED - IN ACTIVE PATH)

File Line Change
server.py 4618-4667 Added anti-flattening check BEFORE consolidation in _materialize_reference_audio_layers()

Key Code Added:

# P2: ANTI-FLATTEN - Check section_variants BEFORE consolidation
section_variants = layer.get('section_variants', {})
has_variants = bool(section_variants)

MUSIC_HARMONIC_ROLES = {"chords", "synth_loop", "pad", "lead", "pluck", "arp", "drone", "texture", "ambient"}
SECTION_VARIATION_ROLES = {"perc_loop", "top_loop", "perc_alt", "synth_peak", "atmos_fx", "fill_fx"}

should_preserve_positions = has_variants and (
    role_lower in MUSIC_HARMONIC_ROLES or role_lower in SECTION_VARIATION_ROLES
)

if should_preserve_positions:
    logger.info("[P2_ANTI_FLATTEN] Role '%s' (%s) has section_variants - preserving %d positions",
               role_lower, track_name, len(positions))

Test Results

All tests PASS:

Ran 23 tests in 0.004s - OK (test_piano_forward.py)
Ran 11 tests in 1.546s - OK (test_selection_coherence.py)

Tests include:

  • test_sanitize_audio_layer_records_removes_manual_vocal_layers - OK
  • test_repetition_metrics_detect_repetitive_harmonic_sections - OK
  • test_repetition_metrics_handle_sections_with_missing_end_values - OK (end=None bug fixed by Codex)

Runtime Validation Attempt

Status: MCP CONNECTION TIMED OUT

Attempted to generate using:

generate_song(
    genre="reggaeton",
    style="perreo duro vieja escuela tipo safaera",
    reference="libreria/reggaeton/ejemplo.mp3"
)

Result: MCP error -32001: Request timed out

Diagnosis:

  • MCP server is listening on port 9877
  • Ableton is running
  • But commands are timing out (both get_session_info and generate_song)
  • Likely a stale connection or blocking operation

last_generation_id remains: a6a4cc87e493


Baseline Session Analysis (a6a4cc87e493)

Threshold Failures Found

Threshold Expected Actual Status
coherence_score ≥6.5 5.5 FAIL
mandatory_midi_hook.materialized true false FAIL
piano_presence.piano_layer_count ≥1 0 FAIL
layer_selections.summary.total_layers >0 0 FAIL
repetition_metrics.verdict ≠ repetitive N/A ⚠️ NOT FOUND

Vocal Leak Confirmed

The baseline manifest showed 3 vocal tracks auto-generated:

  • AUDIO VOCAL BUILD
  • AUDIO VOCAL PEAK
  • AUDIO VOCAL SHOT

Files Modified

  1. AbletonMCP_AI/AbletonMCP_AI/MCP_Server/song_generator.py

    • Vocal removed from track budget (line 5880)
    • Vocal track specs removed for all genres (lines 11741, 11843, 11867)
    • VARIATION_ROLES cleaned (line 5672)
  2. AbletonMCP_AI/AbletonMCP_AI/MCP_Server/reference_listener.py

    • Manual-only role filtering added to CORE_ROLES loop (lines 5626-5632)
    • Manual-only role filtering added to OPTIONAL_ROLES loop (lines 5874-5880)
    • Vocal_alt selection skipped for manual-only roles (lines 7125-7138)
  3. AbletonMCP_AI/AbletonMCP_AI/MCP_Server/server.py

    • CRITICAL: Anti-flattening check added BEFORE consolidation (lines 4618-4667)
    • This is the ACTIVE runtime path, not a helper function

Open Issues

1. MCP Connection Timeout

Status: Requires investigation

Symptoms:

  • get_session_info times out
  • generate_song times out
  • netstat shows MCP listening but connections in TIME_WAIT

Potential Causes:

  • Stale connection blocking new requests
  • Previous generate request still running
  • Ableton main thread blocked

2. Hook Materialization

Status: Unstable (not consistently failing)

Evidence from manifests:

  • 4c697638bd3d: hook materialized = true
  • ba306bd7575b: hook materialized = true
  • a6a4cc87e493: hook materialized = false

Verdict

Status: CODE COMPLETE - RUNTIME VALIDATION BLOCKED

  • P1: Vocal leak fixes implemented (all layers cleaned)
  • P2: Anti-loop fix placed in ACTIVE runtime path
  • Tests pass (23 + 11 = 34 tests)
  • Runtime validation: MCP connection timed out

Cannot close sprint without:

  1. New session_id persisted
  2. Thresholds verified on new generation

Recommendation: Investigate MCP connection timeout before proceeding with P4 investigation.