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

force 의미론

~11 min · force, escape-hatch, money-boundary, scoped

Level 0Empty Shelf
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"--force 는 네가 의도한 작업을 재실행해야지, 네 돈을 지키는 guard 를 날려버리면 안 돼."

다들 손 뻗는 탈출구

계층 identity 는 훌륭해. 시스템이 done 이라고 여기는 걸 진짜로 다시 돌리고 싶은 날이 오기 전까지는. 프롬프트를 개선했으니 새 요약이 필요하다든가. 그래서 --force 에 손을 뻗지. 안전한 도구와 footgun 을 가르는 설계 질문이 여기 있어. --force 가 실제로 뭘 해야 하지? 게으르고 위험한 답은 '모든 identity 를 무시하고 말 그대로 전부 다시 돌린다' 야. 그 '전부' 중 일부가 호출할 때마다 돈이 드는 파이프라인이라면, 그 뭉툭한 force 는 이미 transcript 가 있는 오디오까지 눈 감고 다시 결제해. 탈출구가 실수로 큰돈을 쓰는 통로가 되는 거지.

force 는 범위 지어졌지, 전면이 아냐

Recall 의 --force 는 일부러 수술처럼 좁게 만들었어. 네가 노린 계층만 정확히 무효화하고 돈 guard 는 그대로 둬.

  • 새 execution identity, 그러니까 새 batch 와 job 을 만들어. 그래야 파이프라인이 'already done' 에서 끊고 나가지 않고 진짜로 다시 돌거든.
  • 하류 산물을 재생성해. 요약이랑 제목. 다시 계산해도 값싸고, 보통 네가 force 를 쓰는 이유가 그거니까.
  • 근데 content-addressed 유료 호출 identity 는 그대로 둬. 같은 config 아래 같은 오디오는 여전히 같은 유료 key 로 hash 되고, 완료된 ledger 행을 찾아서 저장된 응답을 재사용해. 새 POST 없고, 새 청구도 없어.

그래서 평범한 --force 는 네가 진짜 원한 걸 줘. 재실행이랑 새 파생 출력. 돈이 드는 그 하나만 안 건드리고. 같은 콘텐츠를 진짜로 유료 재실행하는 건 일반 force 플래그로는 닿을 수 없어. 별도의 명시적인 행위가 있어야 해. 진짜 설정 lineage 가 바뀌었거나(그럼 새 유료 identity 가 정당하게 생겨), 아니면 '그래, 이거 다시 결제해' 라고 말하는 명시적인 operator 승인이 있거나. 제일 좁은 force 인 title-only force 는 기존 요약에 제목 프롬프트만 다시 돌려. 영상도 안 읽고, 오디오 준비도 안 하고, 돈도 안 써.

원리: force 는 넘으면 안 되는 경계를 존중해

여기서 얻을 일반적인 교훈은 '재실행' override 를 애초에 어떻게 설계하느냐야. '모든 안전장치 무시' 를 뜻하는 force 플래그는 나쁜 쪽으로 사람을 놀라게 해. 유저가 머릿속에 그린 것보다 훨씬 많은 일을 하고, 그 놀라움에 값이 붙거든. 잘 설계된 force 는 범위가 정해져 있어. 유저가 재생성하고 싶어 하는 계층만 정확히 무효화하고, 더 시끄러운 별도 opt-in 없이는 되돌릴 수 없거나 비싼 경계를 넘기를 명시적으로 거부해. 버전 관리 시스템도 같은 걸 배웠어. 평범한 force-push 는 남의 작업을 날려버릴 수 있으니까, 안전한 변형은 예상 못 한 변화를 force 로 밀고 지나가길 거부하잖아. 정신은 똑같아. 흔히 쓰는 force 는 안전하게, 범위를 정해서. 위험한 force 는 실수로는 절대 못 고르는 별도의 명시적 선택으로. override 는 작업을 다시 돌리라고 있는 거지 guardrail 을 없애라고 있는 게 아니야.

Code

--force 가 건드리는 것, 일부러 안 건드리는 것·text
recall-archive start --source rekindled-ash --all --force

  재생성 (싸고, 보통 의도):
    - 새 execution identity (새 batch + job)
    - 요약
    - 제목

  보존 (돈 guard, 손 안 댐):
    - 유료 호출 identity = hash(chunk) + hash(config)
      -> 동일 오디오는 여전히 완료된 ledger 행에 맞음
      -> 저장된 응답 재사용, 새 유료 POST 없음

  진짜 유료 재실행은 여기서 도달 불가. 둘 중 하나 필요:
    - 진짜 config 변화 (새 유료 identity), 또는
    - 명시적  --allow-paid-rerun  승인

# title-only force: 기존 요약에 제목 프롬프트만 재실행.
# 영상 안 읽고, 오디오 준비 안 하고, 아무것도 안 씀.

External links

Exercise

네가 쓰거나 유지하는 도구에서 'force' 나 'overwrite' 나 'redo' 옵션을 찾아봐. 그게 정확히 뭘 무효화하는지 물어. 보통 다시 돌리고 싶어 하는 것에만 범위가 잡혀 있어? 아니면 비싸거나 되돌릴 수 없는 행위까지 전부 날려? 플래그 하나가 값싼 출력을 재생성하면서 비싸거나 파괴적인 것까지 다시 부른다면 다시 설계해. 흔히 쓰는 force 는 범위를 정하고, 위험한 동작은 별도의 명시적 opt-in 뒤로 옮겨.
Hint
테스트 질문은 이거야. '이 force 가 할 수 있는 최악이 뭐고, 반사적으로 누르기가 얼마나 쉬워?' 반사적으로 누른 force 가 돈을 쓰거나 데이터를 부술 수 있으면 설계가 틀린 거야. 둘로 쪼개. 일상적인 경우에는 안전하고 범위가 정해진 force, 되돌릴 수 없는 건 시끄럽고 별도인 승인. 위험한 경로는 일부러 고를 때만 열리게.

Progress

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

댓글 0

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

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