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

155
docs/SPRINT_v0.1.22_NEXT.md Normal file
View File

@@ -0,0 +1,155 @@
# SPRINT v0.1.22 — CHANGES REPORT
## AbletonMCP-AI | Para Codex: Revisar y Corregir
**Fecha:** 2026-04-01
**Session Baseline:** `a6a4cc87e493`
**Test Parameters:** genre=reggaeton, style=perreo duro vieja escuela tipo safaera, reference=libreria\reggaeton\ejemplo.mp3
---
## 1. VOCABULARIO / DEFINICIONES
- **Vocal manual-only:** Los roles `vocal_loop`, `vocal_build`, `vocal_peak`, `vocal_shot` son PARA USUARIO HUMANO SOLAMENTE. No deben ser seleccionados, materializados, ni persistidos automaticamente.
- **Anti-flattening:** Logica que evita consolidar/clips整齐 demasiado para mantener variacion por seccion.
- **Hybrid truth:** Generacion que incluye MIDI + Piano + Library samples.
- **Hook materialization:** El MIDI hook obligatorio debe materializarse en el set.
---
## 2. PROBLEMAS IDENTIFICADOS
### P1: Vocal Leak — CLEANED
**Problema:** Sistema estaba seleccionando y materializando capas de vocal automaticamente.
**Fuentes corregidas:**
| Archivo | Linea | Problema | Fix |
|---------|-------|----------|-----|
| `song_generator.py` | 5880 | `'vocal'` estaba en OPTIONAL budget | Comentado: `# Only if budget allows (vocal removed - manual only)` |
| `song_generator.py` | 11740 | VOCAL CHOP track spec presente | Eliminado completamente |
| `song_generator.py` | 5672 | `VARIATION_ROLES` incluía `vocal_shot, vocal_loop` | Eliminados de la lista |
| `reference_listener.py` | 5629-5632 | CORE_ROLES seleccionaba vocal roles | Agregado check `_is_manual_recording_role(role)` |
| `reference_listener.py` | 5877-5879 | OPTIONAL_ROLES seleccionaba vocal roles | Agregado check `_is_manual_recording_role(role)` |
| `reference_listener.py` | 7127-7144 | `vocal_alt` selection no estaba filtrado | Envuelto en `if not _is_manual_recording_role('vocal_loop')` |
### P2: Anti-Loop en Path Equivocado — FIXED
**Problema:** Mi fix original a `_apply_clip_consolidation()` (lines 3941-4049) NO estaba en el path activo de runtime.
**Solucion:** El path activo de consolidacion es:
- `_materialize_reference_audio_layers()` lines 4599-4647
- `_build_audio_pattern_positions()` lines 3784-3833
**Fix aplicado en server.py:4618-4667:**
```python
# P2: ANTI-FLATTEN - Check section_variants BEFORE consolidation
# Si layer tiene section_variants, preservar posiciones para diferenciacion por seccion
section_variants = layer.get('section_variants', {})
has_variants = bool(section_variants)
should_preserve_positions = has_variants and (
role_lower in MUSIC_HARMONIC_ROLES or role_lower in SECTION_VARIATION_ROLES
)
# Consolidate SOLO si NO tiene section_variants
if not should_preserve_positions and positions and len(positions) > MAX_ARRANGEMENT_CLIPS_PER_TRACK:
# ... apply consolidation
```
### P3: Hook Materialization Inestable — REQUIERE INVESTIGACION
**Problema:** No es consistentemente `materialized = true`:
- `4c697638bd3d`: hook materialized = true ✓
- `ba306bd7575b`: hook materialized = true ✓
- `a6a4cc87e493`: hook materialized = false ✗
**Status:** REQUIERE DEBUG - No hay nuevo fix aplicado aun.
### P4: MCP Connection Timeout — BLOCKER ACTUAL
**Problema:** `get_session_info` y `get_tracks` timeout. `generate_song` no completa.
**Status:** REQUIERE DIAGNOSTICO
---
## 3. TESTS AGREGADOS / MODIFICADOS
### test_piano_forward.py
**Test: `TestManualVocalLayerSanitization` (line 331)**
```python
def test_sanitize_audio_layer_records_removes_manual_vocal_layers(self):
# Verifica que _sanitize_audio_layer_records() elimina vocal layers automaticamente
```
**Test: `TestRepetitionMetrics.test_repetition_metrics_detect_repetitive_harmonic_sections` (line 354)**
```python
def test_repetition_metrics_detect_repetitive_harmonic_sections(self):
# Verifica que secciones repetitivas se detectan
```
**Test: `TestRepetitionMetrics.test_repetition_metrics_handle_sections_with_missing_end_values` (line 382)**
```python
def test_repetition_metrics_handle_sections_with_missing_end_values(self):
# Verifica handling de end = None en sections
```
### test_selection_coherence.py
11 tests existentes verificando coherencia de seleccion.
---
## 4. VALIDATION THRESHOLDS ESPERADOS
Para que una generacion sea considerada valida:
| Threshold | Valor Minimo | Status |
|-----------|-------------|--------|
| `coherence_score` | >= 6.5 | ✗ Sin validar |
| `mandatory_midi_hook.materialized` | true | ✗ Inconsistente |
| `piano_presence.piano_layer_count` | >= 1 | ✗ Sin validar |
| `repetition_metrics.verdict` | != repetitive | ✗ Sin validar |
| `generation_mode` | library-first-hybrid | ✗ Sin validar |
| Vocal layers auto-generados | 0 | ✓ Fix aplicado |
---
## 5. ARCHIVOS MODIFICADOS
### song_generator.py (6 edits)
- Line 5880: Vocal removido de OPTIONAL budget
- Line 11740: VOCAL CHOP spec eliminado
- Line 5672: Vocal roles eliminados de VARIATION_ROLES
### reference_listener.py (3 edits)
- Lines 5629-5632: CORE_ROLES filtering para manual-only
- Lines 5877-5879: OPTIONAL_ROLES filtering para manual-only
- Lines 7127-7144: vocal_alt selection wrapped en check
### server.py (1 CRITICAL edit)
- Lines 4618-4667: Anti-flattening en ACTIVE path
---
## 6. BLOCKERS ACTUALES
1. **MCP Connection Timeout** — No se puede validar runtime
2. **Hook Materialization** — Inconsistente entre sesiones
3. **Sin nueva generacion** — No hay session_id nuevo en manifests
---
## 7. PARA CODEX: PREGUNTAS Y CORRECCIONES
1. **MCP Timeout:** ¿Cual es la causa raiz? ¿Socket? ¿Threading? ¿Live API blocking?
2. **Hook Materialization:** ¿Por qué `a6a4cc87e493` tuvo `materialized = false`?
3. **Anti-flattening:** ¿El fix en server.py:4618-4667 es suficiente o falta algo en `_build_audio_pattern_positions()`?
4. **¿Hay otros vocal leak sources que no vi?**
---
## 8. PROXIMO STEP
1. Fix MCP connection
2. Generar nueva sesion con test parameters
3. Verificar manifest pasa todos los thresholds
4. Crear SPRINT_v0.1.22_VALIDATION_REPORT.md