Skip to content

Core와 주변 편집 경로의 중복 복사·반복 탐색을 줄인다 #737

Description

@developer-1px

Goal Anchor

  • Outcome: 기존 core 정리와 같은 렌즈로 주변 실행 경로의 불필요한 복사·반복 탐색을 줄이고 production 코드를 순감한다.
  • Done: P1–P9 수정/상류 해결을 검증하고 U1–U11을 최적화 또는 계약상 필요한 처리라는 근거와 회귀 검증으로 모두 판정한다. 변경 범위의 동작·소유권·history parity와 대량 비용을 확인한다. 공개 capability를 추가하면 owner API·문서·실행 Usage·source 등록을 함께 완성한다.
  • Don't: JSON 허용 범위, 오류 우선순위, 입력/스냅샷 격리, history 및 재진입 계약을 약화하지 않는다. 불필요한 fast path나 구조를 추가하지 않는다. 원래 dirty checkout의 문서/다른 작업, 다른 PR, 전체 도메인 알고리즘 재설계는 포함하지 않는다. 새 PR 병합은 별도 승인 전 수행하지 않는다.

승인된 범위

사용자의 same-lens 조사 후 “전부 해결해”, 선행 PR #732에 대해 “merge 하고 진행하자” 승인을 실행한다. #732는 병합되어 Core readPointer/JSON 검증 정본을 사용할 수 있다. 원래 작업 폴더는 보존하고 별도 clean clone에서 기존 core 변경만 선별 이관한다.

확인된 문제

묶음 책임 완료 조건
P1 Editing identity, Object/Tree/Order/Document/Calendar 배치당 ID 집합 1회, 예약 ID 누적. provider/100회 충돌 제한/parent remap 보존, 정본 API로 통일
P2 Rich Text snapshot 읽기 #732 상류 해결의 nested identity/cache, escaped/fragment/외부/history 조회 회귀 확인
P3 React Hook Form syncPointers 중복·ancestor 정리의 쌍 비교 제거, root/move/copy/escape/draft 보존
P4 Collaboration object patch object key lookup 인덱스와 변경 일관성, MemberId/move 의미 보존
P5 React Hook Form 초기값 같은 snapshot의 rerender 전체 clone 0, 문서/session/formControl 교체와 mutable form 격리 보존
P6 Editing selection 소유화 Core 직전 중복 clone 제거, retained snapshot/metadata/undo와 mutable reconciler 격리 유지
P7 inverse builder 누적 prefix 복사 제거, operation 역순·step 내부 순서·순차 pre-state/오류 보존
P8 private history stack push/pop의 전체 stack 복사 제거, 원자성·재진입·group·외부 무효화 보존
P9 checkpoint 준비 처음 소유화한 payload의 base/membership 재사용, JSON/shape/digest/proof/입력 격리 보존

추가 판정 대상

  • U1 Rich Text generic apply의 후보와 commit
  • U2 Collaboration RFC patch/causal projection/authoritative commit
  • U3 Rich Text 내부 patch payload 사전 clone
  • U4 React Hook Form diff의 JSON 변환
  • U5 다중 caret 치환 오프셋 반복 스캔
  • U6 markedSegments interval 반복 비교
  • U7 earlierPoint의 반복 logical order 구축
  • U8 replacement ID 검증의 removedPaths 반복
  • U9 Collaboration 구조 이동 bookkeeping
  • U10 history ignore의 inverse 생성
  • U11 normalization 반환 value/operations 격리

필요한 경계(C1–C15)는 유지한다: mutable reconciler/form/clipboard 격리, 외부·재진입 transition 재검증, 순차 inverse scratch, Ajv 격리, normalization input 소유권, topology cache, raw source 초기화, 외부 bundle 검증 등.

검증 계획

  1. 최신 main과 기존 core 변경을 안전하게 통합하고 기존 회귀 테스트를 이관한다.
  2. 소유 모듈별 원인 수정과 collision/ownership/history/move/JSON 변환 회귀 테스트를 추가한다.
  3. 대량 입력은 시간뿐 아니라 집합 생성·누적 복사·조회/clone 횟수로 비용을 비교한다. 기존 단일 진단 시간은 제품 end-to-end latency나 성능 보장으로 표현하지 않는다.
  4. build 후 전체 테스트, package/site typecheck·guard, public API·문서·source 검사 및 diff/순감 확인.
  5. 결과·필요하여 유지한 경로·검증 한계를 기록하고 commit/push/PR을 연다.

참고 진단: ID 50k+1k 복사에서 Set 1,000회/기존 ID 50,499,500회 처리, form 포인터 5k에서 25,000,000회 비교, object key 5k에서 12,502,500회 비교, 같은 form snapshot 11 rerender에서 전체 clone 11회. 최적화 전 private helper/계측 진단이다.

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions