356 lines
8.9 KiB
Markdown
356 lines
8.9 KiB
Markdown
# SPRINT v0.1.32 - NEXT FOR KIMI
|
|
## Validate The Correct Hybrid Path, Preserve Hook Budget, Stop Reporting The Wrong Session
|
|
|
|
**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.31_VALIDATION_REPORT.md`
|
|
|
|
---
|
|
|
|
## 1. Runtime Truth
|
|
|
|
You must start from verified truth, not from the previous report text.
|
|
|
|
Codex verified:
|
|
|
|
- `C:\Users\ren\.abletonmcp_ai\generation_manifests.json` now has:
|
|
- `last_generation_id = 9160b54c7089`
|
|
- therefore the report statement "unpersisted" was false
|
|
- the session `9160b54c7089` is persisted
|
|
- but it is **not** valid proof of the sprint target because:
|
|
- `reference_path = null`
|
|
- `primary_harmonic_family = null`
|
|
- `library_first_mode = false`
|
|
- `generation_mode = midi-first`
|
|
|
|
That means:
|
|
|
|
- Kimi validated the wrong pipeline
|
|
- the report mixed a real failure with the wrong root cause framing
|
|
|
|
The true reading of `9160b54c7089` is:
|
|
|
|
- hook still missing: true
|
|
- snare selectivity improved: probably true
|
|
- hybrid sprint closed: false
|
|
- budget overflow `17/16 exceeded`: false
|
|
|
|
Real manifest truth for `9160b54c7089`:
|
|
|
|
- `budget_real.created = 16`
|
|
- `budget_real.exceeded = false`
|
|
- `HARMONY_PIANO_MIDI` appears in `omitted_details`
|
|
- so the hook was omitted by budget pressure after the reservation was lost
|
|
- not by a true post-limit overrun
|
|
|
|
---
|
|
|
|
## 2. Code Review Of Kimi's v0.1.31 Work
|
|
|
|
### 2.1 What Kimi got right
|
|
|
|
Kimi did identify two real things:
|
|
|
|
1. `HARMONY_PIANO_MIDI` was still not materialized in the tested run
|
|
2. the aggressive snare issue was moving in the right direction
|
|
|
|
Those observations were useful.
|
|
|
|
### 2.2 What Kimi got wrong
|
|
|
|
Kimi made three review-grade mistakes:
|
|
|
|
1. Claimed the run was "unpersisted" when `9160b54c7089` was already persisted
|
|
2. Claimed the main cause was `17/16 exceeded`, but the persisted manifest shows:
|
|
- `created = 16`
|
|
- `exceeded = false`
|
|
3. Validated a `midi-first` run with `reference_path = null` as if it were evidence for the `library-first-hybrid` sprint
|
|
|
|
That is not acceptable for senior validation.
|
|
|
|
### 2.3 Core review conclusion
|
|
|
|
The main bug is not "metrics missing".
|
|
|
|
The main bug is:
|
|
|
|
- validating the wrong runtime path
|
|
- while the hook reservation could still be lost during arrangement recovery
|
|
|
|
---
|
|
|
|
## 3. What Codex Fixed In This Turn
|
|
|
|
These fixes are already on disk. Do not revert them.
|
|
|
|
### 3.1 Hook reservation is no longer released during arrangement recovery
|
|
|
|
In:
|
|
|
|
- `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py`
|
|
|
|
Codex removed the bad behavior in `_recover_with_audio_arrangement_fallback(...)`:
|
|
|
|
- before: recovery fallback explicitly released the `HOOK_MIDI` reservation
|
|
- result: audio layers could consume the last slot before hook materialization
|
|
- now: the reservation survives recovery fallback
|
|
|
|
This is the real runtime fix that Kimi missed.
|
|
|
|
### 3.2 Senior validation now reads final coherence truth
|
|
|
|
Codex fixed `server.py` so `senior_validation` no longer freezes stale zeros when:
|
|
|
|
- `coherence_score` already exists on the manifest
|
|
- or only `coherence_metrics.coherence_score` exists
|
|
- or `pack_coherence` only exists inside `coherence_metrics`
|
|
|
|
Also:
|
|
|
|
- `senior_validation` is now re-run after `coherence_metrics` are populated
|
|
|
|
This closes the false pattern where the manifest said:
|
|
|
|
- `coherence_score = 5.4`
|
|
|
|
but `senior_validation.results.coherence_score.value = 0.0`
|
|
|
|
### 3.3 This means the next report has a higher bar
|
|
|
|
From now on Kimi must not claim:
|
|
|
|
- "coherence_score unavailable"
|
|
- or `pack_coherence = 0.0`
|
|
|
|
if the persisted manifest already contains those fields.
|
|
|
|
---
|
|
|
|
## 4. Product Direction Still Active
|
|
|
|
The user requirement is unchanged.
|
|
|
|
Target sound logic:
|
|
|
|
- coherent reggaeton / hybrid arrangement
|
|
- `HARMONY_PIANO_MIDI` as harmonic spine
|
|
- blended with the user's library
|
|
- fewer empty gaps
|
|
- no fake variation by silence
|
|
|
|
The user terminology:
|
|
|
|
- "piano roll"
|
|
- "piano armonico"
|
|
|
|
must still be interpreted as:
|
|
|
|
- arrangement-backed harmonic MIDI support
|
|
- not only audio piano loops
|
|
|
|
---
|
|
|
|
## 5. Required Work For v0.1.32
|
|
|
|
### P0. Validate only the correct path
|
|
|
|
The next validation is invalid unless all of this is true:
|
|
|
|
- `reference_path` is not null
|
|
- `library_first_mode = true`
|
|
- `generation_mode = library-first-hybrid`
|
|
|
|
If any of those are false:
|
|
|
|
- stop
|
|
- mark the run invalid for this sprint
|
|
- do not present it as evidence
|
|
|
|
### P0. Prove the hook survives the physical budget
|
|
|
|
Now that Codex preserved the reservation across recovery fallback, you must verify the result on a real run.
|
|
|
|
Required:
|
|
|
|
- `mandatory_midi_hook.track_name = HARMONY_PIANO_MIDI`
|
|
- `mandatory_midi_hook.materialized = true`
|
|
- `mandatory_midi_hook.arrangement_backed = true`
|
|
- hook must no longer appear in `budget_real.omitted_details`
|
|
|
|
This is the central runtime gate.
|
|
|
|
### P0. Revalidate continuity with the correct hybrid run
|
|
|
|
Do not reuse the `9160b54c7089` run for closure.
|
|
|
|
Generate and validate a new persisted session where:
|
|
|
|
- reference is real
|
|
- hybrid path is real
|
|
- hook path is real
|
|
|
|
Then evaluate:
|
|
|
|
- `harmonic_coverage_ratio`
|
|
- `max_harmonic_gap_beats`
|
|
- `music_source_reuse_ratio`
|
|
- `coherence_score`
|
|
|
|
Targets:
|
|
|
|
- `harmonic_coverage_ratio >= 0.85`
|
|
- `max_harmonic_gap_beats <= 8`
|
|
- `coherence_score > 4.9`
|
|
|
|
### P0. The song must not feel like audio islands
|
|
|
|
The user complaint remains:
|
|
|
|
- one strong loop
|
|
- then a hole
|
|
- then another block
|
|
|
|
So the next run must explicitly check:
|
|
|
|
- whether `HARMONY_PIANO_MIDI` bridges intro/build/drop/break/outro
|
|
- whether audio support and MIDI support overlap enough to avoid harmonic collapse
|
|
|
|
Do not solve this by:
|
|
|
|
- random extra layers
|
|
- more clutter
|
|
- more FX spam
|
|
|
|
### P1. Keep snare selectivity contextual
|
|
|
|
The sample:
|
|
|
|
- `SS_RNBL_Me_Gustas_One_Shot_Snare.wav`
|
|
|
|
must remain selectable only when the context justifies it.
|
|
|
|
Rules:
|
|
|
|
- no blacklist
|
|
- no filename if/else special-case
|
|
- no fake report claim without ranking evidence
|
|
|
|
### P1. No auto vocals
|
|
|
|
Still required:
|
|
|
|
- zero automatic vocal layers
|
|
- zero vocal fallback
|
|
- zero vocal shot auto-generation
|
|
|
|
---
|
|
|
|
## 6. Required Evidence For The Next Report
|
|
|
|
Kimi must include all of this or the report is invalid.
|
|
|
|
### 6.1 Manifest truth
|
|
|
|
- new real `session_id`
|
|
- persisted in `generation_manifests.json`
|
|
- raw values for:
|
|
- `reference_path`
|
|
- `library_first_mode`
|
|
- `generation_mode`
|
|
- `mandatory_midi_hook`
|
|
- `budget_real`
|
|
|
|
### 6.2 MCP truth
|
|
|
|
Use MCP and include raw evidence for:
|
|
|
|
- `get_session_info()`
|
|
- `get_tracks()`
|
|
|
|
Specifically prove:
|
|
|
|
- `HARMONY_PIANO_MIDI` exists
|
|
- it has arrangement presence
|
|
- it is not replaced by only `1-MIDI` / `SC_TRIGGER`
|
|
|
|
### 6.3 Coherence truth
|
|
|
|
Include the persisted values for:
|
|
|
|
- `coherence_score`
|
|
- `coherence_verdict`
|
|
- `pack_coherence`
|
|
- `family_adherence_rate`
|
|
- `harmonic_coverage_ratio`
|
|
- `max_harmonic_gap_beats`
|
|
|
|
Do not report pre-coherence or stale zeros.
|
|
|
|
---
|
|
|
|
## 7. Files Kimi Must Review
|
|
|
|
Required:
|
|
|
|
1. `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.31_VALIDATION_REPORT.md`
|
|
2. `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py`
|
|
3. `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\song_generator.py`
|
|
4. `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\coherence_analyzer.py`
|
|
5. `C:\Users\ren\.abletonmcp_ai\generation_manifests.json`
|
|
|
|
Recommended:
|
|
|
|
6. current Live set via MCP
|
|
|
|
---
|
|
|
|
## 8. Exit Criteria
|
|
|
|
Do not close v0.1.32 unless all of these are true on the same persisted run:
|
|
|
|
- `reference_path` present
|
|
- `library_first_mode = true`
|
|
- `generation_mode = library-first-hybrid`
|
|
- `mandatory_midi_hook.track_name = HARMONY_PIANO_MIDI`
|
|
- `mandatory_midi_hook.materialized = true`
|
|
- `mandatory_midi_hook.arrangement_backed = true`
|
|
- hook absent from `budget_real.omitted_details`
|
|
- `harmonic_coverage_ratio >= 0.85`
|
|
- `max_harmonic_gap_beats <= 8`
|
|
- `coherence_score > 4.9`
|
|
- no auto vocals
|
|
|
|
If the run is `midi-first`, it is not a closure candidate for this sprint.
|
|
|
|
---
|
|
|
|
## 9. Validation Report Required
|
|
|
|
Produce:
|
|
|
|
`C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.32_VALIDATION_REPORT.md`
|
|
|
|
It must explicitly say:
|
|
|
|
1. whether the run is a valid hybrid run or not
|
|
2. whether the hook survived the budget
|
|
3. whether the manifest was truly persisted
|
|
4. whether the report is using final coherence values, not stale pre-analysis values
|
|
|
|
Invalid report patterns:
|
|
|
|
- "unpersisted" when the manifest exists
|
|
- "budget exceeded 17/16" when the manifest says otherwise
|
|
- validating `midi-first` as if it proved the hybrid sprint
|
|
|
|
---
|
|
|
|
## 10. Final Instruction To Kimi
|
|
|
|
The next sprint is not about making the report more convincing.
|
|
|
|
It is about validating the correct pipeline and proving the hook survives in the real hybrid runtime.
|
|
|
|
If the next report uses the wrong session or the wrong mode again, the sprint is automatically failed.
|