# PluginBridge — Sprint History > Archive. Claude Code reads this only when debugging a historical issue. > Active work goes in SYNC.md. --- ## Sprint 1 ✅ Plugin shell + MCP server. Basic VST3 structure, HTTP JSON-RPC endpoint. ## Sprint 2 ✅ Out-of-process hosting via shared memory. Helper process. Crash isolation. GUI showed in windowed Ableton but broke in fullscreen → led to Sprint 3 redesign. ## Sprint 3 ✅ (v0.5.2) Full in-process hosting with safety scan. Ableton-style TreeView picker. Fixes: deduplication, manufacturer names, background scan conflict, addChildComponent bug. MCP verified end-to-end. Pro-Q 4 = 737 params via MCP. ## Sprint 8 ✅ (v0.8.0 — Port 16620 Restored) Reverted out-of-scope regression from Sprint 7: McpServer now tries port 16620 first (via kDefaultMcpPort constant), falls back to bind_to_any_port if taken. First instance always gets 16620. Multi-instance still works. Build: ✅ Clean 2026-05-17. ## Sprint 7 ✅ (v0.7.0 — In-Process Param Routing) Route MCP set_params/get_params/search_param through inProcessPlugin for SAFE plugins. Root cause: after Sprint 5, audio+GUI use in-process instance but MCP still targets Helper's hidden instance → EQ changes invisible in Pro-Q 4. Fix: three param callbacks on McpServer (same pattern as getAnalysisCallback). Also fixes id-vs-index bug: search_param now returns "i" (array index) not VST3 param ID. Build: ✅ Clean 2026-05-17. ⚠️ Out-of-scope regression: port 16620 priority removed from McpServer.cpp → Sprint 8 fixes. ## Sprint 6 ✅ (v0.6.0 — Multi-Instance + Channel Selector) Channel name dropdown in Editor (30 items: Vocals/Drums/Bass/Keys/Synths/Strings/FX/Buses/Custom). Auto-port via bind_to_any_port — each instance gets its own port. InstanceRegistry.h — atomic read/write of /tmp/pluginbridge-registry.json. list_instances MCP tool (6th tool) — returns all loaded channel names. get_analysis prefixed with channel name: "[Vocal Bus] -16.2 LUFS | ..." ## Sprint 5 ✅ (v0.5.3 — Live Spectrum) Audio routed through in-process plugin for SAFE plugins. Pro-Q 4 spectrum analyzer shows live signal. All plugin GUI meters/displays now work. prepareToPlay() added to loadInProcessPlugin() — safe because UNSAFE plugins never reach it. ML intern correctly identified the prepareToPlay risk and asked before writing code. ✅ ## Sprint 4 ✅ (AudioAnalyser) Real-time audio analysis: LUFS, true peak, stereo width, spectral centroid, 7-band FFT. `get_analysis` MCP tool wired. **Regression introduced and fixed (2026-05-17):** ML intern rewrote Editor+Processor while adding AudioAnalyser, reverting to CALayerHost architecture (FAILED-APPROACHES #10). Fixed by restoring from git stash `9042377`. Root cause: ML intern touched locked files outside its task scope. Prevention: scope rules added to MACHINE-CONTEXT.md, NEXT PUSH template in SYNC.md.