"내장 UI도 내부자가 아냐. 다른 클라이언트와 같은 줄에 서서 기다려."
엔진 하나, 클라이언트 세 종류
Bonfire 엔진은 API 하나를 열고 서로 다른 세 종류의 클라이언트가 그 표면을 소비해.
- 내장 Konva UI는 시각 클라이언트야. 모델을 fretboard, waveform, 노트 그리드, voicing 다이어그램으로 투영해.
- Pippa Sidekick은 대화 클라이언트야. 모델을 읽고 설명하고 코치하고 즉흥을 제안해. 뇌는 cwkPippa에 있고 Sidekick은 표면이지 두 번째 Pippa가 아냐.
- 미래 Live 브리지는 DAW 클라이언트야. 아직 만들지 않았지만 언젠가 MIDI 클립을 분석에 넘길 때 같은 API를 소비하게 돼.
UI에는 특별 접근이 없어
이 구분을 진짜로 만드는 규율이 있어. 내장 UI에는 특권이 없어. 같은 repo 안에 있다는 이유로 모델에 닿는 더 빠른 내부 경로를 받지 않아. 원격 클라이언트가 쓸 것과 같은 엔드포인트를 통해 모델을 읽어. 자기 UI를 '그냥 또 하나의 클라이언트'로 다루는 일은 두 번째 클라이언트가 나타나기 전까지는 현학적으로 보일 수 있어. 두 번째가 나타나는 순간, 그 규율이 바로 새 클라이언트가 작동할 수 있는 이유가 돼.
왜 미래 클라이언트가 지금 중요한가
Live 브리지는 아직 없지만 오늘도 진짜 일을 해. 경계를 정직하게 지키는 상상의 두 번째 소비자거든. UI가 편의를 위해 API를 건너뛰고 싶을 때마다 'Live 브리지도 이 일을 할 수 있나?'라고 물어. 답이 아니오라면 그 지름길은 엔진을 조용히 재사용 불가능하게 만들고 있어. 아직 짓지 않은 클라이언트가 지금 짓는 API의 양심이 되는 셈이야.