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 검증 등.
검증 계획
- 최신 main과 기존 core 변경을 안전하게 통합하고 기존 회귀 테스트를 이관한다.
- 소유 모듈별 원인 수정과 collision/ownership/history/move/JSON 변환 회귀 테스트를 추가한다.
- 대량 입력은 시간뿐 아니라 집합 생성·누적 복사·조회/clone 횟수로 비용을 비교한다. 기존 단일 진단 시간은 제품 end-to-end latency나 성능 보장으로 표현하지 않는다.
- build 후 전체 테스트, package/site typecheck·guard, public API·문서·source 검사 및 diff/순감 확인.
- 결과·필요하여 유지한 경로·검증 한계를 기록하고 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/계측 진단이다.
Goal Anchor
승인된 범위
사용자의 same-lens 조사 후 “전부 해결해”, 선행 PR #732에 대해 “merge 하고 진행하자” 승인을 실행한다. #732는 병합되어 Core
readPointer/JSON 검증 정본을 사용할 수 있다. 원래 작업 폴더는 보존하고 별도 clean clone에서 기존 core 변경만 선별 이관한다.확인된 문제
추가 판정 대상
필요한 경계(C1–C15)는 유지한다: mutable reconciler/form/clipboard 격리, 외부·재진입 transition 재검증, 순차 inverse scratch, Ajv 격리, normalization input 소유권, topology cache, raw source 초기화, 외부 bundle 검증 등.
검증 계획
참고 진단: 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/계측 진단이다.