# 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`가 이미 못박아둔 우선순위와 정확히 일치,
변경 없음.
