# INSTRUCCIONES ESTRICTAS PARA KIMI - GRANULAR SPRINT PART 2 **Destinatario:** KIMI (K2.5 u otro modelo executor) **Orquestador:** Antigravity (tu supervisor de software) **Fecha:** 2026-04-05 ¡Hola, Kimi! Soy el arquitecto del proyecto. Necesito que te encargues de ejecutar el **100% de las tareas** descritas en el archivo maestro: 📁 `docs/GRANULAR_SPRINT_PART2_T101_T200.md` Antes de empezar a programar y realizar modificaciones, debes grabar a fuego las siguientes **Reglas Críticas de Sistema** para este Sprint, ya que estarás modificando la base estructural del servidor MCP de Ableton: ## 1. Contexto de Entorno (¡NO ESTAMOS EN WSL!) En el sprint anterior hiciste un gran trabajo implementando el motor espectral, pero **modificaste `server.py` y `abletonmcp_init.py` para usar WSL (0.0.0.0 y parseo de IPs en bash)**. - ❌ **YO YA LO REVERTÍ.** He devuelto todo a nativo Windows (`HOST = "127.0.0.1"`). - **NO INTENTES** bajo ningún concepto volver a tocar el `HOST` para WSL, ni usar rutas de Linux (`/mnt/c/...`). Quédate en modo Windows Nativo Absoluto (`C:\ProgramData\...`). ## 2. Precaución con la Indentación en Python (¡BUG CRÍTICO PREVIO!) En la **Tarea 46** del sprint de ayer, creaste la función `_create_clap_pattern` en `song_generator.py` pero la insertaste en el "NIVEL RAIZ" (columna 0), destruyendo por completo la clase y generando un `IndentationError` masivo que inhabilitaba el servidor entero. - ❌ NO repitas este error. - ✔️ Cuando agregues métodos de clase, asegúrate de añadir **exactamente 4 espacios iniciales** (` def mi_metodo(self):`). Revisa tus reemplazos de texto cuidadosamente. ## 3. Manejo de "Access Denied" en `coherence_analyzer.py` Han quedado tareas "colgadas" (T072 - T080 relacionadas con `MirrorSectionMetric`) del Bloque D del informe. - Intenta hacerlas aplicando tus reemplazos al archivo `coherence_analyzer.py` pero **SI OpenCode te arroja `Access Denied` o permisos insuficientes... IGNÓRALO**. - No te enfrasques intentando usar powershell o comandos administrativos para sobreescribirlo si el sistema se resiste. Simplemente anótalo en tu reporte final como "Requiere bypass de usuario por bloqueo Admin" y **salta directamente a avanzar la Tarea T101**. No destruyas tu ejecución por culpa de ese archivo. ## 4. Librosa y Errores de Numba Caching Cuando llegues a la parte de añadir `extract_grain()` y demás bondades de Texturización Granular (Bloque G), vas a lidiar con `librosa`. - Durante la ejecución o testeo de librerías, es muy posible que Python lance un Warning `PermissionError: [Errno 13] Permission denied: 'C:\Python314\Lib\site-packages\numba...'` buscando grabar caché. - Es completamente normal en un entorno no-administrador. Usa tus "Graceful Fallbacks" (tus envoltorios de bloque try/except) que ya pusiste para `librosa` para que el código **no crashee la ejecución real ni cuelgue los scripts al ser testeado**, tal y como te lo dictamina la T140. --- ## 🚀 PASOS A SEGUIR AHORA MISMO 1. **Lectura Completa:** Abre y lee todo `docs/GRANULAR_SPRINT_PART2_T101_T200.md`. 2. **Implementación Secuencial:** Ve haciéndolo por Bloques. Tu lista incluye tareas extensas (T101 a T200): - **Bloque F:** Gain Staging. Todo se define en `sample_selector.py` y validación de outputs. - **Bloque G:** Escribe un archivo COM-PLE-TA-MEN-TE NUEVO para `melody_generator.py`. Lee los requerimientos del plan y mapea toda la generación de acordes. - **Bloque H:** Automatizaciones y FX en `arrangement_intelligence.py` (Crashes, Builds, etc). - **Bloque I & J:** Setup final, QA Post-Master y tests. 3. **No uses `bash` de Linux para tests, usa Pytest** pero acuérdate que como estamos en Windows usa: - `python -m unittest discover tests\` en lugar de `pytest` si este último dice que el módulo no se encuentra. También usa la compilación nativa de python: `python -m py_compile module.py`. 4. **Reporte Final:** Escribe un reporte en `docs/SPRINT_GRANULAR_PART2_COMPLETION_REPORT.md` igual de detallado que el de ayer. Entendido esto: ¡Arranca tu análisis, procesa el Sprint maestro al pie de la letra y demuestra por qué te contratamos! 🛠️