Skip to content

Wodup 권위 재인입 정책 (폐기)

  • 정책 ID: lift-guild.wodup-replay
  • 정책 버전: 1.0.0
  • 결정 상태: retired (2026-08-21 폐기 — 구 상태: accepted / enforced)
  • 결정일: 2026-07-31
  • 기계 판독 정본: docs/policies/wodup-replay/policy.json
  • 불변 버전 스냅샷: docs/policies/wodup-replay/versions/1.0.0

폐기 (2026-08-21, 오너 결정) — 외부 인입이 동기화에서 일회성으로 전환되고 인입 세션이 앱에서 read-only가 되면서, 이 정책이 다루던 상황 (앱 편집을 원본으로 원복, tombstone supersede, 병합 동시성)이 구조적으로 소멸했다. 현행 규범: 인입은 딱 한 번 정본이고(one-shot 게이트), 재인입은 오너 수동 절차 "전량 제거 → requeue → 재실행"이다 — docs/data/import-pipeline.md. 이 문서와 스냅샷은 역사 기록으로 동결 보존한다. replay 기계(실체화 함수 3종)는 20260821010000 마이그레이션으로 드롭됐다.

결정

동일한 Wodup 운동을 다시 가져오면 업로드한 Wodup 파일을 수행 사실과 운동 구조의 정본으로 사용한다. Lifted에서 바꾼 Wodup 중량·반복·종목·순서는 원본으로 돌아가며, 원본에 없는 종목과 세트는 제거되고 원본에서 빠졌던 행은 다시 만들어진다.

반면 Lifted에서만 생기는 사용자 문맥은 원본의 일부가 아니므로, 같은 provider 행이 살아 있는 동안 보존한다.

  • 세션: 컨디션, 사용자 메모, 운동 전·후 메모, Lifted 입력 시간·체중, kudos
  • 종목 행: 리뷰와 메모
  • 세트 행: 메모

사용자가 세션 자체를 삭제한 뒤 재인입하면 Wodup 원본 세션을 복원한다. 과거 삭제 영수증은 감사 이력으로 남기되 해당 재인입 batch가 tombstone의 효력을 종료했음을 기록한다. 복원 후 다시 삭제하면 그 새 삭제가 다시 유효한 tombstone이 된다.

UX와 동시성

재인입은 사용자에게 병합 선택이나 복구 확인을 묻지 않는다. 결과는 언제나 같은 규칙으로 결정되고, 동일 파일을 반복 실행해도 source identity별 세션·종목·세트가 중복되지 않는다.

재인입과 CRUD는 같은 source identity 잠금을 사용한다. 동시에 실행되면 직렬화된 마지막 쓰기가 이긴다. 재인입이 나중이면 원본이 복원되고, 명시적 삭제가 나중이면 삭제 상태가 유지된다.

변경 절차

행동이 바뀌면 현재 파일이나 versions/1.0.0을 덮어쓰지 않는다. semantic version을 올린 새 snapshot을 만들고 changelog, migration, DB 왕복 테스트를 함께 추가한다.