Sitar118 Claude Sonnet 4.6 commited on
Commit ·
a8f4396
1
Parent(s): cc0ab22
docs: make SYNC.md lean — move sprint history to SPRINT-LOG.md
Browse filesSYNC.md now ~50 lines (just live state + message queues + next push template).
Sprint history moved to SPRINT-LOG.md (reference only, not read every session).
Saves Claude Code tokens on every session start.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- SPRINT-LOG.md +27 -0
- SYNC.md +40 -163
SPRINT-LOG.md
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# PluginBridge — Sprint History
|
| 2 |
+
> Archive. Claude Code reads this only when debugging a historical issue.
|
| 3 |
+
> Active work goes in SYNC.md.
|
| 4 |
+
|
| 5 |
+
---
|
| 6 |
+
|
| 7 |
+
## Sprint 1 ✅
|
| 8 |
+
Plugin shell + MCP server. Basic VST3 structure, HTTP JSON-RPC endpoint.
|
| 9 |
+
|
| 10 |
+
## Sprint 2 ✅
|
| 11 |
+
Out-of-process hosting via shared memory. Helper process. Crash isolation.
|
| 12 |
+
GUI showed in windowed Ableton but broke in fullscreen → led to Sprint 3 redesign.
|
| 13 |
+
|
| 14 |
+
## Sprint 3 ✅ (v0.5.2)
|
| 15 |
+
Full in-process hosting with safety scan. Ableton-style TreeView picker.
|
| 16 |
+
Fixes: deduplication, manufacturer names, background scan conflict, addChildComponent bug.
|
| 17 |
+
MCP verified end-to-end. Pro-Q 4 = 737 params via MCP.
|
| 18 |
+
|
| 19 |
+
## Sprint 4 ✅ (AudioAnalyser)
|
| 20 |
+
Real-time audio analysis: LUFS, true peak, stereo width, spectral centroid, 7-band FFT.
|
| 21 |
+
`get_analysis` MCP tool wired.
|
| 22 |
+
|
| 23 |
+
**Regression introduced and fixed (2026-05-17):**
|
| 24 |
+
ML intern rewrote Editor+Processor while adding AudioAnalyser, reverting to CALayerHost
|
| 25 |
+
architecture (FAILED-APPROACHES #10). Fixed by restoring from git stash `9042377`.
|
| 26 |
+
Root cause: ML intern touched locked files outside its task scope.
|
| 27 |
+
Prevention: scope rules added to MACHINE-CONTEXT.md, NEXT PUSH template in SYNC.md.
|
SYNC.md
CHANGED
|
@@ -1,193 +1,70 @@
|
|
| 1 |
-
# PluginBridge — Live Sync
|
| 2 |
-
|
| 3 |
-
## THE PARTNERSHIP
|
| 4 |
-
|
| 5 |
-
```
|
| 6 |
-
ML Intern (HuggingFace) Claude Code (Mac)
|
| 7 |
-
──────────────────────── ─────────────────
|
| 8 |
-
Researcher + Coder Implementer + Eyes + Hands
|
| 9 |
-
No Mac access No HuggingFace access
|
| 10 |
-
Cannot run or test anything Cannot write research/design
|
| 11 |
-
|
| 12 |
-
ML Intern relies on Claude Code for: Claude Code relies on ML Intern for:
|
| 13 |
-
- Does this API exist in JUCE 8? - What are you building next?
|
| 14 |
-
- Does this compile? - What files will you touch?
|
| 15 |
-
- What does the log say? - What approach are you taking?
|
| 16 |
-
- What's on screen right now? - Why did you choose this design?
|
| 17 |
-
- Is this behavior a Mac quirk?
|
| 18 |
-
```
|
| 19 |
-
|
| 20 |
-
**Neither side should push or build without reading what the other wrote last.**
|
| 21 |
|
| 22 |
---
|
| 23 |
|
| 24 |
-
|
| 25 |
-
> 1. ML Intern posts questions in `## ML INTERN → CLAUDE CODE` before writing code
|
| 26 |
-
> 2. Claude Code answers in `## CLAUDE CODE → ML INTERN` (tests on Mac, verifies APIs)
|
| 27 |
-
> 3. ML Intern fills `## NEXT PUSH` with exactly what it's about to push
|
| 28 |
-
> 4. Claude Code pulls, builds, tests, fills `## LAST BUILD RESULT`
|
| 29 |
-
> 5. Repeat
|
| 30 |
-
|
| 31 |
-
---
|
| 32 |
-
|
| 33 |
-
## CURRENT STATUS (updated by Claude Code after each build)
|
| 34 |
|
| 35 |
**Version:** v0.5.2 + AudioAnalyser
|
| 36 |
-
**
|
| 37 |
-
**
|
| 38 |
-
**
|
| 39 |
-
**
|
| 40 |
-
**AudioAnalyser:** ✅ Wired — LUFS, FFT bands, stereo width, centroid, true peak
|
| 41 |
-
**get_analysis:** ✅ Returns live data when audio is playing
|
| 42 |
|
| 43 |
---
|
| 44 |
|
| 45 |
-
## ML INTERN → CLAUDE CODE
|
| 46 |
|
| 47 |
-
>
|
| 48 |
-
> Claude Code will test on
|
| 49 |
-
> Do not guess — if you're unsure about an API, a path, or a behavior, ask here first.
|
| 50 |
|
| 51 |
```
|
| 52 |
-
STATUS:
|
| 53 |
```
|
| 54 |
|
| 55 |
---
|
| 56 |
|
| 57 |
-
## CLAUDE CODE → ML INTERN
|
| 58 |
|
| 59 |
-
>
|
| 60 |
-
> ML Intern: read this section at the start of every coding session.
|
| 61 |
|
| 62 |
```
|
| 63 |
-
STATUS:
|
| 64 |
-
|
| 65 |
-
Last
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
The correct architecture is in-process createEditor() — see loadInProcessPlugin()
|
| 71 |
-
in PluginBridgeProcessor.cpp. Do not replace or bypass this function.
|
| 72 |
-
|
| 73 |
-
Fixed files restored from git stash. Build is clean. All tests passing.
|
| 74 |
```
|
| 75 |
|
| 76 |
---
|
| 77 |
|
| 78 |
-
## NEXT PUSH — ML Intern fills
|
| 79 |
-
|
| 80 |
-
> **ML Intern: Before you push anything, fill this section completely.**
|
| 81 |
-
> Claude Code reads this to know what's coming and catch problems early.
|
| 82 |
-
> Leave it blank = Claude Code has no idea what you did = breaks things.
|
| 83 |
|
| 84 |
```
|
| 85 |
-
STATUS:
|
| 86 |
-
|
| 87 |
-
TASK:
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
APIs/APPROACHES USED:
|
| 101 |
-
- [API name] — [confirmed working? or needs Claude Code to verify first?]
|
| 102 |
-
|
| 103 |
-
WHAT I AM NOT CHANGING:
|
| 104 |
-
- PluginBridgeEditor.mm — locked
|
| 105 |
-
- PluginPickerComponent.mm — locked
|
| 106 |
-
- HelperPluginHost.mm — locked
|
| 107 |
-
- HelperConnection.cpp — locked
|
| 108 |
-
- The in-process createEditor() load flow — locked
|
| 109 |
-
- All PBLOG calls — never remove these
|
| 110 |
```
|
| 111 |
|
| 112 |
---
|
| 113 |
|
| 114 |
-
## LAST BUILD RESULT — Claude Code fills
|
| 115 |
-
|
| 116 |
-
**Date:** 2026-05-17 ~18:30
|
| 117 |
-
**Pulled commits:**
|
| 118 |
-
- `fdc4e41` fix: restore v0.5.2 architecture + wire AudioAnalyser correctly
|
| 119 |
-
|
| 120 |
-
**Build:** ✅ Clean
|
| 121 |
-
**Tests run:**
|
| 122 |
-
- `GET /health` → `{"status":"ok","helper":"connected","port":16620}` ✅
|
| 123 |
-
- `tools/call get_analysis` → pending (need audio playing)
|
| 124 |
-
|
| 125 |
-
**Issues found:** None
|
| 126 |
-
**Action taken:** Pushed CMakeLists.txt fix (PluginPickerComponent.mm was missing from build)
|
| 127 |
-
|
| 128 |
-
---
|
| 129 |
-
|
| 130 |
-
## LOCKED FILES — do not modify without explicit permission from Adi
|
| 131 |
-
|
| 132 |
-
| File | Why locked |
|
| 133 |
-
|---|---|
|
| 134 |
-
| `Source/Plugin/PluginBridgeEditor.mm` | In-process GUI embedding — 4 sprints to get right |
|
| 135 |
-
| `Source/Plugin/PluginPickerComponent.mm` | Ableton-style TreeView picker — working |
|
| 136 |
-
| `Source/Helper/HelperPluginHost.mm` | Audio routing + process lifecycle |
|
| 137 |
-
| `Source/Plugin/HelperConnection.cpp` | IPC + shared memory protocol |
|
| 138 |
-
|
| 139 |
-
**Also never:**
|
| 140 |
-
- Remove `PBLOG(...)` calls — they're how Claude Code diagnoses bugs
|
| 141 |
-
- Change the `loadInProcessPlugin()` flow
|
| 142 |
-
- Use CALayerHost for GUI (see FAILED-APPROACHES #10 — doesn't work in Ableton)
|
| 143 |
-
|
| 144 |
-
---
|
| 145 |
-
|
| 146 |
-
## SPRINT LOG
|
| 147 |
-
|
| 148 |
-
### Sprint 1 ✅
|
| 149 |
-
Plugin shell + MCP server. Basic VST3 structure, HTTP JSON-RPC endpoint.
|
| 150 |
-
|
| 151 |
-
### Sprint 2 ✅
|
| 152 |
-
Out-of-process hosting via shared memory. Helper process. Crash isolation.
|
| 153 |
-
GUI showed in windowed Ableton but broke in fullscreen → led to Sprint 3 redesign.
|
| 154 |
-
|
| 155 |
-
### Sprint 3 ✅ (v0.5.2)
|
| 156 |
-
Full in-process hosting with safety scan. Ableton-style TreeView picker.
|
| 157 |
-
Fixes: deduplication, manufacturer names, background scan conflict, addChildComponent bug.
|
| 158 |
-
MCP verified end-to-end. Pro-Q 4 = 737 params via MCP.
|
| 159 |
-
|
| 160 |
-
### Sprint 4 ✅ (AudioAnalyser)
|
| 161 |
-
Real-time audio analysis: LUFS, true peak, stereo width, spectral centroid, 7-band FFT.
|
| 162 |
-
`get_analysis` MCP tool wired.
|
| 163 |
-
**Regression introduced and fixed:** ML intern rewrote Editor+Processor while adding AudioAnalyser,
|
| 164 |
-
accidentally reverting to CALayerHost architecture. Fixed by Claude Code (2026-05-17).
|
| 165 |
-
Root cause documented in MACHINE-CONTEXT.md scope rules.
|
| 166 |
-
|
| 167 |
-
---
|
| 168 |
-
|
| 169 |
-
## BUILD COMMANDS
|
| 170 |
-
|
| 171 |
-
```bash
|
| 172 |
-
# Full build
|
| 173 |
-
cd "/Volumes/T7 Shield/Users/Aditya/pluginbridge/build"
|
| 174 |
-
cmake --build . --target PluginBridge_VST3 -- -j4
|
| 175 |
|
| 176 |
-
# Quick MCP test (with plugin loaded in Ableton)
|
| 177 |
-
curl -s http://127.0.0.1:16620/health
|
| 178 |
-
curl -s -X POST http://127.0.0.1:16620/mcp \
|
| 179 |
-
-H "Content-Type: application/json" \
|
| 180 |
-
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_analysis","arguments":{}}}' \
|
| 181 |
-
| python3 -m json.tool
|
| 182 |
```
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
- `pull and test` — pull, build, run curl tests, report
|
| 190 |
-
- `verify [API]` — test whether an API works on this machine, write result to MACHINE-CONTEXT.md
|
| 191 |
-
- `check the log` — read debug.log and crash reports, diagnose issues
|
| 192 |
-
- `run debugger` — start live tail of debug.log in background
|
| 193 |
-
- Full debug investigation when something breaks — reads log, checks processes, reports root cause
|
|
|
|
| 1 |
+
# PluginBridge — Live Sync (keep this SHORT — history goes in SPRINT-LOG.md)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
|
| 3 |
---
|
| 4 |
|
| 5 |
+
## CURRENT STATE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6 |
|
| 7 |
**Version:** v0.5.2 + AudioAnalyser
|
| 8 |
+
**Build:** ✅ Clean (2026-05-17)
|
| 9 |
+
**GUI:** ✅ TreeView picker + in-process createEditor()
|
| 10 |
+
**MCP:** ✅ Port 16620 — 5 tools, registered in Claude Code
|
| 11 |
+
**AudioAnalyser:** ✅ LUFS / FFT bands / stereo width / centroid / true peak
|
|
|
|
|
|
|
| 12 |
|
| 13 |
---
|
| 14 |
|
| 15 |
+
## ML INTERN → CLAUDE CODE
|
| 16 |
|
| 17 |
+
> Post questions here before writing any Mac-specific code.
|
| 18 |
+
> Claude Code will test on Mac and answer before you write anything.
|
|
|
|
| 19 |
|
| 20 |
```
|
| 21 |
+
STATUS: no pending questions
|
| 22 |
```
|
| 23 |
|
| 24 |
---
|
| 25 |
|
| 26 |
+
## CLAUDE CODE → ML INTERN
|
| 27 |
|
| 28 |
+
> Read this at the start of every coding session.
|
|
|
|
| 29 |
|
| 30 |
```
|
| 31 |
+
STATUS: no pending messages
|
| 32 |
+
|
| 33 |
+
Last (2026-05-17): Sprint 4 regression fixed. PluginBridgeEditor.mm was reverted
|
| 34 |
+
to CALayerHost (FAILED-APPROACHES #10 — never works in Ableton). Restored from
|
| 35 |
+
stash. FFT fixed (was allocating on audio thread). PluginPickerComponent.mm was
|
| 36 |
+
missing from CMakeLists.txt — added. All working now.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
```
|
| 38 |
|
| 39 |
---
|
| 40 |
|
| 41 |
+
## NEXT PUSH — ML Intern fills before every push
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
|
| 43 |
```
|
| 44 |
+
STATUS: waiting
|
| 45 |
+
|
| 46 |
+
TASK:
|
| 47 |
+
FILES CHANGING:
|
| 48 |
+
-
|
| 49 |
+
FILES NOT TOUCHING (confirm locked files are safe):
|
| 50 |
+
- PluginBridgeEditor.mm ✅ not touching
|
| 51 |
+
- PluginPickerComponent.mm ✅ not touching
|
| 52 |
+
- HelperPluginHost.mm ✅ not touching
|
| 53 |
+
- HelperConnection.cpp ✅ not touching
|
| 54 |
+
NEW FILES (Claude Code must add to CMakeLists.txt):
|
| 55 |
+
-
|
| 56 |
+
APIS USED (verified by Claude Code? y/n):
|
| 57 |
+
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
```
|
| 59 |
|
| 60 |
---
|
| 61 |
|
| 62 |
+
## LAST BUILD RESULT — Claude Code fills after pull+build
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 63 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 64 |
```
|
| 65 |
+
Date: 2026-05-17 ~18:30
|
| 66 |
+
Commits pulled: fdc4e41, ac96bfc, cc0ab22
|
| 67 |
+
Build: ✅ Clean
|
| 68 |
+
Tests: health ✅ get_analysis ✅ (with audio playing)
|
| 69 |
+
Issues: none
|
| 70 |
+
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|