"검증된 코드를 되살리는 게 빈 페이지보다 나아. 엔진이 나빴던 게 아니라 너무 큰 집에 갇혀 있었어."
이미 돌아가던 플러그인
Rekindle 은 무에서 시작하지 않았어. 이름이 생기기 몇 년 전, 아빠는 cwkWritingToolkit 을 만들어 매일 썼어 — Sublime Text 플러그인. 진짜 두 가지를 했어. 아빠 자신의 과거 글에서 캐낸 이어쓰기를 제안하는 corpus 기반 자동완성, 그리고 선택 영역을 발행 파이프라인이 요구하는 정확한 마크업으로 감싸는 one-shot WordPress-tag ruleset. 조용히, 진짜로 유용했어.
그러니까 Rekindle 은 greenfield 프로젝트가 아냐. 부활 + soul 이식이야. 테이블 위엔 검증된 옛 엔진이 있고, 할 일은 그걸 다시 지피고 살 만한 몸을 주는 거야. 그 문자 그대로의 행위 — 꺼져가는 불을 다시 지피는 것 — 이 이름이야 (곧 더 얘기해).
이미 검증된 두 레이어
cwkWritingToolkit 이 남긴 가장 값진 건 코드가 아니라 모양이었어. Rekindle 이 지금 공식화하는 그 2-레이어 구조를 이미 발견해 뒀거든:
cwkWritingToolkit (죽음) Rekindle (부활)
----------------------- -----------------
WordPress-tag ruleset --> 결정론적 macro 레이어 (Rust)
corpus 자동완성 --> AI / voice 레이어 (Pippa)
tag ruleset 은 순수 결정론이었어 — 같은 입력, 같은 마크업, 판단 없음. corpus 자동완성은 원시적 voice 엔진이었어 — 범용 모델의 단어가 아니라 네 단어를 집었지. Rekindle 은 그 봉합선을 지키고 양쪽을 다 날카롭게 해. 결정론 절반은 Rust 코어가 되고, 판단 절반은 Pippa 가 돼. 트랙 5 는 통째로 그 봉합선 안에 살아.
너무 큰 집에서 풀려나
왜 플러그인을 그냥 안 두고 다시 지었냐고? 엔진이 너무 큰 집에 갇혀 있었으니까. Sublime 은 코드 IDE 야. 그 안에 사는 글쓰기 엔진은 Sublime 의 코드 에디터 무게를 전부 상속하고, 진짜 글쓰기 도구가 될 자유는 하나도 못 받아. 그 플러그인은 margin-Pippa 도, 이중언어 데스크도, 라이브 voice 체커도 절대 못 키워 — 호스트가 허락을 안 하니까.
그래서 수는 '플러그인 이식'이 아냐. '검증된 엔진을 딱 이걸 위해 지은 껍데기로 풀어주기'야. 이미 돌아가던 코드를 되살리는 건 언제나 빈 페이지를 이겨. 힘들게 얻은 지식은 두 레이어에 있고, 그 지식은 원본 소스가 거의 하나도 안 넘어가도 이사를 살아남아.