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

needsReview 는 기능이야

~12 min · needsreview, no-auto-retry, stop-beats-guess

Level 0Finder 에서 헤매는 중
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"파일 관리자가 할 수 있는 제일 용감한 일은 멈춰 서서 '잘 모르겠어' 라고 말하는 거야. 네 데이터를 날린 도구들은 그 말을 하기엔 너무 확신에 차 있었지."

대부분의 앱이 안 갖는 상태

보통 소프트웨어는 '막혔고 애매함' 을 덮어야 할 실패로 봐. 조용히 다시 시도하고, 기본값을 고르고, 사용자가 안 귀찮게 밀고 나가지. Waygate 는 반대로 해. needsReview 라는 정식 상태를 두고, 파괴적인 단계의 증거가 모자랄 때 멈춰서 붙들어. 여기 들어가는 건 작업이 실패한 게 아니야. 제일 중요한 일 하나를 해낸 거지. 네 파일을 두고 넘겨짚지 않은 것.

여기 오는 것들

규칙은 구체적이야. 애매한 상황 뒤엔 이동도 덮어쓰기도 휴지통도 뒤처리도 자동으로 다시 안 시도해. 중단된 작업이 되돌릴 수 없는 고비 앞에 있는데 저널이 다음 단계가 안전하다고 딱 떨어지게 못 말하면, needsReview 에서 멈추고 사람을 기다려. 목적지를 제자리로 옮긴 뒤 원본 삭제 전에 죽은 경우, 원본 보관 상태가 애매한 덮어쓰기, 정말 버려진 게 맞는지 증명 못 하는 임시 파일. 전부 진행 대신 붙들어.

멈춤이 재시도를 이기는 이유

자동 재시도는 친절해 보이지만 파괴적인 작업에선 조용히 치명적이야. 확신 없던 삭제를 다시 시도한다고 안전해지지 않아. 똑같이 증거가 모자란 채로 위험한 단계를 한 번 더 돌릴 뿐이지. 반면 멈춤은 사용자의 잠깐을 쓰고 아무것도 안 잃어. needsReview 는 작고 눈에 보이는 방해 하나로 조용한 데이터 손실 부류 전체를 지워. 잃는 쪽이 돌아오지 않는 파일이라면 늘 남는 장사야.

needsReview 는 일부러 만든 정식 상태고, 애매한 상황 뒤엔 이동도 덮어쓰기도 휴지통도 뒤처리도 자동으로 다시 안 시도해. 딱 떨어지는 증거 없이 되돌릴 수 없는 고비 앞에 멈춘 작업은 사람을 기다려. 멈춤은 잠깐의 주의를 쓰고 넘겨짚음은 파일을 잃어. 그래서 멈추는 게 실패가 아니라 기능이야.
데이터는 자동 재시도에서 사라져. '튼튼한' 파일 도구가 데이터를 잃는 제일 흔한 방식이 파괴적인 작업을 감싼 선의의 재시도 반복문이야. 첫 시도가 애매한 상태를 남겼는데, 똑같이 모자란 정보로 도는 재시도가 그 애매함을 틀린 쪽으로 정리해버리지. 한 번 실패한 파괴적인 단계는 자동으로 다시 돌리는 게 아니라 사람이 봐야 해. needsReview 는 확신이 증거를 앞지르지 않게 붙드는 규율이야.

Code

needsReview 는 붙들지, 파괴를 다시 시도하지 않아·swift
func handleInterrupted(_ op: OperationHandle, _ evidence: Evidence) {
    let isDestructive = op.kind.isDestructive   // move, replace, trash, cleanup
    if isDestructive && !evidence.provesSafeNextStep {
        // Do NOT loop-retry. Do NOT pick a default. HOLD:
        journal.mark(op, .needsReview,
                     summary: evidence.humanReadableAmbiguity)
        ui.presentReviewQueue(op)   // a human sees exactly what's uncertain
        return
    }
    // Only non-destructive or deterministically-safe steps proceed:
    Task { try? await engine.resume(op, from: evidence) }
}
// The temptation this refuses: `for attempt in 1...3 { try? retry(op) }`
// around a delete. Three tries with the same missing evidence is three
// chances to lose the file, not a fix.

External links

Exercise

위험한 작업을 재시도 반복문으로 감싼 자리를 소프트웨어에서 찾아봐. 결제, 삭제, 메일 발송, 파일 이동 같은 거. 물어봐. 같은 입력으로 다시 하는 게 더 안전해져, 아니면 위험을 한 번 더 돌리는 거야? 그다음 needsReview 식 대안을 설계해봐. 재시도 대신 사람한테 뭘 보여주고, 어떤 작은 결정을 물을까?
Hint
재시도가 진짜 안전한 건 여러 번 해도 같은 결과인 비파괴적 작업뿐이야. 읽기라든가, 반복해도 되는 쓰기. 카드 청구나 파일 삭제나 메시지 발송처럼 밖으로 영향이 나가는 단계는 눈감고 다시 하면 해로운 일을 두 번 하거나 애매함을 틀린 쪽으로 정리해. needsReview 식 대안은 애매한 상태와 증거를 보여주고 구체적인 질문 하나를 던져. 위험한 자동 짐작을 싸고 안전한 결정으로 바꾸는 거지.

Progress

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

댓글 0

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

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