Skip to content

JSON Document의 편집 정확성과 구현체 교체 적합성을 보강한다 #707

Description

@developer-1px

Goal Anchor

  • Outcome: JSON Document 표준 후보 리뷰에서 재현된 정확성·교체 호환성·협업 지속 편집·적합성 증거의 공백을 정본 모듈에서 해결합니다.
  • Done: 정상 Patch 배치의 undo가 원본을 복구하고, 객체/배열을 구분한 위치 추적과 원격 구조 이동 추적이 정확하며, 복사 snapshot 구현체에서도 공식 Editing/React 소비자가 작동합니다. 누적 협업 이력을 받은 뒤 새 actor가 편집을 계속할 수 있고, 독립 구현의 전체 필수 적합성과 공개 표면 선언을 실제 검사로 증명합니다.
  • Don't: 여섯-member JSONDocument, JSON Patch의 순차·원자적 의미, 기존 wire/checkpoint 형식과 패키지 책임 경계를 유지합니다. unrelated Calendar·Database·Annotation 작업을 흡수하거나 merge/publish를 수행하지 않습니다.

재현 근거와 범위

  1. EditingSession: 기존 객체 속성에 add, 동일 배열 인덱스의 연속 remove, 삽입 후 이동된 인덱스의 replace를 undo하면 성공을 반환하며 잘못된 값을 복구합니다.
  2. trackPointer: 숫자 객체 key를 배열 index로 추정합니다. Collaboration의 원격 move는 값별 replace로 통지되어 동일 항목 추적을 잃습니다.
  3. 명세상 허용된 복사 snapshot 구현체에서 EditingSession은 읽기만 해도 history를 지우고 React Connector는 snapshot 안정성 계약을 충족하지 못합니다.
  4. 단일 scalar 문서에서도 다른 actor의 이력 1,000건 이후 commit에 139~269ms가 걸렸고 3,000건 이후 첫 새 actor commit이 재귀 stack overflow로 실패했습니다(Node 20.11.1 진단).
  5. 독립 구현은 유효한 JSONPath 음수 index·descendant·slice를 거부하지만 일부 suite만 실행하므로 stable 검사를 통과합니다. 실제 23개 export를 검사 결과는 21개로 표시합니다.

완료 증거

  • 수정 전 실패를 구별하는 회귀 fixture와 순차 배치 undo/redo 검증.
  • 문맥을 제공하는 위치 추적 public API, 기존 호출 호환성 설명, 정본 사용 예제·API 문서·source registration.
  • 같은 editor/consumer의 reference·복사 snapshot 동작 검증 및 로컬/협업 구조 이동 검증.
  • 긴 remote 이력 ingest 후 local commit·재동기화의 정확성과 지속 편집 성능 검증.
  • reference와 독립 구현의 필수 JSON Document·JSONPath·Patch 적합성 검증, 선언/검사 결과 동기화.
  • 영향 패키지 test/typecheck/build, 문서·규범 검사, 소비 경로 검증.

경계

현재 문서가 구분하는 local inverse history와 actor-local selective history의 의미는 보존합니다. 새로운 범용 history/selection 프로토콜, 외부 팀 도입 실험, 공개 배포와 merge는 이번 결함 수정의 완료 조건이 아닙니다.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions