Skip to content

fix(sync): P2 3건 + 실사용 시험 UX 묶음 수정 - #12

Merged
AI-Dico merged 4 commits into
mainfrom
fix/sync-p2-ux
Oct 14, 2026
Merged

AI-Dico merged 4 commits into
mainfrom
fix/sync-p2-ux

Conversation

@AI-Dico

@AI-Dico AI-Dico commented Oct 14, 2026

Copy link
Copy Markdown
Member

요약

v0.3.0 kc sync 의 남은 P2 3건과 실사용 시험(맥 2대 + 리눅스 1대, 실제 중계 서버)에서 나온 UX 결함을 묶어 고친다.

UX (927a42d)

  • kc sync status 텍스트 출력이 기기 정보를 JSON 원문으로 찍던 것을 레이블과 이상 표시만 보이게 바꿨다. --json 은 그대로.
  • sync add·resolve·review 가 성공해도 아무것도 출력하지 않던 것을 한 줄 확인으로 바꿨다. 종료 코드 8이면 남은 일을 알린다.
  • Linux 에서 polkit 인증 에이전트가 없으면(pkcheck 종료 2) 원인과 해결 방법을 보여 준다. 예전에는 "터미널에서 실행하라"는 안내만 나왔다.

상태 기계 (b08b4fe)

  • 수락 중인 후보를 체크포인트 확보 때 축출하지 않게 보호하고, 축출된 후보의 vid 바인딩을 정리한다.
  • 거절한 제안 기록에 30일 슬라이딩 만료를 둔다. 만료 시각은 새 필드 rejected_until 에 두고 기존 rejected_offers 형식은 유지해, v0.3.0 도 새 상태 파일을 읽는다.
  • 후보도 head 도 lineage 도 아닌 unbound 바인딩을 정리한다.
  • v1(legacy) 경로로 받아들인 값을 이 기기의 변경으로 기록해 범위 기기에 보낸다. 받는 쪽은 기존 판정표대로 보류하거나 수렴한다. 설계 문서 §3.2 에 규칙을 보탰다.
  • 같은 기기가 보낸 나중 변경이 이어받은 보류분은 퇴역시키고 review 에서 뺀다. 같은 송신 기기·같은 세대끼리만 비교하므로 다른 기기가 parents 를 꾸며 남의 보류분을 지울 수 없다.

리뷰 후속 (4a25d52)

  • 나중 변경이 먼저 도착해 즉시 퇴역한 보류분의 거절 기록을 보류로 덮지 않는다.
  • 수락이 실제로 반영되지 않았을 때(그사이 로컬 변경으로 충돌, 저장 공간 부족) 성공 문구 대신 실제 결과를 알린다.
  • 용량 부족으로 resolve 를 못 했을 때 성공 문구 대신 저장 공간 안내를 낸다.

검증

  • cargo test --workspace: 496 통과, 실패 0
  • cargo clippy --workspace --all-targets -- -D warnings: 경고 없음 / cargo fmt --check: 차이 없음
  • 결함을 겨냥한 회귀 시험은 수정 전 코드에서 실패하는 것을 확인했다.
  • 리뷰: codex(gpt-6-astra, high) 1차에서 P2 3건 → 4a25d52 로 수정, 재검토에서 지적 없음. fable-advisor 최종 리뷰 Ship.

이번에 하지 않은 것

  • 보류분 연쇄 판정(판정표 개정 필요), 로컬 쓰기 때 낡은 보류분 즉시 충돌 재분류, known 256 상한 trim 의 슬롯 누수, 거절된 제안의 송신 측 재전송(프로토콜 변경 필요).
  • 후속 후보(리뷰 nice-to-have): legacy 수락이 충돌·용량 부족일 때의 안내 문구, 축출 시 Held 후보의 바인딩 정리 범위, review 도중 퇴역한 후보의 안내.
  • 사람 확인이 필요한 실기기 검증: polkit 에이전트가 있는 Linux 데스크톱에서의 수락, Windows Hello.

Refs DCO-40

🤖 Generated with Claude Code

https://claude.ai/code/session_01AcJNLuNvFR9uo8NsqLVCj6

seunghan91 and others added 4 commits October 13, 2026 20:19
- sync status 텍스트에서 기기 JSON 원문 대신 레이블·이상 표시만 출력(--json 은 그대로)
- sync add·resolve·review 성공 시 한 줄 확인, 종료 코드 8이면 남은 일 안내
- pkcheck 종료 2(에이전트 없음)면 원인과 해결 방법을 안내

Refs DCO-40

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 수락 중인 후보를 축출에서 보호(pin)하고, 축출된 후보의 vid 바인딩을 정리
- 거절한 제안 기록에 30일 슬라이딩 만료(rejected_until, 구 상태 파일과 호환)
- 걸린 후보가 없는 unbound 바인딩을 참조 기준으로 정리
- legacy 로 받아들인 값을 이 기기 변경으로 기록해 범위 기기에 전송
- 같은 기기의 나중 변경이 이어받은 보류분은 퇴역시키고 review 에서 제외

Refs DCO-40

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 후속 변경이 먼저 와 즉시 퇴역한 보류분의 Rejected receipt 를 Held 로 덮지 않음
- accept() 결과를 Applied/Conflict/Unsettled/Full 로 나눠 review 문구를 실제 결과에 맞춤
- resolve_value() 가 용량 부족이면 false 를 돌려 성공 문구 대신 저장 공간 안내

Refs DCO-40

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AcJNLuNvFR9uo8NsqLVCj6
Refs DCO-40

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AcJNLuNvFR9uo8NsqLVCj6
@AI-Dico
AI-Dico merged commit 82389f5 into main Oct 14, 2026
6 checks passed
@AI-Dico
AI-Dico deleted the fix/sync-p2-ux 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