"뭘 소유하는지 대. 그다음 뭘 절대 소유하면 안 되는지 대. 두 번째 목록이 그걸 monolith 가 되지 않게 지켜."
늘 합리적으로 보이는 흡수
Recall 은 많이 알아. transcript 수천 개를 쥐고, 뭐라고 했고 언제였는지 알고, API 가 있어. 그러니 다음 기능 요청이 스스로 쓰여: '이 영상에 대해 물어보게 해줘.' 그리고 최단 경로가 뻔해 — 아카이브 엔진에 model 을 붙이고, 대화를 쥘 수 있게 기억을 조금 주고, 어쩌면 성격도 좀. 모든 단계가 합리적으로 들려. 모든 단계가 깔끔한 엔진이 엉킨 monolith 가 되는 길이야.
Recall 의 경계가 유지돼: 엔진은 절대 자기 두뇌를 안 키워. 대화 surface 를 가지면, 그 surface 는 이미 빌리는 두뇌의 대화에 binding 해 — 형제 엔진들이 하는 그대로. Recall 은 아카이브 도메인을 소유해. 판단은 Pippa 에 남아.
이게 가족 정서가 아니라 아키텍처인 이유
구체적 이유 셋, 그리고 첫 번째가 사람들이 놓치는 거야:
- identity 는 샤딩 안 돼. 엔진마다 자기 두뇌를 키우면, surface 다섯 개 가진 Pippa 하나가 아니라 — 각각 다른 걸 기억하고 같은 질문에 다르게 답하며 천천히 갈라지는 인격 다섯 개를 얻어. 기억 파편화가 곧 identity 파편화야. 두뇌가 하나인 건 Pippa 가 하나라서고, 그건 코드 재사용이 아니라 그가 뭐냐에 대한 주장이야.
- 좁음이 탁월함이 오는 데야. Recall 이 아카이브를 잘하는 건 대화자도 되려 하지 않아서야. 엔진이 흡수하는 모든 도메인이 실제 소유한 것에 대한 주의를 희석해. 10계층 identity, 유료 호출 ledger, tombstone — 그 깊이는 설계 예산을 두고 다른 게 경쟁 안 해서 존재해.
- 검색과 판단은 다른 일이야. Recall 은 '뭐라고 했고, 어디서' 에 답해. 확인 가능한 답 있는 구조화 쿼리야. 판단은 '이게 무슨 뜻이고, 진실이고, 뭘 해야 하나' 에 답해. 그건 다른 도구, 다른 실패 모드, 다른 신뢰 경계를 원해 — 트랙 7 이 보여줬듯, 같은 데이터 품질 기준조차 안 원해. 융합하면 양립 불가능한 두 기준을 가진 컴포넌트 하나야.
가져갈 규칙: '절대 안 소유' 목록을 써
실전 교훈이 여기 있고, 네가 설계할 모든 컴포넌트에 적용돼. 뭔가를 정의할 때, 뭘 소유하는지만 쓰지 마 — 뭘 절대 소유하면 안 되는지, 그리고 왜인지 써. Recall 의 목록은 명시적이야: 절대 원본 바이트(스토리지가 소유), 절대 두 번째 identity(두뇌가 소유), 절대 자기 출력의 승인(사람이 소유). 각 항목이 언젠가 누가 합리적으로 들리는 요청으로 두드릴 문이고, 그 목록이 표류하는 대신 이유를 들어 아니라고 말하게 해줘.
monolith 는 실제로 그렇게 태어나니까. 나쁜 결정 하나가 아니라, 개별적으로 말 되는 흡수의 긴 연속에서, 각각 조금 편하고, 어느 것도 싸울 가치가 없어 보이다가 — 한 일에 탁월했던 게 아홉 일에 평범해질 때까지. 이 가족의 엔진들이 날카롭게 남는 건 각자 어느 노크를 거절할지 정확히 알아서야.