Skip to content

체크포인트 유령 부활 수리 — 저장한 운동이 "진행중"으로 되살아나던 결함 (2026-08-31)

  • 기간: 2026-08-30 (1세션, 오너: "#923 작업좀 진행해줘" — 출시 전 전면 감사가 발견한 결함)
  • 랜딩: PR #930(Phase 1, a5957ae2) · PR #933(Phase 2, c6f5006e) — 마이그레이션 20260831130000, Vercel 배포
  • 설계서: 없음(수리 건) — 분석·Phase 계획은 이슈 #923 쓰레드
  • 정본: 이 수리의 상세는 bug-report/bug-044-20260830.md가 정본이다
  • 게이트: 클라 회귀 테스트 4건(tests/react/workoutDraftCheckpoint.test.mjs) + pgTAP 8건(supabase/tests/database/workout_draft_checkpoint_commit_guard_v1.test.sql)
  • 버그리포트: bug-report/bug-044-20260830.md

Phase 현황

Phase내용상태
Phase 1저장·삭제 시 백업 예약 타이머 취소 + 삭제 순서 보장 (클라)✅ PR #930 (a5957ae2)
Phase 2부팅 조회에서 저장 완료된 운동의 백업 자동 소멸 (서버+클라)✅ PR #933 (c6f5006e)
Phase 3버그리포트·작업 기록✅ 본 문서

요약

진행중 운동의 서버 자동 백업(#887)은 60초에 한 번만 올리는 제한 때문에 "60초 뒤 마지막 상태 올리기" 예약을 걸어두는데, 저장·삭제가 백업을 지우면서 이 예약을 취소하지 않았다. 예약이 뒤늦게 실행되어 지운 백업을 되살렸고, 다음 부팅에서 이미 저장한 운동이 "진행중이던 운동" 팝업으로 부활했다(이어하기 재저장은 LG001 반복). 저장 시 예약을 함께 취소하고(Phase 1), 남은 유령은 부팅 조회에서 서버가 스스로 지우게 했다(Phase 2). 원인·대안·재발 방지 상세는 버그리포트 참조.

적용 결과

항목
재현 시나리오(편집 → 60초 내 저장 → 재부팅) 팝업항상 발생0 (회귀 테스트 고정)
취소·부팅 자정 회귀 테스트0건클라 4건 + pgTAP 8건
Production 유령 백업(저장 완료된 운동의 백업 행)표본 1일 0행부팅 조회 시 구조적으로 소멸

오너 실기기 확인 완료(2026-08-31): 운동 저장 → 재부팅 → 팝업 없음.

남은 것

  • 없음 — 오너 실기기 확인 완료, 이슈 #923 [반영완료] 종결(2026-08-31).