"--force 는 네가 의도한 작업을 재실행해야지, 네 돈을 지키는 guard 를 날려버리면 안 돼."
다들 손 뻗는 탈출구
계층 identity 는 시스템이 done 이라 여기는 걸 실제로 재실행하고 싶은 날까지는 훌륭해 — 프롬프트를 개선했고, 새 요약을 원해. 그래서 --force 에 손 뻗어. 그리고 안전한 도구랑 footgun 을 가르는 설계 질문이 여기 있어: --force 가 실제로 뭘 해야 해? 게으르고 위험한 답은 '모든 identity 를 무시하고 문자 그대로 전부 재실행' 이야. 그 '전부' 의 일부가 호출당 돈 드는 파이프라인에선, 그 뭉툭한 force 가 이미 transcript 가진 오디오를 blind 로 재결제해. 탈출구가 실수로 큰돈을 쓰는 방법이 돼.
force 는 범위 지어졌지, 전면이 아냐
Recall 의 --force 는 일부러 수술적이야. 네가 의도한 계층을 정확히 무효화하고 돈 guard 를 온전히 둬:
- 새 execution identity — 새 batch 랑 job — 를 만들어서, 파이프라인이 'already done' 에 short-circuit 하는 대신 진짜 재실행해.
- 하류 산물을 재생성 — 요약, 제목 — 그건 재계산이 싸고 보통 네가 force 하는 이유니까.
- 근데 content-addressed 유료 호출 identity 는 그대로. 동일 config 아래 동일 오디오는 여전히 같은 유료 key 로 hash 되고, 여전히 완료된 ledger 행을 찾고, 여전히 저장된 응답을 재사용해. 새 POST 없음. 새 청구 없음.
그래서 정상 --force 는 네가 실제 원한 걸 줘 — 재실행이랑 새 파생 출력 — 돈 드는 그 하나는 안 건드리고. 동일 콘텐츠의 진짜 유료 재실행은 일반 force 플래그로 도달 불가 야. 별도의 명시적 행위가 필요해: 진짜 설정 lineage 변화(정당하게 새 유료 identity 를 냄) 아니면 사실상 '응, 이거 다시 결제해' 라고 말하는 명시적 operator 승인. 그리고 가장 좁은 force — title-only force — 는 기존 요약에 제목 프롬프트만 재실행해: 영상 안 읽고, 오디오 준비 안 하고, 아무것도 안 써.
원리: force 는 넘으면 안 되는 경계를 존중해
일반 교훈은 '재실행' override 를 애초에 어떻게 설계하냐야. '모든 안전 무시' 를 뜻하는 force 플래그는 나쁜 쪽으로 astonishing 해 — 유저가 그린 것보다 훨씬 많이 하고, 그 놀라움이 비싸. 잘 설계된 force 는 범위 지어졌어: 유저가 재생성 원하는 계층을 정확히 무효화하고, 별도의 더 시끄러운 opt-in 없이는 되돌릴 수 없거나 비싼 경계를 넘길 명시적으로 거부해. 버전 관리 시스템도 이걸 배웠어 — 평범한 force-push 는 남의 작업을 파괴할 수 있어서, 안전한 변형은 예상 못 한 변화를 force 로 지나길 거부해. 같은 정신이야: 흔한 force 는 안전하고 범위 지어지게, 위험한 force 는 실수로 못 빠지는 별도의 명시적 선택으로. override 는 작업을 재실행해야지, guardrail 을 없애면 안 돼.