0.1.0-draft

Rust 트리 코어 검증 기록

검증일: 2026-09-28 · 대상: spinon-core 내부 Rust 라이브러리 · 제품 화면 완료: 아님

환경

항목값
운영체제macOS 26.5.1, arm64
Rustrustc 1.96.1
도구 고정저장소 mise.toml
외부 Rust 의존성없음

실행 결과

실행결과
mise exec -- cargo fmt --all -- --check통과
mise exec -- bun run testJS 예제 1개, spinon-core 15개, spinon-ffi 2개 테스트 통과
mise exec -- cargo run --locked -p spinon-core --example minimal_tree성공, 예제 트리 생성·커밋·텍스트 조회 완료
mise exec -- bun run docs:build명세 링크 수정 후 재빌드 통과

확인한 동작

  • 기준 revision 검사와 빈 묶음의 revision 보존
  • 여러 노드 생성·삽입·텍스트 변경을 한 revision으로 확정
  • 잘못된 작업·순환 이동·미연결 노드·revision 범위 초과 시 원본 트리와 revision 보존
  • 실패 위치의 0 기반 색인 보고와 미확정 ID의 재사용
  • 커밋 성공 뒤 삭제된 ID와 같은 묶음에서 이미 생성·삭제한 ID의 재사용 거부
  • 이동 후 자식 순서, 하위 트리 삭제 결과, 0 ID와 잘못된 태그 거부

적대적 검토 5회

  1. ID·revision 계약을 대조해 성공한 삭제 ID와 같은 묶음에서 생성·삭제된 ID가 재사용되지 않게 하고 회귀 테스트를 추가했습니다.
  2. root 하나, 도달 가능성, 부모·자식 연결, 순환 금지를 확인하고 root 중복·삽입 순환·이동 순환 사례를 테스트했습니다.
  3. 작업 오류·오래된 기준 revision·revision 초과가 기존 트리와 revision을 보존하는지 검사했습니다.
  4. 커밋 후보 복사가 과거 ID 전체 집합까지 매번 복사하던 비용을 발견해 활성 노드만 복사하도록 바꿨습니다. ID 기록 메모리는 Tree 수명 동안 계속 증가하는 제약으로 남기고, 성능 주장은 하지 않았습니다.
  5. core·FFI 모듈 경계, 예제, 명세·상태 링크와 미지원 범위를 확인했습니다. R03 이벤트 의미와 R06 V8/UI 수명·스레드 위험은 열린 상태로 남겼습니다.

범위 제한

이 검증은 Mac에서 Rust API를 실행한 결과입니다. Android/iOS 앱 연결이나 iOS 실기기 실행, C ABI·V8 연동, GPU·레이아웃·이벤트·접근성, 동시 호출과 성능은 검증하지 않았습니다. 성공 전에 활성 노드 상태를 복사하는 초기 원자성 구현이고, ID tombstone 저장소는 트리 수명에서 생성한 ID만큼 증가합니다. 성능 특성을 주장하지 않습니다.