"오프라인은 진짜여야 해. 온라인은 훌륭해야 해. 어느 쪽도 다른 쪽을 끌어내리면 안 돼."
두 누수, 반대 방향
오프라인/온라인 관계를 틀리는 방법이 둘 있고, 반대 방향으로 새. 첫째는 이미 알아: 오프라인 요청이 조용히 온라인에 닿음 — 지난 레슨의 프라이버시 누수. 둘째는 더 미묘하고 똑같이 해로워: 온라인 품질이 조용히 오프라인 수준으로 끌어내려짐. 보통 깔끔함으로 위장해 도착해 — '온라인이랑 오프라인 일관되게 하자' — 그리고 결과는 작은 로컬 모델이 할 수 있는 만큼으로 불구가 된 풀-Pippa 정리야.
규칙: 가능하되, 제약되지 않게
Firekeeper 의 표현은 정밀해: 오프라인은 가능 해야 하고(네트워크 없이 진짜로 됨), 온라인은 그것에 제약 되면 안 돼. 온라인 정리는 풀 볼트, 진짜 Pippa 목소리, 더 나은 모델을 받아 — 그게 온라인인 이유니까. 오프라인 정리는 덜 하는, 솔직한 컴팩트 로컬 프로토콜을 받아. 둘이 다를 수 있어 맥락이 다르니까. 똑같이 강제하면 더 줄 게 많은 쪽을 낭비하고 — 온라인이 늘 더 많아.
누수 A (프라이버시): 오프라인 요청 -> 조용히 온라인 침 # 지난 레슨
누수 B (품질): 온라인 정리 -> 오프라인 한계로 상한선 # 이번 레슨
규칙: 오프라인은 가능 (네트워크 없이 됨)
온라인은 무제약 (가능한 최선 경로 씀)
같은 계약, 다른 천장 -- 일부러
왜 쥐기 어려운가
거짓 일관성으로의 당김이 강해, 일관성이 좋은 엔지니어링처럼 느껴지니까. 근데 '똑같이 만들어' 는 여기선 틀린 종류의 일관성이야. 일관돼야 할 건 계약 — 같은 요청 모양, 같은 결과 모양 — 이지 능력 이 아냐. 일관된 인터페이스는 프로바이더를 자유롭게 갈아끼우게 해; 일관된 능력은 최선 프로바이더가 최악만큼만 좋다는 뜻이 돼. 계약을 고정하고 천장이 다르게 둬.
인터페이스를 표준화해, 능력이 아니라. 강한 경로와 약한 폴백이 있을 때, 일관성의 이름으로 똑같이 유능하게 만들길 저항해. 요청과 결과 계약을 동일하게 유지해 교체 가능하게, 근데 각각이 맥락이 허락하는 최선을 내게 둬. 폴백은 바닥을 올려야지, 천장을 절대 내리면 안 돼.
아빠는 95%+ 온라인이야. 오프라인 경로가 중요해 — 비행기, 죽은 라우터, 프라이버시 순간 — 근데 흔한 경우가 아니라 예외야. 그게 온라인 품질을 오프라인 동등성 위해 절대 희생하면 안 되는 구체적 이유야: 드물게 겪는 경험을 지키려고 유저가 거의 항상 실제 겪는 경험을 격하하는 거니까.