11 KiB
SPRINT v0.1.31 - NEXT FOR KIMI
Real Harmonic Spine In Arrangement, Not Just Better Metrics
Owner: Kimi via OpenCode
Reviewer: Codex
Fecha: 2026-04-02
Report reviewed: C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.30_VALIDATION_REPORT.md
1. Runtime Truth
Read the report, then verify against reality.
Authoritative sources for this sprint:
C:\Users\ren\.abletonmcp_ai\generation_manifests.json- current Live session via MCP
- active code in:
C:\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\server.pyC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\coherence_analyzer.py
Current verified truth from Codex:
docs/SPRINT_v0.1.30_VALIDATION_REPORT.mdis only partially correct- the harmonic coverage metric exists and is wired into
server.py - snare evidence is directionally better
- but the active runtime problem remained open
- current open Live session is a
136 BPMtest set with16tracks and4returns - that session does not contain
HARMONY_PIANO_MIDI - track
0is still1-MIDIwithSC_TRIGGERarrangement clips - therefore the song can still end up with audio blocks plus harmonic holes
Manifest truth:
last_generation_idinC:\Users\ren\.abletonmcp_ai\generation_manifests.jsonis still674195e90446- the newer
136 BPMvalidation session was not persisted as a new manifest - do not claim sprint closure from an unpersisted generation
2. What Kimi Actually Did In v0.1.30
2.1 What was real
These parts were real and should be preserved:
coherence_analyzer.pynow has a harmonic coverage metricserver.pyimports and runs the coherence analyzer- the report correctly identified that
HARMONY_PIANO_MIDIwas still missing in the new runtime test - the report correctly noticed that
SS_RNBL_Me_Gustas_One_Shot_Snare.wavdid not win in that specific new session
2.2 What was still wrong
The sprint was not closed because the work stayed too metric-centric.
Main failures:
HARMONY_PIANO_MIDIwas still not present in the new active runtime test.- No new persisted manifest proved the fix end-to-end.
- The code path still allowed the harmonic hook to be absent when only
phrase_planexisted andharmonic_hintsdid not. - The fallback hook logic was too weak and too late:
- it could devolve to a tiny local note
- it was not guaranteed to span the song
- Naming was inconsistent:
- some branches still wanted
HARMONY_<FAMILY>_MIDI - product truth for this project is
HARMONY_PIANO_MIDI
- some branches still wanted
3. What Codex Fixed In This Turn
These fixes are already on disk. Do not revert them.
3.1 Hook planning now works from phrase_plan, not only from harmonic hints
In:
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\song_generator.py
Codex fixed _render_musical_scene(...) so the hook can be planned when:
harmonic_hintsexist- or
phrase_planalready contains harmonic material
This closes a real gap in the planner:
- before: no hints -> no hook plan
- now: phrase-driven harmonic generation can still emit the mandatory hook plan
3.2 Library-first now has a real default harmonic fallback
In:
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py
Codex added _build_default_harmonic_hook_payload(...).
This matters because the previous no-plan fallback was too weak:
- one tiny default note
- short local scope
- no real song-wide harmonic coverage
Now the default fallback:
- builds
arrangement_notes - spans the song sections
- keeps the track name fixed as
HARMONY_PIANO_MIDI - prefers
piano/keyssupport instead of drifting back to pluck as the fallback identity
3.3 Library-first support hook naming is now consistent
Codex fixed the inconsistent branch that could still emit:
HARMONY_PLUCK_MIDIHARMONY_KEYS_MIDI
That is no longer acceptable for this product direction.
From now on the harmonic support track must be named:
HARMONY_PIANO_MIDI
Family may still be internally piano or keys, but product-level track identity must stay stable.
3.4 Tests were hardened
Codex added coverage to:
- plan the hook from
phrase_planeven withoutharmonic_hints - verify the default fallback payload spans the song and keeps the correct track name
These tests passed.
4. Code Review Of v0.1.30
This is the review Kimi must take seriously.
4.1 Good work
- Kimi did not invent a fake hook success
- Kimi did add a useful metric for harmonic coverage
- Kimi did provide real evidence that the current active issue was still open
4.2 Weak work
Kimi still worked too far from the runtime bottleneck.
The pattern was:
- add analyzer
- add scoring
- improve report
- but not fully close
phrase plan -> hook plan -> hook materialization -> persisted manifest
That is not enough anymore.
4.3 Senior review finding
The main regression shape now is:
- better-looking arrangement
- somewhat better snare choice
- but harmonic glue still under-materialized
- and the song can still collapse into “good audio chunk + empty space”
That means the real bottleneck is still:
- arrangement-backed harmonic continuity
not:
- more metrics
- more summary text
5. Product Clarification
The user already clarified this and you must apply it exactly.
When the user says:
piano rollpiano armonico
In this project that means:
- harmonic MIDI support
HARMONY_PIANO_MIDI- arrangement-backed harmonic continuity across the song
- blended with the library audio
It does not mean:
- only audio piano loops
- only
AUDIO_PIANO_MELODY - piano as optional candy
The correct product target is:
- library-first hybrid
- with
HARMONY_PIANO_MIDIacting as the harmonic spine
6. Required Work For v0.1.31
P0. Restart OpenCode before validating
Codex changed:
server.pysong_generator.py
OpenCode must be restarted before the next validation so the new server process loads the updated code.
P0. Prove HARMONY_PIANO_MIDI in Arrangement, not in theory
Required output:
- a new persisted session id
mandatory_midi_hook.track_name = HARMONY_PIANO_MIDImandatory_midi_hook.materialized = truemandatory_midi_hook.materialization_mode = arrangementorembeddedmandatory_midi_hook.arrangement_backed = true
Not acceptable:
- Session-only clip
- no hook track in MCP
- “hook solved” without a persisted manifest
P0. Make harmonic MIDI survive across the whole song
The user complaint is still:
- one good loop
- then space
- then another block
You must reduce harmonic dead air.
Required:
HARMONY_PIANO_MIDImust exist through the song in transformed form- it must help bridge holes when audio loops thin out
- it must not disappear for long stretches
Allowed variation:
- voicing changes
- density changes
- register changes
- simpler break version
- stronger drop version
Not allowed:
- using silence as fake variation
P0. Treat harmonic coverage as a runtime gate, not only a report metric
The new harmonic coverage metric is useful only if it drives decisions.
At minimum, verify and report:
harmonic_coverage_ratiomax_harmonic_gap_beats
Target for v0.1.31:
max_harmonic_gap_beats <= 8harmonic_coverage_ratio >= 0.85
If either fails, explain the exact gap source:
- missing hook
- hook too short
- no harmonic audio support in break/build
- section omission logic too aggressive
P1. Do not regress snare selectivity
The sample:
SS_RNBL_Me_Gustas_One_Shot_Snare.wav
must remain contextual, not banned.
Rules:
- no blacklist
- no hard-coded filename ban
- no fake fix in report text only
What is acceptable:
- it loses in softer contexts because the ranking says so
- it can still win in aggressive sections if justified
P1. Do not solve continuity by adding clutter
Bad fix:
- extra random layers
- extra FX noise
- unrelated packs
Good fix:
- stronger harmonic spine
- better section continuity
- measured variation
P1. Keep auto vocals disabled
Still mandatory:
- no auto vocal layers
- no vocal fallback
- no vocal shots
The user will record vocals manually.
7. Files Kimi Must Review
Required:
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.30_VALIDATION_REPORT.mdC:\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\server.pyC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\coherence_analyzer.pyC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_piano_forward.py
Optional:
- current Live set via MCP
get_session_info()andget_tracks()
8. Exit Criteria
Do not close v0.1.31 without a new persisted session.
Required:
- new real
session_id - persisted in
generation_manifests.json generation_mode = library-first-hybridmandatory_midi_hook.track_name = HARMONY_PIANO_MIDImandatory_midi_hook.materialized = truemandatory_midi_hook.arrangement_backed = truecoherence_score > 4.9family_adherence_rate > 0.5harmonic_coverage_ratio >= 0.85max_harmonic_gap_beats <= 8vocal_layers_auto = 0
Musical exit criteria:
- the song no longer feels like isolated loop islands
- the harmonic MIDI is actually carrying continuity
- the user can hear harmonic glue through the arrangement
9. Validation Report Required
Kimi must produce:
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.31_VALIDATION_REPORT.md
Required contents:
- real persisted
session_id - proof that the generation was actually stored
- MCP evidence for
HARMONY_PIANO_MIDI arrangement_clip_countsession_clip_countmandatory_midi_hook.materialization_modemandatory_midi_hook.arrangement_backedharmonic_coverage_ratiomax_harmonic_gap_beats- snare ranking evidence
- confirmation that auto vocals remain disabled
- one honest paragraph answering:
- does the song still feel like “good block + empty hole” or not
Invalid report patterns:
- claiming success from metrics only
- claiming hook success without MCP evidence
- using an unpersisted session as the main proof
10. Final Instruction To Kimi
Act like a senior engineer reviewing a production system, not a metric generator.
The next sprint is not about prettier analytics.
It is about:
- real
HARMONY_PIANO_MIDI - real Arrangement continuity
- real reduction of harmonic holes
If the next song still sounds like a few strong fragments separated by empty space, the sprint is not closed.