Skip to content

feat: kc sync Phase 0·1 + v0.3.0 - #11

Merged
AI-Dico merged 26 commits into
mainfrom
feat/sync
Oct 13, 2026
Merged

AI-Dico merged 26 commits into
mainfrom
feat/sync

Conversation

@AI-Dico

@AI-Dico AI-Dico commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

설계: docs/design/sync.md (v0.4, #10 의 설계 커밋 포함).

  • Phase 0: 인박스 v2 와이어(바깥 봉투 배치는 v1 과 같고 v=2), sync 메시지, 골든 벡터, v0.2 호환 시험
  • kc-sync: 판정 순수 로직(decide·한도·슬롯·큐·복구), 결정적 시뮬레이션
  • kc-cli: kc sync 명령 일습, 기존 명령의 sync 정책, 로컬 확인 L(Touch ID·Windows Hello·polkit)
  • 이 버전은 원격 덮어쓰기를 모두 사람 검토로 보류한다(서명 승인은 Phase 1b)
  • 문서: PROTOCOL·SECURITY·README 8개 언어
  • 버전 0.3.0

리뷰: fable-advisor 4회(Wave 1·엔진 A/B·수정 확인), codex(gpt-6-astra high) 4회.

🤖 Generated with Claude Code

AI-Dico and others added 26 commits October 13, 2026 15:24
페어링한 기기끼리 고른 항목을 맞추는 kc sync 의 설계 초안. Opus·codex 설계안을
따로 받아 종합했고, logi(1pass.dev) 재사용 점검과 codex 공격자 관점 리뷰 두 차례를
반영했다. 구현 전 사용자 검토용.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sync rm 전에 보낸 늦은 제안을 받는 쪽이 세대로 걸러낸다(설계 §2.1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 수렴(6행)은 두 head 만 기록한다. 같은 값을 보낸 뚫린 기기가 다른 기기의
  미래 vid 를 lineage 에 끼워 넣어 그 변경을 '낡음'으로 만드는 공격을 막는다.
- 승인된 resolve 는 parents 를 lineage 에 넣는다. 승인됐지만 head 가 맞지 않는
  Retire 는 충돌이 아니라 보류.
- SlotBudget::set_items·prepare_hold, 피어 하나만 범위에서 빼는 Generations API.
- kc-proto: Offer.lineage ≤64, Change.parents ≤65, Digest·Ack 이름 중복 거부.
- Windows Hello 는 콘솔 창 핸들로 RequestVerificationForWindowAsync 를 쓴다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Hello 전달 실패 시 다시 보낸다(상대와 영구 정지 방지)
- --on-conflict overwrite 게이트 복원, sync.json 손상이 get·exec 를 막지 않게
- 로컬 확인 사유에 무슨 일이 일어나는지 적는다, sync add 는 고른 뒤 확인
- legacy 경로가 충돌 정책을 따르고 거절은 그 항목만 보류
- review 거절도 같은 한 번의 확인에 묶는다, 표시 지문을 kc get --fingerprint 와 통일
- 비활성·차단 기기의 제안 무시, 충돌 중 제안은 후보로
- Sync 본문 재전송 검사, 용량·바인딩 실패를 비치명화, 슬롯 누수 정리

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 충돌 중인 항목에 온 Offer 는 범위 안 기기·같은 등록 세대일 때만 충돌 후보로.
  그 밖에는 제안으로 둔다(범위 밖 기기가 후보 슬롯을 밀어내는 것을 막음).
- 일시 전달 실패는 별도 플래그(delivery_failed)로, 모든 상대에 닿으면 해제.
- 축출된 제안도 거절과 같이 vid 바인딩을 정리한다.
- review 확인 문구에서 빈 절을 뺀다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
수락 중인 제안이 자기 기준점 예약으로 축출되면 그 vid 바인딩이 삭제 예약된 채
head 가 되어, 다음 sync 가 상태 손상으로 실패할 수 있었다(codex 리뷰 P1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
축출된 후보가 바로 그 슬롯을 예약 중인 수락 대상일 수 있어, unbound 표시가
사라지면 같은 vid 의 정상 변경이 위반으로 격리된다(codex 재리뷰 P1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
충돌 중에 들어온 제안·보류 변경을 review 로 받아들이면 다른 충돌 후보가
버려졌다(codex 리뷰 P1). 잠금 안에서 막고 resolve 를 안내한다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@AI-Dico AI-Dico changed the title feat: kc sync Phase 0·1 (인박스 v2, 동기화 본체, 로컬 확인) feat: kc sync Phase 0·1 + v0.3.0 Oct 13, 2026
@AI-Dico
AI-Dico marked this pull request as ready for review October 13, 2026 09:38
@AI-Dico
AI-Dico merged commit e7443b3 into main Oct 13, 2026
6 checks passed
@AI-Dico
AI-Dico deleted the feat/sync branch October 14, 2026 06:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants