충돌 해결 (LWW + 5분 임계)
🚧 설계 단계 — 아직 구현 안 됨
이 페이지는 ainote 의 향후 기능을 미리 문서화한 것입니다. 현재 @ainote/mcp v1.1.x 에는 vault / sync 도구가 포함돼 있지 않습니다. 도구 호출 시 Tool not found 에러를 받게 됩니다.
핵심: 5분 안에 양쪽 변경 → 양쪽 보존 + 사용자 선택. 5분 이후 → LWW.
4가지 케이스
| 케이스 | 로컬 변경 | 원격 변경 | 처리 |
|---|---|---|---|
| A | ❌ | ❌ | no-op |
| B | ✅ | ❌ | push |
| C | ❌ | ✅ | pull |
| D | ✅ | ✅ | conflict (아래 참고) |
케이스 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: falsemax_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 7dGit 으로 해결 (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 에 두 버전 모두 보존