플러그인 슬롯 구조
얼린 코어 + 슬롯
핵심 계약(@comfozi/contract, @comfozi/guards)은 얼린 base(SSOT) 입니다. 확장은 이 계약을 수정·삭제 없이(추가만) 두고, @comfozi/ui-kit이 노출하는 슬롯에 GUI 플러그인을 끼우는 방식입니다.
슬롯 5개 (공용 4 + 전용 1)
SlotName = card:footer · card:actions · toolbar:right · sidebar:panel · pipeline:timeline.
- 앞의 4개가 공용 슬롯, 마지막
pipeline:timeline은pipeline-view전용 슬롯입니다. - 데크에서 "4개 슬롯"으로 소개하기도 하지만 코드상 총 5개가 정확합니다.
현재 7개 플러그인
App.tsx의 AVAILABLE_PLUGINS에 정확히 7개가 등록됩니다.
| 플러그인 | 슬롯 |
|---|---|
| diff-view | card:footer |
| explain-card | card:footer |
| gbm-score | card:footer |
| provenance | card:footer + sidebar:panel + toolbar:right |
| triage-toolbar | toolbar:right |
| flywheel-log | sidebar:panel |
| pipeline-view | pipeline:timeline |
등록 = 빌드타임 정적 레지스트리
플러그인은 top-level ESM import로 AVAILABLE_PLUGINS 객체에 등록됩니다. 런타임 동적 import()·마켓플레이스는 없습니다. ?plugins= URL 쿼리로 켜고 끄며, 빼도 코어는 그대로 동작합니다(비파괴).
정직 경계
"공개 계약으로 누구나 코어 편집 없이 플러그인을 저작·기여할 수 있다"까지가 현재 주장입니다. 실시간 드롭인은 향후 확장 범위입니다.