Sync: Complete project state with all MEGA SPRINT V1-V3 features and Codex stubs

This commit is contained in:
renato97
2026-04-08 17:58:47 -03:00
parent c9d3528900
commit 6d080d43b3
372 changed files with 189715 additions and 8590 deletions

View File

@@ -0,0 +1,477 @@
# SPRINT v0.1.37 - NEXT FOR GLM
## Close The Real Project-Editing Runtime Path On `song.als`
**Owner:** GLM via OpenCode
**Reviewer:** Codex
**Fecha:** 2026-04-02
**Mode:** Project editing, not new-song generation
Primary benchmark project:
- `C:\Users\ren\Desktop\song Project\song.als`
Reference docs:
- `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\PROJECT_AUDIT_song_2026-04-03.md`
- `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.36_IMPLEMENTATION_REPORT.md`
---
## 1. Reviewer Summary
GLM did useful work in `server.py`: the public MCP surface for project editing is now much larger.
But the report was **not** accurate enough to mark the sprint complete.
Codex review found this real state:
- the report said `COMPLETED`
- the code actually had a **partial MCP layer / partial runtime layer** split
- `get_clips` was exposed publicly but not routed in the runtime
- arrangement MIDI editing still depended on `track.create_clip(...)`, which is not available in this Live install
- `set_device_parameter` was exposed publicly, but the public tool did not expose the runtime's `parameter_name` path
- the report mentioned a temp file `sprint_036_tools.py`, but that file is not present in the active tree
So the correct interpretation of v0.1.36 is:
- **good direction**
- **not closed**
---
## 2. What Codex Fixed After GLM
These are already fixed in code and must be treated as the new baseline.
### 2.1 `server.py`
Codex fixed:
- `set_device_parameter(...)` now supports both:
- `parameter_index`
- `parameter_name`
- `audit_current_project()` now reports `repeated_clip_overuse`
### 2.2 `abletonmcp_init.py`
Codex fixed:
- runtime routing for `get_clips`
- runtime routing now passes `track_type` to:
- `get_clip_info`
- `create_arrangement_clip`
- `add_notes_to_arrangement_clip`
- `duplicate_clip_to_arrangement`
- arrangement clip creation no longer depends only on direct `track.create_clip(...)`
- fallback now attempts **session-clip-to-arrangement recording**
- arrangement clip lookup is more robust via cached/retrieved clips near `start_time`
### 2.3 `abletonmcp_runtime.py`
Codex applied the same parity fixes there:
- `get_clips` routing
- `track_type` propagation
- `parameter_name` support in `set_device_parameter`
- same arrangement fallback strategy
### 2.4 Tests added/updated by Codex
Codex added/extended tests for:
- public `set_device_parameter` by `parameter_name`
- `audit_current_project()` repeated clip overuse reporting
Current validated tests:
- `test_runtime_truth.py`
- `test_selection_coherence.py`
- `test_piano_forward.py`
All pass locally.
---
## 3. Current Truth After Review
You must start from this truth, not from the v0.1.36 report text.
### 3.1 What is now true in code
- public editing tools exist in `server.py`
- runtime now has `get_clips` routing
- runtime now has an arrangement creation fallback path instead of only `track.create_clip(...)`
- the public `set_device_parameter` API is no longer index-only
### 3.2 What is still NOT proven
These fixes are **not** proven complete until you restart Live/OpenCode and test them against the real benchmark project:
- `create_arrangement_clip`
- `add_notes_to_arrangement_clip`
- `duplicate_clip_to_arrangement`
- `get_clips`
Reason:
- those paths depend on the loaded Ableton runtime, not just Python compilation
So this sprint is a **runtime validation + stabilization sprint**, not another layer of speculative wrapper code.
---
## 4. Code Review Findings You Must Respect
### 4.1 Do not overclaim completion
This was the biggest process failure in v0.1.36.
Wrong pattern:
- public MCP wrapper exists
- compile passes
- report says `COMPLETED`
Correct pattern:
- public wrapper exists
- runtime command exists
- Ableton loaded the new runtime
- tool works against `song.als`
- evidence is included
If any of those is missing:
- the sprint is **not complete**
### 4.2 Do not count dead or missing files as implementation evidence
The report cited:
- `sprint_036_tools.py`
That file is not present in the active tree.
Do not cite temp artifacts as evidence unless they exist and matter.
### 4.3 Do not confuse “tool exists” with “editing workflow exists”
The product goal is not “more MCP tools”.
The goal is:
- open project
- inspect project
- edit project
- validate project
on a real `.als`
### 4.4 Do not invent a black-box `refine_existing_song()` yet
Not until the primitives are proven.
Right now the correct priority is:
1. clip inspection works
2. arrangement MIDI writing works
3. device parameter editing works
4. audit metrics work on real project
Only after that should you add orchestration.
---
## 5. Main Goal Of v0.1.37
Prove that the MCP can **inspect and edit an already-open project** in a real Ableton session.
The benchmark remains:
- `C:\Users\ren\Desktop\song Project\song.als`
This sprint is complete only if the MCP can perform real edit actions on that project.
---
## 6. P0 Tasks
## P0.1 Restart and validate the actual loaded runtime
Mandatory before any conclusion:
1. Restart Ableton Live
2. Restart OpenCode
3. Reconnect MCP
4. Confirm the editing tools are visible and callable
Minimum evidence:
- `opencode mcp list --print-logs`
- proof that the tool list includes the editing tools
If OpenCode shows stale tools or stale failures:
- do not continue “testing”
- restart again and prove the loaded runtime is current
---
## P0.2 Validate the inspection tools on `song.als`
Using the real loaded project, prove:
- `get_tracks()`
- `get_clips(track_index=...)`
- `get_devices(track_index=...)`
- `get_clip_info(track_index=..., clip_index=...)`
- `audit_current_project()`
### Required target tracks
At minimum inspect:
- `HARMONY_PIANO_MIDI`
- `AUDIO BASS`
- one percussion track
- one synth/music track
### Required evidence
For each tested tool, include:
- exact MCP call
- exact result
- whether it matches the real project seen in Live
Do not summarize vaguely.
---
## P0.3 Validate arrangement MIDI editing on the real project
This is the real blocker.
Using the already-open `song.als`, prove these work:
### 1. `create_arrangement_clip(...)`
Create a short test clip on `HARMONY_PIANO_MIDI`.
Requirements:
- clip appears in Arrangement
- it is on the expected track
- it is at the expected start time
### 2. `add_notes_to_arrangement_clip(...)`
Add a small note set to that clip.
Requirements:
- notes are visible in the created clip
- notes are audible when the track/device is valid
### 3. `duplicate_clip_to_arrangement(...)`
Take one existing Session clip and materialize it into Arrangement.
Requirements:
- duplicated result appears in Arrangement
- clip length is sensible
- it lands near the requested `start_time`
If any of these fail:
- capture the exact error
- inspect Ableton log / MCP response
- patch the runtime
- retest
Do not declare the sprint done if these remain unproven.
---
## P0.4 Validate `set_device_parameter(...)` by name
This was incomplete in GLM's public API and Codex fixed it.
Now you must prove it works end-to-end.
On a real device in the loaded project:
- call `get_devices(...)`
- choose a real device index
- use `set_device_parameter(..., parameter_name="...")`
Required evidence:
- exact parameter changed
- before/after value
- confirmation in Live if visible
---
## P0.5 Validate `audit_current_project()` against the benchmark
The audit must now report:
- longest drum gap
- longest harmonic gap
- empty arrangement tracks
- harmonic MIDI tracks with devices but no clips
- structure mismatch
- repeated clip overuse
You must verify that its output is directionally correct against:
- `PROJECT_AUDIT_song_2026-04-03.md`
- the real loaded set
This does **not** need perfect musical intelligence yet.
It does need to be honest and useful.
---
## 7. P1 Tasks
## P1.1 Improve `get_clip_info(...)` semantics
Right now `get_clip_info(...)` is still session-slot-centric.
That is acceptable as an intermediate state, but you must decide and document one of these directions:
1. keep `get_clip_info(...)` explicitly session-only and rename/scope it accordingly
2. add a second tool for arrangement clip info
3. extend the current API with a `view` or `clip_kind` argument
Do not leave it semantically ambiguous.
This is a product/API cleanup task, not the main blocker.
---
## P1.2 Design the first safe editing orchestration
Only after P0 works.
Candidate:
- `refine_existing_song(...)`
But it must:
- call public editing tools internally
- return an action log
- be inspectable, not magical
Do **not** implement this first.
---
## 8. Non-Goals
Do not spend this sprint on:
- new generation features
- reggaeton coherence tuning
- piano-forward logic
- new sample-selection heuristics
- cosmetic report writing
This sprint is specifically about the **editing runtime path**.
---
## 9. Required Files
Primary:
- `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py`
- `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\abletonmcp_init.py`
- `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\abletonmcp_runtime.py`
- `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_runtime_truth.py`
Benchmark:
- `C:\Users\ren\Desktop\song Project\song.als`
---
## 10. Required Validation Commands
Minimum:
```powershell
python -m py_compile "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py" "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\abletonmcp_init.py" "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\abletonmcp_runtime.py"
python "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_runtime_truth.py"
```
And then real MCP validation in OpenCode against the loaded project.
---
## 11. Deliverable Format
Write:
- `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.37_VALIDATION_REPORT.md`
The report must contain:
### A. Runtime truth
- did you restart Ableton
- did you restart OpenCode
- did MCP reconnect successfully
### B. Tool-by-tool results
For each tool tested:
- exact call
- exact result
- pass/fail
### C. Benchmark evidence
- what changed in `song.als`
- what you inspected
- what you successfully edited
### D. Failures
For every remaining failure:
- exact command
- exact error
- root cause
- whether it is code, MCP, or Live API limitation
### E. Reviewer-grade conclusion
One of only:
- `COMPLETED`
- `PARTIAL`
- `BLOCKED`
Do not write `COMPLETED` unless arrangement MIDI editing was proven on the live project.
---
## 12. Final Rule
If the runtime still cannot write/edit Arrangement MIDI on the live benchmark project after restart and retest:
- do not hide it
- do not soften it
- do not declare success because wrappers exist
The whole point of this sprint is to close the gap between:
- MCP surface
- actual project editing in Ableton