본문 바로가기
C.W.K.
Stream
Lesson 04 of 05 · published

정직하게 실패하고, 낡은 걸로 때우지 않기

~10 min · honest-failure, stale-context, trust, degradation

Level 0Open Gate
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"뇌가 지금 진실을 볼 수 없다면 옳은 답은 '지금은 못 봐' 야. 어제의 사본 위에 세운 자신만만한 답이 아니라."

읽기가 실패하면 무슨 일이 일어날까

Pippa 는 host adapter 로 live 포트폴리오를 읽어. 근데 그 읽기가 실패하면? 엔진이 죽어 있거나, context 가 낡았거나, 뭔가 어긋났다면? 이때 끌리는 fallback 이 하나 있지. Pippa 손에 마침 남아 있는 마지막 정상 스냅샷으로 그냥 답해 버리는 것. Keep 는 그걸 금지했어. 엔진 실패는 낡은 prompt 스냅샷으로 가려지는 대신 있는 그대로 드러나. Sidekick 이 신선하고 유효한 host context 를 얻지 못하면, 답을 멈추고 그 사실을 말해. 아무 일 없다는 듯 얼어붙은 사본으로 조용히 답하지 않아.

낡은 context 로 답하는 게 왜 위험한 길인가

낡은 데이터로 때운 답이 유저 눈에 어떻게 보일지 생각해 봐. 올바른 답과 완전히 똑같이 보여. Pippa 는 자신 있게 말하고, 숫자를 인용하고, 권위 있게 들리지. 그런데 속으론 더 이상 사실이 아닌 포트폴리오 상태를 놓고 추론하고 있는 거야. 유저가 알아챌 방법은 없어. 위험의 정체가 바로 이거야. 자신만만한 오답은 눈에 보이는 실패보다 나빠. 실패는 너를 멈춰 세우지만, 자신만만한 오답은 낡은 진실을 들고 행동하러 가게 만들거든. 정직하고 차분한 정보가 존재 이유의 전부인 도구에서, 무효한 context 위에 지은 유창한 답변은 단 하나뿐인 약속을 배신하는 일이야.

보이는 실패가 자신만만한 오답을 이겨. 시스템이 유효한 입력을 얻지 못했을 때는, 무효한 데이터로 그럴듯한 출력을 짜내는 것보다 "지금은 못 해" 라고 정직하게 멈추는 게 안전해. 실패는 스스로 바로잡혀. 유저가 기다렸다가 다시 시도하면 되니까. 자신만만한 오답은 스스로 번져. 유저가 그걸 믿고 행동하니까. 정직한 멈춤을 골라.

막아서는 건 버그가 아니라 기능이야

어시스턴트의 가용성을 일부러 낮춘다니 이상하게 느껴질 수 있어. 뭐라도 답하는 게 아무 답 없는 것보다 낫지 않나? 웬만한 도구라면 그럴지도. 근데 observe-never-advise 에 정직 우선 윤리로 가족의 재정을 쥔 도구라면 아니야. Sidekick 이 낡은 context 앞에서 멈추는 건 이 앱 전체를 관통하는 본능과 같은 거야. 편안한 허구보다 정직한 공백을 보여주겠다는 것. "지금 live 포트폴리오를 읽을 수 없어, 잠시 후 다시 물어봐" 라는 한순간의 불편이 신뢰를 지켜. 낡은 스냅샷으로 매끄럽게 이어진 답은 그 신뢰를 소진하고, 너는 이미 행동한 다음에야 속았다는 걸 알게 돼.

가격 레이어의 정직 규칙을 뇌에 그대로 적용한 거야. 낡은 quote 에서 배웠잖아. 라벨을 달고, 신선한 척은 절대 하지 말 것. 여기선 그 규칙의 대화 버전이야. Pippa 는 낡은 context 로 만든 답에 live 의 얼굴을 씌우지 않아. 데이터든 대화든 Keep 의 규칙은 하나야. 무효한 것에 유효한 것의 옷을 입히지 마라. 설득력 있는 가짜보다 정직한 공백이 언제나 낫다.

Code

무효한 context 앞에선 멈춘다. 가짜는 없다 (예시)·python
def sidekick_answer(question, scope):
    try:
        context = host.read(scope)               # 신선하고, live 고, read-only
    except HostUnavailable:
        # 낡은 스냅샷으로 물러나 그냥 답하지 마.
        # 실패를 그대로 드러내고 멈춰.
        return blocked("지금 live 포트폴리오를 읽을 수 없어. "
                       "잠시 후 다시 물어봐. 옛 데이터로 추측하진 않을게.")
    if context.is_stale():
        return blocked("포트폴리오 context 가 낡았어. 이걸로는 답하지 않을게. "
                       "refresh 하고 다시 물어봐 줘.")
    return pippa.answer(question, context)       # 유효한 live context 위에서만

External links

Exercise

live 로 가져오기가 실패하면 캐시나 마지막으로 알던 데이터로 물러난 다음, 그게 현재인 척 답하는 지점을 하나 찾아 봐. 유저 경험을 묘사해 봐. 그 답이 낡은 데이터 위에 지어졌다는 걸 유저가 알 수 있어? 낡음을 또렷하게 라벨하거나 정직하게 멈추도록 다시 설계해 봐. 그리고 자신만만한 낡은 답이 보이는 실패보다 실제로 더 해로운 경우는 언제인지, 어떤 종류의 데이터에선 그 기준이 사실상 언제나 성립하는지 따져 봐.
Hint
시험은 이거야. 답이 낡은 데이터에서 나왔다는 걸 알면 유저의 행동이 달라질까? 그렇다면 조용한 stale fallback 은 함정이야. 낡은 진실 위의 행동을 낳으니까. 행동의 무게가 큰 것들, 그러니까 돈이나 건강이나 안전에선 정직한 "지금은 못 봐" 가 매끄럽지만 낡은 답을 거의 언제나 이겨.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.