Files
document-haness/docs/clean-architecture-backend-template/tech-log-studio/commit-ambiguity-as-a-result/decision/decision-record-the-evidence-first-choose-the-conclusion-later.md
T

2.4 KiB

id, kind, slug, title, topic, topicName, project, status, studio, decisionStatus, source, sourceRevision
id kind slug title topic topicName project status studio decisionStatus source sourceRevision
PROJECT_DECISION record-the-evidence-first-choose-the-conclusion-later 증거를 먼저 기록하고 결론은 나중에 고른다 commit-ambiguity-as-a-result 커밋 모호성 — 「모른다」를 결과로 유지하기 clean-architecture-backend-template 게시 전 ADOPTED
final/document.md#a19
final/document.md#10-2
final/document.md#3-3
final/document.md#a19 §3.2
21234e38cdb9a926cbc92bb97a2aee2e4a7d2916

증거를 먼저 기록하고 결론은 나중에 고른다

실패를 관측한 즉시 성공·실패·재시도로 접지 않는다. 먼저 전송·커밋 단계를 증거로 남기고, 완료 판정은 그 증거를 입력으로 별도 단계에서 정한다.

근거

  • 발행 증거와 완료 판정이 따로 있는 이유 증거와 결론이 답하는 질문이 다르다.
  • 트랜잭션 결과 대수 — 다섯 변형이 각각 답하는 질문 완료를 다섯 상태로 유지하는 타입 모델이 이미 있다.
  • completion-unknown 은 자동으로도 수동으로도 재시도하지 않는다 증거가 모호할 때 결론을 강하게 만들지 않는 후속 결정이다.

결정문

전송·커밋 진행 정도를 먼저 증거 값으로 기록한다. 성공·롤백·completion-unknown·재시도 가능 여부 같은 결론은 그 증거와 operation semantics를 읽는 후속 판정에서 정한다.

판단 이유

예외 타입 하나에는 “아무것도 전송되지 않았다”와 “요청은 전달됐지만 결과 응답을 잃었다”가 함께 들어갈 수 있다. 이 둘을 같은 실패로 접으면 재시도 정책이 관측 사실보다 강한 주장을 하게 된다.

증거를 먼저 기록하면 후속 정책이 바뀌어도 최초 관측은 보존된다. 특히 completion-unknown을 retryable로 동시에 표현하지 못하게 만든 생성자 제약은 이 순서를 코드에서 강제한다.

영향

감수하는 것 : 상태 타입과 판정 단계가 늘어나고 호출자는 단일 boolean보다 많은 경우를 처리해야 한다.

얻는 것 : 실패 원인과 완료 상태를 섞지 않으며, 결과를 모르는 작업을 자동 재실행하는 경로를 구조적으로 줄인다.

얻는 것 : 후속 reconciliation이 최초 관측을 다시 해석할 수 있다.