No description
- Slot CRUD를 Add/Remove/Extract/Clear/Move/Swap 6종으로 확정, get/set 드롭 - "원시 연산 최소화" 원칙 뒤집고 Move/Swap 추가 — Extract+Add 기반 리오더가 Parent 조작 두 번(detach+reattach)이라 무겁고, :List 없이 수동 구성한 Slot엔 리오더 수단 자체가 없었음. Swap은 element 아닌 index 기준(element면 위치 조회에 2n 들어 O(1) 약속이 깨짐) - isMounted 이중 추적 분리(Slot 컨테이너 self._mounted vs 개별 element 전역 weak-set), pre-implementation-audit.md 1-7/1-8 해소 - 요소 타입 제약 신설 — nil/None 둘 다 raw 요소로 금지, 핸들러 계층 값 (Ref/PreRef/Observer/Effect/Modifier)은 self-ref 컨텍스트가 없어 의미 불성립이라 즉시 error(Modifier 필드와 같은 판별 메커니즘 재사용). Slot<T>() 제네릭화 - Slot:List(data, updateFn, keyFn?) 신설 — 키 기반 동적 컬렉션 재조정, research/additional-primitives-plan.md에서 승격·통합. keyFn 생략 시 index를 key로 사용(80% 케이스 커버, 캐스케이드 갱신 트레이드오프 명시) - updateFn<UD>(item, index, userdata, prev)이 매 reconcile 사이클마다 호출 — filter/toggle이 Visible 토글이 아니라 실제 파괴/재생성이 되도록 재설계(200+ 항목에서 lazy하지 않은 문제 회피), prev 재사용이 저비용 경로 - :List가 Source를 더 이상 안 만들고 userdata로 그 권한을 updateFn에 위임 — result/userdata 반환값 커플링 제거, 정리 루프는 mounted가 아니라 직전 keyIndex 전체를 순회해야 함(userdata만 살아남는 케이스 커버) - userdata는 GC-native 값만 허용, 명시적 cleanup 필요한 값은 UB로 명문화 — item=nil 정리 훅 추가안은 부모 Destroy 경로에서 안 불려 절반만 동작하므로 기각(retract가 Destroy 시 안 불리는 것과 같은 이유) - question.md/ROADMAP.md/README.md 동기화, slot-plan.md 자체 정합성 재감사 (stale 백로그 섹션 제거 등) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EYfAz3BsaTrmMM8hnzn6mj |
||
|---|---|---|
| .claude | ||
| .gitignore | ||
| CLAUDE.md | ||
| HUMAN_TODO.md | ||
| ROADMAP.md | ||
| SAFETY.md | ||