quad/.claude/base
qwreey baa004ad42
decide(base): Slot CRUD(Add/Remove/Extract/Clear/Move/Swap)·요소 타입 제약 확정, Slot:List 신설
- 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
2026-08-09 19:21:22 +09:00
..
architecture.md docs(base): 코퍼스 전체 정합성 감사 반영, 기각된 대안 archive 이관 2026-08-08 11:38:29 +09:00
attribute-plan.md decide(base): None 센티널, Dispatch 네이밍, Brand 판별 메커니즘 확정 2026-08-07 18:10:58 +09:00
bind-system-plan.md fix(base): 코퍼스 전체 stale 마커/모순 감사 및 무효화된 인라인 서사 archive 이전 2026-08-09 16:36:59 +09:00
blocker-plan.md docs: Blocker/Effect를 base/additional-primitives.md에서 별개 파일로 재분리 2026-08-07 14:45:57 +09:00
component-composition-plan.md fix(base): 코퍼스 전체 stale 마커/모순 감사 및 무효화된 인라인 서사 archive 이전 2026-08-09 16:36:59 +09:00
effect-plan.md fix(base): 코퍼스 전체 stale 마커/모순 감사 및 무효화된 인라인 서사 archive 이전 2026-08-09 16:36:59 +09:00
lifecycle-pattern.md decide(base): Relate 프리미티브 신설, bindLifetime/canExecute 확정, retract 필수화 2026-08-08 00:54:48 +09:00
modifier-plan.md decide(base): canBound 이름 확정, Compute previous 방어/스코핑 명확화, Modifier 핸들러값·State<Modifier> UB→error 전환 2026-08-09 16:00:19 +09:00
module-lifecycle-plan.md docs(base): 코퍼스 전체 정합성 감사 반영, 기각된 대안 archive 이관 2026-08-08 11:38:29 +09:00
purity-and-effects-plan.md 6차 라운드 + 컴포넌트화/Modifier 논의, 문서 코퍼스 전체 정리 결과 반영 2026-08-04 15:49:28 +09:00
relate-plan.md decide(base): Relate 프리미티브 신설, bindLifetime/canExecute 확정, retract 필수화 2026-08-08 00:54:48 +09:00
slot-plan.md decide(base): Slot CRUD(Add/Remove/Extract/Clear/Move/Swap)·요소 타입 제약 확정, Slot:List 신설 2026-08-09 19:21:22 +09:00
store-semantics.md decide(base): canBound 이름 확정, Compute previous 방어/스코핑 명확화, Modifier 핸들러값·State<Modifier> UB→error 전환 2026-08-09 16:00:19 +09:00
tag-plan.md docs(base): 코퍼스 전체 정합성 감사 반영, 기각된 대안 archive 이관 2026-08-08 11:38:29 +09:00
ui-shorthand-plan.md docs(base): 코퍼스 전체 정합성 감사 반영, 기각된 대안 archive 이관 2026-08-08 11:38:29 +09:00