Skip to content

충돌 해결 (LWW + 5분 임계)

🚧 설계 단계 — 아직 구현 안 됨

이 페이지는 ainote 의 향후 기능을 미리 문서화한 것입니다. 현재 @ainote/mcp v1.1.x 에는 vault / sync 도구가 포함돼 있지 않습니다. 도구 호출 시 Tool not found 에러를 받게 됩니다.

핵심: 5분 안에 양쪽 변경 → 양쪽 보존 + 사용자 선택. 5분 이후 → LWW.

4가지 케이스

케이스로컬 변경원격 변경처리
Ano-op
Bpush
Cpull
Dconflict (아래 참고)

케이스 D 세분화

시간 차 = |로컬 mtime - 원격 mtime|

if 시간 차 ≤ 5분:
    → 양쪽 보존 (conflict 디렉토리)
    → 사용자가 수동 머지
else:
    → LWW (HLC 기준 더 큰 쪽 승)

D-1: 시간 차 ≤ 5분 → 사용자 선택

양쪽이 거의 동시에 변경 → 의도적 동시 작업 가능 → 자동 결정 위험.

처리:

bash
~/.claude/ainote-sync/conflicts/
└── 2026-05-07T14-30-00__global__CLAUDE.md.diff

.diff 파일 형식:

diff
=== LOCAL  (macmini, 2026-05-07T14:28:00, hlc 2026-05-07T14:28:00.0.macmini)
new line from macmini

=== REMOTE (macbook, 2026-05-07T14:30:00, hlc 2026-05-07T14:30:00.0.macbook)
new line from macbook

다음 sync 가 막힘. 사용자가 해결:

bash
ainote sync_resolve global/CLAUDE.md \
  --keep local                # 또는
  --keep remote               # 또는
  --merge /tmp/manual.md      # 수동 머지 결과 파일

해결 후 다음 sync 진행.

D-2: 시간 차 > 5분 → LWW

오래된 변경은 stale 가능성 높음 → 자동 결정.

HLC 비교:
  local  (HLC 2026-05-07T14:00:00.0.macmini)
  remote (HLC 2026-05-07T15:30:00.0.macbook)
  → remote 승 → 로컬 덮어씀

로컬 버전은 git history 에 남음 → 복구 가능.

Safety guard

sync-now.sh 에 안전장치:

yaml
# manifest.yml
safety:
  max_delete_pct: 10        # 10% 이상 파일 삭제 시 abort
  max_overwrite_files: 5    # 한번에 5파일 이상 덮어쓰기 시 confirm
  dry_run_default: false

max_delete_pct 초과 시:

⚠️ ABORT: 53 파일 중 12 파일 삭제 예정 (22%)
설정의 max_delete_pct: 10 초과
실수 의심 — 다음 명령으로 강제:
  ainote sync_now --override-safety --max-delete-pct=25

충돌 디렉토리 정리

bash
# 미해결 충돌 목록
ls -lt ~/.claude/ainote-sync/conflicts/

# 7일 지난 해결된 것 자동 정리 (계획됨)
ainote sync_cleanup_conflicts --older-than 7d

Git 으로 해결 (vault)

vault 의 경우 일반 git 3-way merge:

bash
cd ~/notes/personal
git status                              # conflict 파일 확인
# editor 로 <<<<<<< 마커 해결
git add .
git commit
ainote vault_sync personal              # 다시 시도

vault 는 git 표준이므로 5분 임계 안 적용.

메모리 / dev_doc 의 경우

API 호출 단위라 충돌 감지 다름:

  • 양쪽이 거의 동시 update_dev_doc → HLC 비교
  • 5분 임계 안 함 — 항상 LWW (단순)
  • git history 에 두 버전 모두 보존

다음

MIT License · ainote.dev