quad/.claude/session/2026-08-12-18-framework-comparison-fixables-closed.md
qwreey 2688409ebd
decide(state,operator,ref): use-after-destroy/동적With 의도적 비지원 확정, Operator 카탈로그 외부 리서치 반영, State 이름 최종 확정
- use-after-destroy 검증 안전망: rbvm 영역/quad-debug 스코프 밖으로 최종
  기각, Ref 사용 관례(useRef급 스코프) 명문화
- :With 동적 의존성: State immutable 가정과 모순되어 의도적 비지원 확정
- Operator 콤비네이터 카탈로그: 서브 에이전트 외부 리서치로 포함 범위/
  네임스페이스 이름 근거 보강(Clamp/Min/Max 추가 후보, 비트/비교/Sub/Div
  드랍 후보, Debounce/Throttle 별도 질문으로 분리)
- State 용어 정리 최종 확정(현재 이름 유지), Pipe 기각 근거·Compute vs
  Computed 네이밍 근거 문서화, :With와 Tag/Modifier clone 체이닝 혼동
  방지 경고 추가

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VVG74qV2nQVykhvMRQW2UC
2026-08-12 21:14:15 +09:00

3.2 KiB

2026-08-12 열여덟 번째 세션 — framework-comparison-findings.md 남은 두 항목 "고칠 필요 없음"으로 최종 판단

배경: question.md 낮은 우선순위 목록에 남아있던 framework-comparison-findings.md의 "고칠 만한 것" 2번 절 두 항목 (use-after-destroy 검증 안전망 부재, :With의 정적 의존성/동적 With 미지원)이 여전히 "사용자 판단 전" 상태였음. 사용자가 이번 세션에서 둘 다 명확한 근거를 들어 "고칠 필요 없음, 의도된 설계"로 확정.

use-after-destroy 검증 안전망

사용자 논지: quad는 bindLifetime으로 대부분의 연산을 GC-native하게 지원하도록 이미 설계돼 있고, 말단 leaf에 직접 연결하지 않는 이상 Instance를 직접 관리하는 건 quad가 처리하는 영역이 아님. 만일을 위한 부작용 정리 수단으로 Effect도 이미 제공됨. Destroy 시 정리해야 할 게 있다면, 그 부작용을 만들어낸 코드가 처리할 책임을 짐(Ref의 "Destroy 무관" 철학과 동일선상). 만약 quad가 이 영역에서 에러를 내주는 방향으로 간다면, 그건 언제나 명시적 Destroy() 호출을 강제하게 되어버려 "가볍게 GC가 알아서 치울 때 같이 처리되도록 놔두고 네이티브가 처리 성능을 올려주는" 아키텍처 전체와 모순됨. 완전한 UB 영역으로 두는 게 정확한 아키텍처 — quad가 할 수 있는 유일한 대응은 유저가 그런 행동을 안 하도록 문서화로 돕는 것뿐.

:With의 동적 의존성(동적 With 미지원)

사용자 논지: 동적 의존성을 지원한다는 것 자체가 "State는 immutable하다"는 현재 가정을 깨뜨림 — 의존성 목록이 바뀔 수 있다면 그 변경이 후행하는 다른 노드들 전체에 영향을 미치는 걸 허용해야 하는데, 이건 quad가 계속 원치 않아온 것. 애초에 동적 의존성이라는 것 자체가 사용 사례가 사실상 없음 — React를 봐도 useMemo(fn, [...])의 deps 리스트를 동적으로 조립하는 경우는 거의 없고(그러면 그 훅이 거의 항상 실행돼버려 메모이제이션 의미가 없어짐), 보통 정적으로 나열함. 억지로 끼워넣는 건 무리 — 의도적 비지원 요소로 확정. (State 이외의 다른 방법으로 유사한 걸 지원할 수 있는지 리서치는 나중에 해볼 수 있으나, 이미 결론에 다다른 현재 State 설계에 손을 대는 방향은 아님.)

반영

  • research/framework-comparison-findings.md: 2번 절(고칠 만한 것)에서 두 항목 제거, 3번 절(못 고치는 것 — 의도된 트레이드오프)로 근거와 함께 이전. "다음 단계" 절도 "해소됨"으로 갱신 — 이 문서는 더 이상 사용자 판단 대기 항목이 없음.
  • .claude/question.md: 낮은 우선순위 목록의 해당 항목을 [해소됨]으로 표시.

부수 확인 (문서 반영 불필요, 현황 재확인만)

사용자가 같은 메시지에서 quad-v1-compat/quad-debug는 여전히 quad-base/quad-roblox 완성 전에 착수 가능해 보이지 않는다고 재확인 — 기존 CLAUDE.md/question.md가 이미 못박아둔 우선순위와 정확히 일치, 변경 없음.